Pass annotations to connection pooler deployment
This commit is contained in:
		
							parent
							
								
									099f99f89a
								
							
						
					
					
						commit
						1e1637ab94
					
				|  | @ -1191,7 +1191,7 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef | |||
| 			Name:        c.statefulSetName(), | ||||
| 			Namespace:   c.Namespace, | ||||
| 			Labels:      c.labelsSet(true), | ||||
| 			Annotations: c.PropagateAnnotationsToStatefulsets(annotations), | ||||
| 			Annotations: c.AnnotationsToPropagate(annotations), | ||||
| 		}, | ||||
| 		Spec: appsv1.StatefulSetSpec{ | ||||
| 			Replicas:             &numberOfInstances, | ||||
|  |  | |||
|  | @ -853,3 +853,24 @@ func (c *Cluster) updateConnectionPoolerDeployment(oldDeploymentSpec, newDeploym | |||
| 
 | ||||
| 	return deployment, nil | ||||
| } | ||||
| 
 | ||||
| //updateConnectionPoolerAnnotations updates the annotations of connection pooler deployment
 | ||||
| func (c *Cluster) updateConnectionPoolerAnnotations(annotations map[string]string) (*appsv1.Deployment, error) { | ||||
| 	c.logger.Debugf("updating connection pooler annotations") | ||||
| 	patchData, err := metaAnnotationsPatch(annotations) | ||||
| 	if err != nil { | ||||
| 		return nil, fmt.Errorf("could not form patch for the deployment metadata: %v", err) | ||||
| 	} | ||||
| 	result, err := c.KubeClient.Deployments(c.ConnectionPooler.Deployment.Namespace).Patch( | ||||
| 		context.TODO(), | ||||
| 		c.ConnectionPooler.Deployment.Name, | ||||
| 		types.MergePatchType, | ||||
| 		[]byte(patchData), | ||||
| 		metav1.PatchOptions{}, | ||||
| 		"") | ||||
| 	if err != nil { | ||||
| 		return nil, fmt.Errorf("could not patch conenction pooler annotations %q: %v", patchData, err) | ||||
| 	} | ||||
| 	return result, nil | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -331,7 +331,7 @@ func (c *Cluster) syncStatefulSet() error { | |||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		annotations := c.PropagateAnnotationsToStatefulsets(c.Statefulset.Annotations) | ||||
| 		annotations := c.AnnotationsToPropagate(c.Statefulset.Annotations) | ||||
| 		c.updateStatefulSetAnnotations(annotations) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -359,9 +359,9 @@ func (c *Cluster) syncStatefulSet() error { | |||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // PropagateAnnotationsToStatefulsets updates annotations to statefulsets if required
 | ||||
| // AnnotationsToPropagate get the annotations to update if required
 | ||||
| // based on the annotations in postgres CRD
 | ||||
| func (c *Cluster) PropagateAnnotationsToStatefulsets(annotations map[string]string) map[string]string { | ||||
| func (c *Cluster) AnnotationsToPropagate(annotations map[string]string) map[string]string { | ||||
| 	ToPropagateAnnotations := c.OpConfig.StatefulsetPropagateAnnotations | ||||
| 	PgCRDAnnotations := c.Postgresql.ObjectMeta.GetAnnotations() | ||||
| 
 | ||||
|  | @ -369,7 +369,11 @@ func (c *Cluster) PropagateAnnotationsToStatefulsets(annotations map[string]stri | |||
| 		for _, anno := range ToPropagateAnnotations { | ||||
| 			for k, v := range PgCRDAnnotations { | ||||
| 				matched, err := regexp.MatchString(anno, k) | ||||
| 				if err == nil && matched { | ||||
| 				if err != nil { | ||||
| 					c.logger.Errorf("annotations matching issue: %v", err) | ||||
| 					return nil | ||||
| 				} | ||||
| 				if matched { | ||||
| 					annotations[k] = v | ||||
| 				} | ||||
| 			} | ||||
|  | @ -733,6 +737,11 @@ func (c *Cluster) syncConnectionPoolerWorker(oldSpec, newSpec *acidv1.Postgresql | |||
| 		Deployments(c.Namespace). | ||||
| 		Get(context.TODO(), c.connectionPoolerName(), metav1.GetOptions{}) | ||||
| 
 | ||||
| 	newAnnotations := c.AnnotationsToPropagate(deployment.Annotations) | ||||
| 	if newAnnotations != nil { | ||||
| 		c.updateConnectionPoolerAnnotations(newAnnotations) | ||||
| 	} | ||||
| 
 | ||||
| 	if err != nil && k8sutil.ResourceNotFound(err) { | ||||
| 		msg := "Deployment %s for connection pooler synchronization is not found, create it" | ||||
| 		c.logger.Warningf(msg, c.connectionPoolerName()) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue