From 371860a8c92eebb45e10bc910b513f1429ea16f7 Mon Sep 17 00:00:00 2001 From: "lukasz.widera@vshn.ch" Date: Thu, 26 Sep 2024 09:27:00 +0200 Subject: [PATCH] draft: wip --- apis/v1/objectstorage_types.go | 1 + crds/appcat.vshn.io_objectbuckets.yaml | 451 ++++++++++++------------- 2 files changed, 218 insertions(+), 234 deletions(-) diff --git a/apis/v1/objectstorage_types.go b/apis/v1/objectstorage_types.go index 5177bc9a28..893c4e36a0 100644 --- a/apis/v1/objectstorage_types.go +++ b/apis/v1/objectstorage_types.go @@ -17,6 +17,7 @@ const ( // BucketDeletionPolicy determines how buckets should be deleted when a Bucket is deleted. type BucketDeletionPolicy string +//go:generate yq -i e ../generated/appcat.vshn.io_objectbuckets.yaml --expression "with(.spec.versions[]; .schema.openAPIV3Schema.properties.spec.properties.parameters.properties.security.default={})" // +kubebuilder:object:root=true // +kubebuilder:printcolumn:name="Bucket Name",type="string",JSONPath=".spec.parameters.bucketName" // +kubebuilder:printcolumn:name="Region",type="string",JSONPath=".spec.parameters.region" diff --git a/crds/appcat.vshn.io_objectbuckets.yaml b/crds/appcat.vshn.io_objectbuckets.yaml index d839a5f29a..cb9d7aee6c 100644 --- a/crds/appcat.vshn.io_objectbuckets.yaml +++ b/crds/appcat.vshn.io_objectbuckets.yaml @@ -14,251 +14,234 @@ spec: singular: objectbucket scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .spec.parameters.bucketName - name: Bucket Name - type: string - - jsonPath: .spec.parameters.region - name: Region - type: string - name: v1 - schema: - openAPIV3Schema: - description: ObjectBucket is the API for creating S3 buckets. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: ObjectBucketSpec defines the desired state of a ObjectBucket. - properties: - compositionRef: - description: A CompositionReference references a Composition. - properties: - name: - description: Name of the Composition. - type: string - required: - - name - type: object - parameters: - description: ObjectBucketParameters are the configurable fields of - a ObjectBucket. - properties: - bucketDeletionPolicy: - default: DeleteAll - description: |- - BucketDeletionPolicy determines how buckets should be deleted when Bucket is deleted. - `DeleteIfEmpty` only deletes the bucket if the bucket is empty. - `DeleteAll` recursively deletes all objects in the bucket and then removes it. - type: string - bucketName: - description: |- - BucketName is the name of the bucket to create. - Cannot be changed after bucket is created. - Name must be acceptable by the S3 protocol, which follows RFC 1123. - Be aware that S3 providers may require a unique name across the platform or region. - type: string - region: - description: |- - Region is the name of the region where the bucket shall be created. - The region must be available in the S3 endpoint. - type: string - security: - description: Security defines the security of a service - properties: - allowAllNamespaces: - default: false - description: AllowAllNamespaces allows the service to be accessible - from all namespaces, this supersedes the AllowedNamespaces - field - type: boolean - allowedGroups: - description: AllowedGroups defines a list of Groups that have - limited access to the instance namespace - items: - type: string - type: array - allowedNamespaces: - description: AllowedNamespaces defines a list of namespaces - from where the service can be reached in the claim namespace - items: - type: string - type: array - allowedUsers: - description: AllowedUsers defines a list of Users that have - limited access to instance namespace. - items: - type: string - type: array - deletionProtection: - default: true - description: DeletionProtection blocks the deletion of the - instance if it is enabled (enabled by default) - type: boolean - type: object - required: - - bucketName - - region - type: object - writeConnectionSecretToRef: - description: WriteConnectionSecretToRef references a secret to which - the connection details will be written. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - type: string - type: object - x-kubernetes-map-type: atomic - type: object - status: - description: ObjectBucketStatus reflects the observed state of a ObjectBucket. - properties: - accessUserConditions: - description: AccessUserConditions contains a copy of the claim's underlying - user account conditions. - items: + - additionalPrinterColumns: + - jsonPath: .spec.parameters.bucketName + name: Bucket Name + type: string + - jsonPath: .spec.parameters.region + name: Region + type: string + name: v1 + schema: + openAPIV3Schema: + description: ObjectBucket is the API for creating S3 buckets. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: ObjectBucketSpec defines the desired state of a ObjectBucket. + properties: + compositionRef: + description: A CompositionReference references a Composition. properties: - lastTransitionTime: - description: LastTransitionTime is the last time the condition - transitioned from one status to another. - format: date-time - type: string - message: - description: Message is a human-readable message indicating - details about the transition. - maxLength: 32768 - type: string - observedGeneration: - description: |- - ObservedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: Reason contains a programmatic identifier indicating - the reason for the condition's last transition. - maxLength: 1024 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: Status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: Type of condition. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + name: + description: Name of the Composition. type: string + required: + - name type: object - type: array - bucketConditions: - description: BucketConditions contains a copy of the claim's underlying - bucket conditions. - items: + parameters: + description: ObjectBucketParameters are the configurable fields of a ObjectBucket. properties: - lastTransitionTime: - description: LastTransitionTime is the last time the condition - transitioned from one status to another. - format: date-time - type: string - message: - description: Message is a human-readable message indicating - details about the transition. - maxLength: 32768 - type: string - observedGeneration: + bucketDeletionPolicy: + default: DeleteAll description: |- - ObservedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: Reason contains a programmatic identifier indicating - the reason for the condition's last transition. - maxLength: 1024 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + BucketDeletionPolicy determines how buckets should be deleted when Bucket is deleted. + `DeleteIfEmpty` only deletes the bucket if the bucket is empty. + `DeleteAll` recursively deletes all objects in the bucket and then removes it. type: string - status: - description: Status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown + bucketName: + description: |- + BucketName is the name of the bucket to create. + Cannot be changed after bucket is created. + Name must be acceptable by the S3 protocol, which follows RFC 1123. + Be aware that S3 providers may require a unique name across the platform or region. type: string - type: - description: Type of condition. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + region: + description: |- + Region is the name of the region where the bucket shall be created. + The region must be available in the S3 endpoint. type: string + security: + description: Security defines the security of a service + properties: + allowAllNamespaces: + default: false + description: AllowAllNamespaces allows the service to be accessible from all namespaces, this supersedes the AllowedNamespaces field + type: boolean + allowedGroups: + description: AllowedGroups defines a list of Groups that have limited access to the instance namespace + items: + type: string + type: array + allowedNamespaces: + description: AllowedNamespaces defines a list of namespaces from where the service can be reached in the claim namespace + items: + type: string + type: array + allowedUsers: + description: AllowedUsers defines a list of Users that have limited access to instance namespace. + items: + type: string + type: array + deletionProtection: + default: true + description: DeletionProtection blocks the deletion of the instance if it is enabled (enabled by default) + type: boolean + type: object + default: {} + required: + - bucketName + - region type: object - type: array - conditions: - description: Conditions of the resource. - items: - description: A Condition that may apply to a resource. + writeConnectionSecretToRef: + description: WriteConnectionSecretToRef references a secret to which the connection details will be written. properties: - lastTransitionTime: + name: description: |- - LastTransitionTime is the last time this condition transitioned from one - status to another. - format: date-time + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string - message: - description: |- - A Message containing details about this condition's last transition from - one status to another, if any. - type: string - reason: - description: A Reason for this condition's last transition from - one status to another. - type: string - status: - description: Status of this condition; is it currently True, - False, or Unknown? + namespace: type: string - type: - description: |- - Type of this condition. At most one of each condition type may apply to - a resource at any point in time. - type: string - required: - - lastTransitionTime - - reason - - status - - type type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - required: - - spec - type: object - served: true - storage: true - subresources: {} + x-kubernetes-map-type: atomic + type: object + status: + description: ObjectBucketStatus reflects the observed state of a ObjectBucket. + properties: + accessUserConditions: + description: AccessUserConditions contains a copy of the claim's underlying user account conditions. + items: + properties: + lastTransitionTime: + description: LastTransitionTime is the last time the condition transitioned from one status to another. + format: date-time + type: string + message: + description: Message is a human-readable message indicating details about the transition. + maxLength: 32768 + type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: Reason contains a programmatic identifier indicating the reason for the condition's last transition. + maxLength: 1024 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: Status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: Type of condition. + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + type: object + type: array + bucketConditions: + description: BucketConditions contains a copy of the claim's underlying bucket conditions. + items: + properties: + lastTransitionTime: + description: LastTransitionTime is the last time the condition transitioned from one status to another. + format: date-time + type: string + message: + description: Message is a human-readable message indicating details about the transition. + maxLength: 32768 + type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: Reason contains a programmatic identifier indicating the reason for the condition's last transition. + maxLength: 1024 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: Status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: Type of condition. + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + type: object + type: array + conditions: + description: Conditions of the resource. + items: + description: A Condition that may apply to a resource. + properties: + lastTransitionTime: + description: |- + LastTransitionTime is the last time this condition transitioned from one + status to another. + format: date-time + type: string + message: + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. + type: string + reason: + description: A Reason for this condition's last transition from one status to another. + type: string + status: + description: Status of this condition; is it currently True, False, or Unknown? + type: string + type: + description: |- + Type of this condition. At most one of each condition type may apply to + a resource at any point in time. + type: string + required: + - lastTransitionTime + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + required: + - spec + type: object + served: true + storage: true + subresources: {}