---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.3
  name: buckets.ceph.unkin.net
spec:
  group: ceph.unkin.net
  names:
    kind: Bucket
    listKind: BucketList
    plural: buckets
    shortNames:
    - bkt
    singular: bucket
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.bucketName
      name: Bucket
      type: string
    - jsonPath: .status.owner
      name: Owner
      type: string
    - jsonPath: .status.policyPrincipals
      name: Grants
      type: integer
    - jsonPath: .status.adopted
      name: Adopted
      type: boolean
    - jsonPath: .status.phase
      name: Phase
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Bucket is a Ceph RGW S3 bucket.
        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: BucketSpec defines a Ceph RGW (S3) bucket owned by an ObjectStoreUser.
            properties:
              bucketName:
                description: BucketName is the S3 bucket name. Defaults to metadata.name.
                  Immutable.
                type: string
              managePolicy:
                default: true
                description: |-
                  ManagePolicy controls whether the operator manages the bucket's S3 policy
                  from BucketAccess grants. When true (the default) the operator reconciles
                  its own statements while preserving any statements it does not own, so it
                  is safe to adopt a bucket that already has a policy. Set to false to leave
                  the bucket policy entirely untouched (BucketAccess grants then have no
                  effect on this bucket).
                type: boolean
              objectLock:
                description: ObjectLock configures S3 object lock. Enabling it forces
                  versioning on.
                properties:
                  days:
                    description: Days is the default retention period in days. Mutually
                      exclusive with Years.
                    format: int32
                    type: integer
                  enabled:
                    description: Enabled turns on object lock for the bucket.
                    type: boolean
                  mode:
                    description: Mode is the default retention mode applied to new
                      objects.
                    enum:
                    - GOVERNANCE
                    - COMPLIANCE
                    type: string
                  years:
                    description: Years is the default retention period in years. Mutually
                      exclusive with Days.
                    format: int32
                    type: integer
                required:
                - enabled
                type: object
              ownerRef:
                description: |-
                  OwnerRef names the ObjectStoreUser (in this namespace) that owns the
                  bucket. The owner always has full control; grant additional principals
                  with BucketAccess objects.
                type: string
              placementTarget:
                description: PlacementTarget optionally selects a non-default placement
                  target/pool.
                type: string
              purgeOnDelete:
                description: |-
                  PurgeOnDelete deletes the bucket together with all objects it contains
                  when the Bucket resource is removed. Dangerous; defaults to false.
                type: boolean
              quota:
                description: Quota optionally applies a bucket-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 bucket (and its objects) when the Bucket
                  resource is deleted. By default the operator removes the empty bucket;
                  it never purges objects unless PurgeOnDelete is also set.
                type: boolean
              tags:
                additionalProperties:
                  type: string
                description: Tags are bucket tags (key/value) applied to the bucket.
                type: object
              versioning:
                description: Versioning enables S3 object versioning on the bucket.
                type: boolean
              zonegroup:
                description: Zonegroup optionally pins the bucket to a specific RGW
                  zonegroup.
                type: string
            required:
            - ownerRef
            type: object
          status:
            description: BucketStatus reports observed bucket state.
            properties:
              adopted:
                description: |-
                  Adopted reports that the RGW bucket already existed when the operator
                  first reconciled this resource (it was taken over, not created).
                type: boolean
              bucketID:
                description: BucketID is the RGW internal bucket instance id.
                type: string
              bucketName:
                description: BucketName is the provisioned S3 bucket name.
                type: string
              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
              owner:
                description: Owner is the RGW uid that owns the bucket.
                type: string
              phase:
                description: Phase is a coarse lifecycle summary (Pending/Ready/Error).
                type: string
              policyPrincipals:
                description: |-
                  PolicyPrincipals is the number of extra principals granted via
                  BucketAccess and reflected in the bucket policy.
                format: int32
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
