Skip to content

Commit f0caf10

Browse files
committed
Add cluster topology metadata validatino
1 parent 1239557 commit f0caf10

File tree

3 files changed

+32
-36
lines changed

3 files changed

+32
-36
lines changed

api/v1beta1/common_types.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ package v1beta1
1818

1919
import (
2020
corev1 "k8s.io/api/core/v1"
21+
apivalidation "k8s.io/apimachinery/pkg/api/validation"
2122
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23+
metav1validation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
24+
"k8s.io/apimachinery/pkg/util/validation/field"
2225
)
2326

2427
const (
@@ -297,3 +300,16 @@ type ObjectMeta struct {
297300
// +optional
298301
Annotations map[string]string `json:"annotations,omitempty"`
299302
}
303+
304+
// Validate validates the labels and annotations in ObjectMeta.
305+
func (metadata *ObjectMeta) Validate(parent *field.Path) field.ErrorList {
306+
allErrs := metav1validation.ValidateLabels(
307+
metadata.Labels,
308+
parent.Child("labels"),
309+
)
310+
allErrs = append(allErrs, apivalidation.ValidateAnnotations(
311+
metadata.Annotations,
312+
parent.Child("annotations"),
313+
)...)
314+
return allErrs
315+
}

api/v1beta1/common_validate.go

Lines changed: 0 additions & 36 deletions
This file was deleted.

internal/webhooks/cluster.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,9 @@ func (webhook *Cluster) validateTopology(ctx context.Context, oldCluster, newClu
255255
)
256256
}
257257

258+
// metadata in topology should be valid
259+
allErrs = append(allErrs, validateTopologyMetadata(newCluster.Spec.Topology, fldPath)...)
260+
258261
// upgrade concurrency should be a numeric value.
259262
if concurrency, ok := newCluster.Annotations[clusterv1.ClusterTopologyUpgradeConcurrencyAnnotation]; ok {
260263
concurrencyAnnotationField := field.NewPath("metadata", "annotations", clusterv1.ClusterTopologyUpgradeConcurrencyAnnotation)
@@ -629,3 +632,16 @@ func clusterClassIsReconciled(clusterClass *clusterv1.ClusterClass) error {
629632
}
630633
return nil
631634
}
635+
636+
func validateTopologyMetadata(topology *clusterv1.Topology, fldPath *field.Path) field.ErrorList {
637+
var allErrs field.ErrorList
638+
allErrs = append(allErrs, topology.ControlPlane.Metadata.Validate(fldPath.Child("controlPlane", "metadata"))...)
639+
if topology.Workers != nil {
640+
for idx, md := range topology.Workers.MachineDeployments {
641+
allErrs = append(allErrs, md.Metadata.Validate(
642+
fldPath.Child("workers", "machineDeployments").Index(idx).Child("metadata"),
643+
)...)
644+
}
645+
}
646+
return allErrs
647+
}

0 commit comments

Comments
 (0)