Skip to content

Commit b5bbc90

Browse files
committed
Tidy API objects and simplify webhook validation util
1 parent ffb6273 commit b5bbc90

11 files changed

+47
-54
lines changed

api/v1beta2/cloudstackaffinitygroup_types.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ import (
2020
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2121
)
2222

23-
const (
24-
AffinityGroupFinalizer = "affinitygroup.infrastructure.cluster.x-k8s.io"
25-
)
23+
const AffinityGroupFinalizer = "affinitygroup.infrastructure.cluster.x-k8s.io"
2624

2725
// CloudStackAffinityGroupSpec defines the desired state of CloudStackAffinityGroup
2826
type CloudStackAffinityGroupSpec struct {

api/v1beta2/cloudstackcluster_types.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ type CloudStackClusterSpec struct {
3838

3939
// The status of the CloudStackCluster object.
4040
type CloudStackClusterStatus struct {
41-
4241
// CAPI recognizes failure domains as a method to spread machines.
4342
// CAPC sets failure domains to indicate functioning CloudStackFailureDomains.
4443
// +optional

api/v1beta2/cloudstackcluster_webhook.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ func (r *CloudStackCluster) ValidateUpdate(old runtime.Object) error {
102102
}
103103

104104
if oldSpec.ControlPlaneEndpoint.Host != "" { // Need to allow one time endpoint setting via CAPC cluster controller.
105-
errorList = webhookutil.EnsureStringFieldsAreEqual(
105+
errorList = webhookutil.EnsureEqualStrings(
106106
spec.ControlPlaneEndpoint.Host, oldSpec.ControlPlaneEndpoint.Host, "controlplaneendpoint.host", errorList)
107-
errorList = webhookutil.EnsureStringFieldsAreEqual(
107+
errorList = webhookutil.EnsureEqualStrings(
108108
string(spec.ControlPlaneEndpoint.Port), string(oldSpec.ControlPlaneEndpoint.Port),
109109
"controlplaneendpoint.port", errorList)
110110
}

api/v1beta2/cloudstackfailuredomain_types.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,11 @@ func FailureDomainHashedMetaName(fdName, clusterName string) string {
3535
const (
3636
FailureDomainFinalizer = "cloudstackfailuredomain.infrastructure.cluster.x-k8s.io"
3737
FailureDomainLabelName = "cloudstackfailuredomain.infrastructure.cluster.x-k8s.io/name"
38-
NetworkTypeIsolated = "Isolated"
39-
NetworkTypeShared = "Shared"
38+
)
39+
40+
const (
41+
NetworkTypeIsolated = "Isolated"
42+
NetworkTypeShared = "Shared"
4043
)
4144

4245
type Network struct {

api/v1beta2/cloudstackisolatednetwork_types.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@ import (
2121
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
2222
)
2323

24-
const (
25-
// The presence of a finalizer prevents CAPI from deleting the corresponding CAPI data.
26-
IsolatedNetworkFinalizer = "cloudstackisolatednetwork.infrastructure.cluster.x-k8s.io"
27-
)
24+
// The presence of a finalizer prevents CAPI from deleting the corresponding CAPI data.
25+
const IsolatedNetworkFinalizer = "cloudstackisolatednetwork.infrastructure.cluster.x-k8s.io"
2826

2927
// CloudStackIsolatedNetworkSpec defines the desired state of CloudStackIsolatedNetwork
3028
type CloudStackIsolatedNetworkSpec struct {

api/v1beta2/cloudstackmachine_types.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@ import (
2323
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2424
)
2525

26+
// The presence of a finalizer prevents CAPI from deleting the corresponding CAPI data.
27+
const MachineFinalizer = "cloudstackmachine.infrastructure.cluster.x-k8s.io"
28+
2629
const (
27-
// The presence of a finalizer prevents CAPI from deleting the corresponding CAPI data.
28-
MachineFinalizer = "cloudstackmachine.infrastructure.cluster.x-k8s.io"
29-
ProAffinity = "pro"
30-
AntiAffinity = "anti"
31-
NoAffinity = "no"
30+
ProAffinity = "pro"
31+
AntiAffinity = "anti"
32+
NoAffinity = "no"
3233
)
3334

3435
// CloudStackMachineSpec defines the desired state of CloudStackMachine

api/v1beta2/cloudstackmachine_webhook.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,20 @@ func (r *CloudStackMachine) ValidateUpdate(old runtime.Object) error {
7979
}
8080
oldSpec := oldMachine.Spec
8181

82-
errorList = webhookutil.EnsureBothFieldsAreEqual(r.Spec.Offering.ID, r.Spec.Offering.Name, oldSpec.Offering.ID, oldSpec.Offering.Name, "offering", errorList)
83-
errorList = webhookutil.EnsureBothFieldsAreEqual(r.Spec.DiskOffering.ID, r.Spec.DiskOffering.Name, oldSpec.DiskOffering.ID, oldSpec.DiskOffering.Name, "diskOffering", errorList)
82+
errorList = webhookutil.EnsureEqualStrings(r.Spec.Offering.ID, oldSpec.Offering.ID, "offering", errorList)
83+
errorList = webhookutil.EnsureEqualStrings(r.Spec.Offering.Name, oldSpec.Offering.Name, "offering", errorList)
84+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.ID, oldSpec.DiskOffering.ID, "diskOffering", errorList)
85+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Name, oldSpec.DiskOffering.Name, "diskOffering", errorList)
8486
errorList = webhookutil.EnsureIntFieldsAreNotNegative(r.Spec.DiskOffering.CustomSize, "customSizeInGB", errorList)
85-
errorList = webhookutil.EnsureStringFieldsAreEqual(r.Spec.DiskOffering.MountPath, oldSpec.DiskOffering.MountPath, "mountPath", errorList)
86-
errorList = webhookutil.EnsureStringFieldsAreEqual(r.Spec.DiskOffering.Device, oldSpec.DiskOffering.Device, "device", errorList)
87-
errorList = webhookutil.EnsureStringFieldsAreEqual(r.Spec.DiskOffering.Filesystem, oldSpec.DiskOffering.Filesystem, "filesystem", errorList)
88-
errorList = webhookutil.EnsureStringFieldsAreEqual(r.Spec.DiskOffering.Label, oldSpec.DiskOffering.Label, "label", errorList)
89-
errorList = webhookutil.EnsureStringFieldsAreEqual(r.Spec.SSHKey, oldSpec.SSHKey, "sshkey", errorList)
90-
errorList = webhookutil.EnsureBothFieldsAreEqual(r.Spec.Template.ID, r.Spec.Template.Name, oldSpec.Template.ID, oldSpec.Template.Name, "template", errorList)
91-
errorList = webhookutil.EnsureStringStringMapFieldsAreEqual(&r.Spec.Details, &oldSpec.Details, "details", errorList)
92-
errorList = webhookutil.EnsureStringFieldsAreEqual(r.Spec.Affinity, oldSpec.Affinity, "affinity", errorList)
87+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.MountPath, oldSpec.DiskOffering.MountPath, "mountPath", errorList)
88+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Device, oldSpec.DiskOffering.Device, "device", errorList)
89+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Filesystem, oldSpec.DiskOffering.Filesystem, "filesystem", errorList)
90+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Label, oldSpec.DiskOffering.Label, "label", errorList)
91+
errorList = webhookutil.EnsureEqualStrings(r.Spec.SSHKey, oldSpec.SSHKey, "sshkey", errorList)
92+
errorList = webhookutil.EnsureEqualStrings(r.Spec.Template.ID, oldSpec.Template.ID, "template", errorList)
93+
errorList = webhookutil.EnsureEqualStrings(r.Spec.Template.Name, oldSpec.Template.Name, "template", errorList)
94+
errorList = webhookutil.EnsureEqualMapStringString(&r.Spec.Details, &oldSpec.Details, "details", errorList)
95+
errorList = webhookutil.EnsureEqualStrings(r.Spec.Affinity, oldSpec.Affinity, "affinity", errorList)
9396

9497
if !reflect.DeepEqual(r.Spec.AffinityGroupIDs, oldSpec.AffinityGroupIDs) { // Equivalent to other Ensure funcs.
9598
errorList = append(errorList, field.Forbidden(field.NewPath("spec", "AffinityGroupIDs"), "AffinityGroupIDs"))

api/v1beta2/cloudstackmachinestatechecker_types.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ limitations under the License.
1616

1717
package v1beta2
1818

19-
import (
20-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21-
)
19+
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2220

2321
// CloudStackMachineStateCheckerSpec
2422
type CloudStackMachineStateCheckerSpec struct {

api/v1beta2/cloudstackmachinetemplate_types.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ limitations under the License.
1616

1717
package v1beta2
1818

19-
import (
20-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21-
)
19+
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2220

2321
type CloudStackMachineTemplateResource struct {
2422
// Standard object's metadata.

api/v1beta2/cloudstackmachinetemplate_webhook.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,17 @@ func (r *CloudStackMachineTemplate) Default() {
4848
// No defaulted values supported yet.
4949
}
5050

51-
//+kubebuilder:webhook:path=/validate-infrastructure-cluster-x-k8s-io-v1beta2-cloudstackmachinetemplate,mutating=false,failurePolicy=fail,sideEffects=None,groups=infrastructure.cluster.x-k8s.io,resources=cloudstackmachinetemplates,verbs=create;update,versions=v1beta2,name=vcloudstackmachinetemplate.kb.io,admissionReviewVersions=v1beta1
52-
51+
// +kubebuilder:webhook:path=/validate-infrastructure-cluster-x-k8s-io-v1beta2-cloudstackmachinetemplate,mutating=false,failurePolicy=fail,sideEffects=None,groups=infrastructure.cluster.x-k8s.io,resources=cloudstackmachinetemplates,verbs=create;update,versions=v1beta2,name=vcloudstackmachinetemplate.kb.io,admissionReviewVersions=v1beta1
5352
var _ webhook.Validator = &CloudStackMachineTemplate{}
5453

5554
// ValidateCreate implements webhook.Validator so a webhook will be registered for the type
5655
func (r *CloudStackMachineTemplate) ValidateCreate() error {
5756
cloudstackmachinetemplatelog.V(1).Info("entered validate create webhook", "api resource name", r.Name)
5857

59-
var (
60-
errorList field.ErrorList
61-
spec = r.Spec.Spec.Spec // CloudStackMachineTemplateSpec.CloudStackMachineTemplateResource.CloudStackMachineSpec
62-
)
58+
var errorList field.ErrorList
59+
60+
// CloudStackMachineTemplateSpec.CloudStackMachineTemplateResource.CloudStackMachineSpec
61+
spec := r.Spec.Spec.Spec
6362

6463
affinity := strings.ToLower(spec.Affinity)
6564
if !(affinity == "" || affinity == "no" || affinity == "pro" || affinity == "anti") {
@@ -91,12 +90,15 @@ func (r *CloudStackMachineTemplate) ValidateUpdate(old runtime.Object) error {
9190
oldSpec := oldMachineTemplate.Spec.Spec.Spec
9291

9392
errorList := field.ErrorList(nil)
94-
errorList = webhookutil.EnsureBothFieldsAreEqual(spec.Offering.ID, spec.Offering.Name, oldSpec.Offering.ID, oldSpec.Offering.Name, "offering", errorList)
95-
errorList = webhookutil.EnsureBothFieldsAreEqual(spec.DiskOffering.ID, spec.DiskOffering.Name, oldSpec.DiskOffering.ID, oldSpec.DiskOffering.Name, "diskOffering", errorList)
96-
errorList = webhookutil.EnsureStringFieldsAreEqual(spec.SSHKey, oldSpec.SSHKey, "sshkey", errorList)
97-
errorList = webhookutil.EnsureBothFieldsAreEqual(spec.Template.ID, spec.Template.Name, oldSpec.Template.ID, oldSpec.Template.Name, "template", errorList)
98-
errorList = webhookutil.EnsureStringStringMapFieldsAreEqual(&spec.Details, &oldSpec.Details, "details", errorList)
99-
errorList = webhookutil.EnsureStringFieldsAreEqual(spec.Affinity, oldSpec.Affinity, "affinity", errorList)
93+
errorList = webhookutil.EnsureEqualStrings(spec.Offering.ID, oldSpec.Offering.ID, "offering", errorList)
94+
errorList = webhookutil.EnsureEqualStrings(spec.Offering.Name, oldSpec.Offering.Name, "offering", errorList)
95+
errorList = webhookutil.EnsureEqualStrings(spec.DiskOffering.ID, oldSpec.DiskOffering.ID, "diskOffering", errorList)
96+
errorList = webhookutil.EnsureEqualStrings(spec.DiskOffering.Name, oldSpec.DiskOffering.Name, "diskOffering", errorList)
97+
errorList = webhookutil.EnsureEqualStrings(spec.SSHKey, oldSpec.SSHKey, "sshkey", errorList)
98+
errorList = webhookutil.EnsureEqualStrings(spec.Template.ID, oldSpec.Template.ID, "template", errorList)
99+
errorList = webhookutil.EnsureEqualStrings(spec.Template.Name, oldSpec.Template.Name, "template", errorList)
100+
errorList = webhookutil.EnsureEqualMapStringString(&spec.Details, &oldSpec.Details, "details", errorList)
101+
errorList = webhookutil.EnsureEqualStrings(spec.Affinity, oldSpec.Affinity, "affinity", errorList)
100102

101103
if !reflect.DeepEqual(spec.AffinityGroupIDs, oldSpec.AffinityGroupIDs) { // Equivalent to other Ensure funcs.
102104
errorList = append(errorList, field.Forbidden(field.NewPath("spec", "AffinityGroupIDs"), "AffinityGroupIDs"))

0 commit comments

Comments
 (0)