// Package assets Code generated by go-bindata. (@generated) DO NOT EDIT.
// sources:
// manifests/baremetal/coredns-corefile.tmpl
// manifests/baremetal/coredns.yaml
// manifests/baremetal/keepalived.conf.tmpl
// manifests/baremetal/keepalived.yaml
// manifests/bootstrap-pod-v2.yaml
// manifests/containerruntimeconfig.crd.yaml
// manifests/controllerconfig.crd.yaml
// manifests/kubeletconfig.crd.yaml
// manifests/machineconfig.crd.yaml
// manifests/machineconfigcontroller/clusterrole.yaml
// manifests/machineconfigcontroller/clusterrolebinding.yaml
// manifests/machineconfigcontroller/controllerconfig.yaml
// manifests/machineconfigcontroller/deployment.yaml
// manifests/machineconfigcontroller/sa.yaml
// manifests/machineconfigdaemon/clusterrole.yaml
// manifests/machineconfigdaemon/clusterrolebinding.yaml
// manifests/machineconfigdaemon/cookie-secret.yaml
// manifests/machineconfigdaemon/daemonset.yaml
// manifests/machineconfigdaemon/events-clusterrole.yaml
// manifests/machineconfigdaemon/events-rolebinding-default.yaml
// manifests/machineconfigdaemon/events-rolebinding-target.yaml
// manifests/machineconfigdaemon/sa.yaml
// manifests/machineconfigpool.crd.yaml
// manifests/machineconfigserver/clusterrole.yaml
// manifests/machineconfigserver/clusterrolebinding.yaml
// manifests/machineconfigserver/csr-bootstrap-role-binding.yaml
// manifests/machineconfigserver/csr-renewal-role-binding.yaml
// manifests/machineconfigserver/daemonset.yaml
// manifests/machineconfigserver/kube-apiserver-serving-ca-configmap.yaml
// manifests/machineconfigserver/node-bootstrapper-sa.yaml
// manifests/machineconfigserver/node-bootstrapper-token.yaml
// manifests/machineconfigserver/sa.yaml
// manifests/master.machineconfigpool.yaml
// manifests/openstack/coredns-corefile.tmpl
// manifests/openstack/coredns.yaml
// manifests/openstack/keepalived.conf.tmpl
// manifests/openstack/keepalived.yaml
// manifests/ovirt/coredns-corefile.tmpl
// manifests/ovirt/coredns.yaml
// manifests/ovirt/keepalived.conf.tmpl
// manifests/ovirt/keepalived.yaml
// manifests/vsphere/coredns-corefile.tmpl
// manifests/vsphere/coredns.yaml
// manifests/vsphere/keepalived.conf.tmpl
// manifests/vsphere/keepalived.yaml
// manifests/worker.machineconfigpool.yaml
package assets

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 _manifestsBaremetalCorednsCorefileTmpl = []byte(`. {
    errors
    health :18080
    mdns {{ .ControllerConfig.EtcdDiscoveryDomain }} {{`+"`"+`{{.Cluster.MasterAmount}}`+"`"+`}} {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}
    forward . {{`+"`"+`{{- range $upstream := .DNSUpstreams}} {{$upstream}}{{- end}}`+"`"+`}}
    cache 30
    reload
    hosts {
        {{ .ControllerConfig.Infra.Status.PlatformStatus.BareMetal.APIServerInternalIP }} api-int.{{ .ControllerConfig.EtcdDiscoveryDomain }}
        fallthrough
    }
}
`)

func manifestsBaremetalCorednsCorefileTmplBytes() ([]byte, error) {
	return _manifestsBaremetalCorednsCorefileTmpl, nil
}

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

	info := bindataFileInfo{name: "manifests/baremetal/coredns-corefile.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsBaremetalCorednsYaml = []byte(`---
kind: Pod
apiVersion: v1
metadata:
  name: coredns
  namespace: openshift-kni-infra
  creationTimestamp:
  deletionGracePeriodSeconds: 65
  labels:
    app: kni-infra-mdns
spec:
  volumes:
  - name: resource-dir
    hostPath:
      path: "/etc/kubernetes/static-pod-resources/coredns"
  - name: kubeconfig
    hostPath:
      path: "/etc/kubernetes/kubeconfig"
  - name: conf-dir
    empty-dir: {}
  - name: manifests
    hostPath:
      path: "/opt/openshift/manifests"
  initContainers:
  - name: render-config
    image: {{ .Images.BaremetalRuntimeCfgBootstrap }}
    command:
    - runtimecfg
    - render
    - "/etc/kubernetes/kubeconfig"
    - "--api-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.BareMetal.APIServerInternalIP }}"
    - "--dns-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.BareMetal.NodeDNSIP }}"
    - "--ingress-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.BareMetal.IngressIP }}"
    - "/config"
    - "--out-dir"
    - "/etc/coredns"
    - "--cluster-config"
    - "/opt/openshift/manifests/cluster-config.yaml"
    resources: {}
    volumeMounts:
    - name: kubeconfig
      mountPath: "/etc/kubernetes/kubeconfig"
    - name: resource-dir
      mountPath: "/config"
    - name: conf-dir
      mountPath: "/etc/coredns"
    - name: manifests
      mountPath: "/opt/openshift/manifests"
    imagePullPolicy: IfNotPresent
  containers:
  - name: coredns
    securityContext:
      privileged: true
    image: {{ .Images.CorednsBootstrap }}
    args:
    - "--conf"
    - "/etc/coredns/Corefile"
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: conf-dir
      mountPath: "/etc/coredns"
    readinessProbe:
      httpGet:
        path: /health
        port: 18080
        scheme: HTTP
      initialDelaySeconds: 10
      periodSeconds: 10
      successThreshold: 1
      failureThreshold: 3
      timeoutSeconds: 10
    livenessProbe:
      httpGet:
        path: /health
        port: 18080
        scheme: HTTP
      initialDelaySeconds: 60
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 5
    terminationMessagePolicy: FallbackToLogsOnError
  hostNetwork: true
  tolerations:
  - operator: Exists
  priorityClassName: system-node-critical
status: {}
`)

func manifestsBaremetalCorednsYamlBytes() ([]byte, error) {
	return _manifestsBaremetalCorednsYaml, nil
}

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

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

var _manifestsBaremetalKeepalivedConfTmpl = []byte(`# Configuration template for Keepalived, which is used to manage the DNS and
# API VIPs.
#
# For more information, see installer/data/data/bootstrap/baremetal/README.md
# in the installer repo.

vrrp_instance {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_API {
    state BACKUP
    interface {{`+"`"+`{{.VRRPInterface}}`+"`"+`}}
    virtual_router_id {{`+"`"+`{{.Cluster.APIVirtualRouterID }}`+"`"+`}}
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_api_vip
    }
    virtual_ipaddress {
        {{`+"`"+`{{ .Cluster.APIVIP }}`+"`"+`}}/{{`+"`"+`{{ .Cluster.VIPNetmask }}`+"`"+`}}
    }
}

vrrp_instance {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_DNS {
    state MASTER
    interface {{`+"`"+`{{.VRRPInterface}}`+"`"+`}}
    virtual_router_id {{`+"`"+`{{.Cluster.DNSVirtualRouterID }}`+"`"+`}}
    priority 140
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_dns_vip
    }
    virtual_ipaddress {
        {{`+"`"+`{{ .Cluster.DNSVIP }}`+"`"+`}}/{{`+"`"+`{{ .Cluster.VIPNetmask }}`+"`"+`}}
    }
}
`)

func manifestsBaremetalKeepalivedConfTmplBytes() ([]byte, error) {
	return _manifestsBaremetalKeepalivedConfTmpl, nil
}

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

	info := bindataFileInfo{name: "manifests/baremetal/keepalived.conf.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsBaremetalKeepalivedYaml = []byte(`---
kind: Pod
apiVersion: v1
metadata:
  name: keepalived
  namespace: openshift-kni-infra
  creationTimestamp:
  deletionGracePeriodSeconds: 65
  labels:
    app: kni-infra-vrrp
spec:
  volumes:
  - name: resource-dir
    hostPath:
      path: "/etc/kubernetes/static-pod-resources/keepalived"
  - name: kubeconfig
    hostPath:
      path: "/etc/kubernetes/kubeconfig"
  - name: conf-dir
    empty-dir: {}
  - name: manifests
    hostPath:
      path: "/opt/openshift/manifests"
  initContainers:
  - name: render-config
    image: {{ .Images.BaremetalRuntimeCfgBootstrap }}
    command:
    - runtimecfg
    - render
    - "/etc/kubernetes/kubeconfig"
    - "--api-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.BareMetal.APIServerInternalIP }}"
    - "--dns-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.BareMetal.NodeDNSIP }}"
    - "--ingress-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.BareMetal.IngressIP }}"
    - "/config"
    - "--out-dir"
    - "/etc/keepalived"
    - "--cluster-config"
    - "/opt/openshift/manifests/cluster-config.yaml"
    resources: {}
    volumeMounts:
    - name: resource-dir
      mountPath: "/config"
    - name: kubeconfig
      mountPath: "/etc/kubernetes/kubeconfig"
    - name: conf-dir
      mountPath: "/etc/keepalived"
    - name: manifests
      mountPath: "/opt/openshift/manifests"
    imagePullPolicy: IfNotPresent
  containers:
  - name: keepalived
    securityContext:
      privileged: true
    image: {{ .Images.KeepalivedBootstrap }}
    env:
      - name: NSS_SDB_USE_CACHE
        value: "no"
    command:
    - /usr/sbin/keepalived
    args:
    - "-f"
    - "/etc/keepalived/keepalived.conf"
    - "--dont-fork"
    - "--vrrp"
    - "--log-detail"
    - "--log-console"
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: conf-dir
      mountPath: "/etc/keepalived"
    terminationMessagePolicy: FallbackToLogsOnError
    imagePullPolicy: IfNotPresent
  hostNetwork: true
  tolerations:
  - operator: Exists
  priorityClassName: system-node-critical
status: {}
`)

func manifestsBaremetalKeepalivedYamlBytes() ([]byte, error) {
	return _manifestsBaremetalKeepalivedYaml, nil
}

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

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

var _manifestsBootstrapPodV2Yaml = []byte(`apiVersion: v1
kind: Pod
metadata:
  name: bootstrap-machine-config-operator
  namespace: {{.TargetNamespace}}
spec:
  initContainers:
  - name: machine-config-controller
    image: {{.Images.MachineConfigOperator}}
    command: ["/usr/bin/machine-config-controller"]
    args:
    - "bootstrap"
    - "--manifest-dir=/etc/mcc/bootstrap"
    - "--dest-dir=/etc/mcs/bootstrap"
    - "--pull-secret=/etc/mcc/bootstrap/machineconfigcontroller-pull-secret"
    resources:
      limits:
        memory: 50Mi
      requests:
        cpu: 20m
        memory: 50Mi
    securityContext:
      privileged: true
    terminationMessagePolicy: FallbackToLogsOnError
    volumeMounts:
    - name: bootstrap-manifests
      mountPath: /etc/mcc/bootstrap
    - name: server-basedir
      mountPath: /etc/mcs/bootstrap
  containers:
  - name: machine-config-server
    image: {{.Images.MachineConfigOperator}}
    command: ["/usr/bin/machine-config-server"]
    args:
      - "bootstrap"
    terminationMessagePolicy: FallbackToLogsOnError
    volumeMounts:
    - name: server-certs
      mountPath: /etc/ssl/mcs
    - name: bootstrap-kubeconfig
      mountPath: /etc/kubernetes/kubeconfig
    - name: server-basedir
      mountPath: /etc/mcs/bootstrap
    securityContext:
      privileged: true
  hostNetwork: true
  tolerations:
    - key: node-role.kubernetes.io/master
      operator: Exists
      effect: NoSchedule
  restartPolicy: Always
  volumes:
  - name: server-certs
    hostPath:
      path: /etc/ssl/mcs
  - name: bootstrap-kubeconfig
    hostPath:
      path: /etc/mcs/kubeconfig
  - name: server-basedir
    hostPath:
      path: /etc/mcs/bootstrap
  - name: bootstrap-manifests
    hostPath:
      path: /etc/mcc/bootstrap
`)

func manifestsBootstrapPodV2YamlBytes() ([]byte, error) {
	return _manifestsBootstrapPodV2Yaml, nil
}

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

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

var _manifestsContainerruntimeconfigCrdYaml = []byte(`apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: containerruntimeconfigs.machineconfiguration.openshift.io
  labels:
    "openshift.io/operator-managed": ""
spec:
  group: machineconfiguration.openshift.io
  names:
    kind: ContainerRuntimeConfig
    listKind: ContainerRuntimeConfigList
    plural: containerruntimeconfigs
    singular: containerruntimeconfig
    shortNames:
    - ctrcfg
  scope: Cluster
  preserveUnknownFields: false
  subresources:
    status: {}
  versions:
  - name: v1
    served: true
    storage: true
  "validation":
    "openAPIV3Schema":
      description: ContainerRuntimeConfig describes a customized Container Runtime
        configuration.
      type: object
      properties:
        apiVersion:
          description: 'APIVersion defines the versioned schema of this representation
            of an object. Servers should convert recognized schemas to the latest
            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
          type: string
        kind:
          description: 'Kind is a string value representing the REST resource this
            object represents. Servers may infer this from the endpoint the client
            submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: ContainerRuntimeConfigSpec defines the desired state of ContainerRuntimeConfig
          type: object
          properties:
            containerRuntimeConfig:
              description: ContainerRuntimeConfiguration defines the tuneables of
                the container runtime
              type: object
              properties:
                logLevel:
                  description: logLevel specifies the verbosity of the logs based
                    on the level it is set to. Options are fatal, panic, error, warn,
                    info, and debug.
                  type: string
                logSizeMax:
                  description: logSizeMax specifies the Maximum size allowed for the
                    container log file. Negative numbers indicate that no size limit
                    is imposed. If it is positive, it must be >= 8192 to match/exceed
                    conmon's read buffer.
                  type: string
                overlaySize:
                  description: 'overlaySize specifies the maximum size of a container
                    image. This flag can be used to set quota on the size of container
                    images. (default: 10GB)'
                  type: string
                pidsLimit:
                  description: pidsLimit specifies the maximum number of processes
                    allowed in a container
                  type: integer
                  format: int64
            machineConfigPoolSelector:
              description: A label selector is a label query over a set of resources.
                The result of matchLabels and matchExpressions are ANDed. An empty
                label selector matches all objects. A null label selector matches
                no objects.
              type: object
              properties:
                matchExpressions:
                  description: matchExpressions is a list of label selector requirements.
                    The requirements are ANDed.
                  type: array
                  items:
                    description: A label selector requirement is a selector that contains
                      values, a key, and an operator that relates the key and values.
                    type: object
                    required:
                    - key
                    - operator
                    properties:
                      key:
                        description: key is the label key that the selector applies
                          to.
                        type: string
                      operator:
                        description: operator represents a key's relationship to a
                          set of values. Valid operators are In, NotIn, Exists and
                          DoesNotExist.
                        type: string
                      values:
                        description: values is an array of string values. If the operator
                          is In or NotIn, the values array must be non-empty. If the
                          operator is Exists or DoesNotExist, the values array must
                          be empty. This array is replaced during a strategic merge
                          patch.
                        type: array
                        items:
                          type: string
                matchLabels:
                  description: matchLabels is a map of {key,value} pairs. A single
                    {key,value} in the matchLabels map is equivalent to an element
                    of matchExpressions, whose key field is "key", the operator is
                    "In", and the values array contains only "value". The requirements
                    are ANDed.
                  type: object
                  additionalProperties:
                    type: string
        status:
          description: ContainerRuntimeConfigStatus defines the observed state of
            a ContainerRuntimeConfig
          type: object
          properties:
            conditions:
              description: conditions represents the latest available observations
                of current state.
              type: array
              items:
                description: ContainerRuntimeConfigCondition defines the state of
                  the ContainerRuntimeConfig
                type: object
                properties:
                  lastTransitionTime:
                    description: lastTransitionTime is the time of the last update
                      to the current status object.
                    type: string
                    format: date-time
                    nullable: true
                  message:
                    description: message provides additional information about the
                      current condition. This is only to be consumed by humans.
                    type: string
                  reason:
                    description: reason is the reason for the condition's last transition.  Reasons
                      are PascalCase
                    type: string
                  status:
                    description: status of the condition, one of True, False, Unknown.
                    type: string
                  type:
                    description: type specifies the state of the operator's reconciliation
                      functionality.
                    type: string
            observedGeneration:
              description: observedGeneration represents the generation observed by
                the controller.
              type: integer
              format: int64
`)

func manifestsContainerruntimeconfigCrdYamlBytes() ([]byte, error) {
	return _manifestsContainerruntimeconfigCrdYaml, nil
}

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

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

var _manifestsControllerconfigCrdYaml = []byte(`apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  # name must match the spec fields below, and be in the form: <plural>.<group>
  name: controllerconfigs.machineconfiguration.openshift.io
  labels:
    "openshift.io/operator-managed": ""
spec:
  # group name to use for REST API: /apis/<group>/<version>
  group: machineconfiguration.openshift.io
  # list of versions supported by this CustomResourceDefinition
  versions:
  - name: v1
    # Each version can be enabled/disabled by Served flag.
    served: true
    # One and only one version must be marked as the storage version.
    storage: true
  # either Namespaced or Cluster
  scope: Cluster
  preserveUnknownFields: false
  subresources:
    status: {}
  names:
    # plural name to be used in the URL: /apis/<group>/<version>/<plural>
    plural: controllerconfigs
    # singular name to be used as an alias on the CLI and for display
    singular: controllerconfig
    # kind is normally the PascalCased singular type. Your resource manifests use this.
    kind: ControllerConfig
  "validation":
    "openAPIV3Schema":
      description: ControllerConfig describes configuration for MachineConfigController.
        This is currently only used to drive the MachineConfig objects generated by
        the TemplateController.
      type: object
      properties:
        apiVersion:
          description: 'APIVersion defines the versioned schema of this representation
            of an object. Servers should convert recognized schemas to the latest
            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
          type: string
        kind:
          description: 'Kind is a string value representing the REST resource this
            object represents. Servers may infer this from the endpoint the client
            submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: ControllerConfigSpec is the spec for ControllerConfig resource.
          type: object
          properties:
            additionalTrustBundle:
              description: additionalTrustBundle is a certificate bundle that will
                be added to the nodes trusted certificate store.
              type: string
              format: byte
              nullable: true
            cloudProviderCAData:
              description: cloudProvider specifies the cloud provider CA data
              type: string
              format: byte
              nullable: true
            cloudProviderConfig:
              description: cloudProviderConfig is the configuration for the given
                cloud provider
              type: string
            clusterDNSIP:
              description: clusterDNSIP is the cluster DNS IP address
              type: string
            etcdCAData:
              description: etcdCAData specifies the etcd CA data
              type: string
              format: byte
            etcdDiscoveryDomain:
              description: etcdDiscoveryDomain specifies the etcd discovery domain
              type: string
            etcdMetricCAData:
              description: etcdMetricData specifies the etcd metric CA data
              type: string
              format: byte
            images:
              description: images is map of images that are used by the controller
                to render templates under ./templates/
              type: object
              additionalProperties:
                type: string
            infra:
              description: infra holds the infrastructure details TODO this makes
                platform redundant as everything is contained inside Infra.Status
              type: object
              required:
              - spec
              properties:
                apiVersion:
                  description: 'APIVersion defines the versioned schema of this representation
                    of an object. Servers should convert recognized schemas to the
                    latest internal value, and may reject unrecognized values. More
                    info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
                  type: string
                kind:
                  description: 'Kind is a string value representing the REST resource
                    this object represents. Servers may infer this from the endpoint
                    the client submits requests to. Cannot be updated. In CamelCase.
                    More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                  type: string
                metadata:
                  type: object
                spec:
                  description: spec holds user settable values for configuration
                  type: object
                  properties:
                    cloudConfig:
                      description: cloudConfig is a reference to a ConfigMap containing
                        the cloud provider configuration file. This configuration
                        file is used to configure the Kubernetes cloud provider integration
                        when using the built-in cloud provider integration or the
                        external cloud controller manager. The namespace for this
                        config map is openshift-config.
                      type: object
                      properties:
                        key:
                          description: Key allows pointing to a specific key/value
                            inside of the configmap.  This is useful for logical file
                            references.
                          type: string
                        name:
                          type: string
                status:
                  description: status holds observed values from the cluster. They
                    may not be overridden.
                  type: object
                  properties:
                    apiServerInternalURI:
                      description: apiServerInternalURL is a valid URI with scheme(http/https),
                        address and port.  apiServerInternalURL can be used by components
                        like kubelets, to contact the Kubernetes API server using
                        the infrastructure provider rather than Kubernetes networking.
                      type: string
                    apiServerURL:
                      description: apiServerURL is a valid URI with scheme(http/https),
                        address and port.  apiServerURL can be used by components
                        like the web console to tell users where to find the Kubernetes
                        API.
                      type: string
                    etcdDiscoveryDomain:
                      description: 'etcdDiscoveryDomain is the domain used to fetch
                        the SRV records for discovering etcd servers and clients.
                        For more info: https://github.com/etcd-io/etcd/blob/329be66e8b3f9e2e6af83c123ff89297e49ebd15/Documentation/op-guide/clustering.md#dns-discovery'
                      type: string
                    infrastructureName:
                      description: infrastructureName uniquely identifies a cluster
                        with a human friendly name. Once set it should not be changed.
                        Must be of max length 27 and must have only alphanumeric or
                        hyphen characters.
                      type: string
                    platform:
                      description: "platform is the underlying infrastructure provider
                        for the cluster. \n Deprecated: Use platformStatus.type instead."
                      type: string
                    platformStatus:
                      description: platformStatus holds status information specific
                        to the underlying infrastructure provider.
                      type: object
                      properties:
                        aws:
                          description: AWS contains settings specific to the Amazon
                            Web Services infrastructure provider.
                          type: object
                          properties:
                            region:
                              description: region holds the default AWS region for
                                new AWS resources created by the cluster.
                              type: string
                        azure:
                          description: Azure contains settings specific to the Azure
                            infrastructure provider.
                          type: object
                          properties:
                            networkResourceGroupName:
                              description: networkResourceGroupName is the Resource
                                Group for network resources like the Virtual Network
                                and Subnets used by the cluster. If empty, the value
                                is same as ResourceGroupName.
                              type: string
                            resourceGroupName:
                              description: resourceGroupName is the Resource Group
                                for new Azure resources created for the cluster.
                              type: string
                        baremetal:
                          description: BareMetal contains settings specific to the
                            BareMetal platform.
                          type: object
                          properties:
                            apiServerInternalIP:
                              description: apiServerInternalIP is an IP address to
                                contact the Kubernetes API server that can be used
                                by components inside the cluster, like kubelets using
                                the infrastructure rather than Kubernetes networking.
                                It is the IP that the Infrastructure.status.apiServerInternalURI
                                points to. It is the IP for a self-hosted load balancer
                                in front of the API servers.
                              type: string
                            ingressIP:
                              description: ingressIP is an external IP which routes
                                to the default ingress controller. The IP is a suitable
                                target of a wildcard DNS record used to resolve default
                                route host names.
                              type: string
                            nodeDNSIP:
                              description: nodeDNSIP is the IP address for the internal
                                DNS used by the nodes. Unlike the one managed by the
                                DNS operator, `+"`"+`NodeDNSIP`+"`"+` provides name resolution
                                for the nodes themselves. There is no DNS-as-a-service
                                for BareMetal deployments. In order to minimize necessary
                                changes to the datacenter DNS, a DNS service is hosted
                                as a static pod to serve those hostnames to the nodes
                                in the cluster.
                              type: string
                        gcp:
                          description: GCP contains settings specific to the Google
                            Cloud Platform infrastructure provider.
                          type: object
                          properties:
                            projectID:
                              description: resourceGroupName is the Project ID for
                                new GCP resources created for the cluster.
                              type: string
                            region:
                              description: region holds the region for new GCP resources
                                created for the cluster.
                              type: string
                        openstack:
                          description: OpenStack contains settings specific to the
                            OpenStack infrastructure provider.
                          type: object
                          properties:
                            apiServerInternalIP:
                              description: apiServerInternalIP is an IP address to
                                contact the Kubernetes API server that can be used
                                by components inside the cluster, like kubelets using
                                the infrastructure rather than Kubernetes networking.
                                It is the IP that the Infrastructure.status.apiServerInternalURI
                                points to. It is the IP for a self-hosted load balancer
                                in front of the API servers.
                              type: string
                            cloudName:
                              description: cloudName is the name of the desired OpenStack
                                cloud in the client configuration file (`+"`"+`clouds.yaml`+"`"+`).
                              type: string
                            ingressIP:
                              description: ingressIP is an external IP which routes
                                to the default ingress controller. The IP is a suitable
                                target of a wildcard DNS record used to resolve default
                                route host names.
                              type: string
                            nodeDNSIP:
                              description: nodeDNSIP is the IP address for the internal
                                DNS used by the nodes. Unlike the one managed by the
                                DNS operator, `+"`"+`NodeDNSIP`+"`"+` provides name resolution
                                for the nodes themselves. There is no DNS-as-a-service
                                for OpenStack deployments. In order to minimize necessary
                                changes to the datacenter DNS, a DNS service is hosted
                                as a static pod to serve those hostnames to the nodes
                                in the cluster.
                              type: string
                        ovirt:
                          description: Ovirt contains settings specific to the oVirt
                            infrastructure provider.
                          type: object
                          properties:
                            apiServerInternalIP:
                              description: apiServerInternalIP is an IP address to
                                contact the Kubernetes API server that can be used
                                by components inside the cluster, like kubelets using
                                the infrastructure rather than Kubernetes networking.
                                It is the IP that the Infrastructure.status.apiServerInternalURI
                                points to. It is the IP for a self-hosted load balancer
                                in front of the API servers.
                              type: string
                            ingressIP:
                              description: ingressIP is an external IP which routes
                                to the default ingress controller. The IP is a suitable
                                target of a wildcard DNS record used to resolve default
                                route host names.
                              type: string
                            nodeDNSIP:
                              description: nodeDNSIP is the IP address for the internal
                                DNS used by the nodes. Unlike the one managed by the
                                DNS operator, `+"`"+`NodeDNSIP`+"`"+` provides name resolution
                                for the nodes themselves. There is no DNS-as-a-service
                                for oVirt deployments. In order to minimize necessary
                                changes to the datacenter DNS, a DNS service is hosted
                                as a static pod to serve those hostnames to the nodes
                                in the cluster.
                              type: string
                        type:
                          description: type is the underlying infrastructure provider
                            for the cluster. This value controls whether infrastructure
                            automation such as service load balancers, dynamic volume
                            provisioning, machine creation and deletion, and other
                            integrations are enabled. If None, no infrastructure automation
                            is enabled. Allowed values are "AWS", "Azure", "BareMetal",
                            "GCP", "Libvirt", "OpenStack", "VSphere", "oVirt", and
                            "None". Individual components may not support all platforms,
                            and must handle unrecognized platforms as None if they
                            do not support that platform.
                          type: string
                        vsphere:
                          description: VSphere contains settings specific to the VSphere
                            infrastructure provider.
                          type: object
                          properties:
                            apiServerInternalIP:
                              description: apiServerInternalIP is an IP address to
                                contact the Kubernetes API server that can be used
                                by components inside the cluster, like kubelets using
                                the infrastructure rather than Kubernetes networking.
                                It is the IP that the Infrastructure.status.apiServerInternalURI
                                points to. It is the IP for a self-hosted load balancer
                                in front of the API servers.
                              type: string
                            ingressIP:
                              description: ingressIP is an external IP which routes
                                to the default ingress controller. The IP is a suitable
                                target of a wildcard DNS record used to resolve default
                                route host names.
                              type: string
                            nodeDNSIP:
                              description: nodeDNSIP is the IP address for the internal
                                DNS used by the nodes. Unlike the one managed by the
                                DNS operator, `+"`"+`NodeDNSIP`+"`"+` provides name resolution
                                for the nodes themselves. There is no DNS-as-a-service
                                for vSphere deployments. In order to minimize necessary
                                changes to the datacenter DNS, a DNS service is hosted
                                as a static pod to serve those hostnames to the nodes
                                in the cluster.
                              type: string
              nullable: true
            kubeAPIServerServingCAData:
              description: kubeAPIServerServingCAData managed Kubelet to API Server
                Cert... Rotated automatically
              type: string
              format: byte
            kubeletIPv6:
              description: kubeletIPv6 is true to force a single-stack IPv6 kubelet
                config
              type: boolean
            osImageURL:
              description: osImageURL is the location of the container image that
                contains the OS update payload. Its value is taken from the data.osImageURL
                field on the machine-config-osimageurl ConfigMap.
              type: string
            platform:
              description: The openshift platform, e.g. "libvirt", "openstack", "gcp",
                "baremetal", "aws", or "none"
              type: string
            proxy:
              description: proxy holds the current proxy configuration for the nodes
              type: object
              properties:
                httpProxy:
                  description: httpProxy is the URL of the proxy for HTTP requests.
                  type: string
                httpsProxy:
                  description: httpsProxy is the URL of the proxy for HTTPS requests.
                  type: string
                noProxy:
                  description: noProxy is a comma-separated list of hostnames and/or
                    CIDRs for which the proxy should not be used.
                  type: string
              nullable: true
            pullSecret:
              description: pullSecret is the default pull secret that needs to be
                installed on all machines.
              type: object
              properties:
                apiVersion:
                  description: API version of the referent.
                  type: string
                fieldPath:
                  description: 'If referring to a piece of an object instead of an
                    entire object, this string should contain a valid JSON/Go field
                    access statement, such as desiredState.manifest.containers[2].
                    For example, if the object reference is to a container within
                    a pod, this would take on a value like: "spec.containers{name}"
                    (where "name" refers to the name of the container that triggered
                    the event) or if no container name is specified "spec.containers[2]"
                    (container with index 2 in this pod). This syntax is chosen only
                    to have some well-defined way of referencing a part of an object.
                    TODO: this design is not final and this field is subject to change
                    in the future.'
                  type: string
                kind:
                  description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                  type: string
                name:
                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                  type: string
                namespace:
                  description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                  type: string
                resourceVersion:
                  description: 'Specific resourceVersion to which this reference is
                    made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                  type: string
                uid:
                  description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                  type: string
            rootCAData:
              description: rootCAData specifies the root CA data
              type: string
              format: byte
        status:
          description: ControllerConfigStatus is the status for ControllerConfig
          type: object
          properties:
            conditions:
              description: conditions represents the latest available observations
                of current state.
              type: array
              items:
                description: ControllerConfigStatusCondition contains condition information
                  for ControllerConfigStatus
                type: object
                properties:
                  lastTransitionTime:
                    description: lastTransitionTime is the time of the last update
                      to the current status object.
                    type: string
                    format: date-time
                    nullable: true
                  message:
                    description: message provides additional information about the
                      current condition. This is only to be consumed by humans.
                    type: string
                  reason:
                    description: reason is the reason for the condition's last transition.  Reasons
                      are PascalCase
                    type: string
                  status:
                    description: status of the condition, one of True, False, Unknown.
                    type: string
                  type:
                    description: type specifies the state of the operator's reconciliation
                      functionality.
                    type: string
            observedGeneration:
              description: observedGeneration represents the generation observed by
                the controller.
              type: integer
              format: int64
`)

func manifestsControllerconfigCrdYamlBytes() ([]byte, error) {
	return _manifestsControllerconfigCrdYaml, nil
}

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

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

var _manifestsKubeletconfigCrdYaml = []byte(`apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: kubeletconfigs.machineconfiguration.openshift.io
  labels:
    "openshift.io/operator-managed": ""
spec:
  group: machineconfiguration.openshift.io
  names:
    kind: KubeletConfig
    listKind: KubeletConfigList
    plural: kubeletconfigs
    singular: kubeletconfig
  scope: Cluster
  preserveUnknownFields: false
  subresources:
    status: {}
  versions:
  - name: v1
    served: true
    storage: true
  "validation":
    "openAPIV3Schema":
      description: KubeletConfig describes a customized Kubelet configuration.
      type: object
      properties:
        apiVersion:
          description: 'APIVersion defines the versioned schema of this representation
            of an object. Servers should convert recognized schemas to the latest
            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
          type: string
        kind:
          description: 'Kind is a string value representing the REST resource this
            object represents. Servers may infer this from the endpoint the client
            submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: KubeletConfigSpec defines the desired state of KubeletConfig
          type: object
          properties:
            kubeletConfig:
              type: object
              x-kubernetes-preserve-unknown-fields: true
            machineConfigPoolSelector:
              description: A label selector is a label query over a set of resources.
                The result of matchLabels and matchExpressions are ANDed. An empty
                label selector matches all objects. A null label selector matches
                no objects.
              type: object
              properties:
                matchExpressions:
                  description: matchExpressions is a list of label selector requirements.
                    The requirements are ANDed.
                  type: array
                  items:
                    description: A label selector requirement is a selector that contains
                      values, a key, and an operator that relates the key and values.
                    type: object
                    required:
                    - key
                    - operator
                    properties:
                      key:
                        description: key is the label key that the selector applies
                          to.
                        type: string
                      operator:
                        description: operator represents a key's relationship to a
                          set of values. Valid operators are In, NotIn, Exists and
                          DoesNotExist.
                        type: string
                      values:
                        description: values is an array of string values. If the operator
                          is In or NotIn, the values array must be non-empty. If the
                          operator is Exists or DoesNotExist, the values array must
                          be empty. This array is replaced during a strategic merge
                          patch.
                        type: array
                        items:
                          type: string
                matchLabels:
                  description: matchLabels is a map of {key,value} pairs. A single
                    {key,value} in the matchLabels map is equivalent to an element
                    of matchExpressions, whose key field is "key", the operator is
                    "In", and the values array contains only "value". The requirements
                    are ANDed.
                  type: object
                  additionalProperties:
                    type: string
        status:
          description: KubeletConfigStatus defines the observed state of a KubeletConfig
          type: object
          properties:
            conditions:
              description: conditions represents the latest available observations
                of current state.
              type: array
              items:
                description: KubeletConfigCondition defines the state of the KubeletConfig
                type: object
                properties:
                  lastTransitionTime:
                    description: lastTransitionTime is the time of the last update
                      to the current status object.
                    type: string
                    format: date-time
                    nullable: true
                  message:
                    description: message provides additional information about the
                      current condition. This is only to be consumed by humans.
                    type: string
                  reason:
                    description: reason is the reason for the condition's last transition.  Reasons
                      are PascalCase
                    type: string
                  status:
                    description: status of the condition, one of True, False, Unknown.
                    type: string
                  type:
                    description: type specifies the state of the operator's reconciliation
                      functionality.
                    type: string
            observedGeneration:
              description: observedGeneration represents the generation observed by
                the controller.
              type: integer
              format: int64
`)

func manifestsKubeletconfigCrdYamlBytes() ([]byte, error) {
	return _manifestsKubeletconfigCrdYaml, nil
}

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

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

var _manifestsMachineconfigCrdYaml = []byte(`apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  # name must match the spec fields below, and be in the form: <plural>.<group>
  name: machineconfigs.machineconfiguration.openshift.io
  labels:
    "openshift.io/operator-managed": ""
spec:
  additionalPrinterColumns:
  - JSONPath: .metadata.annotations.machineconfiguration\.openshift\.io/generated-by-controller-version
    description: Version of the controller that generated the machineconfig. This
      will be empty if the machineconfig is not managed by a controller.
    name: GeneratedByController
    type: string
  - JSONPath: .spec.config.ignition.version
    description: Version of the Ignition Config defined in the machineconfig.
    name: IgnitionVersion
    type: string
  - JSONPath: .metadata.creationTimestamp
    name: Age
    type: date
  # group name to use for REST API: /apis/<group>/<version>
  group: machineconfiguration.openshift.io
  # list of versions supported by this CustomResourceDefinition
  versions:
  - name: v1
    # Each version can be enabled/disabled by Served flag.
    served: true
    # One and only one version must be marked as the storage version.
    storage: true
  # either Namespaced or Cluster
  scope: Cluster
  preserveUnknownFields: false
  names:
    # plural name to be used in the URL: /apis/<group>/<version>/<plural>
    plural: machineconfigs
    # singular name to be used as an alias on the CLI and for display
    singular: machineconfig
    # kind is normally the PascalCased singular type. Your resource manifests use this.
    kind: MachineConfig
    # shortNames allow shorter string to match your resource on the CLI
    shortNames:
    - mc
  # openAPIV3Schema has been hand modified. Do not overwrite directly with generated crd fields as we do not allow all config fields.
  "validation":
    "openAPIV3Schema":
      description: MachineConfig defines the configuration for a machine
      type: object
      properties:
        apiVersion:
          description: 'APIVersion defines the versioned schema of this representation
            of an object. Servers should convert recognized schemas to the latest
            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
          type: string
        kind:
          description: 'Kind is a string value representing the REST resource this
            object represents. Servers may infer this from the endpoint the client
            submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: MachineConfigSpec is the spec for MachineConfig
          type: object
          properties:
            config:
              description: Config is a Ignition Config object.
              type: object
              x-kubernetes-preserve-unknown-fields: true
              required:
              - ignition
              properties:
                ignition:
                  description: Ignition section contains metadata about the configuration
                    itself. We only permit a subsection of ignition fields for MachineConfigs.
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                  properties:
                    config:
                      type: object
                      properties:
                        append:
                          type: array
                          items:
                            type: object
                            properties:
                              source:
                                type: string
                              verification:
                                type: object
                                properties:
                                  hash:
                                    type: string
                        replace:
                          type: object
                          properties:
                            source:
                              type: string
                            verification:
                              type: object
                              properties:
                                hash:
                                  type: string
                    security:
                      type: object
                      properties:
                        tls:
                          type: object
                          properties:
                            certificateAuthorities:
                              type: array
                              items:
                                type: object
                                properties:
                                  source:
                                    type: string
                                  verification:
                                    type: object
                                    properties:
                                      hash:
                                        type: string
                    timeouts:
                      type: object
                      properties:
                        httpResponseHeaders:
                          type: integer
                        httpTotal:
                          type: integer
                    version:
                      description: Version string is the semantic version number of the spec
                      type: string
                passwd:
                  type: object
                  properties:
                    users:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            description: Name of user. Must be \"core\" user.
                            type: string
                          sshAuthorizedKeys:
                            description: Public keys to be assigned to user core.
                            type: array
                            items:
                              type: string
                storage:
                  description: Storage describes the desired state of the system's storage devices.
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                  properties:
                    directories:
                      description: Directories is the list of directories to be created
                      type: array
                      items:
                        description: Items is list of directories to be written
                        type: object
                        properties:
                          filesystem:
                            description: Filesystem is the internal identifier of the filesystem
                              in which to write the file. This matches the last filesystem with
                              the given identifier.
                            type: string
                          group:
                            description: Group object specifies group of the owner
                            type: object
                            properties:
                              id:
                                description: ID is the user ID of the owner
                                type: integer
                              name:
                                description: Name is the user name of the owner
                                type: string
                          mode:
                            description: Mode is the file's permission mode. Note that the mode
                              must be properly specified as a decimal value (i.e. 0644 -> 420)
                            type: integer
                          overwrite:
                            description: Overwrite specifies whether to delete preexisting nodes
                              at the path
                            type: boolean
                          path:
                            description: Path is the absolute path to the file
                            type: string
                          user:
                            description: User object specifies the file's owner
                            type: object
                            properties:
                              id:
                                description: ID is the user ID of the owner
                                type: integer
                              name:
                                description: Name is the user name of the owner
                                type: string
                    files:
                      description: Files is the list of files to be created/modified
                      type: array
                      items:
                        description: Items is list of files to be written
                        type: object
                        properties:
                          append:
                            description: Append specifies whether to append to the specified file.
                              Creates a new file if nothing exists at the path. Cannot be set if
                              overwrite is set to true.
                            type: boolean
                          contents:
                            description: Contents specifies options related to the contents of
                              the file
                            type: object
                            properties:
                              compression:
                                description: The type of compression used on the contents (null
                                  or gzip). Compression cannot be used with S3.
                                type: string
                              source:
                                description: Source is the URL of the file contents. Supported
                                  schemes are http, https, tftp, s3, and data. When using http,
                                  it is advisable to use the verification option to ensure the
                                  contents haven't been modified.
                                type: string
                              verification:
                                description: Verification specifies options related to the
                                  verification of the file contents
                                type: object
                                properties:
                                  hash:
                                    description: Hash is the hash of the config, in the form
                                      <type>-<value> where type is sha512
                                    type: string
                          filesystem:
                            description: Filesystem is the internal identifier of the filesystem
                              in which to write the file. This matches the last filesystem with
                              the given identifier
                            type: string
                          group:
                            description: Group object specifies group of the owner
                            type: object
                            properties:
                              id:
                                description: ID specifies group ID of the owner
                                type: integer
                              name:
                                description: Name is the group name of the owner
                                type: string
                          mode:
                            description: Mode specifies the file's permission mode. Note that the
                              mode must be properly specified as a decimal value (i.e. 0644 -> 420)
                            type: integer
                          overwrite:
                            description: Overwrite specifies whether to delete preexisting nodes
                              at the path
                            type: boolean
                          path:
                            description: Path is the absolute path to the file
                            type: string
                          user:
                            description: User object specifies the file's owner
                            type: object
                            properties:
                              id:
                                description: ID is the user ID of the owner
                                type: integer
                              name:
                                description: Name is the user name of the owner
                                type: string
                systemd:
                  description: systemd describes the desired state of the systemd units
                  type: object
                  properties:
                    units:
                      description: Units is a list of units to be configured
                      type: array
                      items:
                        description: Items describes unit configuration
                        type: object
                        properties:
                          contents:
                            description: Contents is the contents of the unit
                            type: string
                          dropins:
                            description: Dropins is the list of drop-ins for the unit
                            type: array
                            items:
                              description: Items describes unit dropin
                              type: object
                              properties:
                                contents:
                                  description: Contents is the contents of the drop-in
                                  type: string
                                name:
                                  description: Name is the name of the drop-in. This must be suffixed
                                    with '.conf'
                                  type: string
                          enabled:
                            description: Enabled describes whether or not the service shall be enabled.
                              When true, the service is enabled. When false, the service is disabled.
                              When omitted, the service is unmodified. In order for this to have any
                              effect, the unit must have an install section
                            type: boolean
                          mask:
                            description: Mask describes whether or not the service shall be masked.
                              When true, the service is masked by symlinking it to /dev/null"
                            type: boolean
                          name:
                            description: Name is the name of the unit. This must be suffixed with a
                              valid unit type (e.g. 'thing.service')
                            type: string
            fips:
              description: FIPS controls FIPS mode
              type: boolean
            kernelArguments:
              description: KernelArguments contains a list of kernel arguments to be added
              type: array
              items:
                type: string
              nullable: true
            kernelType:
              description: Contains which kernel we want to be running like default (traditional), realtime
              type: string
            osImageURL:
              description: OSImageURL specifies the remote location that will be used to fetch the OS
                to fetch the OS.
              type: string
`)

func manifestsMachineconfigCrdYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigCrdYaml, nil
}

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

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

var _manifestsMachineconfigcontrollerClusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: machine-config-controller
  namespace: {{.TargetNamespace}}
rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get", "list", "watch", "patch"]
- apiGroups: ["machineconfiguration.openshift.io"]
  resources: ["*"]
  verbs: ["*"]
- apiGroups: [""]
  resources: ["configmaps", "secrets"]
  verbs: ["*"]
- apiGroups: ["config.openshift.io"]
  resources: ["images", "clusterversions", "featuregates"]
  verbs: ["*"]
- apiGroups: ["config.openshift.io"]
  resources: ["schedulers"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["operator.openshift.io"]
  resources: ["imagecontentsourcepolicies"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["operator.openshift.io"]
  resources: ["etcds"]
  verbs: ["get", "list", "watch"]
`)

func manifestsMachineconfigcontrollerClusterroleYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigcontrollerClusterroleYaml, nil
}

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

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

var _manifestsMachineconfigcontrollerClusterrolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: machine-config-controller
  namespace: {{.TargetNamespace}}
roleRef:
  kind: ClusterRole
  name: machine-config-controller
subjects:
- kind: ServiceAccount
  namespace: {{.TargetNamespace}}
  name: machine-config-controller
`)

func manifestsMachineconfigcontrollerClusterrolebindingYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigcontrollerClusterrolebindingYaml, nil
}

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

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

var _manifestsMachineconfigcontrollerControllerconfigYaml = []byte(`apiVersion: machineconfiguration.openshift.io/v1
kind: ControllerConfig
metadata:
  name: machine-config-controller
spec:
{{toYAML .ControllerConfig | toString | indent 2}}
`)

func manifestsMachineconfigcontrollerControllerconfigYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigcontrollerControllerconfigYaml, nil
}

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

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

var _manifestsMachineconfigcontrollerDeploymentYaml = []byte(`apiVersion: apps/v1
kind: Deployment
metadata:
  name: machine-config-controller
  namespace: {{.TargetNamespace}}
spec:
  selector:
    matchLabels:
      k8s-app: machine-config-controller
  template:
    metadata:
      labels:
        k8s-app: machine-config-controller
    spec:
      containers:
      - name: machine-config-controller
        image: {{.Images.MachineConfigOperator}}
        command: ["/usr/bin/machine-config-controller"]
        args:
        - "start"
        - "--resourcelock-namespace={{.TargetNamespace}}"
        - "--v=2"
        resources:
          requests:
            cpu: 20m
            memory: 50Mi
        terminationMessagePolicy: FallbackToLogsOnError
      serviceAccountName: machine-config-controller
      nodeSelector:
        node-role.kubernetes.io/master: ""
      priorityClassName: "system-cluster-critical"
      restartPolicy: Always
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: "NoSchedule"
      - key: "node.kubernetes.io/unreachable"
        operator: "Exists"
        effect: "NoExecute"
        tolerationSeconds: 120
      - key: "node.kubernetes.io/not-ready"
        operator: "Exists"
        effect: "NoExecute"
        tolerationSeconds: 120
`)

func manifestsMachineconfigcontrollerDeploymentYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigcontrollerDeploymentYaml, nil
}

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

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

var _manifestsMachineconfigcontrollerSaYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  namespace: {{.TargetNamespace}}
  name: machine-config-controller
`)

func manifestsMachineconfigcontrollerSaYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigcontrollerSaYaml, nil
}

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

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

var _manifestsMachineconfigdaemonClusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: machine-config-daemon
  namespace: {{.TargetNamespace}}
rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get", "list", "watch", "patch", "update"]
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["*"]
- apiGroups: ["extensions"]
  resources: ["daemonsets"]
  verbs: ["get"]
- apiGroups: ["apps"]
  resources: ["daemonsets"]
  verbs: ["get"]
- apiGroups: [""]
  resources: ["pods/eviction"]
  verbs: ["create"]
- apiGroups: ["machineconfiguration.openshift.io"]
  resources: ["machineconfigs"]
  verbs: ["*"]
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  - subjectaccessreviews
  verbs:
  - create
- apiGroups:
  - authorization.k8s.io
  resources:
  - subjectaccessreviews
  verbs:
  - create
`)

func manifestsMachineconfigdaemonClusterroleYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigdaemonClusterroleYaml, nil
}

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

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

var _manifestsMachineconfigdaemonClusterrolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: machine-config-daemon
  namespace: {{.TargetNamespace}}
roleRef:
  kind: ClusterRole
  name: machine-config-daemon
subjects:
- kind: ServiceAccount
  namespace: {{.TargetNamespace}}
  name: machine-config-daemon
---
# Bind auth-delegator role to the MCD service account
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: machine-config-daemon
  namespace: {{.TargetNamespace}}
roleRef:
  kind: ClusterRole
  apiGroup: rbac.authorization.k8s.io
  name: system:auth-delegator
subjects:
- kind: ServiceAccount
  namespace: {{.TargetNamespace}}
  name: machine-config-daemon
`)

func manifestsMachineconfigdaemonClusterrolebindingYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigdaemonClusterrolebindingYaml, nil
}

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

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

var _manifestsMachineconfigdaemonCookieSecretYaml = []byte(`apiVersion: v1
kind: Secret
metadata:
  name: cookie-secret
  namespace: {{.TargetNamespace}}
type: Opaque
data:
  cookie-secret: {{.GenerateProxyCookieSecret}}
`)

func manifestsMachineconfigdaemonCookieSecretYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigdaemonCookieSecretYaml, nil
}

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

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

var _manifestsMachineconfigdaemonDaemonsetYaml = []byte(`apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: machine-config-daemon
  namespace: {{.TargetNamespace}}
spec:
  selector:
    matchLabels:
      k8s-app: machine-config-daemon
  template:
    metadata:
      name: machine-config-daemon
      labels:
        k8s-app: machine-config-daemon
    spec:
      containers:
      - name: machine-config-daemon
        image: {{.Images.MachineConfigOperator}}
        command: ["/usr/bin/machine-config-daemon"]
        args:
          - "start"
        resources:
          requests:
            cpu: 20m
            memory: 50Mi
        securityContext:
          privileged: true
        terminationMessagePolicy: FallbackToLogsOnError
        volumeMounts:
          - mountPath: /rootfs
            name: rootfs
        env:
          - name: NODE_NAME
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName
      - name: oauth-proxy
        image: {{.Images.OauthProxy}}
        ports:
        - containerPort: 9001
          name: metrics
          protocol: TCP
        args:
        - --https-address=:9001
        - --provider=openshift
        - --openshift-service-account=machine-config-daemon
        - --upstream=http://127.0.0.1:8797
        - --tls-cert=/etc/tls/private/tls.crt
        - --tls-key=/etc/tls/private/tls.key
        - --cookie-secret-file=/etc/tls/cookie-secret/cookie-secret
        - '--openshift-sar={"resource": "namespaces", "verb": "get"}'
        - '--openshift-delegate-urls={"/": {"resource": "namespaces", "verb": "get"}}'
        resources:
          requests:
            cpu: 20m
            memory: 50Mi
        volumeMounts:
        - mountPath: /etc/tls/private
          name: proxy-tls
        - mountPath: /etc/tls/cookie-secret
          name: cookie-secret
      hostNetwork: true
      hostPID: true
      serviceAccountName: machine-config-daemon
      terminationGracePeriodSeconds: 600
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      - key: node-role.kubernetes.io/etcd
        operator: Exists
        effect: NoSchedule
      nodeSelector:
        kubernetes.io/os: linux
      priorityClassName: "system-node-critical"
      volumes:
        - name: rootfs
          hostPath:
            path: /
        - name: proxy-tls
          secret:
            secretName: proxy-tls
        - name: cookie-secret
          secret:
            secretName: cookie-secret
`)

func manifestsMachineconfigdaemonDaemonsetYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigdaemonDaemonsetYaml, nil
}

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

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

var _manifestsMachineconfigdaemonEventsClusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: machine-config-daemon-events
  namespace: {{.TargetNamespace}}
rules:
- apiGroups: [""]
  resources: ["events"]
  verbs: ["create", "patch"]
`)

func manifestsMachineconfigdaemonEventsClusterroleYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigdaemonEventsClusterroleYaml, nil
}

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

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

var _manifestsMachineconfigdaemonEventsRolebindingDefaultYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: machine-config-daemon-events
  namespace: default
roleRef:
  kind: ClusterRole
  name: machine-config-daemon-events
subjects:
- kind: ServiceAccount
  namespace: {{.TargetNamespace}}
  name: machine-config-daemon
`)

func manifestsMachineconfigdaemonEventsRolebindingDefaultYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigdaemonEventsRolebindingDefaultYaml, nil
}

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

	info := bindataFileInfo{name: "manifests/machineconfigdaemon/events-rolebinding-default.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsMachineconfigdaemonEventsRolebindingTargetYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: machine-config-daemon-events
  namespace: {{.TargetNamespace}}
roleRef:
  kind: ClusterRole
  name: machine-config-daemon-events
subjects:
- kind: ServiceAccount
  namespace: {{.TargetNamespace}}
  name: machine-config-daemon
`)

func manifestsMachineconfigdaemonEventsRolebindingTargetYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigdaemonEventsRolebindingTargetYaml, nil
}

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

	info := bindataFileInfo{name: "manifests/machineconfigdaemon/events-rolebinding-target.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsMachineconfigdaemonSaYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  namespace: {{.TargetNamespace}}
  name: machine-config-daemon
`)

func manifestsMachineconfigdaemonSaYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigdaemonSaYaml, nil
}

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

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

var _manifestsMachineconfigpoolCrdYaml = []byte(`apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  # name must match the spec fields below, and be in the form: <plural>.<group>
  name: machineconfigpools.machineconfiguration.openshift.io
  labels:
    "openshift.io/operator-managed": ""
spec:
  additionalPrinterColumns:
  - JSONPath: .status.configuration.name
    name: Config
    type: string
  - JSONPath: .status.conditions[?(@.type=="Updated")].status
    description: When all the machines in the pool are updated to the correct machine
      config.
    name: Updated
    type: string
  - JSONPath: .status.conditions[?(@.type=="Updating")].status
    description: When at least one of machine is not either not updated or is in the
      process of updating to the desired machine config.
    name: Updating
    type: string
  - JSONPath: .status.conditions[?(@.type=="Degraded")].status
    description: When progress is blocked on updating one or more nodes, or the pool
      configuration is failing.
    name: Degraded
    type: string
  - JSONPath: .status.machineCount
    description: Total number of machines in the machine config pool
    name: MachineCount
    type: number
  - JSONPath: .status.readyMachineCount
    description: Total number of ready machines targeted by the pool
    name: ReadyMachineCount
    type: number
  - JSONPath: .status.updatedMachineCount
    description: Total number of machines targeted by the pool that have the CurrentMachineConfig
      as their config
    name: UpdatedMachineCount
    type: number
  - JSONPath: .status.degradedMachineCount
    description: Total number of machines marked degraded (or unreconcilable)
    name: DegradedMachineCount
    type: number
  - JSONPath: .metadata.creationTimestamp
    name: Age
    type: date
  # group name to use for REST API: /apis/<group>/<version>
  group: machineconfiguration.openshift.io
  # list of versions supported by this CustomResourceDefinition
  versions:
  - name: v1
    # Each version can be enabled/disabled by Served flag.
    served: true
    # One and only one version must be marked as the storage version.
    storage: true
  # either Namespaced or Cluster
  scope: Cluster
  preserveUnknownFields: false
  subresources:
    status: {}
  names:
    # plural name to be used in the URL: /apis/<group>/<version>/<plural>
    plural: machineconfigpools
    # singular name to be used as an alias on the CLI and for display
    singular: machineconfigpool
    # kind is normally the PascalCased singular type. Your resource manifests use this.
    kind: MachineConfigPool
    # shortNames allow shorter string to match your resource on the CLI
    shortNames:
    - mcp
  "validation":
    "openAPIV3Schema":
      description: MachineConfigPool describes a pool of MachineConfigs.
      type: object
      properties:
        apiVersion:
          description: 'APIVersion defines the versioned schema of this representation
            of an object. Servers should convert recognized schemas to the latest
            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
          type: string
        kind:
          description: 'Kind is a string value representing the REST resource this
            object represents. Servers may infer this from the endpoint the client
            submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: MachineConfigPoolSpec is the spec for MachineConfigPool resource.
          type: object
          properties:
            configuration:
              description: The targeted MachineConfig object for the machine config
                pool.
              type: object
              properties:
                apiVersion:
                  description: API version of the referent.
                  type: string
                fieldPath:
                  description: 'If referring to a piece of an object instead of an
                    entire object, this string should contain a valid JSON/Go field
                    access statement, such as desiredState.manifest.containers[2].
                    For example, if the object reference is to a container within
                    a pod, this would take on a value like: "spec.containers{name}"
                    (where "name" refers to the name of the container that triggered
                    the event) or if no container name is specified "spec.containers[2]"
                    (container with index 2 in this pod). This syntax is chosen only
                    to have some well-defined way of referencing a part of an object.
                    TODO: this design is not final and this field is subject to change
                    in the future.'
                  type: string
                kind:
                  description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                  type: string
                name:
                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                  type: string
                namespace:
                  description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                  type: string
                resourceVersion:
                  description: 'Specific resourceVersion to which this reference is
                    made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                  type: string
                source:
                  description: source is the list of MachineConfig objects that were
                    used to generate the single MachineConfig object specified in
                    `+"`"+`content`+"`"+`.
                  type: array
                  items:
                    description: ObjectReference contains enough information to let
                      you inspect or modify the referred object.
                    type: object
                    properties:
                      apiVersion:
                        description: API version of the referent.
                        type: string
                      fieldPath:
                        description: 'If referring to a piece of an object instead
                          of an entire object, this string should contain a valid
                          JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within
                          a pod, this would take on a value like: "spec.containers{name}"
                          (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]"
                          (container with index 2 in this pod). This syntax is chosen
                          only to have some well-defined way of referencing a part
                          of an object. TODO: this design is not final and this field
                          is subject to change in the future.'
                        type: string
                      kind:
                        description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                        type: string
                      name:
                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                        type: string
                      namespace:
                        description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                        type: string
                      resourceVersion:
                        description: 'Specific resourceVersion to which this reference
                          is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                        type: string
                      uid:
                        description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                        type: string
                uid:
                  description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                  type: string
            machineConfigSelector:
              description: machineConfigSelector specifies a label selector for MachineConfigs.
                Refer https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
                on how label and selectors work.
              type: object
              properties:
                matchExpressions:
                  description: matchExpressions is a list of label selector requirements.
                    The requirements are ANDed.
                  type: array
                  items:
                    description: A label selector requirement is a selector that contains
                      values, a key, and an operator that relates the key and values.
                    type: object
                    required:
                    - key
                    - operator
                    properties:
                      key:
                        description: key is the label key that the selector applies
                          to.
                        type: string
                      operator:
                        description: operator represents a key's relationship to a
                          set of values. Valid operators are In, NotIn, Exists and
                          DoesNotExist.
                        type: string
                      values:
                        description: values is an array of string values. If the operator
                          is In or NotIn, the values array must be non-empty. If the
                          operator is Exists or DoesNotExist, the values array must
                          be empty. This array is replaced during a strategic merge
                          patch.
                        type: array
                        items:
                          type: string
                matchLabels:
                  description: matchLabels is a map of {key,value} pairs. A single
                    {key,value} in the matchLabels map is equivalent to an element
                    of matchExpressions, whose key field is "key", the operator is
                    "In", and the values array contains only "value". The requirements
                    are ANDed.
                  type: object
                  additionalProperties:
                    type: string
            maxUnavailable:
              description: maxUnavailable specifies the percentage or constant number
                of machines that can be updating at any given time. default is 1.
              anyOf:
              - type: integer
              - type: string
              x-kubernetes-int-or-string: true
            nodeSelector:
              description: nodeSelector specifies a label selector for Machines
              type: object
              properties:
                matchExpressions:
                  description: matchExpressions is a list of label selector requirements.
                    The requirements are ANDed.
                  type: array
                  items:
                    description: A label selector requirement is a selector that contains
                      values, a key, and an operator that relates the key and values.
                    type: object
                    required:
                    - key
                    - operator
                    properties:
                      key:
                        description: key is the label key that the selector applies
                          to.
                        type: string
                      operator:
                        description: operator represents a key's relationship to a
                          set of values. Valid operators are In, NotIn, Exists and
                          DoesNotExist.
                        type: string
                      values:
                        description: values is an array of string values. If the operator
                          is In or NotIn, the values array must be non-empty. If the
                          operator is Exists or DoesNotExist, the values array must
                          be empty. This array is replaced during a strategic merge
                          patch.
                        type: array
                        items:
                          type: string
                matchLabels:
                  description: matchLabels is a map of {key,value} pairs. A single
                    {key,value} in the matchLabels map is equivalent to an element
                    of matchExpressions, whose key field is "key", the operator is
                    "In", and the values array contains only "value". The requirements
                    are ANDed.
                  type: object
                  additionalProperties:
                    type: string
            paused:
              description: paused specifies whether or not changes to this machine
                config pool should be stopped. This includes generating new desiredMachineConfig
                and update of machines.
              type: boolean
        status:
          description: MachineConfigPoolStatus is the status for MachineConfigPool
            resource.
          type: object
          properties:
            conditions:
              description: conditions represents the latest available observations
                of current state.
              type: array
              items:
                description: MachineConfigPoolCondition contains condition information
                  for an MachineConfigPool.
                type: object
                properties:
                  lastTransitionTime:
                    description: lastTransitionTime is the timestamp corresponding
                      to the last status change of this condition.
                    type: string
                    format: date-time
                    nullable: true
                  message:
                    description: message is a human readable description of the details
                      of the last transition, complementing reason.
                    type: string
                  reason:
                    description: reason is a brief machine readable explanation for
                      the condition's last transition.
                    type: string
                  status:
                    description: status of the condition, one of ('True', 'False',
                      'Unknown').
                    type: string
                  type:
                    description: type of the condition, currently ('Done', 'Updating',
                      'Failed').
                    type: string
            configuration:
              description: configuration represents the current MachineConfig object
                for the machine config pool.
              type: object
              properties:
                apiVersion:
                  description: API version of the referent.
                  type: string
                fieldPath:
                  description: 'If referring to a piece of an object instead of an
                    entire object, this string should contain a valid JSON/Go field
                    access statement, such as desiredState.manifest.containers[2].
                    For example, if the object reference is to a container within
                    a pod, this would take on a value like: "spec.containers{name}"
                    (where "name" refers to the name of the container that triggered
                    the event) or if no container name is specified "spec.containers[2]"
                    (container with index 2 in this pod). This syntax is chosen only
                    to have some well-defined way of referencing a part of an object.
                    TODO: this design is not final and this field is subject to change
                    in the future.'
                  type: string
                kind:
                  description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                  type: string
                name:
                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                  type: string
                namespace:
                  description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                  type: string
                resourceVersion:
                  description: 'Specific resourceVersion to which this reference is
                    made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                  type: string
                source:
                  description: source is the list of MachineConfig objects that were
                    used to generate the single MachineConfig object specified in
                    `+"`"+`content`+"`"+`.
                  type: array
                  items:
                    description: ObjectReference contains enough information to let
                      you inspect or modify the referred object.
                    type: object
                    properties:
                      apiVersion:
                        description: API version of the referent.
                        type: string
                      fieldPath:
                        description: 'If referring to a piece of an object instead
                          of an entire object, this string should contain a valid
                          JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within
                          a pod, this would take on a value like: "spec.containers{name}"
                          (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]"
                          (container with index 2 in this pod). This syntax is chosen
                          only to have some well-defined way of referencing a part
                          of an object. TODO: this design is not final and this field
                          is subject to change in the future.'
                        type: string
                      kind:
                        description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                        type: string
                      name:
                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                        type: string
                      namespace:
                        description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                        type: string
                      resourceVersion:
                        description: 'Specific resourceVersion to which this reference
                          is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                        type: string
                      uid:
                        description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                        type: string
                uid:
                  description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                  type: string
            degradedMachineCount:
              description: degradedMachineCount represents the total number of machines
                marked degraded (or unreconcilable). A node is marked degraded if
                applying a configuration failed..
              type: integer
              format: int32
            machineCount:
              description: machineCount represents the total number of machines in
                the machine config pool.
              type: integer
              format: int32
            observedGeneration:
              description: observedGeneration represents the generation observed by
                the controller.
              type: integer
              format: int64
            readyMachineCount:
              description: readyMachineCount represents the total number of ready
                machines targeted by the pool.
              type: integer
              format: int32
            unavailableMachineCount:
              description: unavailableMachineCount represents the total number of
                unavailable (non-ready) machines targeted by the pool. A node is marked
                unavailable if it is in updating state or NodeReady condition is false.
              type: integer
              format: int32
            updatedMachineCount:
              description: updatedMachineCount represents the total number of machines
                targeted by the pool that have the CurrentMachineConfig as their config.
              type: integer
              format: int32
`)

func manifestsMachineconfigpoolCrdYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigpoolCrdYaml, nil
}

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

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

var _manifestsMachineconfigserverClusterroleYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: machine-config-server
  namespace: {{.TargetNamespace}}
rules:
- apiGroups: ["machineconfiguration.openshift.io"]
  resources: ["machineconfigs", "machineconfigpools"]
  verbs: ["*"]
`)

func manifestsMachineconfigserverClusterroleYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverClusterroleYaml, nil
}

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

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

var _manifestsMachineconfigserverClusterrolebindingYaml = []byte(`apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: machine-config-server
  namespace: {{.TargetNamespace}}
roleRef:
  kind: ClusterRole
  name: machine-config-server
subjects:
- kind: ServiceAccount
  namespace: {{.TargetNamespace}}
  name: machine-config-server
`)

func manifestsMachineconfigserverClusterrolebindingYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverClusterrolebindingYaml, nil
}

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

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

var _manifestsMachineconfigserverCsrBootstrapRoleBindingYaml = []byte(`# system-bootstrap-node-bootstrapper lets serviceaccount `+"`"+`openshift-machine-config-operator/node-bootstrapper`+"`"+` tokens and nodes request CSRs.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: system-bootstrap-node-bootstrapper
subjects:
- kind: ServiceAccount
  name: node-bootstrapper
  namespace: openshift-machine-config-operator
roleRef:
  kind: ClusterRole
  name: system:node-bootstrapper
  apiGroup: rbac.authorization.k8s.io`)

func manifestsMachineconfigserverCsrBootstrapRoleBindingYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverCsrBootstrapRoleBindingYaml, nil
}

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

	info := bindataFileInfo{name: "manifests/machineconfigserver/csr-bootstrap-role-binding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsMachineconfigserverCsrRenewalRoleBindingYaml = []byte(`# CSRRenewalRoleBindingTemplate instructs the csrapprover controller to
# automatically approve all CSRs made by nodes to renew their client
# certificates.
#
# This binding should be altered in the future to hold a list of node
# names instead of targeting `+"`"+`system:nodes`+"`"+` so we can revoke invidivual
# node's ability to renew its certs.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: system-bootstrap-node-renewal
subjects:
- kind: Group
  name: system:nodes
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: system:certificates.k8s.io:certificatesigningrequests:selfnodeclient
  apiGroup: rbac.authorization.k8s.io`)

func manifestsMachineconfigserverCsrRenewalRoleBindingYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverCsrRenewalRoleBindingYaml, nil
}

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

	info := bindataFileInfo{name: "manifests/machineconfigserver/csr-renewal-role-binding.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsMachineconfigserverDaemonsetYaml = []byte(`apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: machine-config-server
  namespace: {{.TargetNamespace}}
spec:
  selector:
    matchLabels:
      k8s-app: machine-config-server
  template:
    metadata:
      name: machine-config-server
      labels:
        k8s-app: machine-config-server
    spec:
      containers:
      - name: machine-config-server
        image: {{.Images.MachineConfigOperator}}
        command: ["/usr/bin/machine-config-server"]
        args:
          - "start"
          - "--apiserver-url={{.APIServerURL}}"
        resources:
          requests:
            cpu: 20m
            memory: 50Mi
        terminationMessagePolicy: FallbackToLogsOnError
        volumeMounts:
        - name: certs
          mountPath: /etc/ssl/mcs
        - name: node-bootstrap-token
          mountPath: /etc/mcs/bootstrap-token
      hostNetwork: true
      nodeSelector:
        node-role.kubernetes.io/master: ""
      priorityClassName: "system-cluster-critical"
      serviceAccountName: machine-config-server
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      - key: node-role.kubernetes.io/etcd
        operator: Exists
        effect: NoSchedule
      volumes:
      - name: node-bootstrap-token
        secret:
          secretName: node-bootstrapper-token
      - name: certs
        secret:
          secretName: machine-config-server-tls
`)

func manifestsMachineconfigserverDaemonsetYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverDaemonsetYaml, nil
}

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

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

var _manifestsMachineconfigserverKubeApiserverServingCaConfigmapYaml = []byte(`apiVersion: v1
kind: ConfigMap
metadata:
  name: initial-kube-apiserver-server-ca
  namespace: openshift-config
data:
  ca-bundle.crt: |
{{.KubeAPIServerServingCA | indent 4}}
`)

func manifestsMachineconfigserverKubeApiserverServingCaConfigmapYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverKubeApiserverServingCaConfigmapYaml, nil
}

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

	info := bindataFileInfo{name: "manifests/machineconfigserver/kube-apiserver-serving-ca-configmap.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsMachineconfigserverNodeBootstrapperSaYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  namespace: {{.TargetNamespace}}
  name: node-bootstrapper
`)

func manifestsMachineconfigserverNodeBootstrapperSaYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverNodeBootstrapperSaYaml, nil
}

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

	info := bindataFileInfo{name: "manifests/machineconfigserver/node-bootstrapper-sa.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsMachineconfigserverNodeBootstrapperTokenYaml = []byte(`apiVersion: v1
kind: Secret
metadata:
  annotations:
    kubernetes.io/service-account.name: node-bootstrapper
  name: node-bootstrapper-token
  namespace: {{.TargetNamespace}}
type: kubernetes.io/service-account-token
`)

func manifestsMachineconfigserverNodeBootstrapperTokenYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverNodeBootstrapperTokenYaml, nil
}

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

	info := bindataFileInfo{name: "manifests/machineconfigserver/node-bootstrapper-token.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsMachineconfigserverSaYaml = []byte(`apiVersion: v1
kind: ServiceAccount
metadata:
  namespace: {{.TargetNamespace}}
  name: machine-config-server
`)

func manifestsMachineconfigserverSaYamlBytes() ([]byte, error) {
	return _manifestsMachineconfigserverSaYaml, nil
}

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

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

var _manifestsMasterMachineconfigpoolYaml = []byte(`apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfigPool
metadata:
  name: master
  labels:
    "operator.machineconfiguration.openshift.io/required-for-upgrade": ""
    "machineconfiguration.openshift.io/mco-built-in": ""
spec:
  machineConfigSelector:
    matchLabels:
      "machineconfiguration.openshift.io/role": "master"
  nodeSelector:
    matchLabels:
      node-role.kubernetes.io/master: ""`)

func manifestsMasterMachineconfigpoolYamlBytes() ([]byte, error) {
	return _manifestsMasterMachineconfigpoolYaml, nil
}

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

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

var _manifestsOpenstackCorednsCorefileTmpl = []byte(`. {
    errors
    health :18080
    mdns {{ .ControllerConfig.EtcdDiscoveryDomain }} {{`+"`"+`{{.Cluster.MasterAmount}}`+"`"+`}} {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}
    forward . {{`+"`"+`{{- range $upstream := .DNSUpstreams}} {{$upstream}}{{- end}}`+"`"+`}}
    cache 30
    reload
    hosts /etc/coredns/api-int.hosts {{ .ControllerConfig.EtcdDiscoveryDomain }} {
        {{ .ControllerConfig.Infra.Status.PlatformStatus.OpenStack.APIServerInternalIP }} api-int.{{ .ControllerConfig.EtcdDiscoveryDomain }} api.{{ .ControllerConfig.EtcdDiscoveryDomain }}
        fallthrough
    }
}
`)

func manifestsOpenstackCorednsCorefileTmplBytes() ([]byte, error) {
	return _manifestsOpenstackCorednsCorefileTmpl, nil
}

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

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

var _manifestsOpenstackCorednsYaml = []byte(`---
kind: Pod
apiVersion: v1
metadata:
  name: coredns
  namespace: openshift-openstack-infra
  creationTimestamp:
  deletionGracePeriodSeconds: 65
  labels:
    app: openstack-infra-mdns
spec:
  volumes:
  - name: resource-dir
    hostPath:
      path: "/etc/kubernetes/static-pod-resources/coredns"
  - name: kubeconfig
    hostPath:
      path: "/etc/kubernetes/kubeconfig"
  - name: conf-dir
    empty-dir: {}
  - name: manifests
    hostPath:
      path: "/opt/openshift/manifests"
  initContainers:
  - name: render-config
    image: {{ .Images.BaremetalRuntimeCfgBootstrap }}
    command:
    - runtimecfg
    - render
    - "/etc/kubernetes/kubeconfig"
    - "--api-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.OpenStack.APIServerInternalIP }}"
    - "--dns-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.OpenStack.NodeDNSIP }}"
    - "--ingress-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.OpenStack.IngressIP }}"
    - "/config"
    - "--out-dir"
    - "/etc/coredns"
    - "--cluster-config"
    - "/opt/openshift/manifests/cluster-config.yaml"
    resources: {}
    volumeMounts:
    - name: kubeconfig
      mountPath: "/etc/kubernetes/kubeconfig"
    - name: resource-dir
      mountPath: "/config"
    - name: conf-dir
      mountPath: "/etc/coredns"
    - name: manifests
      mountPath: "/opt/openshift/manifests"
    imagePullPolicy: IfNotPresent
  containers:
  - name: coredns
    securityContext:
      privileged: true
    image: {{ .Images.CorednsBootstrap }}
    args:
    - "--conf"
    - "/etc/coredns/Corefile"
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: conf-dir
      mountPath: "/etc/coredns"
    readinessProbe:
      httpGet:
        path: /health
        port: 18080
        scheme: HTTP
      initialDelaySeconds: 10
      periodSeconds: 10
      successThreshold: 1
      failureThreshold: 3
      timeoutSeconds: 10
    livenessProbe:
      httpGet:
        path: /health
        port: 18080
        scheme: HTTP
      initialDelaySeconds: 60
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 5
    terminationMessagePolicy: FallbackToLogsOnError
  hostNetwork: true
  tolerations:
  - operator: Exists
  priorityClassName: system-node-critical
status: {}
`)

func manifestsOpenstackCorednsYamlBytes() ([]byte, error) {
	return _manifestsOpenstackCorednsYaml, nil
}

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

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

var _manifestsOpenstackKeepalivedConfTmpl = []byte(`# Configuration template for Keepalived, which is used to manage the DNS and
# API VIPs.
#
# For more information, see installer/data/data/bootstrap/baremetal/README.md
# in the installer repo.

vrrp_instance {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_API {
    state BACKUP
    interface {{`+"`"+`{{.VRRPInterface}}`+"`"+`}}
    virtual_router_id {{`+"`"+`{{.Cluster.APIVirtualRouterID }}`+"`"+`}}
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_api_vip
    }
    virtual_ipaddress {
        {{`+"`"+`{{ .Cluster.APIVIP }}`+"`"+`}}/{{`+"`"+`{{ .Cluster.VIPNetmask }}`+"`"+`}}
    }
}

vrrp_instance {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_DNS {
    state MASTER
    interface {{`+"`"+`{{.VRRPInterface}}`+"`"+`}}
    virtual_router_id {{`+"`"+`{{.Cluster.DNSVirtualRouterID }}`+"`"+`}}
    priority 140
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_dns_vip
    }
    virtual_ipaddress {
        {{`+"`"+`{{ .Cluster.DNSVIP }}`+"`"+`}}/{{`+"`"+`{{ .Cluster.VIPNetmask }}`+"`"+`}}
    }
}
`)

func manifestsOpenstackKeepalivedConfTmplBytes() ([]byte, error) {
	return _manifestsOpenstackKeepalivedConfTmpl, nil
}

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

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

var _manifestsOpenstackKeepalivedYaml = []byte(`---
kind: Pod
apiVersion: v1
metadata:
  name: keepalived
  namespace: openshift-openstack-infra
  creationTimestamp:
  deletionGracePeriodSeconds: 65
  labels:
    app: openstack-infra-vrrp
spec:
  volumes:
  - name: resource-dir
    hostPath:
      path: "/etc/kubernetes/static-pod-resources/keepalived"
  - name: kubeconfig
    hostPath:
      path: "/etc/kubernetes/kubeconfig"
  - name: conf-dir
    empty-dir: {}
  - name: manifests
    hostPath:
      path: "/opt/openshift/manifests"
  initContainers:
  - name: render-config
    image: {{ .Images.BaremetalRuntimeCfgBootstrap }}
    command:
    - runtimecfg
    - render
    - "/etc/kubernetes/kubeconfig"
    - "--api-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.OpenStack.APIServerInternalIP }}"
    - "--dns-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.OpenStack.NodeDNSIP }}"
    - "--ingress-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.OpenStack.IngressIP }}"
    - "/config"
    - "--out-dir"
    - "/etc/keepalived"
    - "--cluster-config"
    - "/opt/openshift/manifests/cluster-config.yaml"
    resources: {}
    volumeMounts:
    - name: resource-dir
      mountPath: "/config"
    - name: kubeconfig
      mountPath: "/etc/kubernetes/kubeconfig"
    - name: conf-dir
      mountPath: "/etc/keepalived"
    - name: manifests
      mountPath: "/opt/openshift/manifests"
    imagePullPolicy: IfNotPresent
  containers:
  - name: keepalived
    securityContext:
      privileged: true
    image: {{ .Images.KeepalivedBootstrap }}
    env:
      - name: NSS_SDB_USE_CACHE
        value: "no"
    command:
    - /usr/sbin/keepalived
    args:
    - "-f"
    - "/etc/keepalived/keepalived.conf"
    - "--dont-fork"
    - "--vrrp"
    - "--log-detail"
    - "--log-console"
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: conf-dir
      mountPath: "/etc/keepalived"
    terminationMessagePolicy: FallbackToLogsOnError
    imagePullPolicy: IfNotPresent
  hostNetwork: true
  tolerations:
  - operator: Exists
  priorityClassName: system-node-critical
status: {}
`)

func manifestsOpenstackKeepalivedYamlBytes() ([]byte, error) {
	return _manifestsOpenstackKeepalivedYaml, nil
}

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

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

var _manifestsOvirtCorednsCorefileTmpl = []byte(`. {
    errors
    health :18080
    mdns {{ .ControllerConfig.EtcdDiscoveryDomain }} {{`+"`"+`{{.Cluster.MasterAmount}}`+"`"+`}} {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}
    forward . {{`+"`"+`{{- range $upstream := .DNSUpstreams}} {{$upstream}}{{- end}}`+"`"+`}}
    cache 30
    reload
    hosts /etc/coredns/api-int.hosts {{ .ControllerConfig.EtcdDiscoveryDomain }} {
        {{ .ControllerConfig.Infra.Status.PlatformStatus.Ovirt.APIServerInternalIP }} api-int.{{ .ControllerConfig.EtcdDiscoveryDomain }} api.{{ .ControllerConfig.EtcdDiscoveryDomain }}
        fallthrough
    }
}
`)

func manifestsOvirtCorednsCorefileTmplBytes() ([]byte, error) {
	return _manifestsOvirtCorednsCorefileTmpl, nil
}

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

	info := bindataFileInfo{name: "manifests/ovirt/coredns-corefile.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsOvirtCorednsYaml = []byte(`---
kind: Pod
apiVersion: v1
metadata:
  name: coredns
  namespace: openshift-ovirt-infra
  creationTimestamp:
  deletionGracePeriodSeconds: 65
  labels:
    app: ovirt-infra-mdns
spec:
  volumes:
  - name: resource-dir
    hostPath:
      path: "/etc/kubernetes/static-pod-resources/coredns"
  - name: kubeconfig
    hostPath:
      path: "/etc/kubernetes/kubeconfig"
  - name: conf-dir
    empty-dir: {}
  - name: manifests
    hostPath:
      path: "/opt/openshift/manifests"
  initContainers:
  - name: render-config
    image: {{ .Images.BaremetalRuntimeCfgBootstrap }}
    command:
    - runtimecfg
    - render
    - "/etc/kubernetes/kubeconfig"
    - "--api-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.Ovirt.APIServerInternalIP }}"
    - "--dns-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.Ovirt.NodeDNSIP }}"
    - "--ingress-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.Ovirt.IngressIP }}"
    - "/config"
    - "--out-dir"
    - "/etc/coredns"
    - "--cluster-config"
    - "/opt/openshift/manifests/cluster-config.yaml"
    resources: {}
    volumeMounts:
    - name: kubeconfig
      mountPath: "/etc/kubernetes/kubeconfig"
    - name: resource-dir
      mountPath: "/config"
    - name: conf-dir
      mountPath: "/etc/coredns"
    - name: manifests
      mountPath: "/opt/openshift/manifests"
    imagePullPolicy: IfNotPresent
  containers:
  - name: coredns
    securityContext:
      privileged: true
    image: {{ .Images.CorednsBootstrap }}
    args:
    - "--conf"
    - "/etc/coredns/Corefile"
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: conf-dir
      mountPath: "/etc/coredns"
    readinessProbe:
      httpGet:
        path: /health
        port: 18080
        scheme: HTTP
      initialDelaySeconds: 10
      periodSeconds: 10
      successThreshold: 1
      failureThreshold: 3
      timeoutSeconds: 10
    livenessProbe:
      httpGet:
        path: /health
        port: 18080
        scheme: HTTP
      initialDelaySeconds: 60
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 5
    terminationMessagePolicy: FallbackToLogsOnError
  hostNetwork: true
  tolerations:
  - operator: Exists
  priorityClassName: system-node-critical
status: {}
`)

func manifestsOvirtCorednsYamlBytes() ([]byte, error) {
	return _manifestsOvirtCorednsYaml, nil
}

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

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

var _manifestsOvirtKeepalivedConfTmpl = []byte(`# Configuration template for Keepalived, which is used to manage the DNS and
# API VIPs.
#
# For more information, see installer/data/data/bootstrap/baremetal/README.md
# in the installer repo.

vrrp_instance {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_API {
    state BACKUP
    interface {{`+"`"+`{{.VRRPInterface}}`+"`"+`}}
    virtual_router_id {{`+"`"+`{{.Cluster.APIVirtualRouterID }}`+"`"+`}}
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_api_vip
    }
    virtual_ipaddress {
        {{`+"`"+`{{ .Cluster.APIVIP }}`+"`"+`}}/{{`+"`"+`{{ .Cluster.VIPNetmask }}`+"`"+`}}
    }
}

vrrp_instance {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_DNS {
    state MASTER
    interface {{`+"`"+`{{.VRRPInterface}}`+"`"+`}}
    virtual_router_id {{`+"`"+`{{.Cluster.DNSVirtualRouterID }}`+"`"+`}}
    priority 140
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_dns_vip
    }
    virtual_ipaddress {
        {{`+"`"+`{{ .Cluster.DNSVIP }}`+"`"+`}}/{{`+"`"+`{{ .Cluster.VIPNetmask }}`+"`"+`}}
    }
}
`)

func manifestsOvirtKeepalivedConfTmplBytes() ([]byte, error) {
	return _manifestsOvirtKeepalivedConfTmpl, nil
}

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

	info := bindataFileInfo{name: "manifests/ovirt/keepalived.conf.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _manifestsOvirtKeepalivedYaml = []byte(`---
kind: Pod
apiVersion: v1
metadata:
  name: keepalived
  namespace: openshift-ovirt-infra
  creationTimestamp:
  deletionGracePeriodSeconds: 65
  labels:
    app: ovirt-infra-vrrp
spec:
  volumes:
  - name: resource-dir
    hostPath:
      path: "/etc/kubernetes/static-pod-resources/keepalived"
  - name: kubeconfig
    hostPath:
      path: "/etc/kubernetes/kubeconfig"
  - name: conf-dir
    empty-dir: {}
  - name: manifests
    hostPath:
      path: "/opt/openshift/manifests"
  initContainers:
  - name: render-config
    image: {{ .Images.BaremetalRuntimeCfgBootstrap }}
    command:
    - runtimecfg
    - render
    - "/etc/kubernetes/kubeconfig"
    - "--api-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.Ovirt.APIServerInternalIP }}"
    - "--dns-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.Ovirt.NodeDNSIP }}"
    - "--ingress-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.Ovirt.IngressIP }}"
    - "/config"
    - "--out-dir"
    - "/etc/keepalived"
    - "--cluster-config"
    - "/opt/openshift/manifests/cluster-config.yaml"
    resources: {}
    volumeMounts:
    - name: resource-dir
      mountPath: "/config"
    - name: kubeconfig
      mountPath: "/etc/kubernetes/kubeconfig"
    - name: conf-dir
      mountPath: "/etc/keepalived"
    - name: manifests
      mountPath: "/opt/openshift/manifests"
    imagePullPolicy: IfNotPresent
  containers:
  - name: keepalived
    securityContext:
      privileged: true
    image: {{ .Images.KeepalivedBootstrap }}
    env:
      - name: NSS_SDB_USE_CACHE
        value: "no"
    command:
    - /usr/sbin/keepalived
    args:
    - "-f"
    - "/etc/keepalived/keepalived.conf"
    - "--dont-fork"
    - "--vrrp"
    - "--log-detail"
    - "--log-console"
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: conf-dir
      mountPath: "/etc/keepalived"
    terminationMessagePolicy: FallbackToLogsOnError
    imagePullPolicy: IfNotPresent
  hostNetwork: true
  tolerations:
  - operator: Exists
  priorityClassName: system-node-critical
status: {}
`)

func manifestsOvirtKeepalivedYamlBytes() ([]byte, error) {
	return _manifestsOvirtKeepalivedYaml, nil
}

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

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

var _manifestsVsphereCorednsCorefileTmpl = []byte(`. {
    errors
    health :18080
    mdns {{ .ControllerConfig.EtcdDiscoveryDomain }} {{`+"`"+`{{.Cluster.MasterAmount}}`+"`"+`}} {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}
    forward . {{`+"`"+`{{- range $upstream := .DNSUpstreams}} {{$upstream}}{{- end}}`+"`"+`}}
    cache 30
    reload
    hosts /etc/coredns/api-int.hosts {{ .ControllerConfig.EtcdDiscoveryDomain }} {
        {{ .ControllerConfig.Infra.Status.PlatformStatus.VSphere.APIServerInternalIP }} api-int.{{ .ControllerConfig.EtcdDiscoveryDomain }} api.{{ .ControllerConfig.EtcdDiscoveryDomain }}
        fallthrough
    }
}
`)

func manifestsVsphereCorednsCorefileTmplBytes() ([]byte, error) {
	return _manifestsVsphereCorednsCorefileTmpl, nil
}

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

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

var _manifestsVsphereCorednsYaml = []byte(`---
kind: Pod
apiVersion: v1
metadata:
  name: coredns
  namespace: openshift-vsphere-infra
  creationTimestamp:
  deletionGracePeriodSeconds: 65
  labels:
    app: vsphere-infra-mdns
spec:
  volumes:
  - name: resource-dir
    hostPath:
      path: "/etc/kubernetes/static-pod-resources/coredns"
  - name: kubeconfig
    hostPath:
      path: "/etc/kubernetes/kubeconfig"
  - name: conf-dir
    empty-dir: {}
  - name: manifests
    hostPath:
      path: "/opt/openshift/manifests"
  initContainers:
  - name: render-config
    image: {{ .Images.BaremetalRuntimeCfgBootstrap }}
    command:
    - runtimecfg
    - render
    - "/etc/kubernetes/kubeconfig"
    - "--api-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.VSphere.APIServerInternalIP }}"
    - "--dns-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.VSphere.NodeDNSIP }}"
    - "--ingress-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.VSphere.IngressIP }}"
    - "/config"
    - "--out-dir"
    - "/etc/coredns"
    - "--cluster-config"
    - "/opt/openshift/manifests/cluster-config.yaml"
    resources: {}
    volumeMounts:
    - name: kubeconfig
      mountPath: "/etc/kubernetes/kubeconfig"
    - name: resource-dir
      mountPath: "/config"
    - name: conf-dir
      mountPath: "/etc/coredns"
    - name: manifests
      mountPath: "/opt/openshift/manifests"
    imagePullPolicy: IfNotPresent
  containers:
  - name: coredns
    securityContext:
      privileged: true
    image: {{ .Images.CorednsBootstrap }}
    args:
    - "--conf"
    - "/etc/coredns/Corefile"
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: conf-dir
      mountPath: "/etc/coredns"
    readinessProbe:
      httpGet:
        path: /health
        port: 18080
        scheme: HTTP
      initialDelaySeconds: 10
      periodSeconds: 10
      successThreshold: 1
      failureThreshold: 3
      timeoutSeconds: 10
    livenessProbe:
      httpGet:
        path: /health
        port: 18080
        scheme: HTTP
      initialDelaySeconds: 60
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 5
    terminationMessagePolicy: FallbackToLogsOnError
  hostNetwork: true
  tolerations:
  - operator: Exists
  priorityClassName: system-node-critical
status: {}
`)

func manifestsVsphereCorednsYamlBytes() ([]byte, error) {
	return _manifestsVsphereCorednsYaml, nil
}

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

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

var _manifestsVsphereKeepalivedConfTmpl = []byte(`# Configuration template for Keepalived, which is used to manage the DNS and
# API VIPs.
#
# For more information, see installer/data/data/bootstrap/baremetal/README.md
# in the installer repo.

vrrp_instance {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_API {
    state BACKUP
    interface {{`+"`"+`{{.VRRPInterface}}`+"`"+`}}
    virtual_router_id {{`+"`"+`{{.Cluster.APIVirtualRouterID }}`+"`"+`}}
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_api_vip
    }
    virtual_ipaddress {
        {{`+"`"+`{{ .Cluster.APIVIP }}`+"`"+`}}/{{`+"`"+`{{ .Cluster.VIPNetmask }}`+"`"+`}}
    }
}

vrrp_instance {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_DNS {
    state MASTER
    interface {{`+"`"+`{{.VRRPInterface}}`+"`"+`}}
    virtual_router_id {{`+"`"+`{{.Cluster.DNSVirtualRouterID }}`+"`"+`}}
    priority 140
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass {{`+"`"+`{{.Cluster.Name}}`+"`"+`}}_dns_vip
    }
    virtual_ipaddress {
        {{`+"`"+`{{ .Cluster.DNSVIP }}`+"`"+`}}/{{`+"`"+`{{ .Cluster.VIPNetmask }}`+"`"+`}}
    }
}
`)

func manifestsVsphereKeepalivedConfTmplBytes() ([]byte, error) {
	return _manifestsVsphereKeepalivedConfTmpl, nil
}

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

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

var _manifestsVsphereKeepalivedYaml = []byte(`---
kind: Pod
apiVersion: v1
metadata:
  name: keepalived
  namespace: openshift-vsphere-infra
  creationTimestamp:
  deletionGracePeriodSeconds: 65
  labels:
    app: vsphere-infra-vrrp
spec:
  volumes:
  - name: resource-dir
    hostPath:
      path: "/etc/kubernetes/static-pod-resources/keepalived"
  - name: kubeconfig
    hostPath:
      path: "/etc/kubernetes/kubeconfig"
  - name: conf-dir
    empty-dir: {}
  - name: manifests
    hostPath:
      path: "/opt/openshift/manifests"
  initContainers:
  - name: render-config
    image: {{ .Images.BaremetalRuntimeCfgBootstrap }}
    command:
    - runtimecfg
    - render
    - "/etc/kubernetes/kubeconfig"
    - "--api-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.VSphere.APIServerInternalIP }}"
    - "--dns-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.VSphere.NodeDNSIP }}"
    - "--ingress-vip"
    - "{{ .ControllerConfig.Infra.Status.PlatformStatus.VSphere.IngressIP }}"
    - "/config"
    - "--out-dir"
    - "/etc/keepalived"
    - "--cluster-config"
    - "/opt/openshift/manifests/cluster-config.yaml"
    resources: {}
    volumeMounts:
    - name: resource-dir
      mountPath: "/config"
    - name: kubeconfig
      mountPath: "/etc/kubernetes/kubeconfig"
    - name: conf-dir
      mountPath: "/etc/keepalived"
    - name: manifests
      mountPath: "/opt/openshift/manifests"
    imagePullPolicy: IfNotPresent
  containers:
  - name: keepalived
    securityContext:
      privileged: true
    image: {{ .Images.KeepalivedBootstrap }}
    env:
      - name: NSS_SDB_USE_CACHE
        value: "no"
    command:
    - /usr/sbin/keepalived
    args:
    - "-f"
    - "/etc/keepalived/keepalived.conf"
    - "--dont-fork"
    - "--vrrp"
    - "--log-detail"
    - "--log-console"
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: conf-dir
      mountPath: "/etc/keepalived"
    terminationMessagePolicy: FallbackToLogsOnError
    imagePullPolicy: IfNotPresent
  hostNetwork: true
  tolerations:
  - operator: Exists
  priorityClassName: system-node-critical
status: {}
`)

func manifestsVsphereKeepalivedYamlBytes() ([]byte, error) {
	return _manifestsVsphereKeepalivedYaml, nil
}

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

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

var _manifestsWorkerMachineconfigpoolYaml = []byte(`apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfigPool
metadata:
  name: worker
  labels:
    "machineconfiguration.openshift.io/mco-built-in": ""
spec:
  machineConfigSelector:
    matchLabels:
      "machineconfiguration.openshift.io/role": "worker"
  nodeSelector:
    matchLabels:
      node-role.kubernetes.io/worker: ""`)

func manifestsWorkerMachineconfigpoolYamlBytes() ([]byte, error) {
	return _manifestsWorkerMachineconfigpoolYaml, nil
}

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

	info := bindataFileInfo{name: "manifests/worker.machineconfigpool.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){
	"manifests/baremetal/coredns-corefile.tmpl":                              manifestsBaremetalCorednsCorefileTmpl,
	"manifests/baremetal/coredns.yaml":                                       manifestsBaremetalCorednsYaml,
	"manifests/baremetal/keepalived.conf.tmpl":                               manifestsBaremetalKeepalivedConfTmpl,
	"manifests/baremetal/keepalived.yaml":                                    manifestsBaremetalKeepalivedYaml,
	"manifests/bootstrap-pod-v2.yaml":                                        manifestsBootstrapPodV2Yaml,
	"manifests/containerruntimeconfig.crd.yaml":                              manifestsContainerruntimeconfigCrdYaml,
	"manifests/controllerconfig.crd.yaml":                                    manifestsControllerconfigCrdYaml,
	"manifests/kubeletconfig.crd.yaml":                                       manifestsKubeletconfigCrdYaml,
	"manifests/machineconfig.crd.yaml":                                       manifestsMachineconfigCrdYaml,
	"manifests/machineconfigcontroller/clusterrole.yaml":                     manifestsMachineconfigcontrollerClusterroleYaml,
	"manifests/machineconfigcontroller/clusterrolebinding.yaml":              manifestsMachineconfigcontrollerClusterrolebindingYaml,
	"manifests/machineconfigcontroller/controllerconfig.yaml":                manifestsMachineconfigcontrollerControllerconfigYaml,
	"manifests/machineconfigcontroller/deployment.yaml":                      manifestsMachineconfigcontrollerDeploymentYaml,
	"manifests/machineconfigcontroller/sa.yaml":                              manifestsMachineconfigcontrollerSaYaml,
	"manifests/machineconfigdaemon/clusterrole.yaml":                         manifestsMachineconfigdaemonClusterroleYaml,
	"manifests/machineconfigdaemon/clusterrolebinding.yaml":                  manifestsMachineconfigdaemonClusterrolebindingYaml,
	"manifests/machineconfigdaemon/cookie-secret.yaml":                       manifestsMachineconfigdaemonCookieSecretYaml,
	"manifests/machineconfigdaemon/daemonset.yaml":                           manifestsMachineconfigdaemonDaemonsetYaml,
	"manifests/machineconfigdaemon/events-clusterrole.yaml":                  manifestsMachineconfigdaemonEventsClusterroleYaml,
	"manifests/machineconfigdaemon/events-rolebinding-default.yaml":          manifestsMachineconfigdaemonEventsRolebindingDefaultYaml,
	"manifests/machineconfigdaemon/events-rolebinding-target.yaml":           manifestsMachineconfigdaemonEventsRolebindingTargetYaml,
	"manifests/machineconfigdaemon/sa.yaml":                                  manifestsMachineconfigdaemonSaYaml,
	"manifests/machineconfigpool.crd.yaml":                                   manifestsMachineconfigpoolCrdYaml,
	"manifests/machineconfigserver/clusterrole.yaml":                         manifestsMachineconfigserverClusterroleYaml,
	"manifests/machineconfigserver/clusterrolebinding.yaml":                  manifestsMachineconfigserverClusterrolebindingYaml,
	"manifests/machineconfigserver/csr-bootstrap-role-binding.yaml":          manifestsMachineconfigserverCsrBootstrapRoleBindingYaml,
	"manifests/machineconfigserver/csr-renewal-role-binding.yaml":            manifestsMachineconfigserverCsrRenewalRoleBindingYaml,
	"manifests/machineconfigserver/daemonset.yaml":                           manifestsMachineconfigserverDaemonsetYaml,
	"manifests/machineconfigserver/kube-apiserver-serving-ca-configmap.yaml": manifestsMachineconfigserverKubeApiserverServingCaConfigmapYaml,
	"manifests/machineconfigserver/node-bootstrapper-sa.yaml":                manifestsMachineconfigserverNodeBootstrapperSaYaml,
	"manifests/machineconfigserver/node-bootstrapper-token.yaml":             manifestsMachineconfigserverNodeBootstrapperTokenYaml,
	"manifests/machineconfigserver/sa.yaml":                                  manifestsMachineconfigserverSaYaml,
	"manifests/master.machineconfigpool.yaml":                                manifestsMasterMachineconfigpoolYaml,
	"manifests/openstack/coredns-corefile.tmpl":                              manifestsOpenstackCorednsCorefileTmpl,
	"manifests/openstack/coredns.yaml":                                       manifestsOpenstackCorednsYaml,
	"manifests/openstack/keepalived.conf.tmpl":                               manifestsOpenstackKeepalivedConfTmpl,
	"manifests/openstack/keepalived.yaml":                                    manifestsOpenstackKeepalivedYaml,
	"manifests/ovirt/coredns-corefile.tmpl":                                  manifestsOvirtCorednsCorefileTmpl,
	"manifests/ovirt/coredns.yaml":                                           manifestsOvirtCorednsYaml,
	"manifests/ovirt/keepalived.conf.tmpl":                                   manifestsOvirtKeepalivedConfTmpl,
	"manifests/ovirt/keepalived.yaml":                                        manifestsOvirtKeepalivedYaml,
	"manifests/vsphere/coredns-corefile.tmpl":                                manifestsVsphereCorednsCorefileTmpl,
	"manifests/vsphere/coredns.yaml":                                         manifestsVsphereCorednsYaml,
	"manifests/vsphere/keepalived.conf.tmpl":                                 manifestsVsphereKeepalivedConfTmpl,
	"manifests/vsphere/keepalived.yaml":                                      manifestsVsphereKeepalivedYaml,
	"manifests/worker.machineconfigpool.yaml":                                manifestsWorkerMachineconfigpoolYaml,
}

// 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{
	"manifests": &bintree{nil, map[string]*bintree{
		"baremetal": &bintree{nil, map[string]*bintree{
			"coredns-corefile.tmpl": &bintree{manifestsBaremetalCorednsCorefileTmpl, map[string]*bintree{}},
			"coredns.yaml":          &bintree{manifestsBaremetalCorednsYaml, map[string]*bintree{}},
			"keepalived.conf.tmpl":  &bintree{manifestsBaremetalKeepalivedConfTmpl, map[string]*bintree{}},
			"keepalived.yaml":       &bintree{manifestsBaremetalKeepalivedYaml, map[string]*bintree{}},
		}},
		"bootstrap-pod-v2.yaml":           &bintree{manifestsBootstrapPodV2Yaml, map[string]*bintree{}},
		"containerruntimeconfig.crd.yaml": &bintree{manifestsContainerruntimeconfigCrdYaml, map[string]*bintree{}},
		"controllerconfig.crd.yaml":       &bintree{manifestsControllerconfigCrdYaml, map[string]*bintree{}},
		"kubeletconfig.crd.yaml":          &bintree{manifestsKubeletconfigCrdYaml, map[string]*bintree{}},
		"machineconfig.crd.yaml":          &bintree{manifestsMachineconfigCrdYaml, map[string]*bintree{}},
		"machineconfigcontroller": &bintree{nil, map[string]*bintree{
			"clusterrole.yaml":        &bintree{manifestsMachineconfigcontrollerClusterroleYaml, map[string]*bintree{}},
			"clusterrolebinding.yaml": &bintree{manifestsMachineconfigcontrollerClusterrolebindingYaml, map[string]*bintree{}},
			"controllerconfig.yaml":   &bintree{manifestsMachineconfigcontrollerControllerconfigYaml, map[string]*bintree{}},
			"deployment.yaml":         &bintree{manifestsMachineconfigcontrollerDeploymentYaml, map[string]*bintree{}},
			"sa.yaml":                 &bintree{manifestsMachineconfigcontrollerSaYaml, map[string]*bintree{}},
		}},
		"machineconfigdaemon": &bintree{nil, map[string]*bintree{
			"clusterrole.yaml":                &bintree{manifestsMachineconfigdaemonClusterroleYaml, map[string]*bintree{}},
			"clusterrolebinding.yaml":         &bintree{manifestsMachineconfigdaemonClusterrolebindingYaml, map[string]*bintree{}},
			"cookie-secret.yaml":              &bintree{manifestsMachineconfigdaemonCookieSecretYaml, map[string]*bintree{}},
			"daemonset.yaml":                  &bintree{manifestsMachineconfigdaemonDaemonsetYaml, map[string]*bintree{}},
			"events-clusterrole.yaml":         &bintree{manifestsMachineconfigdaemonEventsClusterroleYaml, map[string]*bintree{}},
			"events-rolebinding-default.yaml": &bintree{manifestsMachineconfigdaemonEventsRolebindingDefaultYaml, map[string]*bintree{}},
			"events-rolebinding-target.yaml":  &bintree{manifestsMachineconfigdaemonEventsRolebindingTargetYaml, map[string]*bintree{}},
			"sa.yaml":                         &bintree{manifestsMachineconfigdaemonSaYaml, map[string]*bintree{}},
		}},
		"machineconfigpool.crd.yaml": &bintree{manifestsMachineconfigpoolCrdYaml, map[string]*bintree{}},
		"machineconfigserver": &bintree{nil, map[string]*bintree{
			"clusterrole.yaml":                         &bintree{manifestsMachineconfigserverClusterroleYaml, map[string]*bintree{}},
			"clusterrolebinding.yaml":                  &bintree{manifestsMachineconfigserverClusterrolebindingYaml, map[string]*bintree{}},
			"csr-bootstrap-role-binding.yaml":          &bintree{manifestsMachineconfigserverCsrBootstrapRoleBindingYaml, map[string]*bintree{}},
			"csr-renewal-role-binding.yaml":            &bintree{manifestsMachineconfigserverCsrRenewalRoleBindingYaml, map[string]*bintree{}},
			"daemonset.yaml":                           &bintree{manifestsMachineconfigserverDaemonsetYaml, map[string]*bintree{}},
			"kube-apiserver-serving-ca-configmap.yaml": &bintree{manifestsMachineconfigserverKubeApiserverServingCaConfigmapYaml, map[string]*bintree{}},
			"node-bootstrapper-sa.yaml":                &bintree{manifestsMachineconfigserverNodeBootstrapperSaYaml, map[string]*bintree{}},
			"node-bootstrapper-token.yaml":             &bintree{manifestsMachineconfigserverNodeBootstrapperTokenYaml, map[string]*bintree{}},
			"sa.yaml":                                  &bintree{manifestsMachineconfigserverSaYaml, map[string]*bintree{}},
		}},
		"master.machineconfigpool.yaml": &bintree{manifestsMasterMachineconfigpoolYaml, map[string]*bintree{}},
		"openstack": &bintree{nil, map[string]*bintree{
			"coredns-corefile.tmpl": &bintree{manifestsOpenstackCorednsCorefileTmpl, map[string]*bintree{}},
			"coredns.yaml":          &bintree{manifestsOpenstackCorednsYaml, map[string]*bintree{}},
			"keepalived.conf.tmpl":  &bintree{manifestsOpenstackKeepalivedConfTmpl, map[string]*bintree{}},
			"keepalived.yaml":       &bintree{manifestsOpenstackKeepalivedYaml, map[string]*bintree{}},
		}},
		"ovirt": &bintree{nil, map[string]*bintree{
			"coredns-corefile.tmpl": &bintree{manifestsOvirtCorednsCorefileTmpl, map[string]*bintree{}},
			"coredns.yaml":          &bintree{manifestsOvirtCorednsYaml, map[string]*bintree{}},
			"keepalived.conf.tmpl":  &bintree{manifestsOvirtKeepalivedConfTmpl, map[string]*bintree{}},
			"keepalived.yaml":       &bintree{manifestsOvirtKeepalivedYaml, map[string]*bintree{}},
		}},
		"vsphere": &bintree{nil, map[string]*bintree{
			"coredns-corefile.tmpl": &bintree{manifestsVsphereCorednsCorefileTmpl, map[string]*bintree{}},
			"coredns.yaml":          &bintree{manifestsVsphereCorednsYaml, map[string]*bintree{}},
			"keepalived.conf.tmpl":  &bintree{manifestsVsphereKeepalivedConfTmpl, map[string]*bintree{}},
			"keepalived.yaml":       &bintree{manifestsVsphereKeepalivedYaml, map[string]*bintree{}},
		}},
		"worker.machineconfigpool.yaml": &bintree{manifestsWorkerMachineconfigpoolYaml, 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, "/")...)...)
}
