refactor into single method
This commit is contained in:
parent
1182c17963
commit
38417b589b
|
|
@ -9,7 +9,6 @@ import (
|
|||
"fmt"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
|
|
@ -680,24 +679,7 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error {
|
|||
}()
|
||||
|
||||
if c.OpConfig.EnableUnusedPVCDeletion && oldSpec.Spec.NumberOfInstances > newSpec.Spec.NumberOfInstances {
|
||||
c.logger.Debug("deleting pvc of shut down pods")
|
||||
|
||||
for i := oldSpec.Spec.NumberOfInstances - 1; i >= newSpec.Spec.NumberOfInstances; i-- {
|
||||
|
||||
// Scaling down to 0 replicas is not cluster deletion so keep the last pvc.
|
||||
// Operator will remove it only when explicit "kubectl pg delete" is issued
|
||||
if i == 0 {
|
||||
c.logger.Info("cluster scaled down to 0 pods; skipping deletion of the last pvc")
|
||||
break
|
||||
}
|
||||
|
||||
podIndex := strconv.Itoa(int(i))
|
||||
pvcName := "pgdata-" + c.Name + "-" + podIndex
|
||||
if err := c.KubeClient.PersistentVolumeClaims(c.Namespace).Delete(context.TODO(), pvcName, c.deleteOptions); err != nil {
|
||||
c.logger.Warningf("could not delete PersistentVolumeClaim: %v", err)
|
||||
// failing to delete pvc does not fail the update; Sync() may also delete unused PVCs later
|
||||
}
|
||||
}
|
||||
c.deleteUnusedPersistentVolumeClaims()
|
||||
}
|
||||
|
||||
// pod disruption budget
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package cluster
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
batchv1beta1 "k8s.io/api/batch/v1beta1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
|
|
@ -114,20 +113,7 @@ func (c *Cluster) Sync(newSpec *acidv1.Postgresql) error {
|
|||
// remove unused PVCs in case deleting them during scale down failed; see Update()
|
||||
// the last pvc stays until the cluster is explicitly deleted as opposed to being scaled down to 0 pods
|
||||
if c.OpConfig.EnableUnusedPVCDeletion && c.getNumberOfInstances(&c.Spec) > 0 {
|
||||
|
||||
// XXX that also deletes PVC of pods shut down before this change is deployed
|
||||
for i := c.getNumberOfInstances(&c.Spec); ; i++ {
|
||||
podIndex := strconv.Itoa(int(i))
|
||||
pvcName := "pgdata-" + c.Name + "-" + podIndex
|
||||
if err := c.KubeClient.PersistentVolumeClaims(c.Namespace).Delete(context.TODO(), pvcName, c.deleteOptions); err != nil {
|
||||
if k8sutil.ResourceNotFound(err) {
|
||||
// no more pvcs to delete
|
||||
break
|
||||
}
|
||||
c.logger.Warningf("could not delete PersistentVolumeClaim: %v", err)
|
||||
// next Sync() or Update() will retry
|
||||
}
|
||||
}
|
||||
c.deleteUnusedPersistentVolumeClaims()
|
||||
}
|
||||
|
||||
// sync connection pooler
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import (
|
|||
"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"
|
||||
"github.com/zalando/postgres-operator/pkg/util/volumes"
|
||||
)
|
||||
|
||||
|
|
@ -52,6 +53,33 @@ func (c *Cluster) deletePersistentVolumeClaims() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (c *Cluster) deleteUnusedPersistentVolumeClaims() {
|
||||
|
||||
c.logger.Debug("deleting pvc of shut down pods")
|
||||
|
||||
// Scaling down to 0 replicas is not cluster deletion so keep the last pvc.
|
||||
// Operator will remove it only when explicit "kubectl pg delete" is issued
|
||||
if c.getNumberOfInstances(&c.Spec) == 0 {
|
||||
c.logger.Info("cluster scaled down to 0 pods; skipping deletion of the last pvc")
|
||||
return
|
||||
}
|
||||
|
||||
// XXX that also deletes PVC of pods shut down before this change is deployed
|
||||
for i := c.getNumberOfInstances(&c.Spec); ; i++ {
|
||||
podIndex := strconv.Itoa(int(i))
|
||||
pvcName := "pgdata-" + c.Name + "-" + podIndex
|
||||
if err := c.KubeClient.PersistentVolumeClaims(c.Namespace).Delete(context.TODO(), pvcName, c.deleteOptions); err != nil {
|
||||
if k8sutil.ResourceNotFound(err) {
|
||||
// no more pvcs to delete
|
||||
break
|
||||
}
|
||||
c.logger.Warningf("could not delete PersistentVolumeClaim: %v", err)
|
||||
// next Sync() or Update() will retry
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (c *Cluster) listPersistentVolumes() ([]*v1.PersistentVolume, error) {
|
||||
result := make([]*v1.PersistentVolume, 0)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue