Skip to content

Commit 1d7476c

Browse files
committed
update to disallow update once external strategy type
Signed-off-by: Britania Rodriguez Reyes <[email protected]>
1 parent 93ecc04 commit 1d7476c

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2483,8 +2483,9 @@ spec:
24832483
- External
24842484
type: string
24852485
x-kubernetes-validations:
2486-
- message: rollout strategy type is immutable
2487-
rule: '!(self != oldSelf)'
2486+
- message: cannot change rollout strategy type from 'External'
2487+
to other types
2488+
rule: '!(self != ''External'' && oldSelf == ''External'')'
24882489
type: object
24892490
required:
24902491
- resourceSelectors

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -993,8 +993,9 @@ spec:
993993
- External
994994
type: string
995995
x-kubernetes-validations:
996-
- message: rollout strategy type is immutable
997-
rule: '!(self != oldSelf)'
996+
- message: cannot change rollout strategy type from 'External'
997+
to other types
998+
rule: '!(self != ''External'' && oldSelf == ''External'')'
998999
type: object
9991000
required:
10001001
- resourceSelectors

test/apis/placement/v1beta1/api_validation_integration_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,9 @@ var _ = Describe("Test placement v1beta1 API validation", func() {
142142
PlacementType: placementv1beta1.PickFixedPlacementType,
143143
ClusterNames: []string{"cluster1", "cluster2"},
144144
},
145+
Strategy: placementv1beta1.RolloutStrategy{
146+
Type: placementv1beta1.ExternalRolloutStrategyType,
147+
},
145148
},
146149
}
147150
Expect(hubClient.Create(ctx, &crp)).Should(Succeed())
@@ -167,13 +170,12 @@ var _ = Describe("Test placement v1beta1 API validation", func() {
167170
Expect(statusErr.ErrStatus.Message).Should(MatchRegexp("placement type is immutable"))
168171
})
169172

170-
It("should deny update of RolloutStrategy type", func() {
171-
// Default RolloutStrategy type is RollingUpdate
172-
crp.Spec.Strategy.Type = placementv1beta1.ExternalRolloutStrategyType
173+
It("should deny update of RolloutStrategy type when External", func() {
174+
crp.Spec.Strategy.Type = placementv1beta1.RollingUpdateRolloutStrategyType
173175
err := hubClient.Update(ctx, &crp)
174176
var statusErr *k8sErrors.StatusError
175177
Expect(errors.As(err, &statusErr)).To(BeTrue(), fmt.Sprintf("Update CRP call produced error %s. Error type wanted is %s.", reflect.TypeOf(err), reflect.TypeOf(&k8sErrors.StatusError{})))
176-
Expect(statusErr.ErrStatus.Message).Should(MatchRegexp("rollout strategy type is immutable"))
178+
Expect(statusErr.ErrStatus.Message).Should(MatchRegexp("cannot change rollout strategy type from 'External' to other types"))
177179
})
178180
})
179181

0 commit comments

Comments
 (0)