Skip deleting Pods and PVCs if failed to delete StatefulSet
This commit is contained in:
		
							parent
							
								
									bb4fec25ae
								
							
						
					
					
						commit
						322676a6b9
					
				|  | @ -317,10 +317,6 @@ func (c *Cluster) Update(newSpec *spec.Postgresql) error { | |||
| 		//TODO: rewrite pg version in tpr spec
 | ||||
| 	} | ||||
| 
 | ||||
| 	if !reflect.DeepEqual(c.Spec.Resources, newSpec.Spec.Resources) { // Kubernetes resources: cpu, mem
 | ||||
| 		rollingUpdate = true | ||||
| 	} | ||||
| 
 | ||||
| 	if rollingUpdate { | ||||
| 		c.logger.Infof("Rolling update is needed") | ||||
| 		// TODO: wait for actual streaming to the replica
 | ||||
|  | @ -334,60 +330,24 @@ func (c *Cluster) Update(newSpec *spec.Postgresql) error { | |||
| } | ||||
| 
 | ||||
| func (c *Cluster) Delete() error { | ||||
| 	if c.Endpoint != nil { | ||||
| 		c.logger.Debugln("Deleting Endpoints") | ||||
| 		epName := util.NameFromMeta(c.Endpoint.ObjectMeta) | ||||
| 		if err := c.deleteEndpoint(); err != nil { | ||||
| 			c.logger.Errorf("Can't delete Endpoint: %s", err) | ||||
| 		} else { | ||||
| 			c.logger.Infof("Endpoint '%s' has been deleted", epName) | ||||
| 	if err := c.deleteEndpoint(); err != nil { | ||||
| 		c.logger.Errorf("Can't delete Endpoint: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	if err := c.deleteService(); err != nil { | ||||
| 		c.logger.Errorf("Can't delete Service: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	if err := c.deleteStatefulSet(); err != nil { | ||||
| 		c.logger.Errorf("Can't delete StatefulSet: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	for _, obj := range c.Secrets { | ||||
| 		if err := c.deleteSecret(obj); err != nil { | ||||
| 			c.logger.Errorf("Can't delete Secret: %s", err) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if c.Service != nil { | ||||
| 		c.logger.Debugln("Deleting Service") | ||||
| 		svcName := util.NameFromMeta(c.Service.ObjectMeta) | ||||
| 		if err := c.deleteService(); err != nil { | ||||
| 			c.logger.Errorf("Can't delete Service: %s", err) | ||||
| 		} else { | ||||
| 			c.logger.Infof("Service '%s' has been deleted", svcName) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if c.Statefulset != nil { | ||||
| 		c.logger.Debugln("Deleting StatefulSet") | ||||
| 		ssName := util.NameFromMeta(c.Statefulset.ObjectMeta) | ||||
| 		if err := c.deleteStatefulSet(); err != nil { | ||||
| 			c.logger.Errorf("Can't delete StatefulSet: %s", err) | ||||
| 		} else { | ||||
| 			c.logger.Infof("StatefulSet '%s' has been deleted", ssName) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if c.Secrets != nil { | ||||
| 		c.logger.Debugln("Deleting Secrets") | ||||
| 		for _, obj := range c.Secrets { | ||||
| 			c.logger.Debugf("Deleting Secret '%s'", util.NameFromMeta(obj.ObjectMeta)) | ||||
| 			if err := c.deleteSecret(obj); err != nil { | ||||
| 				c.logger.Errorf("Can't delete Secret: %s", err) | ||||
| 			} else { | ||||
| 				c.logger.Infof("Secret '%s' has been deleted", util.NameFromMeta(obj.ObjectMeta)) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	c.logger.Debugln("Deleting Pods") | ||||
| 	if err := c.deletePods(); err != nil { | ||||
| 		c.logger.Errorf("Can't delete Pods: %s", err) | ||||
| 	} else { | ||||
| 		c.logger.Infof("Pods have been deleted") | ||||
| 	} | ||||
| 
 | ||||
| 	c.logger.Debugln("Deleting PVCs") | ||||
| 	if err := c.deletePersistenVolumeClaims(); err != nil { | ||||
| 		return fmt.Errorf("Can't delete PersistentVolumeClaims: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -38,6 +38,7 @@ func (c *Cluster) listPersistentVolumeClaims() ([]v1.PersistentVolumeClaim, erro | |||
| } | ||||
| 
 | ||||
| func (c *Cluster) deletePods() error { | ||||
| 	c.logger.Debugln("Deleting Pods") | ||||
| 	pods, err := c.listPods() | ||||
| 	if err != nil { | ||||
| 		return err | ||||
|  | @ -51,11 +52,17 @@ func (c *Cluster) deletePods() error { | |||
| 			c.logger.Infof("Pod '%s' has been deleted", util.NameFromMeta(obj.ObjectMeta)) | ||||
| 		} | ||||
| 	} | ||||
| 	if len(pods) > 0 { | ||||
| 		c.logger.Debugln("Pods have been deleted") | ||||
| 	} else { | ||||
| 		c.logger.Debugln("No Pods to delete") | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) deletePersistenVolumeClaims() error { | ||||
| 	c.logger.Debugln("Deleting PVCs") | ||||
| 	ns := c.Metadata.Namespace | ||||
| 	pvcs, err := c.listPersistentVolumeClaims() | ||||
| 	if err != nil { | ||||
|  | @ -67,6 +74,12 @@ func (c *Cluster) deletePersistenVolumeClaims() error { | |||
| 			c.logger.Warningf("Can't delete PersistentVolumeClaim: %s", err) | ||||
| 		} | ||||
| 	} | ||||
| 	if len(pvcs) > 0 { | ||||
| 		c.logger.Debugln("PVCs have been deleted") | ||||
| 	} else { | ||||
| 		c.logger.Debugln("No PVCs to delete") | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -137,6 +137,7 @@ func (c *Cluster) updateStatefulSet(newStatefulSet *v1beta1.StatefulSet) error { | |||
| } | ||||
| 
 | ||||
| func (c *Cluster) deleteStatefulSet() error { | ||||
| 	c.logger.Debugln("Deleting StatefulSet") | ||||
| 	if c.Statefulset == nil { | ||||
| 		return fmt.Errorf("There is no StatefulSet in the cluster") | ||||
| 	} | ||||
|  | @ -145,8 +146,17 @@ func (c *Cluster) deleteStatefulSet() error { | |||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	c.logger.Infof("StatefulSet '%s' has been deleted", util.NameFromMeta(c.Statefulset.ObjectMeta)) | ||||
| 	c.Statefulset = nil | ||||
| 
 | ||||
| 	if err := c.deletePods(); err != nil { | ||||
| 		return fmt.Errorf("Can't delete Pods: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	if err := c.deletePersistenVolumeClaims(); err != nil { | ||||
| 		return fmt.Errorf("Can't delete PersistentVolumeClaims: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
|  | @ -185,6 +195,8 @@ func (c *Cluster) updateService(newService *v1.Service) error { | |||
| } | ||||
| 
 | ||||
| func (c *Cluster) deleteService() error { | ||||
| 	c.logger.Debugln("Deleting Service") | ||||
| 
 | ||||
| 	if c.Service == nil { | ||||
| 		return fmt.Errorf("There is no Service in the cluster") | ||||
| 	} | ||||
|  | @ -192,6 +204,7 @@ func (c *Cluster) deleteService() error { | |||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	c.logger.Infof("Service '%s' has been deleted", util.NameFromMeta(c.Service.ObjectMeta)) | ||||
| 	c.Service = nil | ||||
| 
 | ||||
| 	return nil | ||||
|  | @ -222,6 +235,7 @@ func (c *Cluster) updateEndpoint(newEndpoint *v1.Endpoints) error { | |||
| } | ||||
| 
 | ||||
| func (c *Cluster) deleteEndpoint() error { | ||||
| 	c.logger.Debugln("Deleting Endpoint") | ||||
| 	if c.Endpoint == nil { | ||||
| 		return fmt.Errorf("There is no Endpoint in the cluster") | ||||
| 	} | ||||
|  | @ -229,6 +243,7 @@ func (c *Cluster) deleteEndpoint() error { | |||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	c.logger.Infof("Endpoint '%s' has been deleted", util.NameFromMeta(c.Endpoint.ObjectMeta)) | ||||
| 	c.Endpoint = nil | ||||
| 
 | ||||
| 	return nil | ||||
|  | @ -267,10 +282,12 @@ func (c *Cluster) applySecrets() error { | |||
| } | ||||
| 
 | ||||
| func (c *Cluster) deleteSecret(secret *v1.Secret) error { | ||||
| 	c.logger.Debugf("Deleting Secret '%s'", util.NameFromMeta(secret.ObjectMeta)) | ||||
| 	err := c.KubeClient.Secrets(secret.Namespace).Delete(secret.Name, deleteOptions) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	c.logger.Infof("Secret '%s' has been deleted", util.NameFromMeta(secret.ObjectMeta)) | ||||
| 	delete(c.Secrets, secret.UID) | ||||
| 
 | ||||
| 	return err | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue