apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
  name: lib-bucket-provisioner.v1.0.0
  namespace: placeholder
  annotations:
    categories: Storage,Big Data
    capabilities: Basic Install
    repository: https://github.com/kube-object-storage/lib-bucket-provisioner
    containerImage: kubernetes/pause
    createdAt: 2014-07-19T07:02:32.267701596Z
    certified: "false"
    description: Library for the dynamic provisioning of object store buckets to be used by object store providers.
    support: Red Hat
    alm-examples: |-
      [
        {
          "apiVersion": "objectbucket.io/v1alpha1",
          "kind": "ObjectBucketClaim",
          "metadata": {
            "name": "my-obc",
            "namespace": "my-app"
          },
          "spec": {
            "storageClassName": "object-bucket-class",
            "generateBucketName": "my-obc",
            "additionalConfig": {}
          },
          "status": {}
        },
        {
          "apiVersion": "objectbucket.io/v1alpha1",
          "kind": "ObjectBucket",
          "metadata": {
            "name": "my-obc"
          },
          "spec": {
            "storageClassName": "object-bucket-class",
            "reclaimPolicy": "Delete",
            "claimRef": {
              "name": "my-obc",
              "namespace": "my-app"
            },
            "endpoint": {
              "bucketHost": "xxx",
              "bucketPort": 80,
              "bucketName": "my-obc-1234-5678-1234-5678",
              "region": "xxx",
              "subRegion": "xxx",
              "additionalConfig": {}
            },
            "additionalState": {}
          },
          "status": {}
        }
      ]
spec:
  displayName: lib-bucket-provisioner
  version: "1.0.0"
  maturity: alpha
  provider:
    name: Red Hat
  links:
  - name: Github
    url: https://github.com/kube-object-storage/lib-bucket-provisioner
  maintainers:
  - email: jcope@redhat.com
    name: Jon Cope
  - email: jvance@redhat.com
    name: Jeff Vance
  - email: gmargali@redhat.com
    name: Guy Margalit
  - email: dzaken@redhat.com
    name: Danny Zaken
  - email: nbecker@redhat.com
    name: Nimrod Becker
  keywords:
  - kubernetes
  - openshift
  - object
  - bucket
  - storage
  - cloud
  - s3
  installModes:
  - supported: true
    type: OwnNamespace
  - supported: true
    type: SingleNamespace
  - supported: true
    type: MultiNamespace
  - supported: true
    type: AllNamespaces
  description: |
    ### CRD-only Operator

    This operator package is **CRD-only** and the operator is a no-op operator.

    Instead, bucket provisioners using this library are using these CRD's and using CSV [required-crds](https://github.com/operator-framework/operator-lifecycle-manager/blob/master/Documentation/design/building-your-csv.md#required-crds) them so that OLM can install it as a dependency.

    ### Generic Bucket Provisioning

    Kubernetes natively supports dynamic provisioning for many types of file and block storage, but lacks support for object bucket provisioning. 

    This repo is a placeholder for an object store bucket provisioning library, very similar to the Kubernetes [sig-storage-lib-external-provisioner](https://github.com/kubernetes-sigs/sig-storage-lib-external-provisioner/blob/master/controller/controller.go) library.

    ### Known Provisioners
    - https://github.com/noobaa/noobaa-operator (NooBaa)
    - https://github.com/rook/rook (Rook-Ceph)
    - https://github.com/yard-turkey/aws-s3-provisioner (AWS-S3)

  customresourcedefinitions:
    owned:
    - name: objectbucketclaims.objectbucket.io
      kind: ObjectBucketClaim
      version: v1alpha1
      displayName: ObjectBucketClaim
      description: Claim a bucket just like claiming a PV.
        Automate you app bucket provisioning by creating OBC with your app deployment.
        A secret and configmap (name=claim) will be created with access details for the app pods.
      resources:
      - name: secrets
        kind: Secret
        version: v1
      - name: configmaps
        kind: ConfigMap
        version: v1
    - name: objectbuckets.objectbucket.io
      kind: ObjectBucket
      version: v1alpha1
      displayName: ObjectBucket
      description: Used under-the-hood. Created per ObjectBucketClaim and keeps provisioning information
      resources:
      - name: secrets
        kind: Secret
        version: v1
      - name: configmaps
        kind: ConfigMap
        version: v1
  install:
    strategy: deployment
    spec:
      deployments:
      - name: lib-bucket-provisioner
        spec:
          replicas: 1
          selector:
            matchLabels:
              name: lib-bucket-provisioner
          template:
            metadata:
              labels:
                name: lib-bucket-provisioner
            spec:
              serviceAccountName: lib-bucket-provisioner
              containers:
                - name: lib-bucket-provisioner
                  image: kubernetes/pause
                  imagePullPolicy: Always
                  resources:
                    requests:
                      cpu: "1m"
                      memory: "32Mi"
                    limits:
                      cpu: "1"
                      memory: "128Mi"
                  env:
                    - name: WATCH_NAMESPACE
                      valueFrom:
                        fieldRef:
                          fieldPath: metadata.namespace
                    - name: POD_NAME
                      valueFrom:
                        fieldRef:
                          fieldPath: metadata.name
                    - name: OPERATOR_NAME
                      value: "lib-bucket-provisioner"
      permissions:
        - serviceAccountName: lib-bucket-provisioner
          rules: []
      clusterPermissions:
        - serviceAccountName: lib-bucket-provisioner
          rules:
            - apiGroups:
                - objectbucket.io
              resources:
                - "*"
              verbs:
                - "*"
  icon:
  - mediatype: image/png
    base64data: [encoded data, 167248 characters]
