Skip to content

Commit

Permalink
Merge pull request openstack-k8s-operators#1217 from stuggi/add_hash_…
Browse files Browse the repository at this point in the history
…osvers

Add commit hash as suffix to the OpenStackVersion
  • Loading branch information
openshift-merge-bot[bot] authored Dec 10, 2024
2 parents 1089a7c + a6164e6 commit 559ee7c
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 9 deletions.
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
# - use environment variables to overwrite this value (e.g export VERSION=0.0.2)
VERSION ?= 0.0.1

OPENSTACK_RELEASE_VERSION ?= $(VERSION)-$(shell date +%s)

# CHANNELS define the bundle channels used in the bundle.
# Add a new line here if you would like to change its default config. (E.g CHANNELS = "candidate,fast,stable")
# To re-generate a bundle for other specific channels without changing the standard setup, you can:
Expand Down Expand Up @@ -338,7 +340,9 @@ endif
.PHONY: bundle
bundle: build manifests kustomize operator-sdk ## Generate bundle manifests and metadata, then validate generated files.
$(OPERATOR_SDK) generate kustomize manifests -q
cd config/manager && $(KUSTOMIZE) edit set image controller=$(IMG)
cd config/manager && \
$(KUSTOMIZE) edit set image controller=$(IMG) && \
$(KUSTOMIZE) edit add patch --kind Deployment --name controller-manager --namespace system --patch "[{\"op\": \"replace\", \"path\": \"/spec/template/spec/containers/0/env/0\", \"value\": {\"name\": \"OPENSTACK_RELEASE_VERSION\", \"value\": \"$(OPENSTACK_RELEASE_VERSION)\"}}]"
$(KUSTOMIZE) build config/manifests | $(OPERATOR_SDK) generate bundle $(BUNDLE_GEN_FLAGS)
cp dependencies.yaml ./bundle/metadata
$(OPERATOR_SDK) bundle validate ./bundle
Expand Down
5 changes: 5 additions & 0 deletions apis/core/v1beta1/conditions.go
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,8 @@ const (
OpenStackVersionMinorUpdateControlplane condition.Type = "MinorUpdateControlplane"

OpenStackVersionMinorUpdateDataplane condition.Type = "MinorUpdateDataplane"

OpenStackVersionMinorUpdateAvailable condition.Type = "MinorUpdateAvailable"
)

// Version Messages used by API objects.
Expand Down Expand Up @@ -506,4 +508,7 @@ const (

// OpenStackVersionMinorUpdateReadyErrorMessage
OpenStackVersionMinorUpdateReadyErrorMessage = "error occured %s"

// OpenStackVersionMinorUpdateAvailableMessage
OpenStackVersionMinorUpdateAvailableMessage = "update available"
)
8 changes: 8 additions & 0 deletions controllers/core/openstackversion_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,14 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
Log.Info("Setting DeployedVersion")
instance.Status.DeployedVersion = &instance.Spec.TargetVersion
}
if instance.Status.DeployedVersion != nil &&
*instance.Status.AvailableVersion != *instance.Status.DeployedVersion {
instance.Status.Conditions.Set(condition.TrueCondition(
corev1beta1.OpenStackVersionMinorUpdateAvailable,
corev1beta1.OpenStackVersionMinorUpdateAvailableMessage))
} else {
instance.Status.Conditions.Remove(corev1beta1.OpenStackVersionMinorUpdateAvailable)
}

return ctrl.Result{}, nil
}
Expand Down
2 changes: 1 addition & 1 deletion hack/export_related_images.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

export OPENSTACK_RELEASE_VERSION=0.0.1
export OPENSTACK_RELEASE_VERSION=0.0.1-$(date +%s)
export RELATED_IMAGE_OPENSTACK_CLIENT_IMAGE_URL_DEFAULT=quay.io/podified-antelope-centos9/openstack-openstackclient:current-podified
export RELATED_IMAGE_RABBITMQ_IMAGE_URL_DEFAULT=quay.io/podified-antelope-centos9/openstack-rabbitmq:current-podified
export RELATED_IMAGE_KEYSTONE_API_IMAGE_URL_DEFAULT=quay.io/podified-antelope-centos9/openstack-keystone:current-podified
Expand Down
27 changes: 20 additions & 7 deletions tests/functional/ctlplane/openstackversion_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,11 @@ var _ = Describe("OpenStackOperator controller", func() {
version := GetOpenStackVersion(names.OpenStackVersionName)
g.Expect(version).Should(Not(BeNil()))

g.Expect(*version.Status.AvailableVersion).Should(Equal("0.0.1"))
g.Expect(version.Spec.TargetVersion).Should(Equal("0.0.1"))
// no condition which reflects an update is available
g.Expect(version.Status.Conditions.Has(corev1.OpenStackVersionMinorUpdateAvailable)).To(BeFalse())

g.Expect(*version.Status.AvailableVersion).Should(ContainSubstring("0.0.1"))
g.Expect(version.Spec.TargetVersion).Should(ContainSubstring("0.0.1"))

g.Expect(version.Status.ContainerImages.AgentImage).ShouldNot(BeNil())
g.Expect(version.Status.ContainerImages.AnsibleeeImage).ShouldNot(BeNil())
Expand Down Expand Up @@ -291,15 +294,15 @@ var _ = Describe("OpenStackOperator controller", func() {
targetOvnControllerVersion = *version.Status.ContainerImages.OvnControllerImage
g.Expect(version).Should(Not(BeNil()))

g.Expect(*version.Status.AvailableVersion).Should(Equal("0.0.1"))
g.Expect(version.Spec.TargetVersion).Should(Equal("0.0.1"))

g.Expect(*version.Status.AvailableVersion).Should(ContainSubstring("0.0.1"))
g.Expect(version.Spec.TargetVersion).Should(ContainSubstring("0.0.1"))
updatedVersion = *version.Status.AvailableVersion
}, timeout, interval).Should(Succeed())

// inject an "old" version
Eventually(func(g Gomega) {
version := GetOpenStackVersion(names.OpenStackVersionName)
version.Status.ContainerImageVersionDefaults[initialVersion] = version.Status.ContainerImageVersionDefaults["0.0.1"]
version.Status.ContainerImageVersionDefaults[initialVersion] = version.Status.ContainerImageVersionDefaults[updatedVersion]
version.Status.ContainerImageVersionDefaults[initialVersion].OvnControllerImage = &testOvnControllerImage
g.Expect(th.K8sClient.Status().Update(th.Ctx, version)).To(Succeed())

Expand Down Expand Up @@ -391,6 +394,15 @@ var _ = Describe("OpenStackOperator controller", func() {

// 1) switch to version 0.0.1, this triggers a minor update
osversion := GetOpenStackVersion(names.OpenStackVersionName)

// should have a condition which reflects an update is available
th.ExpectCondition(
names.OpenStackVersionName,
ConditionGetterFunc(OpenStackVersionConditionGetter),
corev1.OpenStackVersionMinorUpdateAvailable,
k8s_corev1.ConditionTrue,
)

osversion.Spec.TargetVersion = updatedVersion
Expect(k8sClient.Update(ctx, osversion)).Should(Succeed())

Expand Down Expand Up @@ -536,7 +548,8 @@ var _ = Describe("OpenStackOperator controller", func() {
k8s_corev1.ConditionTrue,
)
g.Expect(osversion.Status.DeployedVersion).Should(Equal(&updatedVersion)) // we're done here

// no condition which reflects an update is available
g.Expect(osversion.Status.Conditions.Has(corev1.OpenStackVersionMinorUpdateAvailable)).To(BeFalse())
}, timeout, interval).Should(Succeed())

})
Expand Down

0 comments on commit 559ee7c

Please sign in to comment.