Working major version trigger. However current policies do now allow execution.
This commit is contained in:
		
							parent
							
								
									c0122bfc53
								
							
						
					
					
						commit
						cd28715a20
					
				| 
						 | 
					@ -129,10 +129,11 @@ func New(cfg Config, kubeClient k8sutil.KubernetesClient, pgSpec acidv1.Postgres
 | 
				
			||||||
			Secrets:   make(map[types.UID]*v1.Secret),
 | 
								Secrets:   make(map[types.UID]*v1.Secret),
 | 
				
			||||||
			Services:  make(map[PostgresRole]*v1.Service),
 | 
								Services:  make(map[PostgresRole]*v1.Service),
 | 
				
			||||||
			Endpoints: make(map[PostgresRole]*v1.Endpoints)},
 | 
								Endpoints: make(map[PostgresRole]*v1.Endpoints)},
 | 
				
			||||||
		userSyncStrategy: users.DefaultUserSyncStrategy{PasswordEncryption: passwordEncryption},
 | 
							userSyncStrategy:    users.DefaultUserSyncStrategy{PasswordEncryption: passwordEncryption},
 | 
				
			||||||
		deleteOptions:    metav1.DeleteOptions{PropagationPolicy: &deletePropagationPolicy},
 | 
							deleteOptions:       metav1.DeleteOptions{PropagationPolicy: &deletePropagationPolicy},
 | 
				
			||||||
		podEventsQueue:   podEventsQueue,
 | 
							podEventsQueue:      podEventsQueue,
 | 
				
			||||||
		KubeClient:       kubeClient,
 | 
							KubeClient:          kubeClient,
 | 
				
			||||||
 | 
							currentMajorVersion: 0,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	cluster.logger = logger.WithField("pkg", "cluster").WithField("cluster-name", cluster.clusterName())
 | 
						cluster.logger = logger.WithField("pkg", "cluster").WithField("cluster-name", cluster.clusterName())
 | 
				
			||||||
	cluster.teamsAPIClient = teams.NewTeamsAPI(cfg.OpConfig.TeamsAPIUrl, logger)
 | 
						cluster.teamsAPIClient = teams.NewTeamsAPI(cfg.OpConfig.TeamsAPIUrl, logger)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,6 +48,13 @@ func (c *Cluster) majorVersionUpgrade() error {
 | 
				
			||||||
		return nil
 | 
							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()
 | 
						pods, _ := c.listPods()
 | 
				
			||||||
	allRunning := true
 | 
						allRunning := true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -69,13 +76,11 @@ func (c *Cluster) majorVersionUpgrade() error {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	numberOfPods := len(pods)
 | 
						numberOfPods := len(pods)
 | 
				
			||||||
	if allRunning && masterPod != nil {
 | 
						if allRunning && masterPod != nil {
 | 
				
			||||||
		desiredVersion := c.GetDesiredMajorVersionAsInt()
 | 
							c.logger.Infof("healthy cluster ready to upgrade, current: %d desired: %d", c.currentMajorVersion, desiredVersion)
 | 
				
			||||||
		c.logger.Infof("healthy cluster, version: %d desired: %d", c.currentMajorVersion, desiredVersion)
 | 
					 | 
				
			||||||
		if c.currentMajorVersion < desiredVersion {
 | 
							if c.currentMajorVersion < desiredVersion {
 | 
				
			||||||
			podName := &spec.NamespacedName{Namespace: masterPod.Namespace, Name: masterPod.Name}
 | 
								podName := &spec.NamespacedName{Namespace: masterPod.Namespace, Name: masterPod.Name}
 | 
				
			||||||
			c.logger.Infof("triggering major version upgrade on pod %s", masterPod.Name)
 | 
								c.logger.Infof("triggering major version upgrade on pod %s of %d pods", masterPod.Name, numberOfPods)
 | 
				
			||||||
			command := fmt.Sprintf("su postgres -c \"/usr/bin/python3 /scripts/inplace_upgrade.py %d 2>&1 | tee last_upgrade.log\"", numberOfPods)
 | 
								command := fmt.Sprintf("/bin/su postgres -c \"/usr/bin/python3 /scripts/inplace_upgrade.py %d 2>&1 | tee last_upgrade.log\"", numberOfPods)
 | 
				
			||||||
			c.logger.Infof("executing: %s", command)
 | 
					 | 
				
			||||||
			_, err := c.ExecCommand(podName, command)
 | 
								_, err := c.ExecCommand(podName, command)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -199,10 +199,10 @@ func (c *Controller) processEvent(event ClusterEvent) {
 | 
				
			||||||
	if event.EventType == EventRepair {
 | 
						if event.EventType == EventRepair {
 | 
				
			||||||
		runRepair, lastOperationStatus := cl.NeedsRepair()
 | 
							runRepair, lastOperationStatus := cl.NeedsRepair()
 | 
				
			||||||
		if !runRepair {
 | 
							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
 | 
								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
 | 
							event.EventType = EventSync
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -217,7 +217,7 @@ func (c *Controller) processEvent(event ClusterEvent) {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err := c.submitRBACCredentials(event); err != nil {
 | 
							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 {
 | 
						switch event.EventType {
 | 
				
			||||||
	case EventAdd:
 | 
						case EventAdd:
 | 
				
			||||||
		if clusterFound {
 | 
							if clusterFound {
 | 
				
			||||||
			lg.Infof("Recieved add event for already existing Postgres cluster")
 | 
								lg.Infof("recieved add event for already existing Postgres cluster")
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -348,11 +348,11 @@ func (c *Controller) processClusterEventsQueue(idx int, stopCh <-chan struct{},
 | 
				
			||||||
func (c *Controller) warnOnDeprecatedPostgreSQLSpecParameters(spec *acidv1.PostgresSpec) {
 | 
					func (c *Controller) warnOnDeprecatedPostgreSQLSpecParameters(spec *acidv1.PostgresSpec) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	deprecate := func(deprecated, replacement string) {
 | 
						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) {
 | 
						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 {
 | 
						if spec.UseLoadBalancer != nil {
 | 
				
			||||||
| 
						 | 
					@ -368,7 +368,7 @@ func (c *Controller) warnOnDeprecatedPostgreSQLSpecParameters(spec *acidv1.Postg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (spec.UseLoadBalancer != nil || spec.ReplicaLoadBalancer != nil) &&
 | 
						if (spec.UseLoadBalancer != nil || spec.ReplicaLoadBalancer != nil) &&
 | 
				
			||||||
		(spec.EnableReplicaLoadBalancer != nil || spec.EnableMasterLoadBalancer != 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")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue