--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.17.3 name: objectstoreusers.ceph.unkin.net spec: group: ceph.unkin.net names: kind: ObjectStoreUser listKind: ObjectStoreUserList plural: objectstoreusers shortNames: - osu singular: objectstoreuser scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.uid name: UID type: string - jsonPath: .status.secretName name: Secret type: string - jsonPath: .status.adopted name: Adopted type: boolean - jsonPath: .status.phase name: Phase type: string name: v1alpha1 schema: openAPIV3Schema: description: ObjectStoreUser is a Ceph RGW S3 user whose keys are delivered into a Secret. 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: |- ObjectStoreUserSpec defines a Ceph RGW (S3) user. The operator creates the user through the radosgw Admin Ops API and writes its generated access/secret key pair into a Kubernetes Secret. The key material is never stored on the resource itself. properties: displayName: description: DisplayName is the human-readable name for the user. Defaults to the UID. type: string email: description: Email is an optional email address recorded on the user. type: string maxBuckets: default: 1000 description: |- MaxBuckets caps how many buckets the user may own. A negative value disables bucket creation; 0 leaves the RGW default. Defaults to 1000. format: int32 type: integer quota: description: Quota optionally applies a user-level quota. properties: enabled: default: true description: |- Enabled turns the quota on. When false the other fields are ignored and the quota is disabled on the target. type: boolean maxObjects: description: MaxObjects caps the number of objects. Nil or negative means unlimited. format: int64 type: integer maxSizeBytes: description: MaxSizeBytes caps the total size in bytes. Nil or negative means unlimited. format: int64 type: integer type: object retainOnDelete: description: |- RetainOnDelete keeps the RGW user (and its keys) when the ObjectStoreUser resource is deleted, instead of removing it. Set this before adopting an existing user you may later want to hand back. Defaults to false. type: boolean secretName: description: |- SecretName is the Secret the operator writes the access/secret key into. Defaults to "-rgw". The Secret holds AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET_HOST and the RGW uid. type: string suspended: description: |- Suspended manages the user's suspended state: true suspends the user so its keys stop working, false resumes it. When unset the operator does not touch the suspended state (useful when adopting an existing user). type: boolean uid: description: UID is the RGW user id. Defaults to metadata.name. Immutable once created. type: string type: object status: description: ObjectStoreUserStatus reports observed user state. properties: adopted: description: |- Adopted reports that the RGW user already existed when the operator first reconciled this resource (it was taken over, not created). type: boolean conditions: items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. 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. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 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 in CamelCase or in foo.example.com/CamelCase. 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 required: - lastTransitionTime - message - reason - status - type type: object type: array x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map observedGeneration: format: int64 type: integer phase: description: Phase is a coarse lifecycle summary (Pending/Ready/Error). type: string secretName: description: SecretName is the Secret holding the user's credentials. type: string uid: description: UID is the RGW user id that was provisioned. type: string type: object type: object served: true storage: true subresources: status: {}