Skip to content

Commit d561961

Browse files
dprinceopenshift-cherrypick-robot
authored andcommitted
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 bfc04c8 commit d561961

File tree

5 files changed

+76
-9
lines changed

5 files changed

+76
-9
lines changed

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
@@ -319,6 +319,20 @@ func (r *OpenStackControlPlaneReconciler) Reconcile(ctx context.Context, req ctr
319319
return ctrlResult, nil
320320
}
321321
}
322+
323+
// Memcached
324+
ctrlResult, err = openstack.ReconcileMemcacheds(ctx, instance, version, helper)
325+
if err != nil {
326+
return ctrl.Result{}, err
327+
} else if (ctrlResult != ctrl.Result{}) {
328+
return ctrlResult, nil
329+
} else {
330+
if !version.Status.Conditions.IsTrue(corev1beta1.OpenStackVersionMinorUpdateMemcached) {
331+
Log.Info("Returning for Memcached minor update reconcile")
332+
return ctrlResult, nil
333+
}
334+
}
335+
322336
// Keystone API
323337
ctrlResult, err = openstack.ReconcileKeystoneAPI(ctx, instance, version, helper)
324338
if err != nil {

controllers/core/openstackversion_controller.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
168168
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateOVNDataplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
169169
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateRabbitMQ, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
170170
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateMariaDB, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
171+
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateMemcached, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
171172
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateKeystone, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
172173
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateControlplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
173174
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateDataplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
@@ -314,6 +315,21 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
314315
corev1beta1.OpenStackVersionMinorUpdateMariaDB,
315316
corev1beta1.OpenStackVersionMinorUpdateReadyMessage)
316317

318+
// minor update for Memcached
319+
if !openstack.MemcachedImageMatch(ctx, controlPlane, instance) ||
320+
!controlPlane.Status.Conditions.IsTrue(corev1beta1.OpenStackControlPlaneMemcachedReadyCondition) {
321+
instance.Status.Conditions.Set(condition.FalseCondition(
322+
corev1beta1.OpenStackVersionMinorUpdateMemcached,
323+
condition.RequestedReason,
324+
condition.SeverityInfo,
325+
corev1beta1.OpenStackVersionMinorUpdateReadyRunningMessage))
326+
Log.Info("Minor update for Memcached in progress")
327+
return ctrl.Result{}, nil
328+
}
329+
instance.Status.Conditions.MarkTrue(
330+
corev1beta1.OpenStackVersionMinorUpdateMemcached,
331+
corev1beta1.OpenStackVersionMinorUpdateReadyMessage)
332+
317333
// minor update for Keystone API
318334
if !openstack.KeystoneImageMatch(ctx, controlPlane, instance) ||
319335
!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)