sync pvc and service labels
This commit is contained in:
parent
b992029528
commit
b85c3ed870
|
|
@ -222,25 +222,15 @@ func (c *Cluster) relabelPodsForSelector(oldSelector, newSelector map[string]str
|
|||
if err != nil {
|
||||
return fmt.Errorf("could not list pods for relabeling: %v", err)
|
||||
}
|
||||
pods := podList.Items
|
||||
patchData, err := metaLabelsPatch(newSelector)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not form label patch for pods: %v", err)
|
||||
}
|
||||
|
||||
for _, pod := range pods {
|
||||
// only patch pods that are missing one or more of the new selector labels
|
||||
needsPatch := false
|
||||
for k, v := range newSelector {
|
||||
if pod.Labels[k] != v {
|
||||
needsPatch = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !needsPatch {
|
||||
for _, pod := range podList.Items {
|
||||
if util.MapContains(pod.Labels, newSelector) {
|
||||
continue
|
||||
}
|
||||
|
||||
patchData, err := metaLabelsPatch(newSelector)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not form label patch for pod %q: %v", pod.Name, err)
|
||||
}
|
||||
if _, err := c.KubeClient.Pods(pod.Namespace).Patch(context.TODO(), pod.Name, types.MergePatchType, patchData, metav1.PatchOptions{}); err != nil {
|
||||
return fmt.Errorf("could not relabel pod %q: %v", pod.Name, err)
|
||||
}
|
||||
|
|
@ -259,21 +249,14 @@ func (c *Cluster) relabelPVCsForSelector(oldSelector, newSelector map[string]str
|
|||
return fmt.Errorf("could not list PVCs for relabeling: %v", err)
|
||||
}
|
||||
|
||||
for _, pvc := range pvcList.Items {
|
||||
needsPatch := false
|
||||
for k, v := range newSelector {
|
||||
if pvc.Labels[k] != v {
|
||||
needsPatch = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !needsPatch {
|
||||
continue
|
||||
}
|
||||
patchData, err := metaLabelsPatch(newSelector)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not form label patch for PVCs: %v", err)
|
||||
}
|
||||
|
||||
patchData, err := metaLabelsPatch(newSelector)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not form label patch for PVC %q: %v", pvc.Name, err)
|
||||
for _, pvc := range pvcList.Items {
|
||||
if util.MapContains(pvc.Labels, newSelector) {
|
||||
continue
|
||||
}
|
||||
if _, err := c.KubeClient.PersistentVolumeClaims(pvc.Namespace).Patch(context.TODO(), pvc.Name, types.MergePatchType, patchData, metav1.PatchOptions{}); err != nil {
|
||||
return fmt.Errorf("could not relabel PVC %q: %v", pvc.Name, err)
|
||||
|
|
@ -434,6 +417,17 @@ func (c *Cluster) updateService(role PostgresRole, oldService *v1.Service, newSe
|
|||
}
|
||||
}
|
||||
|
||||
if !util.MapContains(oldService.Labels, newService.Labels) {
|
||||
patchData, err := metaLabelsPatch(newService.Labels)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not form patch for service %q labels: %v", oldService.Name, err)
|
||||
}
|
||||
svc, err = c.KubeClient.Services(serviceName.Namespace).Patch(context.TODO(), newService.Name, types.MergePatchType, patchData, metav1.PatchOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not patch labels for service %q: %v", oldService.Name, err)
|
||||
}
|
||||
}
|
||||
|
||||
return svc, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import (
|
|||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/zalando/postgres-operator/pkg/spec"
|
||||
"github.com/zalando/postgres-operator/pkg/util"
|
||||
"github.com/zalando/postgres-operator/pkg/util/constants"
|
||||
"github.com/zalando/postgres-operator/pkg/util/filesystems"
|
||||
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
|
||||
|
|
@ -198,6 +199,7 @@ func (c *Cluster) syncVolumeClaims() error {
|
|||
if err != nil {
|
||||
return fmt.Errorf("could not list persistent volume claims: %v", err)
|
||||
}
|
||||
newLabels := c.labelsSet(true)
|
||||
for _, pvc := range pvcs {
|
||||
c.VolumeClaims[pvc.UID] = &pvc
|
||||
needsUpdate := false
|
||||
|
|
@ -236,6 +238,19 @@ func (c *Cluster) syncVolumeClaims() error {
|
|||
}
|
||||
c.VolumeClaims[pvc.UID] = patchedPvc
|
||||
}
|
||||
|
||||
if !util.MapContains(pvc.Labels, newLabels) {
|
||||
patchData, err := metaLabelsPatch(newLabels)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not form patch for labels of persistent volume claim %q: %v", pvc.Name, err)
|
||||
}
|
||||
patchedPvc, err := c.KubeClient.PersistentVolumeClaims(pvc.Namespace).Patch(context.TODO(), pvc.Name, types.MergePatchType, patchData, metav1.PatchOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not patch labels of persistent volume claim %q: %v", pvc.Name, err)
|
||||
}
|
||||
c.VolumeClaims[pvc.UID] = patchedPvc
|
||||
c.logger.Infof("updated labels on persistent volume claim %q", pvc.Name)
|
||||
}
|
||||
}
|
||||
|
||||
c.logger.Debug("volume claims have been synced successfully")
|
||||
|
|
|
|||
Loading…
Reference in New Issue