Skip to content

Commit 7e543db

Browse files
authored
Merge pull request #1012 from jichenjc/add_webhook_new
✨Allow update for some param only first time update
2 parents 48c7bb9 + 02a5743 commit 7e543db

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

api/v1alpha4/openstackcluster_webhook.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,15 @@ func (r *OpenStackCluster) ValidateUpdate(old runtime.Object) error {
8888
newOpenStackClusterSpec := newOpenStackCluster["spec"].(map[string]interface{})
8989
oldOpenStackClusterSpec := oldOpenStackCluster["spec"].(map[string]interface{})
9090

91-
// allow changes to ControlPlaneEndpoint
92-
delete(oldOpenStackClusterSpec, "controlPlaneEndpoint")
93-
delete(newOpenStackClusterSpec, "controlPlaneEndpoint")
91+
// get controlPlaneEndpoint, something like {"host":"", "port":""}
92+
cpe := oldOpenStackClusterSpec["controlPlaneEndpoint"].(map[string]interface{})
93+
94+
// allow change only for the first time
95+
host, ok := cpe["host"].(string)
96+
if ok && len(host) == 0 {
97+
delete(oldOpenStackClusterSpec, "controlPlaneEndpoint")
98+
delete(newOpenStackClusterSpec, "controlPlaneEndpoint")
99+
}
94100

95101
if !reflect.DeepEqual(oldOpenStackClusterSpec, newOpenStackClusterSpec) {
96102
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "cannot be modified"))

api/v1alpha4/openstackmachine_webhook.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,17 @@ func (r *OpenStackMachine) ValidateUpdate(old runtime.Object) error {
8888
newOpenStackMachineSpec := newOpenStackMachine["spec"].(map[string]interface{})
8989
oldOpenStackMachineSpec := oldOpenStackMachine["spec"].(map[string]interface{})
9090

91-
// allow changes to providerID
92-
delete(oldOpenStackMachineSpec, "providerID")
93-
delete(newOpenStackMachineSpec, "providerID")
91+
// allow changes to providerID once
92+
if oldOpenStackMachineSpec["providerID"] == nil {
93+
delete(oldOpenStackMachineSpec, "providerID")
94+
delete(newOpenStackMachineSpec, "providerID")
95+
}
9496

95-
// allow changes to instanceID
96-
delete(oldOpenStackMachineSpec, "instanceID")
97-
delete(newOpenStackMachineSpec, "instanceID")
97+
// allow changes to instanceID once
98+
if oldOpenStackMachineSpec["instanceID"] == nil {
99+
delete(oldOpenStackMachineSpec, "instanceID")
100+
delete(newOpenStackMachineSpec, "instanceID")
101+
}
98102

99103
if !reflect.DeepEqual(oldOpenStackMachineSpec, newOpenStackMachineSpec) {
100104
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "cannot be modified"))

0 commit comments

Comments
 (0)