in api/v1beta1/cloudstackcluster_webhook.go [77:107]
func (r *CloudStackCluster) ValidateUpdate(old runtime.Object) error {
cloudstackclusterlog.Info("validate update", "name", r.Name)
var (
errorList field.ErrorList
spec = r.Spec
)
oldCluster, ok := old.(*CloudStackCluster)
if !ok {
return errors.NewBadRequest(fmt.Sprintf("expected a CloudStackCluster but got a %T", old))
}
oldSpec := oldCluster.Spec
// IdentityRefs must be Secrets.
if spec.IdentityRef != nil && spec.IdentityRef.Kind != defaultIdentityRefKind {
errorList = append(errorList, field.Forbidden(field.NewPath("spec", "identityRef", "kind"), "must be a Secret"))
}
// No spec fields may be changed
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.Zone, oldSpec.Zone, "zone", errorList)
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.Network, oldSpec.Network, "network", errorList)
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.ControlPlaneEndpoint.Host, oldSpec.ControlPlaneEndpoint.Host, "controlplaneendpointhost", errorList)
errorList = webhook_utilities.EnsureStringFieldsAreEqual(string(spec.ControlPlaneEndpoint.Port), string(oldSpec.ControlPlaneEndpoint.Port), "controlplaneendpointport", errorList)
if spec.IdentityRef != nil && oldSpec.IdentityRef != nil {
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.IdentityRef.Kind, oldSpec.IdentityRef.Kind, "identityRef.Kind", errorList)
errorList = webhook_utilities.EnsureStringFieldsAreEqual(spec.IdentityRef.Name, oldSpec.IdentityRef.Name, "identityRef.Name", errorList)
}
return webhook_utilities.AggregateObjErrors(r.GroupVersionKind().GroupKind(), r.Name, errorList)
}