update spec when updating status (#2546)

* update spec when updating status
* only setSpec of pg resource is not empty
This commit is contained in:
Felix Kunde 2024-02-20 10:24:24 +01:00 committed by GitHub
parent 2af9cfa257
commit e34f19be01
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 32 additions and 8 deletions

View File

@ -254,10 +254,17 @@ func (c *Cluster) Create() (err error) {
) )
defer func() { defer func() {
var pgUpdatedStatus *acidv1.Postgresql
if err == nil { if err == nil {
c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusRunning) //TODO: are you sure it's running? pgUpdatedStatus, err = c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusRunning) //TODO: are you sure it's running?
} else { } else {
c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusAddFailed) pgUpdatedStatus, err = c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusAddFailed)
}
if err != nil {
c.logger.Warningf("could not set cluster status: %v", err)
}
if pgUpdatedStatus != nil {
c.setSpec(pgUpdatedStatus)
} }
}() }()
@ -790,6 +797,7 @@ func (c *Cluster) addFinalizer() error {
// update the spec, maintaining the new resourceVersion // update the spec, maintaining the new resourceVersion
c.setSpec(newSpec) c.setSpec(newSpec)
return nil return nil
} }
@ -838,10 +846,20 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
c.setSpec(newSpec) c.setSpec(newSpec)
defer func() { defer func() {
var (
pgUpdatedStatus *acidv1.Postgresql
err error
)
if updateFailed { if updateFailed {
c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusUpdateFailed) pgUpdatedStatus, err = c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusUpdateFailed)
} else { } else {
c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusRunning) pgUpdatedStatus, err = c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusRunning)
}
if err != nil {
c.logger.Warningf("could not set cluster status: %v", err)
}
if pgUpdatedStatus != nil {
c.setSpec(pgUpdatedStatus)
} }
}() }()

View File

@ -41,11 +41,18 @@ func (c *Cluster) Sync(newSpec *acidv1.Postgresql) error {
c.setSpec(newSpec) c.setSpec(newSpec)
defer func() { defer func() {
var pgUpdatedStatus *acidv1.Postgresql
if err != nil { if err != nil {
c.logger.Warningf("error while syncing cluster state: %v", err) c.logger.Warningf("error while syncing cluster state: %v", err)
c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusSyncFailed) pgUpdatedStatus, err = c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusSyncFailed)
} else if !c.Status.Running() { } else if !c.Status.Running() {
c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusRunning) pgUpdatedStatus, err = c.KubeClient.SetPostgresCRDStatus(c.clusterName(), acidv1.ClusterStatusRunning)
}
if err != nil {
c.logger.Warningf("could not set cluster status: %v", err)
}
if pgUpdatedStatus != nil {
c.setSpec(pgUpdatedStatus)
} }
}() }()

View File

@ -209,7 +209,6 @@ func (client *KubernetesClient) SetPostgresCRDStatus(clusterName spec.Namespaced
return pg, fmt.Errorf("could not update status: %v", err) return pg, fmt.Errorf("could not update status: %v", err)
} }
// update the spec, maintaining the new resourceVersion.
return pg, nil return pg, nil
} }
@ -220,7 +219,7 @@ func (client *KubernetesClient) SetFinalizer(clusterName spec.NamespacedName, pg
patch []byte patch []byte
err error err error
) )
pg.ObjectMeta.SetFinalizers(finalizers) pg.ObjectMeta.Finalizers = finalizers
if len(finalizers) > 0 { if len(finalizers) > 0 {
patch, err = json.Marshal(struct { patch, err = json.Marshal(struct {