From b99567415b5334c97ff13328606f8da2caa626ca Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Wed, 12 Jun 2019 18:02:11 +0200 Subject: [PATCH] sync PDB also on update --- pkg/cluster/cluster.go | 9 +++++++++ pkg/cluster/sync.go | 28 ++++++++++++++-------------- pkg/util/k8sutil/k8sutil.go | 2 +- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index e75002a7f..0a41349f5 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -579,6 +579,15 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error { } }() + // pod disruption budget + if oldSpec.Spec.NumberOfInstances != newSpec.Spec.NumberOfInstances { + c.logger.Debug("syncing pod disruption budgets") + if err := c.syncPodDisruptionBudget(true); err != nil { + c.logger.Errorf("could not sync pod disruption budget: %v", err) + updateFailed = true + } + } + // logical backup job func() { diff --git a/pkg/cluster/sync.go b/pkg/cluster/sync.go index f5ae30b81..f69bdd2d9 100644 --- a/pkg/cluster/sync.go +++ b/pkg/cluster/sync.go @@ -73,20 +73,6 @@ func (c *Cluster) Sync(newSpec *acidv1.Postgresql) error { } } - // create database objects unless we are running without pods or disabled that feature explicitly - if !(c.databaseAccessDisabled() || c.getNumberOfInstances(&newSpec.Spec) <= 0) { - c.logger.Debugf("syncing roles") - if err = c.syncRoles(); err != nil { - err = fmt.Errorf("could not sync roles: %v", err) - return err - } - c.logger.Debugf("syncing databases") - if err = c.syncDatabases(); err != nil { - err = fmt.Errorf("could not sync databases: %v", err) - return err - } - } - c.logger.Debug("syncing pod disruption budgets") if err = c.syncPodDisruptionBudget(false); err != nil { err = fmt.Errorf("could not sync pod disruption budget: %v", err) @@ -103,6 +89,20 @@ func (c *Cluster) Sync(newSpec *acidv1.Postgresql) error { } } + // create database objects unless we are running without pods or disabled that feature explicitly + if !(c.databaseAccessDisabled() || c.getNumberOfInstances(&newSpec.Spec) <= 0) { + c.logger.Debugf("syncing roles") + if err = c.syncRoles(); err != nil { + err = fmt.Errorf("could not sync roles: %v", err) + return err + } + c.logger.Debugf("syncing databases") + if err = c.syncDatabases(); err != nil { + err = fmt.Errorf("could not sync databases: %v", err) + return err + } + } + return err } diff --git a/pkg/util/k8sutil/k8sutil.go b/pkg/util/k8sutil/k8sutil.go index bd10256e0..66b51dd1f 100644 --- a/pkg/util/k8sutil/k8sutil.go +++ b/pkg/util/k8sutil/k8sutil.go @@ -158,7 +158,7 @@ func SamePDB(cur, new *policybeta1.PodDisruptionBudget) (match bool, reason stri //TODO: improve comparison match = reflect.DeepEqual(new.Spec, cur.Spec) if !match { - reason = "new service spec doesn't match the current one" + reason = "new PDB spec doesn't match the current one" } return