From 706f792ae47c369cb3556faff186b6873a8a247f Mon Sep 17 00:00:00 2001 From: Viacheslav Sarzhan Date: Tue, 12 Apr 2022 11:48:06 +0300 Subject: [PATCH] Fix image usage * if smart update is enabled operator can get the latest docker images from VS but after that when user applies CR these images can be overwritten --- pkg/controller/pxc/controller.go | 11 +++++++---- pkg/controller/pxc/version.go | 14 +++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/pkg/controller/pxc/controller.go b/pkg/controller/pxc/controller.go index 20b1719f5b..508607f4c0 100644 --- a/pkg/controller/pxc/controller.go +++ b/pkg/controller/pxc/controller.go @@ -299,11 +299,14 @@ func (r *ReconcilePerconaXtraDBCluster) Reconcile(_ context.Context, request rec r.resyncPXCUsersWithProxySQL(o) - if o.Status.PXC.Version == "" || strings.HasSuffix(o.Status.PXC.Version, "intermediate") { - err := r.ensurePXCVersion(o, VersionServiceClient{OpVersion: o.Version().String()}) - if err != nil { - reqLogger.Info("failed to ensure version, running with default", "error", err) + if isSmartUpdate(o) { + if o.Status.PXC.Version == "" || strings.HasSuffix(o.Status.PXC.Version, "intermediate") { + err := r.ensurePXCVersion(o, VersionServiceClient{OpVersion: o.Version().String()}) + if err != nil { + reqLogger.Info("failed to ensure version, running with default", "error", err) + } } + o.Spec.PXC.Image = o.Status.PXC.Image } err = r.deploy(o) diff --git a/pkg/controller/pxc/version.go b/pkg/controller/pxc/version.go index 0394d819cf..8b5ccb9372 100644 --- a/pkg/controller/pxc/version.go +++ b/pkg/controller/pxc/version.go @@ -123,11 +123,18 @@ func jobName(cr *apiv1.PerconaXtraDBCluster) string { return fmt.Sprintf("%s/%s", jobName, nn.String()) } -func (r *ReconcilePerconaXtraDBCluster) ensurePXCVersion(cr *apiv1.PerconaXtraDBCluster, vs VersionService) error { +func isSmartUpdate(cr *apiv1.PerconaXtraDBCluster) bool { if cr.Spec.UpdateStrategy != apiv1.SmartUpdateStatefulSetStrategyType || cr.Spec.UpgradeOptions.Schedule == "" || strings.ToLower(cr.Spec.UpgradeOptions.Apply) == never || strings.ToLower(cr.Spec.UpgradeOptions.Apply) == disabled { + return false + } + return true +} + +func (r *ReconcilePerconaXtraDBCluster) ensurePXCVersion(cr *apiv1.PerconaXtraDBCluster, vs VersionService) error { + if !isSmartUpdate(cr) { return nil } @@ -220,12 +227,17 @@ func (r *ReconcilePerconaXtraDBCluster) ensurePXCVersion(cr *apiv1.PerconaXtraDB } cr.Status.ProxySQL.Version = newVersion.ProxySqlVersion + cr.Status.ProxySQL.Image = newVersion.ProxySqlImage cr.Status.HAProxy.Version = newVersion.HAProxyVersion + cr.Status.HAProxy.Image = newVersion.HAProxyImage cr.Status.PMM.Version = newVersion.PMMVersion + cr.Status.PMM.Image = newVersion.PMMImage cr.Status.Backup.Version = newVersion.BackupVersion + cr.Status.Backup.Image = newVersion.BackupImage cr.Status.PXC.Version = newVersion.PXCVersion cr.Status.PXC.Image = newVersion.PXCImage cr.Status.LogCollector.Version = newVersion.LogCollectorVersion + cr.Status.LogCollector.Image = newVersion.LogCollectorImage return r.client.Status().Update(context.Background(), cr) })