Skip to content

Commit 24cea7a

Browse files
committed
feat(gcpNfsVolume): preventing reduction of capacity for BASIC tiers
1 parent 7902bc2 commit 24cea7a

File tree

5 files changed

+57
-3
lines changed

5 files changed

+57
-3
lines changed

api/cloud-resources/v1beta1/gcpnfsvolume_types.go

+2
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ const (
6868
// +kubebuilder:validation:XValidation:rule=(self.tier != "ZONAL" || self.tier == "ZONAL" && size(self.fileShareName) <= 64), message="ZONAL tier fileShareName length must be 64 or less characters"
6969
// +kubebuilder:validation:XValidation:rule=(self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && self.capacityGb >= 2560 && self.capacityGb <= 65400), message="BASIC_SSD tier capacityGb must be between 2560 and 65400"
7070
// +kubebuilder:validation:XValidation:rule=(self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && size(self.fileShareName) <= 16), message="BASIC_SSD tier fileShareName length must be 16 or less characters"
71+
// +kubebuilder:validation:XValidation:rule=(self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && self.capacityGb >= oldSelf.capacityGb), message="BASIC_SSD tier capacityGb cannot be reduced"
7172
// +kubebuilder:validation:XValidation:rule=(self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && self.capacityGb >= 1024 && self.capacityGb <= 65400), message="BASIC_HDD tier capacityGb must be between 1024 and 65400"
7273
// +kubebuilder:validation:XValidation:rule=(self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && size(self.fileShareName) <= 16), message="BASIC_HDD tier fileShareName length must be 16 or less characters"
74+
// +kubebuilder:validation:XValidation:rule=(self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && self.capacityGb >= oldSelf.capacityGb), message="BASIC_HDD tier capacityGb cannot be reduced"
7375
type GcpNfsVolumeSpec struct {
7476
// +optional
7577
// +kubebuilder:validation:XValidation:rule=(self == oldSelf), message="IpRange is immutable."

config/crd/bases/cloud-resources.kyma-project.io_gcpnfsvolumes.yaml

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ kind: CustomResourceDefinition
44
metadata:
55
annotations:
66
controller-gen.kubebuilder.io/version: v0.16.5
7-
cloud-resources.kyma-project.io/version: v0.0.7
7+
cloud-resources.kyma-project.io/version: v0.0.8
88
name: gcpnfsvolumes.cloud-resources.kyma-project.io
99
spec:
1010
group: cloud-resources.kyma-project.io
@@ -153,10 +153,14 @@ spec:
153153
rule: (self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && self.capacityGb >= 2560 && self.capacityGb <= 65400)
154154
- message: BASIC_SSD tier fileShareName length must be 16 or less characters
155155
rule: (self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && size(self.fileShareName) <= 16)
156+
- message: BASIC_SSD tier capacityGb cannot be reduced
157+
rule: (self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && self.capacityGb >= oldSelf.capacityGb)
156158
- message: BASIC_HDD tier capacityGb must be between 1024 and 65400
157159
rule: (self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && self.capacityGb >= 1024 && self.capacityGb <= 65400)
158160
- message: BASIC_HDD tier fileShareName length must be 16 or less characters
159161
rule: (self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && size(self.fileShareName) <= 16)
162+
- message: BASIC_HDD tier capacityGb cannot be reduced
163+
rule: (self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && self.capacityGb >= oldSelf.capacityGb)
160164
status:
161165
description: GcpNfsVolumeStatus defines the observed state of GcpNfsVolume
162166
properties:

config/dist/skr/crd/bases/providers/gcp/cloud-resources.kyma-project.io_gcpnfsvolumes.yaml

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ kind: CustomResourceDefinition
44
metadata:
55
annotations:
66
controller-gen.kubebuilder.io/version: v0.16.5
7-
cloud-resources.kyma-project.io/version: v0.0.7
7+
cloud-resources.kyma-project.io/version: v0.0.8
88
name: gcpnfsvolumes.cloud-resources.kyma-project.io
99
spec:
1010
group: cloud-resources.kyma-project.io
@@ -153,10 +153,14 @@ spec:
153153
rule: (self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && self.capacityGb >= 2560 && self.capacityGb <= 65400)
154154
- message: BASIC_SSD tier fileShareName length must be 16 or less characters
155155
rule: (self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && size(self.fileShareName) <= 16)
156+
- message: BASIC_SSD tier capacityGb cannot be reduced
157+
rule: (self.tier != "BASIC_SSD" || self.tier == "BASIC_SSD" && self.capacityGb >= oldSelf.capacityGb)
156158
- message: BASIC_HDD tier capacityGb must be between 1024 and 65400
157159
rule: (self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && self.capacityGb >= 1024 && self.capacityGb <= 65400)
158160
- message: BASIC_HDD tier fileShareName length must be 16 or less characters
159161
rule: (self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && size(self.fileShareName) <= 16)
162+
- message: BASIC_HDD tier capacityGb cannot be reduced
163+
rule: (self.tier != "BASIC_HDD" || self.tier == "BASIC_HDD" && self.capacityGb >= oldSelf.capacityGb)
160164
status:
161165
description: GcpNfsVolumeStatus defines the observed state of GcpNfsVolume
162166
properties:

config/patchAfterMakeManifests.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.1.1
99
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.3"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_awsnfsvolumes.yaml
1010
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.3"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_awsnfsvolumebackups.yaml
1111
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.16"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_awsredisinstances.yaml
12-
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.7"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_gcpnfsvolumes.yaml
12+
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.8"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_gcpnfsvolumes.yaml
1313
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.18"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_gcpredisinstances.yaml
1414
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.2"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_azurevpcpeerings.yaml
1515
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.54"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_azureredisinstances.yaml

internal/api-tests/skr_gcpnfsvolume_test.go

+44
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,20 @@ var _ = Describe("Feature: SKR GcpNfsVolume", Ordered, func() {
7777
newTestGcpNfsVolumeBuilder().WithTier(tier).WithCapacityGb(1024).WithFileShareName(fileShareName65char),
7878
fmt.Sprintf("%s tier fileShareName length must be 64 or less characters", tier),
7979
)
80+
canChangeSkr(
81+
fmt.Sprintf("GcpNfsVolume %s tier instance capacity can be increased", tier),
82+
newTestGcpNfsVolumeBuilder().WithTier(tier).WithCapacityGb(1024).WithValidFileShareName(),
83+
func(b Builder[*cloudresourcesv1beta1.GcpNfsVolume]) {
84+
b.(*testGcpNfsVolumeBuilder).WithCapacityGb(1280)
85+
},
86+
)
87+
canChangeSkr(
88+
fmt.Sprintf("GcpNfsVolume %s tier instance capacity can be reduced", tier),
89+
newTestGcpNfsVolumeBuilder().WithTier(tier).WithCapacityGb(1280).WithValidFileShareName(),
90+
func(b Builder[*cloudresourcesv1beta1.GcpNfsVolume]) {
91+
b.(*testGcpNfsVolumeBuilder).WithCapacityGb(1024)
92+
},
93+
)
8094
}
8195

8296
for _, validCapacity := range []int{2560, 2561, 65399, 65400} {
@@ -97,6 +111,21 @@ var _ = Describe("Feature: SKR GcpNfsVolume", Ordered, func() {
97111
newTestGcpNfsVolumeBuilder().WithTier(cloudresourcesv1beta1.BASIC_SSD).WithCapacityGb(1024).WithFileShareName(fileShareName17char),
98112
"BASIC_SSD tier fileShareName length must be 16 or less characters",
99113
)
114+
canChangeSkr(
115+
"GcpNfsVolume BASIC_SSD tier instance capacity can be increased",
116+
newTestGcpNfsVolumeBuilder().WithTier(cloudresourcesv1beta1.BASIC_SSD).WithCapacityGb(2560).WithValidFileShareName(),
117+
func(b Builder[*cloudresourcesv1beta1.GcpNfsVolume]) {
118+
b.(*testGcpNfsVolumeBuilder).WithCapacityGb(2561)
119+
},
120+
)
121+
canNotChangeSkr(
122+
"GcpNfsVolume BASIC_SSD tier instance capacity can not be reduced",
123+
newTestGcpNfsVolumeBuilder().WithTier(cloudresourcesv1beta1.BASIC_SSD).WithCapacityGb(2561).WithValidFileShareName(),
124+
func(b Builder[*cloudresourcesv1beta1.GcpNfsVolume]) {
125+
b.(*testGcpNfsVolumeBuilder).WithCapacityGb(2560)
126+
},
127+
"BASIC_SSD tier capacityGb cannot be reduced",
128+
)
100129

101130
for _, validCapacity := range []int{1024, 1025, 65399, 65400} {
102131
canCreateSkr(
@@ -116,6 +145,21 @@ var _ = Describe("Feature: SKR GcpNfsVolume", Ordered, func() {
116145
newTestGcpNfsVolumeBuilder().WithTier(cloudresourcesv1beta1.BASIC_HDD).WithCapacityGb(1024).WithFileShareName(fileShareName17char),
117146
"BASIC_HDD tier fileShareName length must be 16 or less characters",
118147
)
148+
canChangeSkr(
149+
"GcpNfsVolume BASIC_HDD tier instance capacity can be increased",
150+
newTestGcpNfsVolumeBuilder().WithTier(cloudresourcesv1beta1.BASIC_HDD).WithCapacityGb(1024).WithValidFileShareName(),
151+
func(b Builder[*cloudresourcesv1beta1.GcpNfsVolume]) {
152+
b.(*testGcpNfsVolumeBuilder).WithCapacityGb(1025)
153+
},
154+
)
155+
canNotChangeSkr(
156+
"GcpNfsVolume BASIC_HDD tier instance capacity can not be reduced",
157+
newTestGcpNfsVolumeBuilder().WithTier(cloudresourcesv1beta1.BASIC_HDD).WithCapacityGb(1025).WithValidFileShareName(),
158+
func(b Builder[*cloudresourcesv1beta1.GcpNfsVolume]) {
159+
b.(*testGcpNfsVolumeBuilder).WithCapacityGb(1024)
160+
},
161+
"BASIC_HDD tier capacityGb cannot be reduced",
162+
)
119163

120164
for _, removedTier := range []string{"STANDARD", "PREMIUM", "HIGH_SCALE_SSD", "ENTERPRISE"} {
121165
canNotCreateSkr(

0 commit comments

Comments
 (0)