Skip to content

Commit 6f3b979

Browse files
committed
fix validation
Signed-off-by: Britania Rodriguez Reyes <[email protected]>
1 parent 299f0a5 commit 6f3b979

6 files changed

+32
-5
lines changed

apis/placement/v1alpha1/override_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ type JSONPatchOverride struct {
201201
// Note: override will fail if the resource path does not exist.
202202
// +required
203203
// +kubebuilder:validation:XValidation:rule="!(self == '/kind' || self == '/apiVersion')",message="Path cannot target typeMeta fields (kind, apiVersion)"
204-
// +kubebuilder:validation:XValidation:rule="!(self.startsWith('/metadata') && !(self.startsWith('/metadata/annotations') && self.startsWith('/metadata/labels')))",message="Path can only target annotations and labels under metadata"
204+
// +kubebuilder:validation:XValidation:rule="!(self.startsWith('/metadata') && !(self.startsWith('/metadata/annotations') || self.startsWith('/metadata/labels')))",message="Path can only target annotations and labels under metadata"
205205
// +kubebuilder:validation:XValidation:rule="!self.startsWith('/status')",message="Path cannot target status fields"
206206
Path string `json:"path"`
207207
// Value defines the content to be applied on the target location.

config/crd/bases/placement.kubernetes-fleet.io_clusterresourceoverrides.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ spec:
334334
- message: Path can only target annotations and labels
335335
under metadata
336336
rule: '!(self.startsWith(''/metadata'') && !(self.startsWith(''/metadata/annotations'')
337-
&& self.startsWith(''/metadata/labels'')))'
337+
|| self.startsWith(''/metadata/labels'')))'
338338
- message: Path cannot target status fields
339339
rule: '!self.startsWith(''/status'')'
340340
value:

config/crd/bases/placement.kubernetes-fleet.io_clusterresourceoverridesnapshots.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ spec:
348348
- message: Path can only target annotations and
349349
labels under metadata
350350
rule: '!(self.startsWith(''/metadata'') && !(self.startsWith(''/metadata/annotations'')
351-
&& self.startsWith(''/metadata/labels'')))'
351+
|| self.startsWith(''/metadata/labels'')))'
352352
- message: Path cannot target status fields
353353
rule: '!self.startsWith(''/status'')'
354354
value:

config/crd/bases/placement.kubernetes-fleet.io_resourceoverrides.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ spec:
250250
- message: Path can only target annotations and labels
251251
under metadata
252252
rule: '!(self.startsWith(''/metadata'') && !(self.startsWith(''/metadata/annotations'')
253-
&& self.startsWith(''/metadata/labels'')))'
253+
|| self.startsWith(''/metadata/labels'')))'
254254
- message: Path cannot target status fields
255255
rule: '!self.startsWith(''/status'')'
256256
value:

config/crd/bases/placement.kubernetes-fleet.io_resourceoverridesnapshots.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ spec:
264264
- message: Path can only target annotations and
265265
labels under metadata
266266
rule: '!(self.startsWith(''/metadata'') && !(self.startsWith(''/metadata/annotations'')
267-
&& self.startsWith(''/metadata/labels'')))'
267+
|| self.startsWith(''/metadata/labels'')))'
268268
- message: Path cannot target status fields
269269
rule: '!self.startsWith(''/status'')'
270270
value:

test/apis/placement/v1alpha1/api_validation_integration_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,4 +431,31 @@ var _ = Describe("Test placement v1alpha1 API validation", func() {
431431
Expect(statusErr.Status().Message).Should(ContainSubstring("Path cannot target status fields"))
432432
})
433433
})
434+
435+
Context("Test ClusterResourceOverride API validation - valid cases", func() {
436+
croName := fmt.Sprintf(croNameTemplate, GinkgoParallelProcess())
437+
validClusterResourceSelector := placementv1beta1.ClusterResourceSelector{
438+
Group: "rbac.authorization.k8s.io",
439+
Version: "v1",
440+
Kind: "ClusterRole",
441+
Name: "test-cluster-role",
442+
}
443+
444+
It("Should allow creation of ClusterResourceOverride with valid jsonPatchOverrides Paths (/metadata/labels)", func() {
445+
cro := placementv1alpha1.ClusterResourceOverride{
446+
ObjectMeta: metav1.ObjectMeta{
447+
Name: croName,
448+
},
449+
Spec: placementv1alpha1.ClusterResourceOverrideSpec{
450+
ClusterResourceSelectors: []placementv1beta1.ClusterResourceSelector{
451+
validClusterResourceSelector,
452+
},
453+
Policy: policyWithInvalidOverrideRule,
454+
},
455+
}
456+
// Modify the path to target 'metadata.name'
457+
cro.Spec.Policy.OverrideRules[0].JSONPatchOverrides[0].Path = "/metadata/labels/label"
458+
Expect(hubClient.Create(ctx, &cro)).Should(Succeed(), fmt.Sprintf("Create ClusterResourceOverride call produced error"))
459+
})
460+
})
434461
})

0 commit comments

Comments
 (0)