Skip to content

Commit 4d30fcd

Browse files
authored
Adding validation for cluster webhook to ensure there's no change in CP endpoint after the cluster is running (#10)
1 parent 2b9665f commit 4d30fcd

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

api/v1alpha3/cloudstackcluster_webhook.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ func (r *CloudStackCluster) ValidateUpdate(old runtime.Object) error {
9494
// No spec fields may be changed
9595
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.Zone, oldSpec.Zone, "zone", errorList)
9696
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.Network, oldSpec.Network, "network", errorList)
97+
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.ControlPlaneEndpoint.Host, oldSpec.ControlPlaneEndpoint.Host, "controlplaneendpointhost", errorList)
98+
errorList = webhook_utilities.EnsureStringFieldsAreEqual(string(spec.ControlPlaneEndpoint.Port), string(oldSpec.ControlPlaneEndpoint.Port), "controlplaneendpointport", errorList)
9799
if spec.IdentityRef != nil && oldSpec.IdentityRef != nil {
98100
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.IdentityRef.Kind, oldSpec.IdentityRef.Kind, "identityRef.Kind", errorList)
99101
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.IdentityRef.Name, oldSpec.IdentityRef.Name, "identityRef.Name", errorList)

api/v1alpha3/cloudstackcluster_webhook_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,14 @@ var _ = Describe("CloudStackCluster webhooks", func() {
155155
cloudStackClusterUpdate.Spec.Network = "Network2"
156156
Expect(k8sClient.Update(ctx, cloudStackClusterUpdate).Error()).Should(MatchRegexp(forbiddenRegex, "network"))
157157

158+
cloudStackCluster.DeepCopyInto(cloudStackClusterUpdate)
159+
cloudStackClusterUpdate.Spec.ControlPlaneEndpoint.Host = "1.1.1.1"
160+
Expect(k8sClient.Update(ctx, cloudStackClusterUpdate).Error()).Should(MatchRegexp(forbiddenRegex, "controlplaneendpointhost"))
161+
162+
cloudStackCluster.DeepCopyInto(cloudStackClusterUpdate)
163+
cloudStackClusterUpdate.Spec.ControlPlaneEndpoint.Port = 1234
164+
Expect(k8sClient.Update(ctx, cloudStackClusterUpdate).Error()).Should(MatchRegexp(forbiddenRegex, "controlplaneendpointport"))
165+
158166
cloudStackCluster.DeepCopyInto(cloudStackClusterUpdate)
159167
cloudStackClusterUpdate.Spec.IdentityRef.Kind = "ConfigMap"
160168
Expect(k8sClient.Update(ctx, cloudStackClusterUpdate).Error()).Should(MatchRegexp(forbiddenRegex, "identityRef\\.Kind"))

0 commit comments

Comments
 (0)