---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: backingstores.noobaa.io
spec:
  additionalPrinterColumns:
  - JSONPath: .spec.type
    description: Type
    name: Type
    type: string
  - JSONPath: .status.phase
    description: Phase
    name: Phase
    type: string
  - JSONPath: .metadata.creationTimestamp
    name: Age
    type: date
  group: noobaa.io
  names:
    kind: BackingStore
    listKind: BackingStoreList
    plural: backingstores
    singular: backingstore
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: BackingStore is the Schema for the backingstores 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:
          type: object
        spec:
          description: Specification of the desired behavior of the noobaa BackingStore.
          properties:
            awsS3:
              description: AWSS3Spec specifies a backing store of type aws-s3
              properties:
                region:
                  description: Region is the AWS region
                  type: string
                secret:
                  description: Secret refers to a secret that provides the credentials
                    The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
                  properties:
                    name:
                      description: Name is unique within a namespace to reference
                        a secret resource.
                      type: string
                    namespace:
                      description: Namespace defines the space within which the secret
                        name must be unique.
                      type: string
                  type: object
                sslDisabled:
                  description: SSLDisabled allows to disable SSL and use plain http
                  type: boolean
                targetBucket:
                  description: TargetBucket is the name of the target S3 bucket
                  type: string
              required:
              - secret
              - targetBucket
              type: object
            azureBlob:
              description: AzureBlob specifies a backing store of type azure-blob
              properties:
                secret:
                  description: Secret refers to a secret that provides the credentials
                    The secret should define AccountName and AccountKey as provided
                    by Azure Blob.
                  properties:
                    name:
                      description: Name is unique within a namespace to reference
                        a secret resource.
                      type: string
                    namespace:
                      description: Namespace defines the space within which the secret
                        name must be unique.
                      type: string
                  type: object
                targetBlobContainer:
                  description: TargetBlobContainer is the name of the target Azure
                    Blob container
                  type: string
              required:
              - secret
              - targetBlobContainer
              type: object
            googleCloudStorage:
              description: GoogleCloudStorage specifies a backing store of type google-cloud-storage
              properties:
                secret:
                  description: Secret refers to a secret that provides the credentials
                    The secret should define GoogleServiceAccountPrivateKeyJson containing
                    the entire json string as provided by Google.
                  properties:
                    name:
                      description: Name is unique within a namespace to reference
                        a secret resource.
                      type: string
                    namespace:
                      description: Namespace defines the space within which the secret
                        name must be unique.
                      type: string
                  type: object
                targetBucket:
                  description: TargetBucket is the name of the target S3 bucket
                  type: string
              required:
              - secret
              - targetBucket
              type: object
            ibmCos:
              description: IBMCos specifies a backing store of type ibm-cos
              properties:
                endpoint:
                  description: 'Endpoint is the IBM COS compatible endpoint: http(s)://host:port'
                  type: string
                secret:
                  description: Secret refers to a secret that provides the credentials
                    The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY
                  properties:
                    name:
                      description: Name is unique within a namespace to reference
                        a secret resource.
                      type: string
                    namespace:
                      description: Namespace defines the space within which the secret
                        name must be unique.
                      type: string
                  type: object
                signatureVersion:
                  description: SignatureVersion specifies the client signature version
                    to use when signing requests.
                  type: string
                targetBucket:
                  description: TargetBucket is the name of the target IBM COS bucket
                  type: string
              required:
              - endpoint
              - secret
              - targetBucket
              type: object
            pvPool:
              description: PVPool specifies a backing store of type pv-pool
              properties:
                numVolumes:
                  description: NumVolumes is the number of volumes to allocate
                  type: integer
                resources:
                  description: VolumeResources represents the minimum resources each
                    volume should have.
                  properties:
                    limits:
                      additionalProperties:
                        anyOf:
                        - type: integer
                        - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: 'Limits describes the maximum amount of compute
                        resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                      type: object
                    requests:
                      additionalProperties:
                        anyOf:
                        - type: integer
                        - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: 'Requests describes the minimum amount of compute
                        resources required. If Requests is omitted for a container,
                        it defaults to Limits if that is explicitly specified, otherwise
                        to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                      type: object
                  type: object
                secret:
                  description: Secret refers to a secret that provides the agent configuration
                    The secret should define AGENT_CONFIG containing agent_configuration
                    from noobaa-core.
                  properties:
                    name:
                      description: Name is unique within a namespace to reference
                        a secret resource.
                      type: string
                    namespace:
                      description: Namespace defines the space within which the secret
                        name must be unique.
                      type: string
                  type: object
                storageClass:
                  description: StorageClass is the name of the storage class to use
                    for the PV's
                  type: string
              required:
              - numVolumes
              type: object
            s3Compatible:
              description: S3Compatible specifies a backing store of type s3-compatible
              properties:
                endpoint:
                  description: 'Endpoint is the S3 compatible endpoint: http(s)://host:port'
                  type: string
                secret:
                  description: Secret refers to a secret that provides the credentials
                    The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
                  properties:
                    name:
                      description: Name is unique within a namespace to reference
                        a secret resource.
                      type: string
                    namespace:
                      description: Namespace defines the space within which the secret
                        name must be unique.
                      type: string
                  type: object
                signatureVersion:
                  description: SignatureVersion specifies the client signature version
                    to use when signing requests.
                  type: string
                targetBucket:
                  description: TargetBucket is the name of the target S3 bucket
                  type: string
              required:
              - endpoint
              - secret
              - targetBucket
              type: object
            type:
              description: Type is an enum of supported types
              type: string
          required:
          - type
          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 specifies the updating mode of a BackingStore
              properties:
                modeCode:
                  description: ModeCode specifies the updated mode of backingstore
                  type: string
                timeStamp:
                  description: TimeStamp specifies the update time of backingstore
                    new mode
                  type: string
              type: object
            phase:
              description: Phase is a simple, high-level summary of where the backing
                store 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
