Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add commit hash as suffix to the OpenStackVersion #1217

Merged
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
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))
stuggi marked this conversation as resolved.
Show resolved Hide resolved
} 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
Loading