From b376b4e3db1369dee8731aa201d2db5e050eaf7d Mon Sep 17 00:00:00 2001 From: Oksana Grishchenko Date: Wed, 5 Feb 2025 15:34:24 +0200 Subject: [PATCH] EVEREST-1814 add creating state --- api/v1alpha1/databasecluster_types.go | 14 ++++++++++++++ internal/controller/providers/pg/provider.go | 2 +- internal/controller/providers/psmdb/provider.go | 2 +- internal/controller/providers/pxc/provider.go | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/api/v1alpha1/databasecluster_types.go b/api/v1alpha1/databasecluster_types.go index 7ea3e2bfc..6a777470b 100644 --- a/api/v1alpha1/databasecluster_types.go +++ b/api/v1alpha1/databasecluster_types.go @@ -33,6 +33,8 @@ var ( const ( // AppStateUnknown is an unknown state. AppStateUnknown AppState = "unknown" + // AppStateCreating is used when the db did not start to initialize yet. + AppStateCreating AppState = "creating" // AppStateInit is a initializing state. AppStateInit AppState = "initializing" // AppStatePaused is a paused state. @@ -101,6 +103,18 @@ const ( EngineSizeLarge EngineSize = "large" ) +// WithCreatingState transforms empty and unknown states to a single AppStateCreating. +// The upstream operators have the different statuses when a cluster is being created - +// pxc - "unknown", psmdb - "", pg does not have any empty status. +// Everest maps the DB status 1:1, and there is no point so far to create a separate mapping +// for each upstream operator separately only because we want to unify AppStateCreating. +func (s AppState) WithCreatingState() AppState { + if s == AppStateUnknown || s == AppStateNew { + return AppStateCreating + } + return s +} + // Applier provides methods for specifying how to apply a DatabaseCluster CR // onto the CR(s) provided by the underlying DB operators (e.g. PerconaXtraDBCluster, PerconaServerMongoDB, PerconaPGCluster, etc.) // diff --git a/internal/controller/providers/pg/provider.go b/internal/controller/providers/pg/provider.go index 02bc230fc..b5ecc62f5 100644 --- a/internal/controller/providers/pg/provider.go +++ b/internal/controller/providers/pg/provider.go @@ -94,7 +94,7 @@ func (p *Provider) Status(ctx context.Context) (everestv1alpha1.DatabaseClusterS pg := p.PerconaPGCluster status := p.DB.Status - status.Status = everestv1alpha1.AppState(pg.Status.State) + status.Status = everestv1alpha1.AppState(pg.Status.State).WithCreatingState() status.Hostname = pg.Status.Host status.Ready = pg.Status.Postgres.Ready + pg.Status.PGBouncer.Ready status.Size = pg.Status.Postgres.Size + pg.Status.PGBouncer.Size diff --git a/internal/controller/providers/psmdb/provider.go b/internal/controller/providers/psmdb/provider.go index 540b8e82e..cc3688caa 100644 --- a/internal/controller/providers/psmdb/provider.go +++ b/internal/controller/providers/psmdb/provider.go @@ -117,7 +117,7 @@ func (p *Provider) Status(ctx context.Context) (everestv1alpha1.DatabaseClusterS psmdb := p.PerconaServerMongoDB activeStorage := getActiveStorage(psmdb) - status.Status = everestv1alpha1.AppState(psmdb.Status.State) + status.Status = everestv1alpha1.AppState(psmdb.Status.State).WithCreatingState() status.Hostname = psmdb.Status.Host status.Ready = psmdb.Status.Ready status.Size = psmdb.Status.Size diff --git a/internal/controller/providers/pxc/provider.go b/internal/controller/providers/pxc/provider.go index d505889f0..784361765 100644 --- a/internal/controller/providers/pxc/provider.go +++ b/internal/controller/providers/pxc/provider.go @@ -199,7 +199,7 @@ func (p *Provider) Status(ctx context.Context) (everestv1alpha1.DatabaseClusterS status := p.DB.Status pxc := p.PerconaXtraDBCluster - status.Status = everestv1alpha1.AppState(p.PerconaXtraDBCluster.Status.Status) + status.Status = everestv1alpha1.AppState(p.PerconaXtraDBCluster.Status.Status).WithCreatingState() status.Hostname = pxc.Status.Host status.Ready = pxc.Status.Ready status.Size = pxc.Status.Size