text: ---
  kind: Template
  apiVersion: v1
  metadata:
    name: glusterblock-provisioner
    labels:
      glusterfs: block-template
      glusterblock: template
    annotations:
      description: glusterblock provisioner template
      tags: glusterfs
  objects:
  - kind: ClusterRole
    apiVersion: v1
    metadata:
      name: glusterblock-provisioner-runner
      labels:
        glusterfs: block-provisioner-runner-clusterrole
        glusterblock: provisioner-runner-clusterrole
    rules:
      - apiGroups: [""]
        resources: ["persistentvolumes"]
        verbs: ["get", "list", "watch", "create", "delete"]
      - apiGroups: [""]
        resources: ["persistentvolumeclaims"]
        verbs: ["get", "list", "watch", "update"]
      - apiGroups: ["storage.k8s.io"]
        resources: ["storageclasses"]
        verbs: ["get", "list", "watch"]
      - apiGroups: [""]
        resources: ["events"]
        verbs: ["list", "watch", "create", "update", "patch"]
      - apiGroups: [""]
        resources: ["services"]
        verbs: ["get"]
      - apiGroups: [""]
        resources: ["secrets"]
        verbs: ["get", "create", "delete"]
      - apiGroups: [""]
        resources: ["routes"]
        verbs: ["get", "list"]
  - apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: glusterblock-${CLUSTER_NAME}-provisioner
      labels:
        glusterfs: block-${CLUSTER_NAME}-provisioner-sa
        glusterblock: ${CLUSTER_NAME}-provisioner-sa
  - apiVersion: v1
    kind: ClusterRoleBinding
    metadata:
      name: glusterblock-${CLUSTER_NAME}-provisioner
    roleRef:
      name: glusterblock-provisioner-runner
    subjects:
    - kind: ServiceAccount
      name: glusterblock-${CLUSTER_NAME}-provisioner
      namespace: ${NAMESPACE}
  - kind: DeploymentConfig
    apiVersion: v1
    metadata:
      name: glusterblock-${CLUSTER_NAME}-provisioner-dc
      labels:
        glusterfs: block-${CLUSTER_NAME}-provisioner-dc
        glusterblock: ${CLUSTER_NAME}-provisioner-dc
      annotations:
        description: Defines how to deploy the glusterblock provisioner pod.
    spec:
      replicas: 1
      selector:
        glusterfs: block-${CLUSTER_NAME}-provisioner-pod
      triggers:
      - type: ConfigChange
      strategy:
        type: Recreate
      template:
        metadata:
          name: glusterblock-provisioner
          labels:
            glusterfs: block-${CLUSTER_NAME}-provisioner-pod
        spec:
          serviceAccountName: glusterblock-${CLUSTER_NAME}-provisioner
          containers:
          - name: glusterblock-provisioner
            image: ${IMAGE_NAME}:${IMAGE_VERSION}
            imagePullPolicy: IfNotPresent
            env:
            - name: PROVISIONER_NAME
              value: gluster.org/glusterblock
  parameters:
  - name: IMAGE_NAME
    displayName: glusterblock provisioner container image name
    required: True
  - name: IMAGE_VERSION
    displayName: glusterblock provisioner container image version
    required: True
  - name: NAMESPACE
    displayName: glusterblock provisioner namespace
    description: The namespace in which these resources are being created
    required: True
  - name: CLUSTER_NAME
    displayName: GlusterFS cluster name
    description: A unique name to identify which heketi service manages this cluster, useful for running multiple heketi instances
    value: storage
  