apiVersion: apiextensions.k8s.io/v1
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
  # either Namespaced or Cluster
  scope: Cluster
  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
  # 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
    subresources:
      status: {}
    schema:
      openAPIV3Schema:
        description: ControllerConfig describes configuration for MachineConfigController.
          This is currently only used to drive the MachineConfig objects generated
          by the TemplateController.
        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.
            properties:
              additionalTrustBundle:
                description: additionalTrustBundle is a certificate bundle that will
                  be added to the nodes trusted certificate store.
                format: byte
                nullable: true
                type: string
              cloudProviderCAData:
                description: cloudProvider specifies the cloud provider CA data
                format: byte
                nullable: true
                type: string
              cloudProviderConfig:
                description: cloudProviderConfig is the configuration for the given
                  cloud provider
                type: string
              clusterDNSIP:
                description: clusterDNSIP is the cluster DNS IP address
                type: string
              dns:
                description: dns holds the cluster dns details
                nullable: true
                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
                    properties:
                      baseDomain:
                        description: "baseDomain is the base domain of the cluster.
                          All managed DNS records will be sub-domains of this base.
                          \n For example, given the base domain `openshift.example.com`,
                          an API server DNS record may be created for `cluster-api.openshift.example.com`.
                          \n Once set, this field cannot be changed."
                        type: string
                      privateZone:
                        description: "privateZone is the location where all the DNS
                          records that are only available internally to the cluster
                          exist. \n If this field is nil, no private records should
                          be created. \n Once set, this field cannot be changed."
                        properties:
                          id:
                            description: "id is the identifier that can be used to
                              find the DNS hosted zone. \n on AWS zone can be fetched
                              using `ID` as id in [1] on Azure zone can be fetched
                              using `ID` as a pre-determined name in [2], on GCP zone
                              can be fetched using `ID` as a pre-determined name in
                              [3]. \n [1]: https://docs.aws.amazon.com/cli/latest/reference/route53/get-hosted-zone.html#options
                              [2]: https://docs.microsoft.com/en-us/cli/azure/network/dns/zone?view=azure-cli-latest#az-network-dns-zone-show
                              [3]: https://cloud.google.com/dns/docs/reference/v1/managedZones/get"
                            type: string
                          tags:
                            additionalProperties:
                              type: string
                            description: "tags can be used to query the DNS hosted
                              zone. \n on AWS, resourcegroupstaggingapi [1] can be
                              used to fetch a zone using `Tags` as tag-filters, \n
                              [1]: https://docs.aws.amazon.com/cli/latest/reference/resourcegroupstaggingapi/get-resources.html#options"
                            type: object
                        type: object
                      publicZone:
                        description: "publicZone is the location where all the DNS
                          records that are publicly accessible to the internet exist.
                          \n If this field is nil, no public records should be created.
                          \n Once set, this field cannot be changed."
                        properties:
                          id:
                            description: "id is the identifier that can be used to
                              find the DNS hosted zone. \n on AWS zone can be fetched
                              using `ID` as id in [1] on Azure zone can be fetched
                              using `ID` as a pre-determined name in [2], on GCP zone
                              can be fetched using `ID` as a pre-determined name in
                              [3]. \n [1]: https://docs.aws.amazon.com/cli/latest/reference/route53/get-hosted-zone.html#options
                              [2]: https://docs.microsoft.com/en-us/cli/azure/network/dns/zone?view=azure-cli-latest#az-network-dns-zone-show
                              [3]: https://cloud.google.com/dns/docs/reference/v1/managedZones/get"
                            type: string
                          tags:
                            additionalProperties:
                              type: string
                            description: "tags can be used to query the DNS hosted
                              zone. \n on AWS, resourcegroupstaggingapi [1] can be
                              used to fetch a zone using `Tags` as tag-filters, \n
                              [1]: https://docs.aws.amazon.com/cli/latest/reference/resourcegroupstaggingapi/get-resources.html#options"
                            type: object
                        type: object
                    type: object
                  status:
                    description: status holds observed values from the cluster. They
                      may not be overridden.
                    type: object
                required:
                - spec
                type: object
              etcdDiscoveryDomain:
                description: etcdDiscoveryDomain is deprecated, use Infra.Status.EtcdDiscoveryDomain
                  instead
                type: string
              images:
                additionalProperties:
                  type: string
                description: images is map of images that are used by the controller
                  to render templates under ./templates/
                type: object
              infra:
                description: infra holds the infrastructure details
                nullable: true
                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
                    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. \n cloudConfig
                          should only be consumed by the kube_cloud_config controller.
                          The controller is responsible for using the user configuration
                          in the spec for various platforms and combining that with
                          the user provided ConfigMap in this field to create a stitched
                          kube cloud config. The controller generates a ConfigMap
                          `kube-cloud-config` in `openshift-config-managed` namespace
                          with the kube cloud config is stored in `cloud.conf` key.
                          All the clients are expected to use the generated ConfigMap
                          only."
                        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
                        type: object
                      platformSpec:
                        description: platformSpec holds desired information specific
                          to the underlying infrastructure provider.
                        properties:
                          alibabaCloud:
                            description: AlibabaCloud contains settings specific to the
                              AlibabaCloud infrastructure provider.
                            type: object
                          aws:
                            description: AWS contains settings specific to the Amazon
                              Web Services infrastructure provider.
                            properties:
                              serviceEndpoints:
                                description: serviceEndpoints list contains custom
                                  endpoints which will override default service endpoint
                                  of AWS Services. There must be only one ServiceEndpoint
                                  for a service.
                                items:
                                  description: AWSServiceEndpoint store the configuration
                                    of a custom url to override existing defaults
                                    of AWS Services.
                                  properties:
                                    name:
                                      description: name is the name of the AWS service.
                                        The list of all the service names can be found
                                        at https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html
                                        This must be provided and cannot be empty.
                                      pattern: ^[a-z0-9-]+$
                                      type: string
                                    url:
                                      description: url is fully qualified URI with
                                        scheme https, that overrides the default generated
                                        endpoint for a client. This must be provided
                                        and cannot be empty.
                                      pattern: ^https://
                                      type: string
                                  type: object
                                type: array
                            type: object
                          azure:
                            description: Azure contains settings specific to the Azure
                              infrastructure provider.
                            type: object
                          baremetal:
                            description: BareMetal contains settings specific to the
                              BareMetal platform.
                            type: object
                          equinixMetal:
                            description: EquinixMetal contains settings specific to
                              the Equinix Metal infrastructure provider.
                            type: object
                          gcp:
                            description: GCP contains settings specific to the Google
                              Cloud Platform infrastructure provider.
                            type: object
                          ibmcloud:
                            description: IBMCloud contains settings specific to the
                              IBMCloud infrastructure provider.
                            type: object
                          kubevirt:
                            description: Kubevirt contains settings specific to the
                              kubevirt infrastructure provider.
                            type: object
                          openstack:
                            description: OpenStack contains settings specific to the
                              OpenStack infrastructure provider.
                            type: object
                          ovirt:
                            description: Ovirt contains settings specific to the oVirt
                              infrastructure provider.
                            type: object
                          powervs:
                            description: PowerVS contains settings specific to the
                              IBM Power Systems Virtual Servers infrastructure provider.
                            type: object
                          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 "AlibabaCloud", "AWS",
                              "Azure", "BareMetal", "GCP", "Libvirt", "OpenStack", "VSphere",
                              "oVirt", "KubeVirt", "EquinixMetal", "PowerVS" and "None".
                              Individual components may not support all platforms, and must handle
                              unrecognized platforms as None if they do not support
                              that platform.
                            enum:
                            - ""
                            - AlibabaCloud
                            - AWS
                            - Azure
                            - BareMetal
                            - GCP
                            - Libvirt
                            - OpenStack
                            - None
                            - VSphere
                            - oVirt
                            - IBMCloud
                            - KubeVirt
                            - EquinixMetal
                            - PowerVS
                            type: string
                          vsphere:
                            description: VSphere contains settings specific to the
                              VSphere infrastructure provider.
                            type: object
                        type: object
                    type: object
                  status:
                    description: status holds observed values from the cluster. They
                      may not be overridden.
                    properties:
                      apiServerInternalURI:
                        description: apiServerInternalURL is a valid URI with scheme
                          'https', address and optionally a port (defaulting to 443).  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 'https',
                          address and optionally a port (defaulting to 443).  apiServerURL
                          can be used by components like the web console to tell users
                          where to find the Kubernetes API.
                        type: string
                      controlPlaneTopology:
                        default: HighlyAvailable
                        description: controlPlaneTopology expresses the expectations
                          for operands that normally run on control nodes. The default
                          is 'HighlyAvailable', which represents the behavior operators
                          have in a "normal" cluster. The 'SingleReplica' mode will
                          be used in single-node deployments and the operators should
                          not configure the operand for highly-available operation
                          The 'External' mode indicates that the control plane is
                          hosted externally to the cluster and that its components
                          are not visible within the cluster.
                        enum:
                        - HighlyAvailable
                        - SingleReplica
                        - External
                        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
                          deprecated: as of 4.7, this field is no longer set or honored.  It
                          will be removed in a future release.'
                        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
                      infrastructureTopology:
                        default: HighlyAvailable
                        description: infrastructureTopology expresses the expectations
                          for infrastructure services that do not run on control plane
                          nodes, usually indicated by a node selector for a `role`
                          value other than `master`. The default is 'HighlyAvailable',
                          which represents the behavior operators have in a "normal"
                          cluster. The 'SingleReplica' mode will be used in single-node
                          deployments and the operators should not configure the operand
                          for highly-available operation
                        enum:
                        - HighlyAvailable
                        - SingleReplica
                        - External
                        type: string
                      platform:
                        description: "platform is the underlying infrastructure provider
                          for the cluster. \n Deprecated: Use platformStatus.type
                          instead."
                        enum:
                        - ""
                        - AlibabaCloud
                        - AWS
                        - Azure
                        - BareMetal
                        - GCP
                        - Libvirt
                        - OpenStack
                        - None
                        - VSphere
                        - oVirt
                        - IBMCloud
                        - KubeVirt
                        - EquinixMetal
                        - PowerVS
                        type: string
                      platformStatus:
                        description: platformStatus holds status information specific
                          to the underlying infrastructure provider.
                        properties:
                          alibabaCloud:
                            description: AlibabaCloud contains settings specific to the Alibaba Cloud infrastructure provider.
                            type: object
                            required:
                              - region
                              - resourceGroupID
                            properties:
                              region:
                                description: region specifies the region for Alibaba Cloud resources created for the cluster.
                                type: string
                                pattern: ^[0-9A-Za-z-]+$
                              resourceGroupID:
                                description: resourceGroupID is the ID of the resource group for the cluster.
                                type: string
                                pattern: ^rg-[0-9A-Za-z]+$
                              resourceTags:
                                description: resourceTags is a list of additional tags to apply to Alibaba Cloud resources created for the cluster.
                                type: array
                                maxItems: 20
                                items:
                                  description: AlibabaCloudResourceTag is the set of tags to add to apply to resources.
                                  type: object
                                  required:
                                    - key
                                    - value
                                  properties:
                                    key:
                                      description: key is the key of the tag.
                                      type: string
                                      maxLength: 128
                                      minLength: 1
                                    value:
                                      description: value is the value of the tag.
                                      type: string
                                      maxLength: 128
                                      minLength: 1
                                x-kubernetes-list-map-keys:
                                  - key
                                x-kubernetes-list-type: map
                          aws:
                            description: AWS contains settings specific to the Amazon
                              Web Services infrastructure provider.
                            properties:
                              region:
                                description: region holds the default AWS region for
                                  new AWS resources created by the cluster.
                                type: string
                              resourceTags:
                                description: resourceTags is a list of additional
                                  tags to apply to AWS resources created for the cluster.
                                  See https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html
                                  for information on tagging AWS resources. AWS supports
                                  a maximum of 50 tags per resource. OpenShift reserves
                                  25 tags for its use, leaving 25 tags available for
                                  the user.
                                items:
                                  description: AWSResourceTag is a tag to apply to
                                    AWS resources created for the cluster.
                                  properties:
                                    key:
                                      description: key is the key of the tag
                                      maxLength: 128
                                      minLength: 1
                                      pattern: ^[0-9A-Za-z_.:/=+-@]+$
                                      type: string
                                    value:
                                      description: value is the value of the tag.
                                        Some AWS service do not support empty values.
                                        Since tags are added to resources in many
                                        services, the length of the tag value must
                                        meet the requirements of all services.
                                      maxLength: 256
                                      minLength: 1
                                      pattern: ^[0-9A-Za-z_.:/=+-@]+$
                                      type: string
                                  required:
                                  - key
                                  - value
                                  type: object
                                maxItems: 25
                                type: array
                              serviceEndpoints:
                                description: ServiceEndpoints list contains custom
                                  endpoints which will override default service endpoint
                                  of AWS Services. There must be only one ServiceEndpoint
                                  for a service.
                                items:
                                  description: AWSServiceEndpoint store the configuration
                                    of a custom url to override existing defaults
                                    of AWS Services.
                                  properties:
                                    name:
                                      description: name is the name of the AWS service.
                                        The list of all the service names can be found
                                        at https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html
                                        This must be provided and cannot be empty.
                                      pattern: ^[a-z0-9-]+$
                                      type: string
                                    url:
                                      description: url is fully qualified URI with
                                        scheme https, that overrides the default generated
                                        endpoint for a client. This must be provided
                                        and cannot be empty.
                                      pattern: ^https://
                                      type: string
                                  type: object
                                type: array
                            type: object
                          azure:
                            description: Azure contains settings specific to the Azure
                              infrastructure provider.
                            properties:
                              armEndpoint:
                                description: armEndpoint specifies a URL to use for
                                  resource management in non-soverign clouds such
                                  as Azure Stack.
                                type: string
                              cloudName:
                                description: cloudName is the name of the Azure cloud
                                  environment which can be used to configure the Azure
                                  SDK with the appropriate Azure API endpoints. If
                                  empty, the value is equal to `AzurePublicCloud`.
                                enum:
                                - ""
                                - AzurePublicCloud
                                - AzureUSGovernmentCloud
                                - AzureChinaCloud
                                - AzureGermanCloud
                                - AzureStackCloud
                                type: string
                              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
                            type: object
                          baremetal:
                            description: BareMetal contains settings specific to the
                              BareMetal platform.
                            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
                            type: object
                          equinixMetal:
                            description: EquinixMetal contains settings specific to
                              the Equinix Metal infrastructure provider.
                            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
                            type: object
                          gcp:
                            description: GCP contains settings specific to the Google
                              Cloud Platform infrastructure provider.
                            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
                            type: object
                          ibmcloud:
                            description: IBMCloud contains settings specific to the
                              IBMCloud infrastructure provider.
                            properties:
                              cisInstanceCRN:
                                description: CISInstanceCRN is the CRN of the Cloud
                                  Internet Services instance managing the DNS zone
                                  for the cluster's base domain
                                type: string
                              location:
                                description: Location is where the cluster has been
                                  deployed
                                type: string
                              providerType:
                                description: ProviderType indicates the type of cluster
                                  that was created
                                type: string
                              resourceGroupName:
                                description: ResourceGroupName is the Resource Group
                                  for new IBMCloud resources created for the cluster.
                                type: string
                            type: object
                          kubevirt:
                            description: Kubevirt contains settings specific to the
                              kubevirt infrastructure provider.
                            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
                            type: object
                          openstack:
                            description: OpenStack contains settings specific to the
                              OpenStack infrastructure provider.
                            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
                            type: object
                          ovirt:
                            description: Ovirt contains settings specific to the oVirt
                              infrastructure provider.
                            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: 'deprecated: as of 4.6, this field is
                                  no longer set or honored.  It will be removed in
                                  a future release.'
                                type: string
                            type: object
                          powervs:
                            description: PowerVS contains settings specific to the
                              Power Systems Virtual Servers infrastructure provider.
                            properties:
                              cisInstanceCRN:
                                description: CISInstanceCRN is the CRN of the Cloud
                                  Internet Services instance managing the DNS zone
                                  for the cluster's base domain
                                type: string
                              region:
                                description: region holds the default Power VS region
                                  for new Power VS resources created by the cluster.
                                type: string
                              serviceEndpoints:
                                description: serviceEndpoints is a list of custom
                                  endpoints which will override the default service
                                  endpoints of a Power VS service.
                                items:
                                  description: PowervsServiceEndpoint stores the configuration
                                    of a custom url to override existing defaults
                                    of PowerVS Services.
                                  properties:
                                    name:
                                      description: name is the name of the Power VS
                                        service.
                                      pattern: ^[a-z0-9-]+$
                                      type: string
                                    url:
                                      description: url is fully qualified URI with
                                        scheme https, that overrides the default generated
                                        endpoint for a client. This must be provided
                                        and cannot be empty.
                                      format: uri
                                      pattern: ^https://
                                      type: string
                                  required:
                                  - name
                                  - url
                                  type: object
                                type: array
                              zone:
                                description: 'zone holds the default zone for the
                                  new Power VS resources created by the cluster. Note:
                                  Currently only single-zone OCP clusters are supported'
                                type: string
                            type: object
                          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 \"AlibabaCloud\",
                              \"AWS\", \"Azure\", \"BareMetal\", \"GCP\", \"Libvirt\",
                              \"OpenStack\", \"VSphere\", \"oVirt\", \"EquinixMetal\", \"PowerVS\"
                              and \"None\". Individual components may not support all platforms,
                              and must handle unrecognized platforms as None if they
                              do not support that platform. \n This value will be
                              synced with to the `status.platform` and `status.platformStatus.type`.
                              Currently this value cannot be changed once set."
                            enum:
                            - ""
                            - AlibabaCloud
                            - AWS
                            - Azure
                            - BareMetal
                            - GCP
                            - Libvirt
                            - OpenStack
                            - None
                            - VSphere
                            - oVirt
                            - IBMCloud
                            - KubeVirt
                            - EquinixMetal
                            - PowerVS
                            type: string
                          vsphere:
                            description: VSphere contains settings specific to the
                              VSphere infrastructure provider.
                            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
                            type: object
                        type: object
                    type: object
                required:
                - spec
                type: object
              ipFamilies:
                description: ipFamilies indicates the IP families in use by the cluster
                  network
                type: string
              kubeAPIServerServingCAData:
                description: kubeAPIServerServingCAData managed Kubelet to API Server
                  Cert... Rotated automatically
                format: byte
                type: string
              networkType:
                description: 'networkType holds the type of network the cluster is
                  using XXX: this is temporary and will be dropped as soon as possible
                  in favor of a better support to start network related services the
                  proper way. Nobody is also changing this once the cluster is up
                  and running the first time, so, disallow regeneration if this changes.'
                type: string
              network:
                description: network contains additional network related information
                nullable: true
                properties:
                  mtuMigration:
                    description: mtuMigration contains the MTU migration configuration.
                    nullable: true
                    properties:
                      machine:
                        description: machine contains MTU migration configuration
                          for the machine's uplink.
                        nullable: true
                        properties:
                          from:
                            description: from is the MTU to migrate from.
                            nullable: true
                            format: int32
                            minimum: 0
                            type: integer
                          to:
                            description: to is the MTU to migrate to.
                            nullable: true
                            format: int32
                            minimum: 0
                            type: integer
                        type: object
                      network:
                        description: network contains information about MTU migration
                          for the default network.
                        nullable: true
                        properties:
                          from:
                            description: from is the MTU to migrate from.
                            nullable: true
                            format: int32
                            minimum: 0
                            type: integer
                          to:
                            description: to is the MTU to migrate to.
                            nullable: true
                            format: int32
                            minimum: 0
                            type: integer
                        type: object
                    type: object
                type: object
              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: platform is deprecated, use Infra.Status.PlatformStatus.Type
                  instead
                type: string
              proxy:
                description: proxy holds the current proxy configuration for the nodes
                nullable: true
                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
                type: object
              pullSecret:
                description: pullSecret is the default pull secret that needs to be
                  installed on all machines.
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: 'If referring to a piece of an object instead of
                      an entire object, this string should contain a valid JSON/Go
                      field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within
                      a pod, this would take on a value like: "spec.containers{name}"
                      (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]"
                      (container with index 2 in this pod). This syntax is chosen
                      only to have some well-defined way of referencing a part of
                      an object. TODO: this design is not final and this field is
                      subject to change in the future.'
                    type: string
                  kind:
                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                  resourceVersion:
                    description: 'Specific resourceVersion to which this reference
                      is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                    type: string
                  uid:
                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                    type: string
                type: object
              releaseImage:
                description: releaseImage is the image used when installing the cluster
                type: string
              rootCAData:
                description: rootCAData specifies the root CA data
                format: byte
                type: string
            required:
            - additionalTrustBundle
            - cloudProviderCAData
            - cloudProviderConfig
            - clusterDNSIP
            - dns
            - images
            - infra
            - ipFamilies
            - kubeAPIServerServingCAData
            - osImageURL
            - proxy
            - releaseImage
            - rootCAData
            type: object
          status:
            description: ControllerConfigStatus is the status for ControllerConfig
            properties:
              conditions:
                description: conditions represents the latest available observations
                  of current state.
                items:
                  description: ControllerConfigStatusCondition contains condition
                    information for ControllerConfigStatus
                  properties:
                    lastTransitionTime:
                      description: lastTransitionTime is the time of the last update
                        to the current status object.
                      format: date-time
                      nullable: true
                      type: string
                    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
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: observedGeneration represents the generation observed
                  by the controller.
                format: int64
                type: integer
            type: object
        required:
        - spec
        type: object
