---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: bucketclasses.noobaa.io
spec:
  additionalPrinterColumns:
  - JSONPath: .spec.placementPolicy
    description: Placement
    name: Placement
    type: string
  - JSONPath: .status.phase
    description: Phase
    name: Phase
    type: string
  - JSONPath: .metadata.creationTimestamp
    name: Age
    type: date
  group: noobaa.io
  names:
    kind: BucketClass
    listKind: BucketClassList
    plural: bucketclasses
    singular: bucketclass
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: BucketClass is the Schema for the bucketclasses API
      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:
          description: Standard object metadata.
          type: object
        spec:
          description: Specification of the desired behavior of the noobaa BucketClass.
          properties:
            placementPolicy:
              description: PlacementPolicy specifies the placement policy for the
                bucket class
              properties:
                tiers:
                  description: Tiers is an ordered list of tiers to use. The model
                    is a waterfall - push to first tier by default, and when no more
                    space spill "cold" storage to next tier.
                  items:
                    description: Tier specifies a storage tier
                    properties:
                      backingStores:
                        description: BackingStores is an unordered list of backing
                          store names. The meaning of the list depends on the placement.
                        items:
                          type: string
                        type: array
                      placement:
                        description: Placement specifies the type of placement for
                          the tier If empty it should have a single backing store.
                        enum:
                        - Spread
                        - Mirror
                        type: string
                    type: object
                  type: array
              required:
              - tiers
              type: object
          required:
          - placementPolicy
          type: object
        status:
          description: Most recently observed status of the noobaa BackingStore.
          properties:
            conditions:
              description: Conditions is a list of conditions related to operator
                reconciliation
              items:
                description: Condition represents the state of the operator's reconciliation
                  functionality.
                properties:
                  lastHeartbeatTime:
                    format: date-time
                    type: string
                  lastTransitionTime:
                    format: date-time
                    type: string
                  message:
                    type: string
                  reason:
                    type: string
                  status:
                    type: string
                  type:
                    description: ConditionType is the state of the operator's reconciliation
                      functionality.
                    type: string
                required:
                - status
                - type
                type: object
              type: array
            mode:
              description: Mode is a simple, high-level summary of where the System
                is in its lifecycle
              type: string
            phase:
              description: Phase is a simple, high-level summary of where the System
                is in its lifecycle
              type: string
            relatedObjects:
              description: RelatedObjects is a list of objects related to this operator.
              items:
                description: ObjectReference contains enough information to let you
                  inspect or modify the referred object.
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: 'If referring to a piece of an object instead of
                      an entire object, this string should contain a valid JSON/Go
                      field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within
                      a pod, this would take on a value like: "spec.containers{name}"
                      (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]"
                      (container with index 2 in this pod). This syntax is chosen
                      only to have some well-defined way of referencing a part of
                      an object. TODO: this design is not final and this field is
                      subject to change in the future.'
                    type: string
                  kind:
                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                  resourceVersion:
                    description: 'Specific resourceVersion to which this reference
                      is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                    type: string
                  uid:
                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                    type: string
                type: object
              type: array
          type: object
      type: object
  version: v1alpha1
  versions:
  - name: v1alpha1
    served: true
    storage: true
