Skip to content

Commit 673d531

Browse files
committed
minor update: update memcached in sequence
Change the minor update workflow so that Memcached is updated in its own step. Jira: OSPRH-16109
1 parent a7ebf5e commit 673d531

5 files changed

Lines changed: 76 additions & 9 deletions

File tree

apis/core/v1beta1/conditions.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,8 @@ const (
500500

501501
OpenStackVersionMinorUpdateMariaDB condition.Type = "MinorUpdateMariaDB"
502502

503+
OpenStackVersionMinorUpdateMemcached condition.Type = "MinorUpdateMemcached"
504+
503505
OpenStackVersionMinorUpdateKeystone condition.Type = "MinorUpdateKeystone"
504506

505507
OpenStackVersionMinorUpdateControlplane condition.Type = "MinorUpdateControlplane"

controllers/core/openstackcontrolplane_controller.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,20 @@ func (r *OpenStackControlPlaneReconciler) Reconcile(ctx context.Context, req ctr
314314
return ctrlResult, nil
315315
}
316316
}
317+
318+
// Memcached
319+
ctrlResult, err = openstack.ReconcileMemcacheds(ctx, instance, version, helper)
320+
if err != nil {
321+
return ctrl.Result{}, err
322+
} else if (ctrlResult != ctrl.Result{}) {
323+
return ctrlResult, nil
324+
} else {
325+
if !version.Status.Conditions.IsTrue(corev1beta1.OpenStackVersionMinorUpdateMemcached) {
326+
Log.Info("Returning for Memcached minor update reconcile")
327+
return ctrlResult, nil
328+
}
329+
}
330+
317331
// Keystone API
318332
ctrlResult, err = openstack.ReconcileKeystoneAPI(ctx, instance, version, helper)
319333
if err != nil {

controllers/core/openstackversion_controller.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
162162
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateOVNDataplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
163163
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateRabbitMQ, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
164164
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateMariaDB, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
165+
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateMemcached, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
165166
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateKeystone, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
166167
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateControlplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
167168
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateDataplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
@@ -308,6 +309,21 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
308309
corev1beta1.OpenStackVersionMinorUpdateMariaDB,
309310
corev1beta1.OpenStackVersionMinorUpdateReadyMessage)
310311

312+
// minor update for Memcached
313+
if !openstack.MemcachedImageMatch(ctx, controlPlane, instance) ||
314+
!controlPlane.Status.Conditions.IsTrue(corev1beta1.OpenStackControlPlaneMemcachedReadyCondition) {
315+
instance.Status.Conditions.Set(condition.FalseCondition(
316+
corev1beta1.OpenStackVersionMinorUpdateMemcached,
317+
condition.RequestedReason,
318+
condition.SeverityInfo,
319+
corev1beta1.OpenStackVersionMinorUpdateReadyRunningMessage))
320+
Log.Info("Minor update for Memcached in progress")
321+
return ctrl.Result{}, nil
322+
}
323+
instance.Status.Conditions.MarkTrue(
324+
corev1beta1.OpenStackVersionMinorUpdateMemcached,
325+
corev1beta1.OpenStackVersionMinorUpdateReadyMessage)
326+
311327
// minor update for Keystone API
312328
if !openstack.KeystoneImageMatch(ctx, controlPlane, instance) ||
313329
!controlPlane.Status.Conditions.IsTrue(corev1beta1.OpenStackControlPlaneKeystoneAPIReadyCondition) {

tests/functional/ctlplane/base_test.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -744,15 +744,9 @@ func SimulateGalaraReady() {
744744

745745
}
746746

747-
func SimulateControlplaneReady() {
748-
instance := GetOpenStackControlPlane(names.OpenStackControlplaneName)
749-
750-
SimulateRabbitmqReady()
751-
SimulateGalaraReady()
747+
func SimulateMemcachedReady() {
752748

753-
if instance.Spec.Keystone.Enabled {
754-
keystone.SimulateKeystoneAPIReady(names.KeystoneAPIName)
755-
}
749+
instance := GetOpenStackControlPlane(names.OpenStackControlplaneName)
756750

757751
if instance.Spec.Memcached.Enabled {
758752
if instance.Spec.TLS.PodLevel.Enabled {
@@ -763,6 +757,19 @@ func SimulateControlplaneReady() {
763757
}
764758
}
765759

760+
}
761+
762+
func SimulateControlplaneReady() {
763+
instance := GetOpenStackControlPlane(names.OpenStackControlplaneName)
764+
765+
SimulateRabbitmqReady()
766+
SimulateGalaraReady()
767+
SimulateMemcachedReady()
768+
769+
if instance.Spec.Keystone.Enabled {
770+
keystone.SimulateKeystoneAPIReady(names.KeystoneAPIName)
771+
}
772+
766773
if instance.Spec.Ovn.Enabled {
767774
ovn.SimulateOVNNorthdReady(names.OVNNorthdName)
768775
ovn.SimulateOVNDBClusterReady(names.OVNDbServerNBName)

tests/functional/ctlplane/openstackversion_controller_test.go

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,12 @@ var _ = Describe("OpenStackOperator controller", func() {
202202
targetOvnControllerVersion := ""
203203
targetRabbitMQVersion := ""
204204
targetMariaDBVersion := ""
205+
targetMemcachedVersion := ""
205206
targetKeystoneAPIVersion := ""
206207
testOvnControllerImage := "foo/ovn:0.0.2"
207208
testRabbitMQImage := "foo/rabbit:0.0.2"
208209
testMariaDBImage := "foo/maria:0.0.2"
210+
testMemcachedImage := "foo/memcached:0.0.2"
209211
testKeystoneAPIImage := "foo/keystone:0.0.2"
210212

211213
// a lightweight controlplane spec we'll use for minor update testing
@@ -307,6 +309,7 @@ var _ = Describe("OpenStackOperator controller", func() {
307309
targetOvnControllerVersion = *version.Status.ContainerImages.OvnControllerImage
308310
targetRabbitMQVersion = *version.Status.ContainerImages.RabbitmqImage
309311
targetMariaDBVersion = *version.Status.ContainerImages.MariadbImage
312+
targetMemcachedVersion = *version.Status.ContainerImages.InfraMemcachedImage
310313
targetKeystoneAPIVersion = *version.Status.ContainerImages.KeystoneAPIImage
311314
g.Expect(version).Should(Not(BeNil()))
312315

@@ -322,6 +325,7 @@ var _ = Describe("OpenStackOperator controller", func() {
322325
version.Status.ContainerImageVersionDefaults[initialVersion].OvnControllerImage = &testOvnControllerImage
323326
version.Status.ContainerImageVersionDefaults[initialVersion].RabbitmqImage = &testRabbitMQImage
324327
version.Status.ContainerImageVersionDefaults[initialVersion].MariadbImage = &testMariaDBImage
328+
version.Status.ContainerImageVersionDefaults[initialVersion].InfraMemcachedImage = &testMemcachedImage
325329
version.Status.ContainerImageVersionDefaults[initialVersion].KeystoneAPIImage = &testKeystoneAPIImage
326330
g.Expect(th.K8sClient.Status().Update(th.Ctx, version)).To(Succeed())
327331

@@ -354,6 +358,7 @@ var _ = Describe("OpenStackOperator controller", func() {
354358
g.Expect(*osversion.Status.ContainerImages.OvnControllerImage).Should(Equal(testOvnControllerImage))
355359
g.Expect(*osversion.Status.ContainerImages.RabbitmqImage).Should(Equal(testRabbitMQImage))
356360
g.Expect(*osversion.Status.ContainerImages.MariadbImage).Should(Equal(testMariaDBImage))
361+
g.Expect(*osversion.Status.ContainerImages.InfraMemcachedImage).Should(Equal(testMemcachedImage))
357362
g.Expect(*osversion.Status.ContainerImages.KeystoneAPIImage).Should(Equal(testKeystoneAPIImage))
358363

359364
}, timeout, interval).Should(Succeed())
@@ -448,6 +453,7 @@ var _ = Describe("OpenStackOperator controller", func() {
448453
g.Expect(*osversion.Status.ContainerImages.OvnControllerImage).Should(Equal(targetOvnControllerVersion))
449454
g.Expect(*osversion.Status.ContainerImages.RabbitmqImage).Should(Equal(targetRabbitMQVersion))
450455
g.Expect(*osversion.Status.ContainerImages.MariadbImage).Should(Equal(targetMariaDBVersion))
456+
g.Expect(*osversion.Status.ContainerImages.InfraMemcachedImage).Should(Equal(targetMemcachedVersion))
451457
g.Expect(*osversion.Status.ContainerImages.KeystoneAPIImage).Should(Equal(targetKeystoneAPIVersion))
452458

453459
}, timeout, interval).Should(Succeed())
@@ -568,7 +574,29 @@ var _ = Describe("OpenStackOperator controller", func() {
568574

569575
}, timeout, interval).Should(Succeed())
570576

571-
// 4c) Keystone
577+
// 4c) Memcached
578+
th.ExpectCondition(
579+
names.OpenStackVersionName,
580+
ConditionGetterFunc(OpenStackVersionConditionGetter),
581+
corev1.OpenStackVersionMinorUpdateMemcached,
582+
k8s_corev1.ConditionFalse,
583+
)
584+
585+
SimulateMemcachedReady()
586+
587+
Eventually(func(g Gomega) {
588+
th.ExpectCondition(
589+
names.OpenStackVersionName,
590+
ConditionGetterFunc(OpenStackVersionConditionGetter),
591+
corev1.OpenStackVersionMinorUpdateMemcached,
592+
k8s_corev1.ConditionTrue,
593+
)
594+
OSCtlplane := GetOpenStackControlPlane(names.OpenStackControlplaneName)
595+
g.Expect(*OSCtlplane.Status.ContainerImages.InfraMemcachedImage).Should(Equal(targetMemcachedVersion))
596+
597+
}, timeout, interval).Should(Succeed())
598+
599+
// 4d) Keystone
572600

573601
th.ExpectCondition(
574602
names.OpenStackVersionName,

0 commit comments

Comments
 (0)