Skip to content

Commit ad3fd18

Browse files
committed
Fix server metadata length validation
1 parent 66d93db commit ad3fd18

7 files changed

+53
-30
lines changed

api/v1beta1/openstackmachine_types.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,13 @@ type OpenStackMachineSpec struct {
101101

102102
type ServerMetadata struct {
103103
// Key is the server metadata key
104-
// kubebuilder:validation:MaxLength:=255
104+
// +kubebuilder:validation:MaxLength:=255
105+
// +kubebuilder:validation:Required
105106
Key string `json:"key"`
106107

107108
// Value is the server metadata value
108-
// kubebuilder:validation:MaxLength:=255
109+
// +kubebuilder:validation:MaxLength:=255
110+
// +kubebuilder:validation:Required
109111
Value string `json:"value"`
110112
}
111113

config/crd/bases/infrastructure.cluster.x-k8s.io_openstackclusters.yaml

Lines changed: 4 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/infrastructure.cluster.x-k8s.io_openstackclustertemplates.yaml

Lines changed: 4 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/infrastructure.cluster.x-k8s.io_openstackmachines.yaml

Lines changed: 4 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/infrastructure.cluster.x-k8s.io_openstackmachinetemplates.yaml

Lines changed: 4 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/book/src/api/v1beta1/api.md

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/e2e/suites/apivalidations/openstackmachine_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ limitations under the License.
1717
package apivalidations
1818

1919
import (
20+
"strings"
21+
2022
. "github.com/onsi/ginkgo/v2"
2123
. "github.com/onsi/gomega"
2224
corev1 "k8s.io/api/core/v1"
@@ -54,4 +56,33 @@ var _ = Describe("OpenStackMachine API validations", func() {
5456
machine.Spec.ProviderID = pointer.String("bar")
5557
Expect(k8sClient.Update(ctx, machine)).NotTo(Succeed(), "Updating providerID should fail")
5658
})
59+
60+
It("should not allow server metadata to exceed 255 characters", func() {
61+
By("Creating a machine with a metadata key that is too long")
62+
machine.Spec.ServerMetadata = []infrav1.ServerMetadata{
63+
{
64+
Key: strings.Repeat("a", 256),
65+
Value: "value",
66+
},
67+
}
68+
Expect(k8sClient.Create(ctx, machine)).NotTo(Succeed(), "Creating a machine with a long metadata key should fail")
69+
70+
By("Creating a machine with a metadata value that is too long")
71+
machine.Spec.ServerMetadata = []infrav1.ServerMetadata{
72+
{
73+
Key: "key",
74+
Value: strings.Repeat("a", 256),
75+
},
76+
}
77+
Expect(k8sClient.Create(ctx, machine)).NotTo(Succeed(), "Creating a machine with a long metadata value should fail")
78+
79+
By("Creating a machine with a metadata key and value of 255 characters should succeed")
80+
machine.Spec.ServerMetadata = []infrav1.ServerMetadata{
81+
{
82+
Key: strings.Repeat("a", 255),
83+
Value: strings.Repeat("b", 255),
84+
},
85+
}
86+
Expect(k8sClient.Create(ctx, machine)).To(Succeed(), "Creating a machine with max metadata key and value should succeed")
87+
})
5788
})

0 commit comments

Comments
 (0)