From cd28715a206a275fb7d5a16bb40220a95d73ddfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Mu=C3=9Fler?= Date: Tue, 23 Feb 2021 23:06:18 +0100 Subject: [PATCH] Working major version trigger. However current policies do now allow execution. --- pkg/cluster/cluster.go | 9 +++++---- pkg/cluster/majorversionupgrade.go | 15 ++++++++++----- pkg/controller/postgresql.go | 14 +++++++------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index cd3a34e16..d244b1409 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -129,10 +129,11 @@ func New(cfg Config, kubeClient k8sutil.KubernetesClient, pgSpec acidv1.Postgres Secrets: make(map[types.UID]*v1.Secret), Services: make(map[PostgresRole]*v1.Service), Endpoints: make(map[PostgresRole]*v1.Endpoints)}, - userSyncStrategy: users.DefaultUserSyncStrategy{PasswordEncryption: passwordEncryption}, - deleteOptions: metav1.DeleteOptions{PropagationPolicy: &deletePropagationPolicy}, - podEventsQueue: podEventsQueue, - KubeClient: kubeClient, + userSyncStrategy: users.DefaultUserSyncStrategy{PasswordEncryption: passwordEncryption}, + deleteOptions: metav1.DeleteOptions{PropagationPolicy: &deletePropagationPolicy}, + podEventsQueue: podEventsQueue, + KubeClient: kubeClient, + currentMajorVersion: 0, } cluster.logger = logger.WithField("pkg", "cluster").WithField("cluster-name", cluster.clusterName()) cluster.teamsAPIClient = teams.NewTeamsAPI(cfg.OpConfig.TeamsAPIUrl, logger) diff --git a/pkg/cluster/majorversionupgrade.go b/pkg/cluster/majorversionupgrade.go index 51630c019..1cfa106cc 100644 --- a/pkg/cluster/majorversionupgrade.go +++ b/pkg/cluster/majorversionupgrade.go @@ -48,6 +48,13 @@ func (c *Cluster) majorVersionUpgrade() error { return nil } + desiredVersion := c.GetDesiredMajorVersionAsInt() + + if c.currentMajorVersion >= desiredVersion { + c.logger.Infof("cluster version up to date. current: %d desired: %d", c.currentMajorVersion, desiredVersion) + return nil + } + pods, _ := c.listPods() allRunning := true @@ -69,13 +76,11 @@ func (c *Cluster) majorVersionUpgrade() error { numberOfPods := len(pods) if allRunning && masterPod != nil { - desiredVersion := c.GetDesiredMajorVersionAsInt() - c.logger.Infof("healthy cluster, version: %d desired: %d", c.currentMajorVersion, desiredVersion) + c.logger.Infof("healthy cluster ready to upgrade, current: %d desired: %d", c.currentMajorVersion, desiredVersion) if c.currentMajorVersion < desiredVersion { podName := &spec.NamespacedName{Namespace: masterPod.Namespace, Name: masterPod.Name} - c.logger.Infof("triggering major version upgrade on pod %s", masterPod.Name) - command := fmt.Sprintf("su postgres -c \"/usr/bin/python3 /scripts/inplace_upgrade.py %d 2>&1 | tee last_upgrade.log\"", numberOfPods) - c.logger.Infof("executing: %s", command) + c.logger.Infof("triggering major version upgrade on pod %s of %d pods", masterPod.Name, numberOfPods) + command := fmt.Sprintf("/bin/su postgres -c \"/usr/bin/python3 /scripts/inplace_upgrade.py %d 2>&1 | tee last_upgrade.log\"", numberOfPods) _, err := c.ExecCommand(podName, command) if err != nil { return err diff --git a/pkg/controller/postgresql.go b/pkg/controller/postgresql.go index 0fe0c1120..b3c4d8414 100644 --- a/pkg/controller/postgresql.go +++ b/pkg/controller/postgresql.go @@ -199,10 +199,10 @@ func (c *Controller) processEvent(event ClusterEvent) { if event.EventType == EventRepair { runRepair, lastOperationStatus := cl.NeedsRepair() if !runRepair { - lg.Debugf("Observed cluster status %s, repair is not required", lastOperationStatus) + lg.Debugf("observed cluster status %s, repair is not required", lastOperationStatus) return } - lg.Debugf("Observed cluster status %s, running sync scan to repair the cluster", lastOperationStatus) + lg.Debugf("observed cluster status %s, running sync scan to repair the cluster", lastOperationStatus) event.EventType = EventSync } @@ -217,7 +217,7 @@ func (c *Controller) processEvent(event ClusterEvent) { } if err := c.submitRBACCredentials(event); err != nil { - c.logger.Warnf("Pods and/or Patroni may misfunction due to the lack of permissions: %v", err) + c.logger.Warnf("pods and/or Patroni may misfunction due to the lack of permissions: %v", err) } } @@ -225,7 +225,7 @@ func (c *Controller) processEvent(event ClusterEvent) { switch event.EventType { case EventAdd: if clusterFound { - lg.Infof("Recieved add event for already existing Postgres cluster") + lg.Infof("recieved add event for already existing Postgres cluster") return } @@ -348,11 +348,11 @@ func (c *Controller) processClusterEventsQueue(idx int, stopCh <-chan struct{}, func (c *Controller) warnOnDeprecatedPostgreSQLSpecParameters(spec *acidv1.PostgresSpec) { deprecate := func(deprecated, replacement string) { - c.logger.Warningf("Parameter %q is deprecated. Consider setting %q instead", deprecated, replacement) + c.logger.Warningf("parameter %q is deprecated. Consider setting %q instead", deprecated, replacement) } noeffect := func(param string, explanation string) { - c.logger.Warningf("Parameter %q takes no effect. %s", param, explanation) + c.logger.Warningf("parameter %q takes no effect. %s", param, explanation) } if spec.UseLoadBalancer != nil { @@ -368,7 +368,7 @@ func (c *Controller) warnOnDeprecatedPostgreSQLSpecParameters(spec *acidv1.Postg if (spec.UseLoadBalancer != nil || spec.ReplicaLoadBalancer != nil) && (spec.EnableReplicaLoadBalancer != nil || spec.EnableMasterLoadBalancer != nil) { - c.logger.Warnf("Both old and new load balancer parameters are present in the manifest, ignoring old ones") + c.logger.Warnf("both old and new load balancer parameters are present in the manifest, ignoring old ones") } }