Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions apis/core/v1beta1/conditions.go
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,8 @@ const (

OpenStackVersionMinorUpdateMariaDB condition.Type = "MinorUpdateMariaDB"

OpenStackVersionMinorUpdateMemcached condition.Type = "MinorUpdateMemcached"

OpenStackVersionMinorUpdateKeystone condition.Type = "MinorUpdateKeystone"

OpenStackVersionMinorUpdateControlplane condition.Type = "MinorUpdateControlplane"
Expand Down
14 changes: 14 additions & 0 deletions controllers/core/openstackcontrolplane_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,20 @@ func (r *OpenStackControlPlaneReconciler) Reconcile(ctx context.Context, req ctr
return ctrlResult, nil
}
}

// Memcached
ctrlResult, err = openstack.ReconcileMemcacheds(ctx, instance, version, helper)
if err != nil {
return ctrl.Result{}, err
} else if (ctrlResult != ctrl.Result{}) {
return ctrlResult, nil
} else {
if !version.Status.Conditions.IsTrue(corev1beta1.OpenStackVersionMinorUpdateMemcached) {
Log.Info("Returning for Memcached minor update reconcile")
return ctrlResult, nil
}
}

// Keystone API
ctrlResult, err = openstack.ReconcileKeystoneAPI(ctx, instance, version, helper)
if err != nil {
Expand Down
16 changes: 16 additions & 0 deletions controllers/core/openstackversion_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateOVNDataplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateRabbitMQ, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateMariaDB, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateMemcached, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateKeystone, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateControlplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateDataplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
Expand Down Expand Up @@ -314,6 +315,21 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
corev1beta1.OpenStackVersionMinorUpdateMariaDB,
corev1beta1.OpenStackVersionMinorUpdateReadyMessage)

// minor update for Memcached
if !openstack.MemcachedImageMatch(ctx, controlPlane, instance) ||
!controlPlane.Status.Conditions.IsTrue(corev1beta1.OpenStackControlPlaneMemcachedReadyCondition) {
instance.Status.Conditions.Set(condition.FalseCondition(
corev1beta1.OpenStackVersionMinorUpdateMemcached,
condition.RequestedReason,
condition.SeverityInfo,
corev1beta1.OpenStackVersionMinorUpdateReadyRunningMessage))
Log.Info("Minor update for Memcached in progress")
return ctrl.Result{}, nil
}
instance.Status.Conditions.MarkTrue(
corev1beta1.OpenStackVersionMinorUpdateMemcached,
corev1beta1.OpenStackVersionMinorUpdateReadyMessage)

// minor update for Keystone API
if !openstack.KeystoneImageMatch(ctx, controlPlane, instance) ||
!controlPlane.Status.Conditions.IsTrue(corev1beta1.OpenStackControlPlaneKeystoneAPIReadyCondition) {
Expand Down
23 changes: 15 additions & 8 deletions tests/functional/ctlplane/base_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -744,15 +744,9 @@ func SimulateGalaraReady() {

}

func SimulateControlplaneReady() {
instance := GetOpenStackControlPlane(names.OpenStackControlplaneName)

SimulateRabbitmqReady()
SimulateGalaraReady()
func SimulateMemcachedReady() {

if instance.Spec.Keystone.Enabled {
keystone.SimulateKeystoneAPIReady(names.KeystoneAPIName)
}
instance := GetOpenStackControlPlane(names.OpenStackControlplaneName)

if instance.Spec.Memcached.Enabled {
if instance.Spec.TLS.PodLevel.Enabled {
Expand All @@ -763,6 +757,19 @@ func SimulateControlplaneReady() {
}
}

}

func SimulateControlplaneReady() {
instance := GetOpenStackControlPlane(names.OpenStackControlplaneName)

SimulateRabbitmqReady()
SimulateGalaraReady()
SimulateMemcachedReady()

if instance.Spec.Keystone.Enabled {
keystone.SimulateKeystoneAPIReady(names.KeystoneAPIName)
}

if instance.Spec.Ovn.Enabled {
ovn.SimulateOVNNorthdReady(names.OVNNorthdName)
ovn.SimulateOVNDBClusterReady(names.OVNDbServerNBName)
Expand Down
30 changes: 29 additions & 1 deletion tests/functional/ctlplane/openstackversion_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,12 @@ var _ = Describe("OpenStackOperator controller", func() {
targetOvnControllerVersion := ""
targetRabbitMQVersion := ""
targetMariaDBVersion := ""
targetMemcachedVersion := ""
targetKeystoneAPIVersion := ""
testOvnControllerImage := "foo/ovn:0.0.2"
testRabbitMQImage := "foo/rabbit:0.0.2"
testMariaDBImage := "foo/maria:0.0.2"
testMemcachedImage := "foo/memcached:0.0.2"
testKeystoneAPIImage := "foo/keystone:0.0.2"

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

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

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

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

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

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

// 4c) Keystone
// 4c) Memcached
th.ExpectCondition(
names.OpenStackVersionName,
ConditionGetterFunc(OpenStackVersionConditionGetter),
corev1.OpenStackVersionMinorUpdateMemcached,
k8s_corev1.ConditionFalse,
)

SimulateMemcachedReady()

Eventually(func(g Gomega) {
th.ExpectCondition(
names.OpenStackVersionName,
ConditionGetterFunc(OpenStackVersionConditionGetter),
corev1.OpenStackVersionMinorUpdateMemcached,
k8s_corev1.ConditionTrue,
)
OSCtlplane := GetOpenStackControlPlane(names.OpenStackControlplaneName)
g.Expect(*OSCtlplane.Status.ContainerImages.InfraMemcachedImage).Should(Equal(targetMemcachedVersion))

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

// 4d) Keystone

th.ExpectCondition(
names.OpenStackVersionName,
Expand Down