update spec when updating status (#2546)
* update spec when updating status * only setSpec of pg resource is not empty
This commit is contained in:
		
							parent
							
								
									2af9cfa257
								
							
						
					
					
						commit
						e34f19be01
					
				|  | @ -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) | ||||||
| 		} | 		} | ||||||
| 	}() | 	}() | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
| 		} | 		} | ||||||
| 	}() | 	}() | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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 { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue