merge with master plus minor fix

This commit is contained in:
Felix Kunde 2020-04-29 11:32:44 +02:00
commit 154d70a456
3 changed files with 36 additions and 7 deletions

View File

@ -1191,7 +1191,7 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef
Name: c.statefulSetName(), Name: c.statefulSetName(),
Namespace: c.Namespace, Namespace: c.Namespace,
Labels: c.labelsSet(true), Labels: c.labelsSet(true),
Annotations: c.PropagateAnnotationsToStatefulsets(annotations), Annotations: c.AnnotationsToPropagate(annotations),
}, },
Spec: appsv1.StatefulSetSpec{ Spec: appsv1.StatefulSetSpec{
Replicas: &numberOfInstances, Replicas: &numberOfInstances,

View File

@ -853,3 +853,24 @@ func (c *Cluster) updateConnectionPoolerDeployment(oldDeploymentSpec, newDeploym
return deployment, nil 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
}

View File

@ -353,8 +353,7 @@ func (c *Cluster) syncStatefulSet() error {
} }
} }
} }
annotations := c.AnnotationsToPropagate(c.Statefulset.Annotations)
annotations := c.PropagateAnnotationsToStatefulsets(c.Statefulset.Annotations)
c.updateStatefulSetAnnotations(annotations) c.updateStatefulSetAnnotations(annotations)
if !podsRollingUpdateRequired && !c.OpConfig.EnableLazySpiloUpgrade { if !podsRollingUpdateRequired && !c.OpConfig.EnableLazySpiloUpgrade {
@ -395,9 +394,9 @@ func (c *Cluster) syncStatefulSet() error {
return nil return nil
} }
// PropagateAnnotationsToStatefulsets updates annotations to statefulsets if required // AnnotationsToPropagate get the annotations to update if required
// based on the annotations in postgres CRD // 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 ToPropagateAnnotations := c.OpConfig.StatefulsetPropagateAnnotations
PgCRDAnnotations := c.Postgresql.ObjectMeta.GetAnnotations() PgCRDAnnotations := c.Postgresql.ObjectMeta.GetAnnotations()
@ -405,14 +404,18 @@ func (c *Cluster) PropagateAnnotationsToStatefulsets(annotations map[string]stri
for _, anno := range ToPropagateAnnotations { for _, anno := range ToPropagateAnnotations {
for k, v := range PgCRDAnnotations { for k, v := range PgCRDAnnotations {
matched, err := regexp.MatchString(anno, k) 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 annotations[k] = v
} }
} }
} }
} }
return annotations
return annotations
} }
// checkAndSetGlobalPostgreSQLConfiguration checks whether cluster-wide API parameters // checkAndSetGlobalPostgreSQLConfiguration checks whether cluster-wide API parameters
@ -841,6 +844,11 @@ func (c *Cluster) syncConnectionPoolerWorker(oldSpec, newSpec *acidv1.Postgresql
} }
} }
newAnnotations := c.AnnotationsToPropagate(c.ConnectionPooler.Deployment.Annotations)
if newAnnotations != nil {
c.updateConnectionPoolerAnnotations(newAnnotations)
}
service, err := c.KubeClient. service, err := c.KubeClient.
Services(c.Namespace). Services(c.Namespace).
Get(context.TODO(), c.connectionPoolerName(), metav1.GetOptions{}) Get(context.TODO(), c.connectionPoolerName(), metav1.GetOptions{})