add maxLength constraint for CRD (#1175)

* add maxLength constraint for CRD
This commit is contained in:
Felix Kunde 2020-10-22 08:44:04 +02:00 committed by GitHub
parent a8bfe4eb87
commit 22fa0875e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 2 deletions

View File

@ -57,6 +57,7 @@ spec:
required:
- kind
- apiVersion
- metadata
- spec
properties:
kind:
@ -67,6 +68,14 @@ spec:
type: string
enum:
- acid.zalan.do/v1
metadata:
type: object
required:
- name
properties:
name:
type: string
maxLength: 53
spec:
type: object
required:

View File

@ -49,7 +49,7 @@ Note, that the name of the cluster must start with the `teamId` and `-`. At
Zalando we use team IDs (nicknames) to lower the chance of duplicate cluster
names and colliding entities. The team ID would also be used to query an API to
get all members of a team and create [database roles](#teams-api-roles) for
them.
them. Besides, the maximum cluster name length is 53 characters.
## Watch pods being created

View File

@ -53,6 +53,7 @@ spec:
required:
- kind
- apiVersion
- metadata
- spec
properties:
kind:
@ -63,6 +64,14 @@ spec:
type: string
enum:
- acid.zalan.do/v1
metadata:
type: object
required:
- name
properties:
name:
type: string
maxLength: 53
spec:
type: object
required:

View File

@ -107,12 +107,13 @@ var min0 = 0.0
var min1 = 1.0
var min2 = 2.0
var minDisable = -1.0
var maxLength = int64(53)
// PostgresCRDResourceValidation to check applied manifest parameters
var PostgresCRDResourceValidation = apiextv1beta1.CustomResourceValidation{
OpenAPIV3Schema: &apiextv1beta1.JSONSchemaProps{
Type: "object",
Required: []string{"kind", "apiVersion", "spec"},
Required: []string{"kind", "apiVersion", "metadata", "spec"},
Properties: map[string]apiextv1beta1.JSONSchemaProps{
"kind": {
Type: "string",
@ -130,6 +131,16 @@ var PostgresCRDResourceValidation = apiextv1beta1.CustomResourceValidation{
},
},
},
"metadata": {
Type: "object",
Required: []string{"name"},
Properties: map[string]apiextv1beta1.JSONSchemaProps{
"name": {
Type: "string",
MaxLength: &maxLength,
},
},
},
"spec": {
Type: "object",
Required: []string{"numberOfInstances", "teamId", "postgresql", "volume"},