Skip to content

Commit

Permalink
Add cluster topology metadata validatino
Browse files Browse the repository at this point in the history
  • Loading branch information
LuBingtan committed Jul 19, 2023
1 parent 1239557 commit f0caf10
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 36 deletions.
16 changes: 16 additions & 0 deletions api/v1beta1/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ package v1beta1

import (
corev1 "k8s.io/api/core/v1"
apivalidation "k8s.io/apimachinery/pkg/api/validation"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
metav1validation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
"k8s.io/apimachinery/pkg/util/validation/field"
)

const (
Expand Down Expand Up @@ -297,3 +300,16 @@ type ObjectMeta struct {
// +optional
Annotations map[string]string `json:"annotations,omitempty"`
}

// Validate validates the labels and annotations in ObjectMeta.
func (metadata *ObjectMeta) Validate(parent *field.Path) field.ErrorList {
allErrs := metav1validation.ValidateLabels(
metadata.Labels,
parent.Child("labels"),
)
allErrs = append(allErrs, apivalidation.ValidateAnnotations(
metadata.Annotations,
parent.Child("annotations"),
)...)
return allErrs
}
36 changes: 0 additions & 36 deletions api/v1beta1/common_validate.go

This file was deleted.

16 changes: 16 additions & 0 deletions internal/webhooks/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,9 @@ func (webhook *Cluster) validateTopology(ctx context.Context, oldCluster, newClu
)
}

// metadata in topology should be valid
allErrs = append(allErrs, validateTopologyMetadata(newCluster.Spec.Topology, fldPath)...)

// upgrade concurrency should be a numeric value.
if concurrency, ok := newCluster.Annotations[clusterv1.ClusterTopologyUpgradeConcurrencyAnnotation]; ok {
concurrencyAnnotationField := field.NewPath("metadata", "annotations", clusterv1.ClusterTopologyUpgradeConcurrencyAnnotation)
Expand Down Expand Up @@ -629,3 +632,16 @@ func clusterClassIsReconciled(clusterClass *clusterv1.ClusterClass) error {
}
return nil
}

func validateTopologyMetadata(topology *clusterv1.Topology, fldPath *field.Path) field.ErrorList {
var allErrs field.ErrorList
allErrs = append(allErrs, topology.ControlPlane.Metadata.Validate(fldPath.Child("controlPlane", "metadata"))...)
if topology.Workers != nil {
for idx, md := range topology.Workers.MachineDeployments {
allErrs = append(allErrs, md.Metadata.Validate(
fldPath.Child("workers", "machineDeployments").Index(idx).Child("metadata"),
)...)
}
}
return allErrs
}

0 comments on commit f0caf10

Please sign in to comment.