Skip to content

Latest commit

 

History

History
156 lines (127 loc) · 15.2 KB

File metadata and controls

156 lines (127 loc) · 15.2 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Added

  • JWT authentication handler using golang-jwt/jwt/v5 and MicahParks/keyfunc/v3 with RS256 validation, configurable issuer and audience, and JWKS key rotation support (#120)
  • Hard deletion for Clusters and NodePools: resources and their adapter statuses are permanently removed from the database once all required adapters report Finalized=True and no child resources remain (#119)
  • Finalized condition aggregation with WaitingForChildResources intermediate state when all adapters are finalized but child node pools still exist (#119)
  • Soft deletion for Clusters and NodePools with deleted_time and deleted_by fields for tracking deletion requests (#106)
  • Aggregation logic for resource data (#91)
  • Version subcommand to CLI (#84)
  • Condition subfield queries for selective Sentinel polling (#71)
  • Slice field validation in SliceFilter (#78, #69)
  • Connection retry logic for database sidecar startup coordination (#69)
  • pgbouncer sidecar to Helm chart for connection pooling (#69)
  • Health check ping timeout configuration (#69)
  • Request-level context timeout to transaction middleware (#69)
  • Connection pool timeout configuration (#69)
  • PostgreSQL advisory locks for migration coordination in multi-replica deployments (#72)
  • Search and filtering documentation (#63)
  • Connection pool and pgbouncer documentation (#69)
  • HyperFleet API operator guide (#76)

Changed

  • Replaced magic strings for resource types and condition types with constants from pkg/api/status_types.go across service, handler, presenter, and factory files; separated condition type constants into AdapterConditionType* (for adapter.conditions) and ResourceConditionType* (for resource.status.conditions) to clarify usage context (#172)
  • OpenAPI schema is now consumed from the hyperfleet-api-spec Go module (v1.0.12) for code generation; openapi/openapi.yaml is extracted during make generate and is no longer tracked in git (#155)
  • Replaced OCM SDK authentication handler with standalone JWT middleware, removing ocm-sdk-go dependency and its transitive dependencies (glog, bluemonday, json-iterator) (#120)
  • Upgraded JWT library from golang-jwt/jwt/v4 to golang-jwt/jwt/v5 (#120)
  • Refactored AdapterStatusDao.Upsert() to accept a pre-fetched existing record, moving lookup and LastTransitionTime preservation logic to the service layer (#119)
  • Refactored DAO methods to remove Unscoped calls for fetching Clusters and NodePools (#106)
  • Bumped oapi-codegen version to fix missing omitempty on generated response objects (#106)
  • Updated OpenAPI spec with examples for Cluster and NodePool schemas (#106)
  • Standardized appVersion and image.tag handling in Helm chart (#90)
  • Aligned Helm chart with conventions standard (#87)
  • Streamlined configuration system with Viper, removed getters and _FILE suffix pattern (#75)
  • Used CHANGE_ME placeholder for image registry (#83)

Removed

  • OCM SDK dependency (ocm-sdk-go), OCM client (pkg/client/ocm/), OCM configuration (pkg/config/ocm.go), OCM logger bridge (pkg/logger/ocm_bridge.go), and OCM authorization mocks (#120)

Fixed

  • Validated adapter status conditions in handler layer (#88)
  • Removed org prefix from image.repository default (#86)
  • Addressed revive linter violations from enabled linting standard (#85)
  • Truncated migrations table in CleanDB to ensure migrations re-run (#72)
  • Added fallback default for AdvisoryLockTimeout (#72)
  • Rejected not operator for condition queries (#80)
  • SliceFilter star propagation in query processing (#79)
  • Used 0.0.0-dev version for dev image builds (#77)
  • Aligned health ping timeout with K8s probe timeout (#69)
  • Hardened pgbouncer config and health check responses (#69)
  • pgbouncer secret handling, connection leak, and lint (#69)

0.1.1 - 2026-03-09

Added

  • Test suite for presenter package (#64)
  • DatabaseConfig test coverage and improved advisory lock tests (#72)
  • Prometheus metrics with hyperfleet_db_ prefix to database layer (#58)

Changed

  • Updated copyright year to 2026 (#58)
  • Renamed metrics to use hyperfleet_api_ prefix for consistency (#57)
  • Standardized Dockerfiles and Makefile for building images (#59)

Fixed

  • CA certificates missing in ubi9-micro runtime image (#74)
  • VERSION collision with go-toolset base image (#70)
  • Config file resolution broken by -trimpath build flag (#66)
  • Enforced mandatory conditions in adapter status (#60)
  • SliceFilter usage in handlers and time field handling (#64)
  • Helm chart testing and default image registry (#62)
  • Reset and re-seed buildInfoMetric in ResetMetricCollectors (#57)
  • Rejected creation requests with missing spec field (#56)

0.1.0 - 2026-02-16

Added

  • PodDisruptionBudget to Helm chart (#44)
  • ServiceMonitor to Helm chart for Prometheus Operator integration (#43)
  • YAML table format for adapter requirements (#41)
  • Configurable adapter requirements (#40)
  • Condition-based search with GIN index for improved query performance (#39)
  • Health endpoints (/healthz, /readyz) and graceful shutdown (#34)
  • User-friendly search syntax with lowercase Base32 ID encoding (#16)
  • Schema validation for cluster and nodepool specifications (#12)
  • Generation field for NodePool management (#22)
  • OpenAPI schema embedded in Docker image for runtime validation (#14)
  • Helm chart for Kubernetes deployment (#16)
  • gomock/mockgen infrastructure for service mocks (#10)
  • Bingo for Go tool dependency management (#9)
  • Linux/amd64 platform support for container builds (#17)
  • Integration tests for conditions (#39)
  • Dynamic table discovery for test cleanup (#32)
  • Operational runbook and metrics documentation (#45)
  • ServiceMonitor configuration documentation (#43)
  • Params constraints documentation (#55)

Changed

  • BREAKING CHANGE: Updated OpenAPI spec for conditions-based status model (#39)
  • Aligned cluster and nodepool name validation with CS rules (#48)
  • Implemented RFC 9457 Problem Details error model for standardized error responses (#37)
  • Migrated to oapi-codegen for OpenAPI code generation (#33)
  • Aligned logging with HyperFleet structured logging specification (#31)
  • Integrated database logging with LOG_LEVEL (#35)
  • Renamed Makefile binary target to build with output to bin/ (#30)
  • Consolidated and streamlined documentation structure (#21)
  • Configured rh-hooks-ai for AI-readiness and security compliance (#18)
  • Migrated to HyperFleet v2 architecture (#3)

Removed

  • Phase validation from status types in favor of conditions-based model (#39)
  • Generated mock files from git tracking (#10)
  • Generated OpenAPI code from git tracking (#3)
  • .claude directory from git tracking (#45)

Fixed

  • Prevented duplicate nodepool names within a cluster (#53)
  • Returned 404 for non-existent cluster statuses (#54)
  • First adapter status report now correctly initializes with Available=Unknown (#52)
  • Integration tests updated to match new first-report behavior (#52)
  • Added timeout to testcontainer teardown to prevent Prow hang (#52)
  • Centralized adapter config to avoid duplicate logs (#46)
  • Avoided exposing secret values in runbook (#45)
  • Made adapter configuration mandatory (#46)
  • Used explicit nil checks for PDB values (#44)
  • Fixed goconst, gocritic, gosec, unparam and lll lint issues (#42)
  • Prevented fmt.Sprintf panic when reason contains % without values (#37)
  • Avoided leaking database error details to API clients (#37)
  • Omitted empty Instance and TraceId from Problem Details JSON (#37)
  • Added missing error codes to errorDefinitions map (#37)
  • MVP phase logic to only return Ready or NotReady (#9)
  • Cluster and nodepool name validation (#16)
  • Silent error suppression (#26)
  • Propagated JSON unmarshal errors (#26)
  • Lint failures in presubmit jobs (#12, #6)

Security