Working major version trigger. However current policies do now allow execution.
This commit is contained in:
parent
c0122bfc53
commit
cd28715a20
|
|
@ -133,6 +133,7 @@ func New(cfg Config, kubeClient k8sutil.KubernetesClient, pgSpec acidv1.Postgres
|
||||||
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