// Code generated for package generated by go-bindata DO NOT EDIT. (@generated)
// sources:
// assets/csidriveroperators/aws-ebs/02_sa.yaml
// assets/csidriveroperators/aws-ebs/03_role.yaml
// assets/csidriveroperators/aws-ebs/04_rolebinding.yaml
// assets/csidriveroperators/aws-ebs/05_clusterrole.yaml
// assets/csidriveroperators/aws-ebs/06_clusterrolebinding.yaml
// assets/csidriveroperators/aws-ebs/07_role_aws_config.yaml
// assets/csidriveroperators/aws-ebs/08_rolebinding_aws_config.yaml
// assets/csidriveroperators/aws-ebs/09_deployment.yaml
// assets/csidriveroperators/aws-ebs/10_cr.yaml
// assets/csidriveroperators/azure-disk/03_sa.yaml
// assets/csidriveroperators/azure-disk/04_role.yaml
// assets/csidriveroperators/azure-disk/05_rolebinding.yaml
// assets/csidriveroperators/azure-disk/06_clusterrole.yaml
// assets/csidriveroperators/azure-disk/07_clusterrolebinding.yaml
// assets/csidriveroperators/azure-disk/08_deployment.yaml
// assets/csidriveroperators/azure-disk/09_cr.yaml
// assets/csidriveroperators/gcp-pd/02_sa.yaml
// assets/csidriveroperators/gcp-pd/03_role.yaml
// assets/csidriveroperators/gcp-pd/04_rolebinding.yaml
// assets/csidriveroperators/gcp-pd/05_clusterrole.yaml
// assets/csidriveroperators/gcp-pd/06_clusterrolebinding.yaml
// assets/csidriveroperators/gcp-pd/07_deployment.yaml
// assets/csidriveroperators/gcp-pd/08_cr.yaml
// assets/csidriveroperators/manila/02_sa.yaml
// assets/csidriveroperators/manila/03_role.yaml
// assets/csidriveroperators/manila/04_rolebinding.yaml
// assets/csidriveroperators/manila/05_clusterrole.yaml
// assets/csidriveroperators/manila/06_clusterrolebinding.yaml
// assets/csidriveroperators/manila/07_deployment.yaml
// assets/csidriveroperators/manila/08_cr.yaml
// assets/csidriveroperators/openstack-cinder/02_sa.yaml
// assets/csidriveroperators/openstack-cinder/03_role.yaml
// assets/csidriveroperators/openstack-cinder/04_rolebinding.yaml
// assets/csidriveroperators/openstack-cinder/05_clusterrole.yaml
// assets/csidriveroperators/openstack-cinder/06_clusterrolebinding.yaml
// assets/csidriveroperators/openstack-cinder/07_deployment.yaml
// assets/csidriveroperators/openstack-cinder/08_cr.yaml
// assets/csidriveroperators/ovirt/02_sa.yaml
// assets/csidriveroperators/ovirt/03_role.yaml
// assets/csidriveroperators/ovirt/04_rolebinding.yaml
// assets/csidriveroperators/ovirt/05_clusterrole.yaml
// assets/csidriveroperators/ovirt/06_clusterrolebinding.yaml
// assets/csidriveroperators/ovirt/07_deployment.yaml
// assets/csidriveroperators/ovirt/08_cr.yaml
// assets/csidriveroperators/vsphere/03_sa.yaml
// assets/csidriveroperators/vsphere/04_role.yaml
// assets/csidriveroperators/vsphere/05_rolebinding.yaml
// assets/csidriveroperators/vsphere/06_clusterrole.yaml
// assets/csidriveroperators/vsphere/07_clusterrolebinding.yaml
// assets/csidriveroperators/vsphere/08_deployment.yaml
// assets/csidriveroperators/vsphere/09_cr.yaml
// assets/storageclasses/aws.yaml
// assets/storageclasses/azure.yaml
// assets/storageclasses/gcp.yaml
// assets/storageclasses/openstack.yaml
// assets/storageclasses/vsphere.yaml
// assets/vsphere_problem_detector/01_sa.yaml
// assets/vsphere_problem_detector/02_role.yaml
// assets/vsphere_problem_detector/03_rolebinding.yaml
// assets/vsphere_problem_detector/04_clusterrole.yaml
// assets/vsphere_problem_detector/05_clusterrolebinding.yaml
// assets/vsphere_problem_detector/06_deployment.yaml
// assets/vsphere_problem_detector/10_service.yaml
// assets/vsphere_problem_detector/11_service_monitor.yaml
// assets/vsphere_problem_detector/12_prometheusrules.yaml
package generated

import (
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"time"
)

type asset struct {
	bytes []byte
	info  os.FileInfo
}

type bindataFileInfo struct {
	name    string
	size    int64
	mode    os.FileMode
	modTime time.Time
}

// Name return file name
func (fi bindataFileInfo) Name() string {
	return fi.name
}

// Size return file size
func (fi bindataFileInfo) Size() int64 {
	return fi.size
}

// Mode return file mode
func (fi bindataFileInfo) Mode() os.FileMode {
	return fi.mode
}

// Mode return file modify time
func (fi bindataFileInfo) ModTime() time.Time {
	return fi.modTime
}

// IsDir return file whether a directory
func (fi bindataFileInfo) IsDir() bool {
	return fi.mode&os.ModeDir != 0
}

// Sys return file is sys mode
func (fi bindataFileInfo) Sys() interface{} {
	return nil
}

var _csidriveroperatorsAwsEbs02_saYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  name: aws-ebs-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsAwsEbs02_saYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs02_saYaml, nil
}

func csidriveroperatorsAwsEbs02_saYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs02_saYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/02_sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAwsEbs03_roleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: aws-ebs-csi-driver-operator-role
  namespace: openshift-cluster-csi-drivers
rules:
- apiGroups:
  - ''
  resources:
  - pods
  - services
  - endpoints
  - persistentvolumeclaims
  - events
  - configmaps
  - secrets
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - policy
  resources:
  - poddisruptionbudgets
  verbs:
  - '*'
- apiGroups:
  - monitoring.coreos.com
  resources:
  - servicemonitors
  verbs:
  - get
  - create
  - update
  - patch
  - delete
`)

func csidriveroperatorsAwsEbs03_roleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs03_roleYaml, nil
}

func csidriveroperatorsAwsEbs03_roleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs03_roleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/03_role.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAwsEbs04_rolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: aws-ebs-csi-driver-operator-rolebinding
  namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: aws-ebs-csi-driver-operator-role
subjects:
- kind: ServiceAccount
  name: aws-ebs-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsAwsEbs04_rolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs04_rolebindingYaml, nil
}

func csidriveroperatorsAwsEbs04_rolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs04_rolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/04_rolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAwsEbs05_clusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: aws-ebs-csi-driver-operator-clusterrole
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - privileged
  resources:
  - securitycontextconstraints
  verbs:
  - use
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers
  verbs:
  - get
  - list
  - watch
  # The Config Observer controller updates the CR's spec
  - update
  - patch
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers/status
  verbs:
  - get
  - list
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resourceNames:
  - extension-apiserver-authentication
  - aws-ebs-csi-driver-operator-lock
  resources:
  - configmaps
  verbs:
  - '*'
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterroles
  - clusterrolebindings
  - roles
  - rolebindings
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - serviceaccounts
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - list
  - create
  - watch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - nodes
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
  - create
  - patch
  - delete
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumes
  verbs:
  - create
  - delete
  - list
  - get
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - ''
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims/status
  verbs:
  - patch
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments
  verbs:
  - get
  - list
  - watch
  - update
  - delete
  - create
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments/status
  verbs:
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents/status
  verbs:
  - update
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - csinodes
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - '*'
  resources:
  - events
  verbs:
  - get
  - patch
  - create
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotclasses
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - storage.k8s.io
  resources:
  - csidrivers
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - cloudcredential.openshift.io
  resources:
  - credentialsrequests
  verbs:
  - '*'
- apiGroups:
  - config.openshift.io
  resources:
  - infrastructures
  - proxies
  verbs:
  - get
  - list
  - watch
# Allow kube-rbac-proxy to create TokenReview to be able to authenticate Prometheus when collecting metrics
- apiGroups:
  - "authentication.k8s.io"
  resources:
  - "tokenreviews"
  verbs:
  - "create"
`)

func csidriveroperatorsAwsEbs05_clusterroleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs05_clusterroleYaml, nil
}

func csidriveroperatorsAwsEbs05_clusterroleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs05_clusterroleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/05_clusterrole.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAwsEbs06_clusterrolebindingYaml = []byte(`kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: aws-ebs-csi-driver-operator-clusterrolebinding
subjects:
  - kind: ServiceAccount
    name: aws-ebs-csi-driver-operator
    namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: aws-ebs-csi-driver-operator-clusterrole
`)

func csidriveroperatorsAwsEbs06_clusterrolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs06_clusterrolebindingYaml, nil
}

func csidriveroperatorsAwsEbs06_clusterrolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs06_clusterrolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/06_clusterrolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAwsEbs07_role_aws_configYaml = []byte(`# Allow AWS EBS CSI driver operator to read CA bundle from openshift-config-managed/kube-cloud-config ConfigMap
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: aws-ebs-csi-driver-operator-aws-config-role
  namespace: openshift-config-managed
rules:
- apiGroups:
  - ''
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
`)

func csidriveroperatorsAwsEbs07_role_aws_configYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs07_role_aws_configYaml, nil
}

func csidriveroperatorsAwsEbs07_role_aws_configYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs07_role_aws_configYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/07_role_aws_config.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAwsEbs08_rolebinding_aws_configYaml = []byte(`kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: aws-ebs-csi-driver-operator-aws-config-clusterrolebinding
  namespace: openshift-config-managed
subjects:
  - kind: ServiceAccount
    name: aws-ebs-csi-driver-operator
    namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: aws-ebs-csi-driver-operator-aws-config-role
`)

func csidriveroperatorsAwsEbs08_rolebinding_aws_configYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs08_rolebinding_aws_configYaml, nil
}

func csidriveroperatorsAwsEbs08_rolebinding_aws_configYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs08_rolebinding_aws_configYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/08_rolebinding_aws_config.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAwsEbs09_deploymentYaml = []byte(`apiVersion: apps/v1
kind: Deployment
metadata:
  name: aws-ebs-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
spec:
  replicas: 1
  selector:
    matchLabels:
      name: aws-ebs-csi-driver-operator
  strategy: {}
  template:
    metadata:
      annotations:
        target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
      labels:
        name: aws-ebs-csi-driver-operator
    spec:
      containers:
      - args:
        - start
        - -v=${LOG_LEVEL}
        env:
        - name: DRIVER_IMAGE
          value: ${DRIVER_IMAGE}
        - name: PROVISIONER_IMAGE
          value: ${PROVISIONER_IMAGE}
        - name: ATTACHER_IMAGE
          value: ${ATTACHER_IMAGE}
        - name: RESIZER_IMAGE
          value: ${RESIZER_IMAGE}
        - name: SNAPSHOTTER_IMAGE
          value: ${SNAPSHOTTER_IMAGE}
        - name: NODE_DRIVER_REGISTRAR_IMAGE
          value: ${NODE_DRIVER_REGISTRAR_IMAGE}
        - name: LIVENESS_PROBE_IMAGE
          value: ${LIVENESS_PROBE_IMAGE}
        - name: KUBE_RBAC_PROXY_IMAGE
          value: ${KUBE_RBAC_PROXY_IMAGE}
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: ${OPERATOR_IMAGE}
        imagePullPolicy: IfNotPresent
        name: aws-ebs-csi-driver-operator
        resources:
          requests:
            memory: 50Mi
            cpu: 10m
      priorityClassName: system-cluster-critical
      serviceAccountName: aws-ebs-csi-driver-operator
      nodeSelector:
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: CriticalAddonsOnly
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
`)

func csidriveroperatorsAwsEbs09_deploymentYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs09_deploymentYaml, nil
}

func csidriveroperatorsAwsEbs09_deploymentYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs09_deploymentYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/09_deployment.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAwsEbs10_crYaml = []byte(`apiVersion: operator.openshift.io/v1
kind: "ClusterCSIDriver"
metadata:
  name: "ebs.csi.aws.com"
spec:
  logLevel: Normal
  managementState: Managed
  operatorLogLevel: Normal
`)

func csidriveroperatorsAwsEbs10_crYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAwsEbs10_crYaml, nil
}

func csidriveroperatorsAwsEbs10_crYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAwsEbs10_crYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/aws-ebs/10_cr.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAzureDisk03_saYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  name: azure-disk-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsAzureDisk03_saYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAzureDisk03_saYaml, nil
}

func csidriveroperatorsAzureDisk03_saYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAzureDisk03_saYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/azure-disk/03_sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAzureDisk04_roleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: azure-disk-csi-driver-operator-role
  namespace: openshift-cluster-csi-drivers
rules:
- apiGroups:
  - ''
  resources:
  - pods
  - services
  - endpoints
  - persistentvolumeclaims
  - events
  - configmaps
  - secrets
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - monitoring.coreos.com
  resources:
  - servicemonitors
  verbs:
  - get
  - create
  - update
  - patch
  - delete
`)

func csidriveroperatorsAzureDisk04_roleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAzureDisk04_roleYaml, nil
}

func csidriveroperatorsAzureDisk04_roleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAzureDisk04_roleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/azure-disk/04_role.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAzureDisk05_rolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: azure-disk-csi-driver-operator-rolebinding
  namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: azure-disk-csi-driver-operator-role
subjects:
- kind: ServiceAccount
  name: azure-disk-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsAzureDisk05_rolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAzureDisk05_rolebindingYaml, nil
}

func csidriveroperatorsAzureDisk05_rolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAzureDisk05_rolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/azure-disk/05_rolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAzureDisk06_clusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: azure-disk-csi-driver-operator-clusterrole
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - privileged
  resources:
  - securitycontextconstraints
  verbs:
  - use
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers
  verbs:
  - get
  - list
  - watch
  # The Config Observer controller updates the CR's spec
  - update
  - patch
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers/status
  verbs:
  - get
  - list
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resourceNames:
  - extension-apiserver-authentication
  - azure-disk-csi-driver-operator-lock
  resources:
  - configmaps
  verbs:
  - '*'
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterroles
  - clusterrolebindings
  - roles
  - rolebindings
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - serviceaccounts
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - list
  - create
  - watch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - nodes
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
  - create
  - patch
  - delete
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumes
  verbs:
  - create
  - delete
  - list
  - get
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - ''
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims/status
  verbs:
  - patch
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments
  verbs:
  - get
  - list
  - watch
  - update
  - delete
  - create
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments/status
  verbs:
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents/status
  verbs:
  - update
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - csinodes
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - '*'
  resources:
  - events
  verbs:
  - get
  - patch
  - create
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotclasses
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - storage.k8s.io
  resources:
  - csidrivers
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - cloudcredential.openshift.io
  resources:
  - credentialsrequests
  verbs:
  - '*'
- apiGroups:
  - config.openshift.io
  resources:
  - infrastructures
  - proxies
  verbs:
  - get
  - list
  - watch
# Allow kube-rbac-proxy to create TokenReview to be able to authenticate Prometheus when collecting metrics
- apiGroups:
  - "authentication.k8s.io"
  resources:
  - "tokenreviews"
  verbs:
  - "create"
`)

func csidriveroperatorsAzureDisk06_clusterroleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAzureDisk06_clusterroleYaml, nil
}

func csidriveroperatorsAzureDisk06_clusterroleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAzureDisk06_clusterroleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/azure-disk/06_clusterrole.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAzureDisk07_clusterrolebindingYaml = []byte(`kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: azure-disk-csi-driver-operator-clusterrolebinding
subjects:
  - kind: ServiceAccount
    name: azure-disk-csi-driver-operator
    namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: azure-disk-csi-driver-operator-clusterrole
`)

func csidriveroperatorsAzureDisk07_clusterrolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAzureDisk07_clusterrolebindingYaml, nil
}

func csidriveroperatorsAzureDisk07_clusterrolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAzureDisk07_clusterrolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/azure-disk/07_clusterrolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAzureDisk08_deploymentYaml = []byte(`apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-disk-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
spec:
  replicas: 1
  selector:
    matchLabels:
      name: azure-disk-csi-driver-operator
  strategy: {}
  template:
    metadata:
      annotations:
        target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
      labels:
        name: azure-disk-csi-driver-operator
    spec:
      containers:
      - args:
        - start
        - -v=${LOG_LEVEL}
        env:
        - name: DRIVER_IMAGE
          value: ${DRIVER_IMAGE}
        - name: PROVISIONER_IMAGE
          value: ${PROVISIONER_IMAGE}
        - name: ATTACHER_IMAGE
          value: ${ATTACHER_IMAGE}
        - name: RESIZER_IMAGE
          value: ${RESIZER_IMAGE}
        - name: SNAPSHOTTER_IMAGE
          value: ${SNAPSHOTTER_IMAGE}
        - name: NODE_DRIVER_REGISTRAR_IMAGE
          value: ${NODE_DRIVER_REGISTRAR_IMAGE}
        - name: LIVENESS_PROBE_IMAGE
          value: ${LIVENESS_PROBE_IMAGE}
        - name: KUBE_RBAC_PROXY_IMAGE
          value: ${KUBE_RBAC_PROXY_IMAGE}
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: ${OPERATOR_IMAGE}
        imagePullPolicy: IfNotPresent
        name: azure-disk-csi-driver-operator
        resources:
          requests:
            memory: 50Mi
            cpu: 10m
      priorityClassName: system-cluster-critical
      serviceAccountName: azure-disk-csi-driver-operator
      nodeSelector:
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: CriticalAddonsOnly
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
`)

func csidriveroperatorsAzureDisk08_deploymentYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAzureDisk08_deploymentYaml, nil
}

func csidriveroperatorsAzureDisk08_deploymentYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAzureDisk08_deploymentYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/azure-disk/08_deployment.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsAzureDisk09_crYaml = []byte(`apiVersion: operator.openshift.io/v1
kind: ClusterCSIDriver
metadata:
  name: disk.csi.azure.com
spec:
  logLevel: Normal
  managementState: Managed
  operatorLogLevel: Normal
`)

func csidriveroperatorsAzureDisk09_crYamlBytes() ([]byte, error) {
	return _csidriveroperatorsAzureDisk09_crYaml, nil
}

func csidriveroperatorsAzureDisk09_crYaml() (*asset, error) {
	bytes, err := csidriveroperatorsAzureDisk09_crYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/azure-disk/09_cr.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsGcpPd02_saYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  name: gcp-pd-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsGcpPd02_saYamlBytes() ([]byte, error) {
	return _csidriveroperatorsGcpPd02_saYaml, nil
}

func csidriveroperatorsGcpPd02_saYaml() (*asset, error) {
	bytes, err := csidriveroperatorsGcpPd02_saYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/gcp-pd/02_sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsGcpPd03_roleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: gcp-pd-csi-driver-operator-role
  namespace: openshift-cluster-csi-drivers
rules:
- apiGroups:
  - ''
  resources:
  - pods
  - services
  - endpoints
  - persistentvolumeclaims
  - events
  - configmaps
  - secrets
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - monitoring.coreos.com
  resources:
  - servicemonitors
  verbs:
  - get
  - create
  - update
  - patch
  - delete
`)

func csidriveroperatorsGcpPd03_roleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsGcpPd03_roleYaml, nil
}

func csidriveroperatorsGcpPd03_roleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsGcpPd03_roleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/gcp-pd/03_role.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsGcpPd04_rolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: gcp-pd-csi-driver-operator-rolebinding
  namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: gcp-pd-csi-driver-operator-role
subjects:
- kind: ServiceAccount
  name: gcp-pd-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsGcpPd04_rolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsGcpPd04_rolebindingYaml, nil
}

func csidriveroperatorsGcpPd04_rolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsGcpPd04_rolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/gcp-pd/04_rolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsGcpPd05_clusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: gcp-pd-csi-driver-operator-clusterrole
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - privileged
  resources:
  - securitycontextconstraints
  verbs:
  - use
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers
  verbs:
  - get
  - list
  - watch
  # The Config Observer controller updates the CR's spec
  - update
  - patch
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers/status
  verbs:
  - get
  - list
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resourceNames:
  - extension-apiserver-authentication
  - gcp-pd-csi-driver-operator-lock
  resources:
  - configmaps
  verbs:
  - '*'
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterroles
  - clusterrolebindings
  - roles
  - rolebindings
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - serviceaccounts
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - list
  - create
  - watch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - nodes
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
  - create
  - patch
  - delete
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumes
  verbs:
  - create
  - delete
  - list
  - get
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - ''
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims/status
  verbs:
  - patch
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments
  verbs:
  - get
  - list
  - watch
  - update
  - delete
  - create
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments/status
  verbs:
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents/status
  verbs:
  - update
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - csinodes
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - '*'
  resources:
  - events
  verbs:
  - get
  - patch
  - create
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotclasses
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - storage.k8s.io
  resources:
  - csidrivers
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - cloudcredential.openshift.io
  resources:
  - credentialsrequests
  verbs:
  - '*'
- apiGroups:
  - config.openshift.io
  resources:
  - infrastructures
  - proxies
  verbs:
  - get
  - list
  - watch
# Allow kube-rbac-proxy to create TokenReview to be able to authenticate Prometheus when collecting metrics
- apiGroups:
  - "authentication.k8s.io"
  resources:
  - "tokenreviews"
  verbs:
  - "create"
`)

func csidriveroperatorsGcpPd05_clusterroleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsGcpPd05_clusterroleYaml, nil
}

func csidriveroperatorsGcpPd05_clusterroleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsGcpPd05_clusterroleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/gcp-pd/05_clusterrole.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsGcpPd06_clusterrolebindingYaml = []byte(`kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: gcp-pd-csi-driver-operator-clusterrolebinding
subjects:
  - kind: ServiceAccount
    name: gcp-pd-csi-driver-operator
    namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: gcp-pd-csi-driver-operator-clusterrole`)

func csidriveroperatorsGcpPd06_clusterrolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsGcpPd06_clusterrolebindingYaml, nil
}

func csidriveroperatorsGcpPd06_clusterrolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsGcpPd06_clusterrolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/gcp-pd/06_clusterrolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsGcpPd07_deploymentYaml = []byte(`apiVersion: apps/v1
kind: Deployment
metadata:
  name: gcp-pd-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
spec:
  replicas: 1
  selector:
    matchLabels:
      name: gcp-pd-csi-driver-operator
  strategy: {}
  template:
    metadata:
      annotations:
        target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
      labels:
        name: gcp-pd-csi-driver-operator
    spec:
      containers:
      - args:
        - start
        - -v=${LOG_LEVEL}
        env:
        - name: DRIVER_IMAGE
          value: ${DRIVER_IMAGE}
        - name: PROVISIONER_IMAGE
          value: ${PROVISIONER_IMAGE}
        - name: ATTACHER_IMAGE
          value: ${ATTACHER_IMAGE}
        - name: RESIZER_IMAGE
          value: ${RESIZER_IMAGE}
        - name: SNAPSHOTTER_IMAGE
          value: ${SNAPSHOTTER_IMAGE}
        - name: NODE_DRIVER_REGISTRAR_IMAGE
          value: ${NODE_DRIVER_REGISTRAR_IMAGE}
        - name: LIVENESS_PROBE_IMAGE
          value: ${LIVENESS_PROBE_IMAGE}
        - name: KUBE_RBAC_PROXY_IMAGE
          value: ${KUBE_RBAC_PROXY_IMAGE}
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: ${OPERATOR_IMAGE}
        imagePullPolicy: IfNotPresent
        name: gcp-pd-csi-driver-operator
        resources:
          requests:
            memory: 50Mi
            cpu: 10m
      priorityClassName: system-cluster-critical
      serviceAccountName: gcp-pd-csi-driver-operator
      nodeSelector:
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: CriticalAddonsOnly
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
`)

func csidriveroperatorsGcpPd07_deploymentYamlBytes() ([]byte, error) {
	return _csidriveroperatorsGcpPd07_deploymentYaml, nil
}

func csidriveroperatorsGcpPd07_deploymentYaml() (*asset, error) {
	bytes, err := csidriveroperatorsGcpPd07_deploymentYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/gcp-pd/07_deployment.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsGcpPd08_crYaml = []byte(`apiVersion: operator.openshift.io/v1
kind: "ClusterCSIDriver"
metadata:
  name: "pd.csi.storage.gke.io"
spec:
  logLevel: Normal
  managementState: Managed
  operatorLogLevel: Normal
`)

func csidriveroperatorsGcpPd08_crYamlBytes() ([]byte, error) {
	return _csidriveroperatorsGcpPd08_crYaml, nil
}

func csidriveroperatorsGcpPd08_crYaml() (*asset, error) {
	bytes, err := csidriveroperatorsGcpPd08_crYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/gcp-pd/08_cr.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsManila02_saYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  name: manila-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsManila02_saYamlBytes() ([]byte, error) {
	return _csidriveroperatorsManila02_saYaml, nil
}

func csidriveroperatorsManila02_saYaml() (*asset, error) {
	bytes, err := csidriveroperatorsManila02_saYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/manila/02_sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsManila03_roleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: manila-csi-driver-operator-role
  namespace: openshift-cluster-csi-drivers
rules:
- apiGroups:
  - ''
  resources:
  - pods
  - services
  - endpoints
  - persistentvolumeclaims
  - events
  - configmaps
  - secrets
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
`)

func csidriveroperatorsManila03_roleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsManila03_roleYaml, nil
}

func csidriveroperatorsManila03_roleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsManila03_roleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/manila/03_role.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsManila04_rolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: manila-csi-driver-operator-rolebinding
  namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: manila-csi-driver-operator-role
subjects:
- kind: ServiceAccount
  name: manila-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsManila04_rolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsManila04_rolebindingYaml, nil
}

func csidriveroperatorsManila04_rolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsManila04_rolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/manila/04_rolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsManila05_clusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: manila-csi-driver-operator-clusterrole
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - privileged
  resources:
  - securitycontextconstraints
  verbs:
  - use

# The operator needs these config maps:
# - read/write openshift-manila-csi-driver/cloud-provider-config
# - read-only kube-system/extension-apiserver-authentication
# - read/write manila-csi-driver-operator-lock
- apiGroups:
  - ''
  resources:
  - configmaps
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterroles
  - clusterrolebindings
  - roles
  - rolebindings
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - serviceaccounts
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - list
  - create
  - watch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - nodes
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
  # For CA certificate sync
  - create
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
  - create
  - patch
  - delete
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumes
  verbs:
  - create
  - delete
  - list
  - get
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims/status
  verbs:
  - patch
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments
  verbs:
  - get
  - list
  - watch
  - update
  - delete
  - create
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents/status
  verbs:
  - update
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - csinodes
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - '*'
  resources:
  - events
  verbs:
  - get
  - patch
  - create
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotclasses
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - storage.k8s.io
  resources:
  - csidrivers
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - csi.openshift.io
  resources:
  - '*'
  verbs:
  - '*'
- apiGroups:
  - cloudcredential.openshift.io
  resources:
  - credentialsrequests
  verbs:
  - '*'
- apiGroups:
  - config.openshift.io
  resources:
  - infrastructures
  - proxies
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - operator.openshift.io
  resources:
  - 'clustercsidrivers'
  - 'clustercsidrivers/status'
  verbs:
  - '*'
# Allow kube-rbac-proxy to create TokenReview to be able to authenticate Prometheus when collecting metrics
- apiGroups:
  - "authentication.k8s.io"
  resources:
  - "tokenreviews"
  verbs:
  - "create"
# Allow the operator to create ServiceMonitor in the driver namespace
- apiGroups:
  - monitoring.coreos.com
  resources:
  - servicemonitors
  verbs:
  - get
  - create
  - update
  - patch
  - delete
# Allow the operator to create Service in the driver namespace
- apiGroups:
  - ''
  resources:
  - services
  verbs:
  - '*'
# Grant these permissions in the driver namespace to Prometheus
- apiGroups:
  - ''
  resources:
  - pods
  - endpoints
  verbs:
  - 'get'
  - 'list'
  - 'watch'
`)

func csidriveroperatorsManila05_clusterroleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsManila05_clusterroleYaml, nil
}

func csidriveroperatorsManila05_clusterroleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsManila05_clusterroleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/manila/05_clusterrole.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsManila06_clusterrolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: manila-csi-driver-operator-clusterrolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: manila-csi-driver-operator-clusterrole
subjects:
- kind: ServiceAccount
  name: manila-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsManila06_clusterrolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsManila06_clusterrolebindingYaml, nil
}

func csidriveroperatorsManila06_clusterrolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsManila06_clusterrolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/manila/06_clusterrolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsManila07_deploymentYaml = []byte(`apiVersion: apps/v1
kind: Deployment
metadata:
  name: manila-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
  annotations:
    config.openshift.io/inject-proxy: manila-csi-driver-operator
spec:
  replicas: 1
  selector:
    matchLabels:
      name: manila-csi-driver-operator
  strategy: {}
  template:
    metadata:
      annotations:
        target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
      labels:
        name: manila-csi-driver-operator
    spec:
      containers:
      - args:
        - start
        - -v=${LOG_LEVEL}
        env:
        - name: DRIVER_IMAGE
          value: ${DRIVER_IMAGE}
        - name: NFS_DRIVER_IMAGE
          value: ${NFS_DRIVER_IMAGE}
        - name: PROVISIONER_IMAGE
          value: ${PROVISIONER_IMAGE}
        - name: ATTACHER_IMAGE
          value: ${ATTACHER_IMAGE}
        - name: RESIZER_IMAGE
          value: ${RESIZER_IMAGE}
        - name: SNAPSHOTTER_IMAGE
          value: ${SNAPSHOTTER_IMAGE}
        - name: NODE_DRIVER_REGISTRAR_IMAGE
          value: ${NODE_DRIVER_REGISTRAR_IMAGE}
        - name: LIVENESS_PROBE_IMAGE
          value: ${LIVENESS_PROBE_IMAGE}
        - name: KUBE_RBAC_PROXY_IMAGE
          value: ${KUBE_RBAC_PROXY_IMAGE}
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: ${OPERATOR_IMAGE}
        imagePullPolicy: IfNotPresent
        name: manila-csi-driver-operator
        volumeMounts:
        - name: cacert
          mountPath: /etc/openstack-ca/
        - name: cloud-credentials
          # Create /etc/openstack/clouds.yaml
          mountPath: /etc/openstack/
        resources:
          requests:
            memory: 50Mi
            cpu: 10m
      priorityClassName: system-cluster-critical
      serviceAccountName: manila-csi-driver-operator
      nodeSelector:
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: CriticalAddonsOnly
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
      volumes:
      - name: cacert
        # Extract ca-bundle.pem to /usr/share/pki/ca-trust-source if present.
        # Let the pod start when the ConfigMap does not exist or the certificate
        # is not preset there. The certificate file will be created once the
        # ConfigMap is created / the cerificate is added to it.
        configMap:
          name: cloud-provider-config
          items:
            - key: ca-bundle.pem
              path: ca-bundle.pem
          optional: true
      - name: cloud-credentials
        secret:
          secretName: manila-cloud-credentials
          optional: false
`)

func csidriveroperatorsManila07_deploymentYamlBytes() ([]byte, error) {
	return _csidriveroperatorsManila07_deploymentYaml, nil
}

func csidriveroperatorsManila07_deploymentYaml() (*asset, error) {
	bytes, err := csidriveroperatorsManila07_deploymentYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/manila/07_deployment.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsManila08_crYaml = []byte(`apiVersion: operator.openshift.io/v1
kind: ClusterCSIDriver
metadata:
  name: manila.csi.openstack.org
spec:
  managementState: Managed
  logLevel: Normal
  operatorLogLevel: Normal
`)

func csidriveroperatorsManila08_crYamlBytes() ([]byte, error) {
	return _csidriveroperatorsManila08_crYaml, nil
}

func csidriveroperatorsManila08_crYaml() (*asset, error) {
	bytes, err := csidriveroperatorsManila08_crYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/manila/08_cr.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOpenstackCinder02_saYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  name: openstack-cinder-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsOpenstackCinder02_saYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOpenstackCinder02_saYaml, nil
}

func csidriveroperatorsOpenstackCinder02_saYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOpenstackCinder02_saYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/openstack-cinder/02_sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOpenstackCinder03_roleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: openstack-cinder-csi-driver-operator-role
  namespace: openshift-cluster-csi-drivers
rules:
- apiGroups:
  - ''
  resources:
  - pods
  - services
  - endpoints
  - persistentvolumeclaims
  - events
  - configmaps
  - secrets
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - monitoring.coreos.com
  resources:
  - servicemonitors
  verbs:
  - get
  - create
  - update
  - patch
  - delete
`)

func csidriveroperatorsOpenstackCinder03_roleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOpenstackCinder03_roleYaml, nil
}

func csidriveroperatorsOpenstackCinder03_roleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOpenstackCinder03_roleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/openstack-cinder/03_role.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOpenstackCinder04_rolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: openstack-cinder-csi-driver-operator-rolebinding
  namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: openstack-cinder-csi-driver-operator-role
subjects:
- kind: ServiceAccount
  name: openstack-cinder-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsOpenstackCinder04_rolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOpenstackCinder04_rolebindingYaml, nil
}

func csidriveroperatorsOpenstackCinder04_rolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOpenstackCinder04_rolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/openstack-cinder/04_rolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOpenstackCinder05_clusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: openstack-cinder-csi-driver-operator-clusterrole
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - privileged
  resources:
  - securitycontextconstraints
  verbs:
  - use

# The operator needs these config maps:
# - read/write openshift-cluster-csi-drivers/cloud-provider-config
# - read-only kube-system/extension-apiserver-authentication
# - read/write openstack-cinder-csi-driver-operator-lock
- apiGroups:
  - ''
  resources:
  - configmaps
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - pods
  verbs:
  - watch
  - list
  - get
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterroles
  - clusterrolebindings
  - roles
  - rolebindings
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - serviceaccounts
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - list
  - create
  - watch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - nodes
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
  # For CA certificate sync
  - create
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
  - create
  - patch
  - delete
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumes
  verbs:
  - create
  - delete
  - list
  - get
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims/status
  verbs:
  - patch
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments
  verbs:
  - get
  - list
  - watch
  - update
  - delete
  - create
  - patch
- apiGroups:
  - "storage.k8s.io"
  resources:
  - "volumeattachments/status"
  verbs:
  - "patch"
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents/status
  verbs:
  - update
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - csinodes
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - '*'
  resources:
  - events
  verbs:
  - get
  - patch
  - create
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotclasses
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - storage.k8s.io
  resources:
  - csidrivers
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - csi.openshift.io
  resources:
  - '*'
  verbs:
  - '*'
- apiGroups:
  - cloudcredential.openshift.io
  resources:
  - credentialsrequests
  verbs:
  - '*'
- apiGroups:
  - config.openshift.io
  resources:
  - infrastructures
  - proxies
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - operator.openshift.io
  resources:
  - 'clustercsidrivers'
  - 'clustercsidrivers/status'
  verbs:
  - '*'
# Allow kube-rbac-proxy to create TokenReview to be able to authenticate Prometheus when collecting metrics
- apiGroups:
  - "authentication.k8s.io"
  resources:
  - "tokenreviews"
  verbs:
  - "create"
`)

func csidriveroperatorsOpenstackCinder05_clusterroleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOpenstackCinder05_clusterroleYaml, nil
}

func csidriveroperatorsOpenstackCinder05_clusterroleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOpenstackCinder05_clusterroleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/openstack-cinder/05_clusterrole.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOpenstackCinder06_clusterrolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: openstack-cinder-csi-driver-operator-clusterrolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: openstack-cinder-csi-driver-operator-clusterrole
subjects:
- kind: ServiceAccount
  name: openstack-cinder-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsOpenstackCinder06_clusterrolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOpenstackCinder06_clusterrolebindingYaml, nil
}

func csidriveroperatorsOpenstackCinder06_clusterrolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOpenstackCinder06_clusterrolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/openstack-cinder/06_clusterrolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOpenstackCinder07_deploymentYaml = []byte(`apiVersion: apps/v1
kind: Deployment
metadata:
  name: openstack-cinder-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
spec:
  replicas: 1
  selector:
    matchLabels:
      name: openstack-cinder-csi-driver-operator
  strategy: {}
  template:
    metadata:
      annotations:
        target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
      labels:
        name: openstack-cinder-csi-driver-operator
    spec:
      containers:
      - args:
        - start
        - -v=${LOG_LEVEL}
        env:
        - name: DRIVER_IMAGE
          value: ${DRIVER_IMAGE}
        - name: PROVISIONER_IMAGE
          value: ${PROVISIONER_IMAGE}
        - name: ATTACHER_IMAGE
          value: ${ATTACHER_IMAGE}
        - name: RESIZER_IMAGE
          value: ${RESIZER_IMAGE}
        - name: SNAPSHOTTER_IMAGE
          value: ${SNAPSHOTTER_IMAGE}
        - name: NODE_DRIVER_REGISTRAR_IMAGE
          value: ${NODE_DRIVER_REGISTRAR_IMAGE}
        - name: LIVENESS_PROBE_IMAGE
          value: ${LIVENESS_PROBE_IMAGE}
        - name: KUBE_RBAC_PROXY_IMAGE
          value: ${KUBE_RBAC_PROXY_IMAGE}
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: ${OPERATOR_IMAGE}
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: secret-cinderplugin
          mountPath: /etc/openstack
          readOnly: true
        - name: cacert
          mountPath: /etc/kubernetes/static-pod-resources/configmaps/cloud-config
        name: openstack-cinder-csi-driver-operator
        resources:
          requests:
            cpu: 10m
            memory: 50Mi
      priorityClassName: system-cluster-critical
      serviceAccountName: openstack-cinder-csi-driver-operator
      nodeSelector:
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: CriticalAddonsOnly
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
      volumes:
      - name: secret-cinderplugin
        secret:
          secretName: openstack-cloud-credentials
          items:
            - key: clouds.yaml
              path: clouds.yaml
      - name: cacert
        # If present, extract ca-bundle.pem to
        # /etc/kubernetes/static-pod-resources/configmaps/cloud-config
        # Let the pod start when the ConfigMap does not exist or the certificate
        # is not preset there. The certificate file will be created once the
        # ConfigMap is created / the cerificate is added to it.
        configMap:
          name: cloud-provider-config
          items:
          - key: ca-bundle.pem
            path: ca-bundle.pem
          optional: true
`)

func csidriveroperatorsOpenstackCinder07_deploymentYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOpenstackCinder07_deploymentYaml, nil
}

func csidriveroperatorsOpenstackCinder07_deploymentYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOpenstackCinder07_deploymentYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/openstack-cinder/07_deployment.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOpenstackCinder08_crYaml = []byte(`apiVersion: operator.openshift.io/v1
kind: ClusterCSIDriver
metadata:
  name: cinder.csi.openstack.org
spec:
  managementState: Managed
  logLevel: Trace
  operatorLogLevel: Trace
  driverConfig:
    driverName: cinder.csi.openstack.org
`)

func csidriveroperatorsOpenstackCinder08_crYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOpenstackCinder08_crYaml, nil
}

func csidriveroperatorsOpenstackCinder08_crYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOpenstackCinder08_crYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/openstack-cinder/08_cr.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOvirt02_saYaml = []byte(`---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ovirt-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsOvirt02_saYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOvirt02_saYaml, nil
}

func csidriveroperatorsOvirt02_saYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOvirt02_saYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/ovirt/02_sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOvirt03_roleYaml = []byte(`---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ovirt-csi-driver-operator-role
  namespace: openshift-cluster-csi-drivers
rules:
  - apiGroups:
      - ''
    resources:
      - pods
      - services
      - endpoints
      - persistentvolumeclaims
      - events
      - configmaps
      - secrets
    verbs:
      - '*'
  - apiGroups:
      - ''
    resources:
      - namespaces
    verbs:
      - get
  - apiGroups:
      - apps
    resources:
      - deployments
      - daemonsets
      - replicasets
      - statefulsets
    verbs:
      - '*'
  - apiGroups:
      - monitoring.coreos.com
    resources:
      - servicemonitors
    verbs:
      - get
      - create
      - update
      - patch
      - delete
`)

func csidriveroperatorsOvirt03_roleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOvirt03_roleYaml, nil
}

func csidriveroperatorsOvirt03_roleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOvirt03_roleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/ovirt/03_role.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOvirt04_rolebindingYaml = []byte(`---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ovirt-csi-driver-operator-rolebinding
  namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: ovirt-csi-driver-operator-role
subjects:
  - kind: ServiceAccount
    name: ovirt-csi-driver-operator
    namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsOvirt04_rolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOvirt04_rolebindingYaml, nil
}

func csidriveroperatorsOvirt04_rolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOvirt04_rolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/ovirt/04_rolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOvirt05_clusterroleYaml = []byte(`---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ovirt-csi-driver-operator-clusterrole
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - privileged
  resources:
  - securitycontextconstraints
  verbs:
  - use
- apiGroups:
  - ''
  resourceNames:
  - extension-apiserver-authentication
  - ovirt-csi-driver-operator-lock
  resources:
  - configmaps
  verbs:
  - '*'
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterroles
  - clusterrolebindings
  - roles
  - rolebindings
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - serviceaccounts
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - list
  - create
  - watch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - nodes
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
  - create
  - patch
  - delete
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumes
  verbs:
  - create
  - delete
  - list
  - get
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims/status
  verbs:
  - patch
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments
  verbs:
  - get
  - list
  - watch
  - update
  - delete
  - create
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments/status
  verbs:
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents/status
  verbs:
  - update
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - csinodes
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - '*'
  resources:
  - events
  verbs:
  - get
  - patch
  - create
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotclasses
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - storage.k8s.io
  resources:
  - csidrivers
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - csi.openshift.io
  resources:
  - '*'
  verbs:
  - '*'
- apiGroups:
  - cloudcredential.openshift.io
  resources:
  - credentialsrequests
  verbs:
  - '*'
- apiGroups:
  - config.openshift.io
  resources:
  - infrastructures
  - proxies
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers
  - clustercsidrivers/status
  verbs:
  - get
  - list
  - watch
  # The Config Observer controller updates the CR's spec
  - update
  - patch
# Allow kube-rbac-proxy to create TokenReview to be able to authenticate Prometheus when collecting metrics
- apiGroups:
  - "authentication.k8s.io"
  resources:
  - "tokenreviews"
  verbs:
  - "create"
`)

func csidriveroperatorsOvirt05_clusterroleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOvirt05_clusterroleYaml, nil
}

func csidriveroperatorsOvirt05_clusterroleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOvirt05_clusterroleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/ovirt/05_clusterrole.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOvirt06_clusterrolebindingYaml = []byte(`---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ovirt-csi-driver-operator-clusterrolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: ovirt-csi-driver-operator-clusterrole
subjects:
- kind: ServiceAccount
  name: ovirt-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsOvirt06_clusterrolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOvirt06_clusterrolebindingYaml, nil
}

func csidriveroperatorsOvirt06_clusterrolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOvirt06_clusterrolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/ovirt/06_clusterrolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOvirt07_deploymentYaml = []byte(`---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ovirt-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
  annotations:
    config.openshift.io/inject-proxy: ovirt-csi-driver-operator
spec:
  replicas: 1
  selector:
    matchLabels:
      name: ovirt-csi-driver-operator
  template:
    metadata:
      annotations:
        target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
      labels:
        name: ovirt-csi-driver-operator
    spec:
      serviceAccountName: ovirt-csi-driver-operator
      priorityClassName: system-cluster-critical
      nodeSelector:
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: CriticalAddonsOnly
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
      initContainers:
        - name: prepare-ovirt-config
          env:
            - name: OVIRT_URL
              valueFrom:
                secretKeyRef:
                  name: ovirt-credentials
                  key: ovirt_url
            - name: OVIRT_USERNAME
              valueFrom:
                secretKeyRef:
                  name: ovirt-credentials
                  key: ovirt_username
            - name: OVIRT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: ovirt-credentials
                  key: ovirt_password
            - name: OVIRT_CAFILE
              value: /tmp/config/ovirt-engine-ca.pem
            - name: OVIRT_INSECURE
              valueFrom:
                secretKeyRef:
                  name: ovirt-credentials
                  key: ovirt_insecure
            - name: OVIRT_CA_BUNDLE
              valueFrom:
                secretKeyRef:
                  name: ovirt-credentials
                  key: ovirt_ca_bundle
          image: ${OPERATOR_IMAGE}
          resources:
            requests:
              memory: 50Mi
              cpu: 10m
          command:
            - /bin/sh
            - -c
            - |
              #!/bin/sh
              cat << EOF > /tmp/config/ovirt-config.yaml
              ovirt_url: $OVIRT_URL
              ovirt_username: $OVIRT_USERNAME
              ovirt_password: $OVIRT_PASSWORD
              # set a valid path only if ca bundle has content
              ovirt_cafile: ${OVIRT_CA_BUNDLE:+$OVIRT_CAFILE}
              ovirt_insecure: $OVIRT_INSECURE
              EOF
              if [[ -n "$OVIRT_CA_BUNDLE" ]]; then echo "$OVIRT_CA_BUNDLE" > $OVIRT_CAFILE ; fi
          volumeMounts:
            - name: config
              mountPath: /tmp/config
      containers:
        - name: ovirt-csi-driver-operator
          image: ${OPERATOR_IMAGE}
          imagePullPolicy: IfNotPresent
          resources:
            requests:
              memory: 50Mi
              cpu: 10m
          args:
            - start
            - "--node=$(KUBE_NODE_NAME)"
            - -v=${LOG_LEVEL}
          env:
            - name: OPERATOR_NAME
              value: ovirt-csi-driver-operator
            - name: DRIVER_IMAGE
              value: ${DRIVER_IMAGE}
            - name: PROVISIONER_IMAGE
              value: ${PROVISIONER_IMAGE}
            - name: ATTACHER_IMAGE
              value: ${ATTACHER_IMAGE}
            - name: RESIZER_IMAGE
              value: ${RESIZER_IMAGE}
            - name: SNAPSHOTTER_IMAGE
              value: ${SNAPSHOTTER_IMAGE}
            - name: NODE_DRIVER_REGISTRAR_IMAGE
              value: ${NODE_DRIVER_REGISTRAR_IMAGE}
            - name: LIVENESS_PROBE_IMAGE
              value: ${LIVENESS_PROBE_IMAGE}
            - name: KUBE_RBAC_PROXY_IMAGE
              value: ${KUBE_RBAC_PROXY_IMAGE}
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: KUBE_NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName

            - name: OVIRT_CONFIG
              value: /tmp/config/ovirt-config.yaml
          volumeMounts:
            - name: config
              mountPath: /tmp/config
      volumes:
        - name: config
          emptyDir: {}
`)

func csidriveroperatorsOvirt07_deploymentYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOvirt07_deploymentYaml, nil
}

func csidriveroperatorsOvirt07_deploymentYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOvirt07_deploymentYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/ovirt/07_deployment.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsOvirt08_crYaml = []byte(`---
apiVersion: operator.openshift.io/v1
kind: ClusterCSIDriver
metadata:
  name: csi.ovirt.org
spec:
  logLevel: Normal
  managementState: Managed
  operatorLogLevel: Normal
`)

func csidriveroperatorsOvirt08_crYamlBytes() ([]byte, error) {
	return _csidriveroperatorsOvirt08_crYaml, nil
}

func csidriveroperatorsOvirt08_crYaml() (*asset, error) {
	bytes, err := csidriveroperatorsOvirt08_crYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/ovirt/08_cr.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsVsphere03_saYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  name: vmware-vsphere-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsVsphere03_saYamlBytes() ([]byte, error) {
	return _csidriveroperatorsVsphere03_saYaml, nil
}

func csidriveroperatorsVsphere03_saYaml() (*asset, error) {
	bytes, err := csidriveroperatorsVsphere03_saYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/vsphere/03_sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsVsphere04_roleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: vmware-vsphere-csi-driver-operator-role
  namespace: openshift-cluster-csi-drivers
rules:
- apiGroups:
  - ''
  resources:
  - pods
  - services
  - endpoints
  - persistentvolumeclaims
  - events
  - configmaps
  - secrets
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - monitoring.coreos.com
  resources:
  - servicemonitors
  verbs:
  - get
  - create
  - update
  - patch
  - delete
`)

func csidriveroperatorsVsphere04_roleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsVsphere04_roleYaml, nil
}

func csidriveroperatorsVsphere04_roleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsVsphere04_roleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/vsphere/04_role.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsVsphere05_rolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: vmware-vsphere-csi-driver-operator-rolebinding
  namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: vmware-vsphere-csi-driver-operator-role
subjects:
- kind: ServiceAccount
  name: vmware-vsphere-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
`)

func csidriveroperatorsVsphere05_rolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsVsphere05_rolebindingYaml, nil
}

func csidriveroperatorsVsphere05_rolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsVsphere05_rolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/vsphere/05_rolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsVsphere06_clusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: vmware-vsphere-csi-driver-operator-clusterrole
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - privileged
  resources:
  - securitycontextconstraints
  verbs:
  - use
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers
  verbs:
  - get
  - list
  - watch
  # The Config Observer controller updates the CR's spec
  - update
  - patch
- apiGroups:
  - operator.openshift.io
  resources:
  - clustercsidrivers/status
  verbs:
  - get
  - list
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resourceNames:
  - extension-apiserver-authentication
  - vmware-vsphere-csi-driver-operator-lock
  resources:
  - configmaps
  verbs:
  - '*'
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterroles
  - clusterrolebindings
  - roles
  - rolebindings
  verbs:
  - watch
  - list
  - get
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ''
  resources:
  - serviceaccounts
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - list
  - create
  - watch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - nodes
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
  - create
  - patch
  - delete
  - update
- apiGroups:
  - ''
  resources:
  - persistentvolumes
  verbs:
  - create
  - delete
  - list
  - get
  - watch
  - update
  - patch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - ''
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - persistentvolumeclaims/status
  verbs:
  - patch
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - replicasets
  - statefulsets
  verbs:
  - '*'
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments
  verbs:
  - get
  - list
  - watch
  - update
  - delete
  - create
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments/status
  verbs:
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents/status
  verbs:
  - update
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - csinodes
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - '*'
  resources:
  - events
  verbs:
  - get
  - patch
  - create
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotclasses
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - storage.k8s.io
  resources:
  - csidrivers
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
- apiGroups:
  - cloudcredential.openshift.io
  resources:
  - credentialsrequests
  verbs:
  - '*'
- apiGroups:
  - config.openshift.io
  resources:
  - infrastructures
  - proxies
  verbs:
  - get
  - list
  - watch
# Needed by the CSI driver itself
# TODO: check if it's really necessary
- apiGroups:
  - ''
  resources:
  - configmaps
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - get
- apiGroups:
  - cns.vmware.com
  resources:
  - cnsvspherevolumemigrations
  verbs:
  - create
  - get
  - list
  - watch
  - update
  - delete
# Allow kube-rbac-proxy to create TokenReview to be able to authenticate Prometheus when collecting metrics
- apiGroups:
  - "authentication.k8s.io"
  resources:
  - "tokenreviews"
  verbs:
  - "create"
`)

func csidriveroperatorsVsphere06_clusterroleYamlBytes() ([]byte, error) {
	return _csidriveroperatorsVsphere06_clusterroleYaml, nil
}

func csidriveroperatorsVsphere06_clusterroleYaml() (*asset, error) {
	bytes, err := csidriveroperatorsVsphere06_clusterroleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/vsphere/06_clusterrole.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsVsphere07_clusterrolebindingYaml = []byte(`kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: vmware-vsphere-csi-driver-operator-clusterrolebinding
subjects:
  - kind: ServiceAccount
    name: vmware-vsphere-csi-driver-operator
    namespace: openshift-cluster-csi-drivers
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: vmware-vsphere-csi-driver-operator-clusterrole
`)

func csidriveroperatorsVsphere07_clusterrolebindingYamlBytes() ([]byte, error) {
	return _csidriveroperatorsVsphere07_clusterrolebindingYaml, nil
}

func csidriveroperatorsVsphere07_clusterrolebindingYaml() (*asset, error) {
	bytes, err := csidriveroperatorsVsphere07_clusterrolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/vsphere/07_clusterrolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsVsphere08_deploymentYaml = []byte(`apiVersion: apps/v1
kind: Deployment
metadata:
  name: vmware-vsphere-csi-driver-operator
  namespace: openshift-cluster-csi-drivers
spec:
  replicas: 1
  selector:
    matchLabels:
      name: vmware-vsphere-csi-driver-operator
  strategy: {}
  template:
    metadata:
      annotations:
        target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}'
      labels:
        name: vmware-vsphere-csi-driver-operator
    spec:
      containers:
      - args:
        - start
        - -v=${LOG_LEVEL}
        env:
        - name: DRIVER_IMAGE
          value: ${DRIVER_IMAGE}
        - name: PROVISIONER_IMAGE
          value: ${PROVISIONER_IMAGE}
        - name: ATTACHER_IMAGE
          value: ${ATTACHER_IMAGE}
        - name: RESIZER_IMAGE
          value: ${RESIZER_IMAGE}
        - name: SNAPSHOTTER_IMAGE
          value: ${SNAPSHOTTER_IMAGE}
        - name: NODE_DRIVER_REGISTRAR_IMAGE
          value: ${NODE_DRIVER_REGISTRAR_IMAGE}
        - name: LIVENESS_PROBE_IMAGE
          value: ${LIVENESS_PROBE_IMAGE}
        - name: VMWARE_VSPHERE_SYNCER_IMAGE
          value: ${VMWARE_VSPHERE_SYNCER_IMAGE}
        - name: KUBE_RBAC_PROXY_IMAGE
          value: ${KUBE_RBAC_PROXY_IMAGE}
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: ${OPERATOR_IMAGE}
        imagePullPolicy: IfNotPresent
        name: vmware-vsphere-csi-driver-operator
        resources:
          requests:
            memory: 50Mi
            cpu: 10m
      priorityClassName: system-cluster-critical
      serviceAccountName: vmware-vsphere-csi-driver-operator
      nodeSelector:
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: CriticalAddonsOnly
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
`)

func csidriveroperatorsVsphere08_deploymentYamlBytes() ([]byte, error) {
	return _csidriveroperatorsVsphere08_deploymentYaml, nil
}

func csidriveroperatorsVsphere08_deploymentYaml() (*asset, error) {
	bytes, err := csidriveroperatorsVsphere08_deploymentYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/vsphere/08_deployment.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _csidriveroperatorsVsphere09_crYaml = []byte(`apiVersion: operator.openshift.io/v1
kind: ClusterCSIDriver
metadata:
  name: csi.vsphere.vmware.com
spec:
  logLevel: Normal
  managementState: Managed
  operatorLogLevel: Normal
`)

func csidriveroperatorsVsphere09_crYamlBytes() ([]byte, error) {
	return _csidriveroperatorsVsphere09_crYaml, nil
}

func csidriveroperatorsVsphere09_crYaml() (*asset, error) {
	bytes, err := csidriveroperatorsVsphere09_crYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "csidriveroperators/vsphere/09_cr.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _storageclassesAwsYaml = []byte(`apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gp2
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  encrypted: "true"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
reclaimPolicy: Delete`)

func storageclassesAwsYamlBytes() ([]byte, error) {
	return _storageclassesAwsYaml, nil
}

func storageclassesAwsYaml() (*asset, error) {
	bytes, err := storageclassesAwsYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "storageclasses/aws.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _storageclassesAzureYaml = []byte(`apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: managed-premium
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/azure-disk
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  kind: Managed
  storageaccounttype: Premium_LRS
reclaimPolicy: Delete
`)

func storageclassesAzureYamlBytes() ([]byte, error) {
	return _storageclassesAzureYaml, nil
}

func storageclassesAzureYaml() (*asset, error) {
	bytes, err := storageclassesAzureYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "storageclasses/azure.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _storageclassesGcpYaml = []byte(`apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
  replication-type: none
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
reclaimPolicy: Delete
`)

func storageclassesGcpYamlBytes() ([]byte, error) {
	return _storageclassesGcpYaml, nil
}

func storageclassesGcpYaml() (*asset, error) {
	bytes, err := storageclassesGcpYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "storageclasses/gcp.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _storageclassesOpenstackYaml = []byte(`apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/cinder
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
reclaimPolicy: Delete
`)

func storageclassesOpenstackYamlBytes() ([]byte, error) {
	return _storageclassesOpenstackYaml, nil
}

func storageclassesOpenstackYaml() (*asset, error) {
	bytes, err := storageclassesOpenstackYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "storageclasses/openstack.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _storageclassesVsphereYaml = []byte(`apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: thin
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/vsphere-volume
parameters:
  diskformat: thin
reclaimPolicy: Delete
volumeBindingMode: Immediate
`)

func storageclassesVsphereYamlBytes() ([]byte, error) {
	return _storageclassesVsphereYaml, nil
}

func storageclassesVsphereYaml() (*asset, error) {
	bytes, err := storageclassesVsphereYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "storageclasses/vsphere.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector01_saYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  name: vsphere-problem-detector-operator
  namespace: openshift-cluster-storage-operator
`)

func vsphere_problem_detector01_saYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector01_saYaml, nil
}

func vsphere_problem_detector01_saYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector01_saYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/01_sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector02_roleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: vsphere-problem-detector-operator-role
  namespace: openshift-cluster-storage-operator
rules:
- apiGroups:
  - ''
  resources:
  - pods
  - services
  - endpoints
  - persistentvolumeclaims
  - events
  - configmaps
  - secrets
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - namespaces
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - deployments
  - replicasets
  verbs:
  - '*'
- apiGroups:
  - monitoring.coreos.com
  resources:
  - servicemonitors
  verbs:
  - get
  - create
  - update
  - patch
  - delete
`)

func vsphere_problem_detector02_roleYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector02_roleYaml, nil
}

func vsphere_problem_detector02_roleYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector02_roleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/02_role.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector03_rolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: vsphere-problem-detector-operator-rolebinding
  namespace: openshift-cluster-storage-operator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: vsphere-problem-detector-operator-role
subjects:
- kind: ServiceAccount
  name: vsphere-problem-detector-operator
  namespace: openshift-cluster-storage-operator
`)

func vsphere_problem_detector03_rolebindingYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector03_rolebindingYaml, nil
}

func vsphere_problem_detector03_rolebindingYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector03_rolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/03_rolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector04_clusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: vsphere-problem-detector-operator-clusterrole
rules:
- apiGroups:
  - ''
  resourceNames:
  - extension-apiserver-authentication
  - vsphere-problem-detector-operator-lock
  resources:
  - configmaps
  verbs:
  - '*'
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  verbs:
  - '*'
- apiGroups:
  - authorization.k8s.io
  resources:
  - subjectaccessreviews
  verbs:
  - '*'
- apiGroups:
  - ''
  resources:
  - nodes
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ''
  resources:
  - secrets
  - services
  - endpoints
  - configmaps
  - persistentvolumes
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - operator.openshift.io
  resources:
  - 'storages'
  - 'storages/status'
  verbs:
  - '*'
- apiGroups:
  - config.openshift.io
  resources:
  - infrastructures
  - proxies
  verbs:
  - get
  - list
  - watch
`)

func vsphere_problem_detector04_clusterroleYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector04_clusterroleYaml, nil
}

func vsphere_problem_detector04_clusterroleYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector04_clusterroleYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/04_clusterrole.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector05_clusterrolebindingYaml = []byte(`kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: vsphere-problem-detector-operator-clusterrolebinding
subjects:
  - kind: ServiceAccount
    name: vsphere-problem-detector-operator
    namespace: openshift-cluster-storage-operator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: vsphere-problem-detector-operator-clusterrole
`)

func vsphere_problem_detector05_clusterrolebindingYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector05_clusterrolebindingYaml, nil
}

func vsphere_problem_detector05_clusterrolebindingYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector05_clusterrolebindingYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/05_clusterrolebinding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector06_deploymentYaml = []byte(`apiVersion: apps/v1
kind: Deployment
metadata:
  name: vsphere-problem-detector-operator
  namespace: openshift-cluster-storage-operator
  annotations:
    config.openshift.io/inject-proxy: vsphere-problem-detector-operator
spec:
  replicas: 1
  selector:
    matchLabels:
      name: vsphere-problem-detector-operator
  strategy: {}
  template:
    metadata:
      labels:
        name: vsphere-problem-detector-operator
    spec:
      containers:
      - args:
        - start
        - --listen=0.0.0.0:8444
        - --v=${LOG_LEVEL}
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: ${OPERATOR_IMAGE}
        imagePullPolicy: IfNotPresent
        name: vsphere-problem-detector-operator
        resources:
          requests:
            memory: 100Mi
            cpu: 10m
        ports:
        - containerPort: 8444
          name: vsphere-metrics
        volumeMounts:
        - mountPath: /var/run/secrets/serving-cert
          name: vsphere-problem-detector-serving-cert
      priorityClassName: system-cluster-critical
      serviceAccountName: vsphere-problem-detector-operator
      nodeSelector:
        node-role.kubernetes.io/master: ""
      tolerations:
      - key: CriticalAddonsOnly
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
      volumes:
      - name: vsphere-problem-detector-serving-cert
        secret:
          secretName: vsphere-problem-detector-serving-cert
          optional: true
`)

func vsphere_problem_detector06_deploymentYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector06_deploymentYaml, nil
}

func vsphere_problem_detector06_deploymentYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector06_deploymentYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/06_deployment.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector10_serviceYaml = []byte(`apiVersion: v1
kind: Service
metadata:
  annotations:
    service.alpha.openshift.io/serving-cert-secret-name: vsphere-problem-detector-serving-cert
  labels:
    app: vsphere-problem-detector-metrics
  name: vsphere-problem-detector-metrics
  namespace: openshift-cluster-storage-operator
spec:
  ports:
  - name: vsphere-metrics
    port: 8444
    protocol: TCP
    targetPort: vsphere-metrics
  selector:
    name: vsphere-problem-detector-operator
  sessionAffinity: None
  type: ClusterIP
`)

func vsphere_problem_detector10_serviceYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector10_serviceYaml, nil
}

func vsphere_problem_detector10_serviceYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector10_serviceYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/10_service.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector11_service_monitorYaml = []byte(`apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: vsphere-problem-detector
  namespace: openshift-cluster-storage-operator
spec:
  endpoints:
  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    interval: 30s
    path: /metrics
    port: vsphere-metrics
    scheme: https
    tlsConfig:
      caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
      serverName: vsphere-problem-detector-metrics.openshift-cluster-storage-operator.svc
  jobLabel: component
  selector:
    matchLabels:
      app: vsphere-problem-detector-metrics
`)

func vsphere_problem_detector11_service_monitorYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector11_service_monitorYaml, nil
}

func vsphere_problem_detector11_service_monitorYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector11_service_monitorYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/11_service_monitor.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _vsphere_problem_detector12_prometheusrulesYaml = []byte(`apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: vsphere-problem-detector
  namespace: openshift-cluster-storage-operator
  labels:
    role: alert-rules
spec:
  groups:
    - name: vsphere-problem-detector.rules
      rules:
      - alert: VSphereOpenshiftNodeHealthFail
        # Using min_over_time to make sure the metric is ` + "`" + `1` + "`" + ` for whole 5 minutes.
        # A missed scraping (e.g. due to a pod restart) will result in prometheus re-evaluating the the alerting rule.
        expr:  min_over_time(vsphere_node_check_errors[5m]) == 1
        for: 10m
        labels:
          severity: warning
        annotations:
          message: "VSphere health check {{ $labels.check }} is failing on {{ $labels.node }}."
      - alert: VSphereOpenshiftClusterHealthFail
        # Using min_over_time to make sure the metric is ` + "`" + `1` + "`" + ` for whole 5 minutes.
        # A missed scraping (e.g. due to a pod restart) will result in prometheus re-evaluating the the alerting rule.
        expr: min_over_time(vsphere_cluster_check_errors[5m]) == 1
        for: 10m
        labels:
          severity: warning
        annotations:
          message: "VSphere cluster health checks are failing with {{ $labels.check }}"
      - alert: VSphereOpenshiftConnectionFailure
        # Using min_over_time to make sure the metric is ` + "`" + `1` + "`" + ` for whole 15 minutes.
        # A missed scraping (e.g. due to a pod restart) will result in prometheus re-evaluating the the alerting rule.
        expr: min_over_time(vsphere_sync_errors[15m]) == 1
        for: 60m
        labels:
          severity: warning
        annotations:
          summary: "vsphere-problem-detector is unable to connect to vSphere vCenter."
          description: |
            vsphere-problem-detector cannot access vCenter. As consequence, other OCP components,
            such as storage or machine API, may not be able to access vCenter too and provide
            their services. Detailed error message can be found in Available condition of
            ClusterOperator "storage", either in console
            (Administration -> Cluster settings -> Cluster operators tab -> storage) or on
            command line: oc get clusteroperator storage -o jsonpath='{.status.conditions[?(@.type=="Available")].message}'
`)

func vsphere_problem_detector12_prometheusrulesYamlBytes() ([]byte, error) {
	return _vsphere_problem_detector12_prometheusrulesYaml, nil
}

func vsphere_problem_detector12_prometheusrulesYaml() (*asset, error) {
	bytes, err := vsphere_problem_detector12_prometheusrulesYamlBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "vsphere_problem_detector/12_prometheusrules.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
		}
		return a.bytes, nil
	}
	return nil, fmt.Errorf("Asset %s not found", name)
}

// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
	a, err := Asset(name)
	if err != nil {
		panic("asset: Asset(" + name + "): " + err.Error())
	}

	return a
}

// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
		}
		return a.info, nil
	}
	return nil, fmt.Errorf("AssetInfo %s not found", name)
}

// AssetNames returns the names of the assets.
func AssetNames() []string {
	names := make([]string, 0, len(_bindata))
	for name := range _bindata {
		names = append(names, name)
	}
	return names
}

// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
	"csidriveroperators/aws-ebs/02_sa.yaml":                          csidriveroperatorsAwsEbs02_saYaml,
	"csidriveroperators/aws-ebs/03_role.yaml":                        csidriveroperatorsAwsEbs03_roleYaml,
	"csidriveroperators/aws-ebs/04_rolebinding.yaml":                 csidriveroperatorsAwsEbs04_rolebindingYaml,
	"csidriveroperators/aws-ebs/05_clusterrole.yaml":                 csidriveroperatorsAwsEbs05_clusterroleYaml,
	"csidriveroperators/aws-ebs/06_clusterrolebinding.yaml":          csidriveroperatorsAwsEbs06_clusterrolebindingYaml,
	"csidriveroperators/aws-ebs/07_role_aws_config.yaml":             csidriveroperatorsAwsEbs07_role_aws_configYaml,
	"csidriveroperators/aws-ebs/08_rolebinding_aws_config.yaml":      csidriveroperatorsAwsEbs08_rolebinding_aws_configYaml,
	"csidriveroperators/aws-ebs/09_deployment.yaml":                  csidriveroperatorsAwsEbs09_deploymentYaml,
	"csidriveroperators/aws-ebs/10_cr.yaml":                          csidriveroperatorsAwsEbs10_crYaml,
	"csidriveroperators/azure-disk/03_sa.yaml":                       csidriveroperatorsAzureDisk03_saYaml,
	"csidriveroperators/azure-disk/04_role.yaml":                     csidriveroperatorsAzureDisk04_roleYaml,
	"csidriveroperators/azure-disk/05_rolebinding.yaml":              csidriveroperatorsAzureDisk05_rolebindingYaml,
	"csidriveroperators/azure-disk/06_clusterrole.yaml":              csidriveroperatorsAzureDisk06_clusterroleYaml,
	"csidriveroperators/azure-disk/07_clusterrolebinding.yaml":       csidriveroperatorsAzureDisk07_clusterrolebindingYaml,
	"csidriveroperators/azure-disk/08_deployment.yaml":               csidriveroperatorsAzureDisk08_deploymentYaml,
	"csidriveroperators/azure-disk/09_cr.yaml":                       csidriveroperatorsAzureDisk09_crYaml,
	"csidriveroperators/gcp-pd/02_sa.yaml":                           csidriveroperatorsGcpPd02_saYaml,
	"csidriveroperators/gcp-pd/03_role.yaml":                         csidriveroperatorsGcpPd03_roleYaml,
	"csidriveroperators/gcp-pd/04_rolebinding.yaml":                  csidriveroperatorsGcpPd04_rolebindingYaml,
	"csidriveroperators/gcp-pd/05_clusterrole.yaml":                  csidriveroperatorsGcpPd05_clusterroleYaml,
	"csidriveroperators/gcp-pd/06_clusterrolebinding.yaml":           csidriveroperatorsGcpPd06_clusterrolebindingYaml,
	"csidriveroperators/gcp-pd/07_deployment.yaml":                   csidriveroperatorsGcpPd07_deploymentYaml,
	"csidriveroperators/gcp-pd/08_cr.yaml":                           csidriveroperatorsGcpPd08_crYaml,
	"csidriveroperators/manila/02_sa.yaml":                           csidriveroperatorsManila02_saYaml,
	"csidriveroperators/manila/03_role.yaml":                         csidriveroperatorsManila03_roleYaml,
	"csidriveroperators/manila/04_rolebinding.yaml":                  csidriveroperatorsManila04_rolebindingYaml,
	"csidriveroperators/manila/05_clusterrole.yaml":                  csidriveroperatorsManila05_clusterroleYaml,
	"csidriveroperators/manila/06_clusterrolebinding.yaml":           csidriveroperatorsManila06_clusterrolebindingYaml,
	"csidriveroperators/manila/07_deployment.yaml":                   csidriveroperatorsManila07_deploymentYaml,
	"csidriveroperators/manila/08_cr.yaml":                           csidriveroperatorsManila08_crYaml,
	"csidriveroperators/openstack-cinder/02_sa.yaml":                 csidriveroperatorsOpenstackCinder02_saYaml,
	"csidriveroperators/openstack-cinder/03_role.yaml":               csidriveroperatorsOpenstackCinder03_roleYaml,
	"csidriveroperators/openstack-cinder/04_rolebinding.yaml":        csidriveroperatorsOpenstackCinder04_rolebindingYaml,
	"csidriveroperators/openstack-cinder/05_clusterrole.yaml":        csidriveroperatorsOpenstackCinder05_clusterroleYaml,
	"csidriveroperators/openstack-cinder/06_clusterrolebinding.yaml": csidriveroperatorsOpenstackCinder06_clusterrolebindingYaml,
	"csidriveroperators/openstack-cinder/07_deployment.yaml":         csidriveroperatorsOpenstackCinder07_deploymentYaml,
	"csidriveroperators/openstack-cinder/08_cr.yaml":                 csidriveroperatorsOpenstackCinder08_crYaml,
	"csidriveroperators/ovirt/02_sa.yaml":                            csidriveroperatorsOvirt02_saYaml,
	"csidriveroperators/ovirt/03_role.yaml":                          csidriveroperatorsOvirt03_roleYaml,
	"csidriveroperators/ovirt/04_rolebinding.yaml":                   csidriveroperatorsOvirt04_rolebindingYaml,
	"csidriveroperators/ovirt/05_clusterrole.yaml":                   csidriveroperatorsOvirt05_clusterroleYaml,
	"csidriveroperators/ovirt/06_clusterrolebinding.yaml":            csidriveroperatorsOvirt06_clusterrolebindingYaml,
	"csidriveroperators/ovirt/07_deployment.yaml":                    csidriveroperatorsOvirt07_deploymentYaml,
	"csidriveroperators/ovirt/08_cr.yaml":                            csidriveroperatorsOvirt08_crYaml,
	"csidriveroperators/vsphere/03_sa.yaml":                          csidriveroperatorsVsphere03_saYaml,
	"csidriveroperators/vsphere/04_role.yaml":                        csidriveroperatorsVsphere04_roleYaml,
	"csidriveroperators/vsphere/05_rolebinding.yaml":                 csidriveroperatorsVsphere05_rolebindingYaml,
	"csidriveroperators/vsphere/06_clusterrole.yaml":                 csidriveroperatorsVsphere06_clusterroleYaml,
	"csidriveroperators/vsphere/07_clusterrolebinding.yaml":          csidriveroperatorsVsphere07_clusterrolebindingYaml,
	"csidriveroperators/vsphere/08_deployment.yaml":                  csidriveroperatorsVsphere08_deploymentYaml,
	"csidriveroperators/vsphere/09_cr.yaml":                          csidriveroperatorsVsphere09_crYaml,
	"storageclasses/aws.yaml":                                        storageclassesAwsYaml,
	"storageclasses/azure.yaml":                                      storageclassesAzureYaml,
	"storageclasses/gcp.yaml":                                        storageclassesGcpYaml,
	"storageclasses/openstack.yaml":                                  storageclassesOpenstackYaml,
	"storageclasses/vsphere.yaml":                                    storageclassesVsphereYaml,
	"vsphere_problem_detector/01_sa.yaml":                            vsphere_problem_detector01_saYaml,
	"vsphere_problem_detector/02_role.yaml":                          vsphere_problem_detector02_roleYaml,
	"vsphere_problem_detector/03_rolebinding.yaml":                   vsphere_problem_detector03_rolebindingYaml,
	"vsphere_problem_detector/04_clusterrole.yaml":                   vsphere_problem_detector04_clusterroleYaml,
	"vsphere_problem_detector/05_clusterrolebinding.yaml":            vsphere_problem_detector05_clusterrolebindingYaml,
	"vsphere_problem_detector/06_deployment.yaml":                    vsphere_problem_detector06_deploymentYaml,
	"vsphere_problem_detector/10_service.yaml":                       vsphere_problem_detector10_serviceYaml,
	"vsphere_problem_detector/11_service_monitor.yaml":               vsphere_problem_detector11_service_monitorYaml,
	"vsphere_problem_detector/12_prometheusrules.yaml":               vsphere_problem_detector12_prometheusrulesYaml,
}

// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
//     data/
//       foo.txt
//       img/
//         a.png
//         b.png
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
	node := _bintree
	if len(name) != 0 {
		cannonicalName := strings.Replace(name, "\\", "/", -1)
		pathList := strings.Split(cannonicalName, "/")
		for _, p := range pathList {
			node = node.Children[p]
			if node == nil {
				return nil, fmt.Errorf("Asset %s not found", name)
			}
		}
	}
	if node.Func != nil {
		return nil, fmt.Errorf("Asset %s not found", name)
	}
	rv := make([]string, 0, len(node.Children))
	for childName := range node.Children {
		rv = append(rv, childName)
	}
	return rv, nil
}

type bintree struct {
	Func     func() (*asset, error)
	Children map[string]*bintree
}

var _bintree = &bintree{nil, map[string]*bintree{
	"csidriveroperators": {nil, map[string]*bintree{
		"aws-ebs": {nil, map[string]*bintree{
			"02_sa.yaml":                     {csidriveroperatorsAwsEbs02_saYaml, map[string]*bintree{}},
			"03_role.yaml":                   {csidriveroperatorsAwsEbs03_roleYaml, map[string]*bintree{}},
			"04_rolebinding.yaml":            {csidriveroperatorsAwsEbs04_rolebindingYaml, map[string]*bintree{}},
			"05_clusterrole.yaml":            {csidriveroperatorsAwsEbs05_clusterroleYaml, map[string]*bintree{}},
			"06_clusterrolebinding.yaml":     {csidriveroperatorsAwsEbs06_clusterrolebindingYaml, map[string]*bintree{}},
			"07_role_aws_config.yaml":        {csidriveroperatorsAwsEbs07_role_aws_configYaml, map[string]*bintree{}},
			"08_rolebinding_aws_config.yaml": {csidriveroperatorsAwsEbs08_rolebinding_aws_configYaml, map[string]*bintree{}},
			"09_deployment.yaml":             {csidriveroperatorsAwsEbs09_deploymentYaml, map[string]*bintree{}},
			"10_cr.yaml":                     {csidriveroperatorsAwsEbs10_crYaml, map[string]*bintree{}},
		}},
		"azure-disk": {nil, map[string]*bintree{
			"03_sa.yaml":                 {csidriveroperatorsAzureDisk03_saYaml, map[string]*bintree{}},
			"04_role.yaml":               {csidriveroperatorsAzureDisk04_roleYaml, map[string]*bintree{}},
			"05_rolebinding.yaml":        {csidriveroperatorsAzureDisk05_rolebindingYaml, map[string]*bintree{}},
			"06_clusterrole.yaml":        {csidriveroperatorsAzureDisk06_clusterroleYaml, map[string]*bintree{}},
			"07_clusterrolebinding.yaml": {csidriveroperatorsAzureDisk07_clusterrolebindingYaml, map[string]*bintree{}},
			"08_deployment.yaml":         {csidriveroperatorsAzureDisk08_deploymentYaml, map[string]*bintree{}},
			"09_cr.yaml":                 {csidriveroperatorsAzureDisk09_crYaml, map[string]*bintree{}},
		}},
		"gcp-pd": {nil, map[string]*bintree{
			"02_sa.yaml":                 {csidriveroperatorsGcpPd02_saYaml, map[string]*bintree{}},
			"03_role.yaml":               {csidriveroperatorsGcpPd03_roleYaml, map[string]*bintree{}},
			"04_rolebinding.yaml":        {csidriveroperatorsGcpPd04_rolebindingYaml, map[string]*bintree{}},
			"05_clusterrole.yaml":        {csidriveroperatorsGcpPd05_clusterroleYaml, map[string]*bintree{}},
			"06_clusterrolebinding.yaml": {csidriveroperatorsGcpPd06_clusterrolebindingYaml, map[string]*bintree{}},
			"07_deployment.yaml":         {csidriveroperatorsGcpPd07_deploymentYaml, map[string]*bintree{}},
			"08_cr.yaml":                 {csidriveroperatorsGcpPd08_crYaml, map[string]*bintree{}},
		}},
		"manila": {nil, map[string]*bintree{
			"02_sa.yaml":                 {csidriveroperatorsManila02_saYaml, map[string]*bintree{}},
			"03_role.yaml":               {csidriveroperatorsManila03_roleYaml, map[string]*bintree{}},
			"04_rolebinding.yaml":        {csidriveroperatorsManila04_rolebindingYaml, map[string]*bintree{}},
			"05_clusterrole.yaml":        {csidriveroperatorsManila05_clusterroleYaml, map[string]*bintree{}},
			"06_clusterrolebinding.yaml": {csidriveroperatorsManila06_clusterrolebindingYaml, map[string]*bintree{}},
			"07_deployment.yaml":         {csidriveroperatorsManila07_deploymentYaml, map[string]*bintree{}},
			"08_cr.yaml":                 {csidriveroperatorsManila08_crYaml, map[string]*bintree{}},
		}},
		"openstack-cinder": {nil, map[string]*bintree{
			"02_sa.yaml":                 {csidriveroperatorsOpenstackCinder02_saYaml, map[string]*bintree{}},
			"03_role.yaml":               {csidriveroperatorsOpenstackCinder03_roleYaml, map[string]*bintree{}},
			"04_rolebinding.yaml":        {csidriveroperatorsOpenstackCinder04_rolebindingYaml, map[string]*bintree{}},
			"05_clusterrole.yaml":        {csidriveroperatorsOpenstackCinder05_clusterroleYaml, map[string]*bintree{}},
			"06_clusterrolebinding.yaml": {csidriveroperatorsOpenstackCinder06_clusterrolebindingYaml, map[string]*bintree{}},
			"07_deployment.yaml":         {csidriveroperatorsOpenstackCinder07_deploymentYaml, map[string]*bintree{}},
			"08_cr.yaml":                 {csidriveroperatorsOpenstackCinder08_crYaml, map[string]*bintree{}},
		}},
		"ovirt": {nil, map[string]*bintree{
			"02_sa.yaml":                 {csidriveroperatorsOvirt02_saYaml, map[string]*bintree{}},
			"03_role.yaml":               {csidriveroperatorsOvirt03_roleYaml, map[string]*bintree{}},
			"04_rolebinding.yaml":        {csidriveroperatorsOvirt04_rolebindingYaml, map[string]*bintree{}},
			"05_clusterrole.yaml":        {csidriveroperatorsOvirt05_clusterroleYaml, map[string]*bintree{}},
			"06_clusterrolebinding.yaml": {csidriveroperatorsOvirt06_clusterrolebindingYaml, map[string]*bintree{}},
			"07_deployment.yaml":         {csidriveroperatorsOvirt07_deploymentYaml, map[string]*bintree{}},
			"08_cr.yaml":                 {csidriveroperatorsOvirt08_crYaml, map[string]*bintree{}},
		}},
		"vsphere": {nil, map[string]*bintree{
			"03_sa.yaml":                 {csidriveroperatorsVsphere03_saYaml, map[string]*bintree{}},
			"04_role.yaml":               {csidriveroperatorsVsphere04_roleYaml, map[string]*bintree{}},
			"05_rolebinding.yaml":        {csidriveroperatorsVsphere05_rolebindingYaml, map[string]*bintree{}},
			"06_clusterrole.yaml":        {csidriveroperatorsVsphere06_clusterroleYaml, map[string]*bintree{}},
			"07_clusterrolebinding.yaml": {csidriveroperatorsVsphere07_clusterrolebindingYaml, map[string]*bintree{}},
			"08_deployment.yaml":         {csidriveroperatorsVsphere08_deploymentYaml, map[string]*bintree{}},
			"09_cr.yaml":                 {csidriveroperatorsVsphere09_crYaml, map[string]*bintree{}},
		}},
	}},
	"storageclasses": {nil, map[string]*bintree{
		"aws.yaml":       {storageclassesAwsYaml, map[string]*bintree{}},
		"azure.yaml":     {storageclassesAzureYaml, map[string]*bintree{}},
		"gcp.yaml":       {storageclassesGcpYaml, map[string]*bintree{}},
		"openstack.yaml": {storageclassesOpenstackYaml, map[string]*bintree{}},
		"vsphere.yaml":   {storageclassesVsphereYaml, map[string]*bintree{}},
	}},
	"vsphere_problem_detector": {nil, map[string]*bintree{
		"01_sa.yaml":                 {vsphere_problem_detector01_saYaml, map[string]*bintree{}},
		"02_role.yaml":               {vsphere_problem_detector02_roleYaml, map[string]*bintree{}},
		"03_rolebinding.yaml":        {vsphere_problem_detector03_rolebindingYaml, map[string]*bintree{}},
		"04_clusterrole.yaml":        {vsphere_problem_detector04_clusterroleYaml, map[string]*bintree{}},
		"05_clusterrolebinding.yaml": {vsphere_problem_detector05_clusterrolebindingYaml, map[string]*bintree{}},
		"06_deployment.yaml":         {vsphere_problem_detector06_deploymentYaml, map[string]*bintree{}},
		"10_service.yaml":            {vsphere_problem_detector10_serviceYaml, map[string]*bintree{}},
		"11_service_monitor.yaml":    {vsphere_problem_detector11_service_monitorYaml, map[string]*bintree{}},
		"12_prometheusrules.yaml":    {vsphere_problem_detector12_prometheusrulesYaml, map[string]*bintree{}},
	}},
}}

// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
	data, err := Asset(name)
	if err != nil {
		return err
	}
	info, err := AssetInfo(name)
	if err != nil {
		return err
	}
	err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
	if err != nil {
		return err
	}
	err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
	if err != nil {
		return err
	}
	return nil
}

// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
	children, err := AssetDir(name)
	// File
	if err != nil {
		return RestoreAsset(dir, name)
	}
	// Dir
	for _, child := range children {
		err = RestoreAssets(dir, filepath.Join(name, child))
		if err != nil {
			return err
		}
	}
	return nil
}

func _filePath(dir, name string) string {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}
