apiVersion: v1
kind: Namespace
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-metal3
    pod-security.kubernetes.io/enforce: restricted
  name: capm3-system
---
apiVersion: v1
data:
  components: |
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        pod-security.kubernetes.io/enforce: restricted
      name: capm3-system
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/ipam-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1alpha2: v1alpha2
        cluster.x-k8s.io/v1alpha3: v1alpha3_v1alpha4
        cluster.x-k8s.io/v1alpha4: v1alpha5
        cluster.x-k8s.io/v1beta1: v1beta1
      name: ipaddresses.ipam.metal3.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: ipam-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: ipam.metal3.io
      names:
        categories:
        - metal3
        kind: IPAddress
        listKind: IPAddressList
        plural: ipaddresses
        shortNames:
        - ipa
        - ipaddress
        - m3ipa
        - m3ipaddress
        - m3ipaddresses
        - metal3ipa
        - metal3ipaddress
        - metal3ipaddresses
        singular: ipaddress
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Time duration since creation of Metal3IPAddress
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1alpha1
        schema:
          openAPIV3Schema:
            description: IPAddress is the Schema for the ipaddresses API.
            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: IPAddressSpec defines the desired state of IPAddress.
                properties:
                  address:
                    description: Address contains the IP address
                    pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                    type: string
                  claim:
                    description: Claim points to the object the IPClaim was created for.
                    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
                    x-kubernetes-map-type: atomic
                  dnsServers:
                    description: DNSServers is the list of dns servers
                    items:
                      description: IPAddress is used for validation of an IP address.
                      pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                      type: string
                    type: array
                  gateway:
                    description: Gateway is the gateway ip address
                    pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                    type: string
                  pool:
                    description: Pool is the IPPool this was generated from.
                    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
                    x-kubernetes-map-type: atomic
                  prefix:
                    description: Prefix is the mask of the network as integer (max 128)
                    maximum: 128
                    type: integer
                required:
                - address
                - claim
                - pool
                type: object
            type: object
        served: true
        storage: true
        subresources: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/ipam-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1alpha2: v1alpha2
        cluster.x-k8s.io/v1alpha3: v1alpha3_v1alpha4
        cluster.x-k8s.io/v1alpha4: v1alpha5
        cluster.x-k8s.io/v1beta1: v1beta1
      name: ipclaims.ipam.metal3.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: ipam-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: ipam.metal3.io
      names:
        categories:
        - cluster-api
        kind: IPClaim
        listKind: IPClaimList
        plural: ipclaims
        shortNames:
        - ipc
        - ipclaim
        - m3ipc
        - m3ipclaim
        - m3ipclaims
        - metal3ipc
        - metal3ipclaim
        - metal3ipclaims
        singular: ipclaim
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Time duration since creation of Metal3IPClaim
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1alpha1
        schema:
          openAPIV3Schema:
            description: IPClaim is the Schema for the ipclaims API.
            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: IPClaimSpec defines the desired state of IPClaim.
                properties:
                  pool:
                    description: Pool is the IPPool this was generated from.
                    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
                    x-kubernetes-map-type: atomic
                required:
                - pool
                type: object
              status:
                description: IPClaimStatus defines the observed state of IPClaim.
                properties:
                  address:
                    description: Address is the IPAddress that was generated for this
                      claim.
                    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
                    x-kubernetes-map-type: atomic
                  errorMessage:
                    description: ErrorMessage contains the error message
                    type: string
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/ipam-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1alpha2: v1alpha2
        cluster.x-k8s.io/v1alpha3: v1alpha3_v1alpha4
        cluster.x-k8s.io/v1alpha4: v1alpha5
        cluster.x-k8s.io/v1beta1: v1beta1
      name: ippools.ipam.metal3.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: ipam-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: ipam.metal3.io
      names:
        categories:
        - cluster-api
        kind: IPPool
        listKind: IPPoolList
        plural: ippools
        shortNames:
        - ipp
        - ippool
        - m3ipp
        - m3ippool
        - m3ippools
        - metal3ipp
        - metal3ippool
        - metal3ippools
        singular: ippool
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Cluster to which this template belongs
          jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name
          name: Cluster
          type: string
        - description: Time duration since creation of Metal3IPPool
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1alpha1
        schema:
          openAPIV3Schema:
            description: IPPool is the Schema for the ippools API.
            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: IPPoolSpec defines the desired state of IPPool.
                properties:
                  clusterName:
                    description: ClusterName is the name of the Cluster this object belongs
                      to.
                    type: string
                  dnsServers:
                    description: DNSServers is the list of dns servers
                    items:
                      description: IPAddress is used for validation of an IP address.
                      pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                      type: string
                    type: array
                  gateway:
                    description: Gateway is the gateway ip address
                    pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                    type: string
                  namePrefix:
                    description: namePrefix is the prefix used to generate the IPAddress
                      object names
                    minLength: 1
                    type: string
                  pools:
                    description: Pools contains the list of IP addresses pools
                    items:
                      description: MetaDataIPAddress contains the info to render th ip
                        address. It is IP-version agnostic.
                      properties:
                        dnsServers:
                          description: DNSServers is the list of dns servers
                          items:
                            description: IPAddress is used for validation of an IP address.
                            pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                            type: string
                          type: array
                        end:
                          description: End is the last IP address that can be rendered.
                            It is used as a validation that the rendered IP is in bound.
                          pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                          type: string
                        gateway:
                          description: Gateway is the gateway ip address
                          pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                          type: string
                        prefix:
                          description: Prefix is the mask of the network as integer (max
                            128)
                          maximum: 128
                          type: integer
                        start:
                          description: Start is the first ip address that can be rendered
                          pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                          type: string
                        subnet:
                          description: Subnet is used to validate that the rendered IP
                            is in bounds. In case the Start value is not given, it is
                            derived from the subnet ip incremented by 1 (`192.168.0.1`
                            for `192.168.0.0/24`)
                          pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))/([0-9]|[1-2][0-9]|3[0-2])$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))/([0-9]|[0-9][0-9]|1[0-1][0-9]|12[0-8])$))
                          type: string
                      type: object
                    type: array
                  preAllocations:
                    additionalProperties:
                      description: IPAddress is used for validation of an IP address.
                      pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                      type: string
                    description: PreAllocations contains the preallocated IP addresses
                    type: object
                  prefix:
                    description: Prefix is the mask of the network as integer (max 128)
                    maximum: 128
                    type: integer
                required:
                - namePrefix
                type: object
              status:
                description: IPPoolStatus defines the observed state of IPPool.
                properties:
                  indexes:
                    additionalProperties:
                      description: IPAddress is used for validation of an IP address.
                      pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                      type: string
                    description: Allocations contains the map of objects and IP addresses
                      they have
                    type: object
                  lastUpdated:
                    description: LastUpdated identifies when this status was last observed.
                    format: date-time
                    type: string
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1beta1: v1beta1
      name: metal3clusters.infrastructure.cluster.x-k8s.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: capm3-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: infrastructure.cluster.x-k8s.io
      names:
        categories:
        - cluster-api
        kind: Metal3Cluster
        listKind: Metal3ClusterList
        plural: metal3clusters
        shortNames:
        - m3c
        - m3cluster
        - m3clusters
        - metal3c
        - metal3cluster
        singular: metal3cluster
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Time duration since creation of Metal3Cluster
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        - description: metal3Cluster is Ready
          jsonPath: .status.ready
          name: Ready
          type: string
        - description: Most recent error
          jsonPath: .status.failureReason
          name: Error
          type: string
        - description: Cluster to which this BMCluster belongs
          jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name
          name: Cluster
          type: string
        - description: Control plane endpoint
          jsonPath: .spec.controlPlaneEndpoint
          name: Endpoint
          type: string
        name: v1beta1
        schema:
          openAPIV3Schema:
            description: Metal3Cluster is the Schema for the metal3clusters API.
            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: Metal3ClusterSpec defines the desired state of Metal3Cluster.
                properties:
                  controlPlaneEndpoint:
                    description: ControlPlaneEndpoint represents the endpoint used to
                      communicate with the control plane.
                    properties:
                      host:
                        description: Host is the hostname on which the API server is serving.
                        type: string
                      port:
                        description: Port is the port on which the API server is serving.
                        type: integer
                    required:
                    - host
                    - port
                    type: object
                  noCloudProvider:
                    description: Determines if the cluster is not to be deployed with
                      an external cloud provider. If set to true, CAPM3 will use node
                      labels to set providerID on the kubernetes nodes. If set to false,
                      providerID is set on nodes by other entities and CAPM3 uses the
                      value of the providerID on the m3m resource.
                    type: boolean
                type: object
              status:
                description: Metal3ClusterStatus defines the observed state of Metal3Cluster.
                properties:
                  conditions:
                    description: Conditions defines current service state of the Metal3Cluster.
                    items:
                      description: Condition defines an observation of a Cluster API resource
                        operational state.
                      properties:
                        lastTransitionTime:
                          description: Last time the condition transitioned from one status
                            to another. This should be when the underlying condition changed.
                            If that is not known, then using the time when the API field
                            changed is acceptable.
                          format: date-time
                          type: string
                        message:
                          description: A human readable message indicating details about
                            the transition. This field may be empty.
                          type: string
                        reason:
                          description: The reason for the condition's last transition
                            in CamelCase. The specific API may choose whether or not this
                            field is considered a guaranteed API. This field may not be
                            empty.
                          type: string
                        severity:
                          description: Severity provides an explicit classification of
                            Reason code, so the users or machines can immediately understand
                            the current situation and act accordingly. The Severity field
                            MUST be set only when Status=False.
                          type: string
                        status:
                          description: Status of the condition, one of True, False, Unknown.
                          type: string
                        type:
                          description: Type of condition in CamelCase or in foo.example.com/CamelCase.
                            Many .condition.type values are consistent across resources
                            like Available, but because arbitrary conditions can be useful
                            (see .node.status.conditions), the ability to deconflict is
                            important.
                          type: string
                      required:
                      - lastTransitionTime
                      - status
                      - type
                      type: object
                    type: array
                  failureMessage:
                    description: FailureMessage indicates that there is a fatal problem
                      reconciling the state, and will be set to a descriptive error message.
                    type: string
                  failureReason:
                    description: FailureReason indicates that there is a fatal problem
                      reconciling the state, and will be set to a token value suitable
                      for programmatic interpretation.
                    type: string
                  lastUpdated:
                    description: LastUpdated identifies when this status was last observed.
                    format: date-time
                    type: string
                  ready:
                    description: Ready denotes that the Metal3 cluster (infrastructure)
                      is ready. In Baremetal case, it does not mean anything for now as
                      no infrastructure steps need to be performed. Required by Cluster
                      API. Set to True by the metal3Cluster controller after creation.
                    type: boolean
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1beta1: v1beta1
      name: metal3dataclaims.infrastructure.cluster.x-k8s.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: capm3-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: infrastructure.cluster.x-k8s.io
      names:
        categories:
        - cluster-api
        kind: Metal3DataClaim
        listKind: Metal3DataClaimList
        plural: metal3dataclaims
        shortNames:
        - m3dc
        - m3dataclaim
        - m3dataclaims
        - metal3dc
        - metal3dataclaim
        singular: metal3dataclaim
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Time duration since creation of Metal3DataClaim
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1beta1
        schema:
          openAPIV3Schema:
            description: Metal3DataClaim is the Schema for the metal3datas API.
            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: Metal3DataClaimSpec defines the desired state of Metal3DataClaim.
                properties:
                  template:
                    description: Template is the Metal3DataTemplate this was generated
                      for.
                    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
                    x-kubernetes-map-type: atomic
                required:
                - template
                type: object
              status:
                description: Metal3DataClaimStatus defines the observed state of Metal3DataClaim.
                properties:
                  errorMessage:
                    description: ErrorMessage contains the error message
                    type: string
                  renderedData:
                    description: RenderedData references the Metal3Data when ready
                    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
                    x-kubernetes-map-type: atomic
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
        clusterctl.cluster.x-k8s.io/skip-crd-name-preflight-check: ""
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1beta1: v1beta1
      name: metal3datas.infrastructure.cluster.x-k8s.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: capm3-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: infrastructure.cluster.x-k8s.io
      names:
        categories:
        - cluster-api
        kind: Metal3Data
        listKind: Metal3DataList
        plural: metal3datas
        shortNames:
        - m3d
        - m3data
        - m3datas
        - metal3d
        - metal3data
        singular: metal3data
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Time duration since creation of Metal3Data
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1beta1
        schema:
          openAPIV3Schema:
            description: Metal3Data is the Schema for the metal3datas API.
            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: Metal3DataSpec defines the desired state of Metal3Data.
                properties:
                  claim:
                    description: DataClaim points to the Metal3DataClaim the Metal3Data
                      was created for.
                    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
                    x-kubernetes-map-type: atomic
                  index:
                    description: Index stores the index value of this instance in the
                      Metal3DataTemplate.
                    type: integer
                  metaData:
                    description: MetaData points to the rendered MetaData secret.
                    properties:
                      name:
                        description: name is unique within a namespace to reference a
                          secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the secret
                          name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  networkData:
                    description: NetworkData points to the rendered NetworkData secret.
                    properties:
                      name:
                        description: name is unique within a namespace to reference a
                          secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the secret
                          name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  template:
                    description: DataTemplate is the Metal3DataTemplate this was generated
                      from.
                    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
                    x-kubernetes-map-type: atomic
                  templateReference:
                    description: TemplateReference refers to the Template the Metal3MachineTemplate
                      refers to. It can be matched against the key or it may also point
                      to the name of the template Metal3Data refers to
                    type: string
                required:
                - claim
                - template
                type: object
              status:
                description: Metal3DataStatus defines the observed state of Metal3Data.
                properties:
                  errorMessage:
                    description: ErrorMessage contains the error message
                    type: string
                  ready:
                    description: Ready is a flag set to True if the secrets were rendered
                      properly
                    type: boolean
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1beta1: v1beta1
      name: metal3datatemplates.infrastructure.cluster.x-k8s.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: capm3-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: infrastructure.cluster.x-k8s.io
      names:
        categories:
        - cluster-api
        kind: Metal3DataTemplate
        listKind: Metal3DataTemplateList
        plural: metal3datatemplates
        shortNames:
        - m3dt
        - m3datatemplate
        - m3datatemplates
        - metal3dt
        - metal3datatemplate
        singular: metal3datatemplate
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Cluster to which this template belongs
          jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name
          name: Cluster
          type: string
        - description: Time duration since creation of Metal3DataTemplate
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1beta1
        schema:
          openAPIV3Schema:
            description: Metal3DataTemplate is the Schema for the metal3datatemplates
              API.
            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: Metal3DataTemplateSpec defines the desired state of Metal3DataTemplate.
                properties:
                  clusterName:
                    description: ClusterName is the name of the Cluster this object belongs
                      to.
                    minLength: 1
                    type: string
                  metaData:
                    description: MetaData contains the information needed to generate
                      the metadata secret
                    properties:
                      dnsServersFromIPPool:
                        description: DNSServersFromPool is the list of metadata items
                          to be rendered as dns servers.
                        items:
                          properties:
                            apiGroup:
                              description: APIGroup is the api group of the IP pool.
                              type: string
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            kind:
                              description: Kind is the kind of the IP pool
                              type: string
                            name:
                              description: Name is the name of the IP pool used to fetch
                                the value to set in the metadata map for cloud-init
                              type: string
                          required:
                          - apiGroup
                          - key
                          - kind
                          - name
                          type: object
                        type: array
                      fromAnnotations:
                        description: FromAnnotations is the list of metadata items to
                          be fetched from object Annotations
                        items:
                          description: MetaDataFromAnnotation contains the information
                            to fetch an annotation content, if the label does not exist,
                            it is rendered as empty string.
                          properties:
                            annotation:
                              description: Annotation is the key of the Annotation to
                                fetch
                              type: string
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            object:
                              description: Object is the type of the object from which
                                we retrieve the name
                              enum:
                              - machine
                              - metal3machine
                              - baremetalhost
                              type: string
                          required:
                          - annotation
                          - key
                          - object
                          type: object
                        type: array
                      fromHostInterfaces:
                        description: FromHostInterfaces is the list of metadata items
                          to be rendered as MAC addresses of the host interfaces.
                        items:
                          description: MetaDataHostInterface contains the information
                            to render the object name.
                          properties:
                            interface:
                              description: Interface is the name of the interface in the
                                BareMetalHost Status Hardware Details list of interfaces
                                from which to fetch the MAC address.
                              type: string
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                          required:
                          - interface
                          - key
                          type: object
                        type: array
                      fromLabels:
                        description: FromLabels is the list of metadata items to be fetched
                          from object labels
                        items:
                          description: MetaDataFromLabel contains the information to fetch
                            a label content, if the label does not exist, it is rendered
                            as empty string.
                          properties:
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            label:
                              description: Label is the key of the label to fetch
                              type: string
                            object:
                              description: Object is the type of the object from which
                                we retrieve the name
                              enum:
                              - machine
                              - metal3machine
                              - baremetalhost
                              type: string
                          required:
                          - key
                          - label
                          - object
                          type: object
                        type: array
                      gatewaysFromIPPool:
                        description: GatewaysFromPool is the list of metadata items to
                          be rendered as gateway addresses.
                        items:
                          properties:
                            apiGroup:
                              description: APIGroup is the api group of the IP pool.
                              type: string
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            kind:
                              description: Kind is the kind of the IP pool
                              type: string
                            name:
                              description: Name is the name of the IP pool used to fetch
                                the value to set in the metadata map for cloud-init
                              type: string
                          required:
                          - apiGroup
                          - key
                          - kind
                          - name
                          type: object
                        type: array
                      indexes:
                        description: Indexes is the list of metadata items to be rendered
                          from the index of the Metal3Data
                        items:
                          description: MetaDataIndex contains the information to render
                            the index.
                          properties:
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            offset:
                              description: Offset is the offset to apply to the index
                                when rendering it
                              type: integer
                            prefix:
                              description: Prefix is the prefix string
                              type: string
                            step:
                              default: 1
                              description: Step is the multiplier of the index
                              type: integer
                            suffix:
                              description: Suffix is the suffix string
                              type: string
                          required:
                          - key
                          type: object
                        type: array
                      ipAddressesFromIPPool:
                        description: IPAddressesFromPool is the list of metadata items
                          to be rendered as ip addresses.
                        items:
                          properties:
                            apiGroup:
                              description: APIGroup is the api group of the IP pool.
                              type: string
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            kind:
                              description: Kind is the kind of the IP pool
                              type: string
                            name:
                              description: Name is the name of the IP pool used to fetch
                                the value to set in the metadata map for cloud-init
                              type: string
                          required:
                          - apiGroup
                          - key
                          - kind
                          - name
                          type: object
                        type: array
                      namespaces:
                        description: Namespaces is the list of metadata items to be rendered
                          from the namespace
                        items:
                          description: MetaDataNamespace contains the information to render
                            the namespace.
                          properties:
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                          required:
                          - key
                          type: object
                        type: array
                      objectNames:
                        description: ObjectNames is the list of metadata items to be rendered
                          from the name of objects.
                        items:
                          description: MetaDataObjectName contains the information to
                            render the object name.
                          properties:
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            object:
                              description: Object is the type of the object from which
                                we retrieve the name
                              enum:
                              - machine
                              - metal3machine
                              - baremetalhost
                              type: string
                          required:
                          - key
                          - object
                          type: object
                        type: array
                      prefixesFromIPPool:
                        description: PrefixesFromPool is the list of metadata items to
                          be rendered as network prefixes.
                        items:
                          properties:
                            apiGroup:
                              description: APIGroup is the api group of the IP pool.
                              type: string
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            kind:
                              description: Kind is the kind of the IP pool
                              type: string
                            name:
                              description: Name is the name of the IP pool used to fetch
                                the value to set in the metadata map for cloud-init
                              type: string
                          required:
                          - apiGroup
                          - key
                          - kind
                          - name
                          type: object
                        type: array
                      strings:
                        description: Strings is the list of metadata items to be rendered
                          from strings
                        items:
                          description: MetaDataString contains the information to render
                            the string.
                          properties:
                            key:
                              description: Key will be used as the key to set in the metadata
                                map for cloud-init
                              type: string
                            value:
                              description: Value is the string to render.
                              type: string
                          required:
                          - key
                          - value
                          type: object
                        type: array
                    type: object
                  networkData:
                    description: NetworkData contains the information needed to generate
                      the networkdata secret
                    properties:
                      links:
                        description: Links is a structure containing lists of different
                          types objects
                        properties:
                          bonds:
                            description: Bonds contains a list of Bond links
                            items:
                              description: NetworkDataLinkBond represents a bond link
                                object.
                              properties:
                                bondLinks:
                                  description: BondLinks is the list of links that are
                                    part of the bond.
                                  items:
                                    type: string
                                  type: array
                                bondMode:
                                  description: BondMode is the mode of bond used. It can
                                    be one of balance-rr, active-backup, balance-xor,
                                    broadcast, balance-tlb, balance-alb, 802.3ad
                                  enum:
                                  - balance-rr
                                  - active-backup
                                  - balance-xor
                                  - broadcast
                                  - balance-tlb
                                  - balance-alb
                                  - 802.3ad
                                  type: string
                                bondXmitHashPolicy:
                                  description: Selects the transmit hash policy used for
                                    port selection in balance-xor and 802.3ad modes
                                  enum:
                                  - layer2
                                  - layer3+4
                                  - layer2+3
                                  type: string
                                id:
                                  description: Id is the ID of the interface (used for
                                    naming)
                                  type: string
                                macAddress:
                                  description: MACAddress is the MAC address of the interface,
                                    containing the object used to render it.
                                  properties:
                                    fromAnnotation:
                                      description: FromAnnotation references an object
                                        Annotation to retrieve the MAC address from
                                      properties:
                                        annotation:
                                          description: Annotation is the key of the Annotation
                                            to fetch
                                          type: string
                                        object:
                                          description: Object is the type of the object
                                            from which we retrieve the name
                                          enum:
                                          - machine
                                          - metal3machine
                                          - baremetalhost
                                          type: string
                                      required:
                                      - annotation
                                      - object
                                      type: object
                                    fromHostInterface:
                                      description: FromHostInterface contains the name
                                        of the interface in the BareMetalHost Introspection
                                        details from which to fetch the MAC address
                                      type: string
                                    string:
                                      description: String contains the MAC address given
                                        as a string
                                      type: string
                                  type: object
                                mtu:
                                  default: 1500
                                  description: MTU is the MTU of the interface
                                  maximum: 9000
                                  type: integer
                              required:
                              - bondMode
                              - id
                              - macAddress
                              type: object
                            type: array
                          ethernets:
                            description: Ethernets contains a list of Ethernet links
                            items:
                              description: NetworkDataLinkEthernet represents an ethernet
                                link object.
                              properties:
                                id:
                                  description: Id is the ID of the interface (used for
                                    naming)
                                  type: string
                                macAddress:
                                  description: MACAddress is the MAC address of the interface,
                                    containing the object used to render it.
                                  properties:
                                    fromAnnotation:
                                      description: FromAnnotation references an object
                                        Annotation to retrieve the MAC address from
                                      properties:
                                        annotation:
                                          description: Annotation is the key of the Annotation
                                            to fetch
                                          type: string
                                        object:
                                          description: Object is the type of the object
                                            from which we retrieve the name
                                          enum:
                                          - machine
                                          - metal3machine
                                          - baremetalhost
                                          type: string
                                      required:
                                      - annotation
                                      - object
                                      type: object
                                    fromHostInterface:
                                      description: FromHostInterface contains the name
                                        of the interface in the BareMetalHost Introspection
                                        details from which to fetch the MAC address
                                      type: string
                                    string:
                                      description: String contains the MAC address given
                                        as a string
                                      type: string
                                  type: object
                                mtu:
                                  default: 1500
                                  description: MTU is the MTU of the interface
                                  maximum: 9000
                                  type: integer
                                type:
                                  description: 'Type is the type of the ethernet link.
                                    It can be one of: bridge, dvs, hw_veb, hyperv, ovs,
                                    tap, vhostuser, vif, phy'
                                  enum:
                                  - bridge
                                  - dvs
                                  - hw_veb
                                  - hyperv
                                  - ovs
                                  - tap
                                  - vhostuser
                                  - vif
                                  - phy
                                  type: string
                              required:
                              - id
                              - macAddress
                              - type
                              type: object
                            type: array
                          vlans:
                            description: Vlans contains a list of Vlan links
                            items:
                              description: NetworkDataLinkVlan represents a vlan link
                                object.
                              properties:
                                id:
                                  description: Id is the ID of the interface (used for
                                    naming)
                                  type: string
                                macAddress:
                                  description: MACAddress is the MAC address of the interface,
                                    containing the object used to render it.
                                  properties:
                                    fromAnnotation:
                                      description: FromAnnotation references an object
                                        Annotation to retrieve the MAC address from
                                      properties:
                                        annotation:
                                          description: Annotation is the key of the Annotation
                                            to fetch
                                          type: string
                                        object:
                                          description: Object is the type of the object
                                            from which we retrieve the name
                                          enum:
                                          - machine
                                          - metal3machine
                                          - baremetalhost
                                          type: string
                                      required:
                                      - annotation
                                      - object
                                      type: object
                                    fromHostInterface:
                                      description: FromHostInterface contains the name
                                        of the interface in the BareMetalHost Introspection
                                        details from which to fetch the MAC address
                                      type: string
                                    string:
                                      description: String contains the MAC address given
                                        as a string
                                      type: string
                                  type: object
                                mtu:
                                  default: 1500
                                  description: MTU is the MTU of the interface
                                  maximum: 9000
                                  type: integer
                                vlanID:
                                  description: VlanID is the Vlan ID
                                  maximum: 4096
                                  type: integer
                                vlanLink:
                                  description: VlanLink is the name of the link on which
                                    the vlan should be added
                                  type: string
                              required:
                              - id
                              - macAddress
                              - vlanID
                              - vlanLink
                              type: object
                            type: array
                        type: object
                      networks:
                        description: Networks  is a structure containing lists of different
                          types objects
                        properties:
                          ipv4:
                            description: IPv4 contains a list of IPv4 static allocations
                            items:
                              description: NetworkDataIPv4 represents an ipv4 static network
                                object.
                              properties:
                                fromPoolRef:
                                  description: FromPoolRef is a reference to a IP pool
                                    to allocate an address from.
                                  properties:
                                    apiGroup:
                                      description: APIGroup is the group for the resource
                                        being referenced. If APIGroup is not specified,
                                        the specified Kind must be in the core API group.
                                        For any other third-party types, APIGroup is required.
                                      type: string
                                    kind:
                                      description: Kind is the type of resource being
                                        referenced
                                      type: string
                                    name:
                                      description: Name is the name of resource being
                                        referenced
                                      type: string
                                  required:
                                  - kind
                                  - name
                                  type: object
                                  x-kubernetes-map-type: atomic
                                id:
                                  description: ID is the network ID (name)
                                  type: string
                                ipAddressFromIPPool:
                                  description: IPAddressFromIPPool contains the name of
                                    the IP pool to use to get an ip address
                                  type: string
                                link:
                                  description: Link is the link on which the network applies
                                  type: string
                                routes:
                                  description: Routes contains a list of IPv4 routes
                                  items:
                                    description: NetworkDataRoutev4 represents an ipv4
                                      route object.
                                    properties:
                                      gateway:
                                        description: Gateway is the IPv4 address of the
                                          gateway
                                        properties:
                                          fromIPPool:
                                            description: FromIPPool is the name of the
                                              IPPool to fetch the gateway from
                                            type: string
                                          string:
                                            description: String is the gateway given as
                                              a string
                                            pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$
                                            type: string
                                        type: object
                                      network:
                                        description: Network is the IPv4 network address
                                        pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$
                                        type: string
                                      prefix:
                                        description: Prefix is the mask of the network
                                          as integer (max 32)
                                        maximum: 32
                                        type: integer
                                      services:
                                        description: Services is a list of IPv4 services
                                        properties:
                                          dns:
                                            description: DNS is a list of IPv4 DNS services
                                            items:
                                              description: IPAddressv4 is used for validation
                                                of an IPv6 address.
                                              pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$
                                              type: string
                                            type: array
                                          dnsFromIPPool:
                                            description: DNSFromIPPool is the name of
                                              the IPPool from which to get the DNS servers
                                            type: string
                                        type: object
                                    required:
                                    - gateway
                                    - network
                                    type: object
                                  type: array
                              required:
                              - id
                              - link
                              type: object
                            type: array
                          ipv4DHCP:
                            description: IPv4 contains a list of IPv4 DHCP allocations
                            items:
                              description: NetworkDataIPv4DHCP represents an ipv4 DHCP
                                network object.
                              properties:
                                id:
                                  description: ID is the network ID (name)
                                  type: string
                                link:
                                  description: Link is the link on which the network applies
                                  type: string
                                routes:
                                  description: Routes contains a list of IPv4 routes
                                  items:
                                    description: NetworkDataRoutev4 represents an ipv4
                                      route object.
                                    properties:
                                      gateway:
                                        description: Gateway is the IPv4 address of the
                                          gateway
                                        properties:
                                          fromIPPool:
                                            description: FromIPPool is the name of the
                                              IPPool to fetch the gateway from
                                            type: string
                                          string:
                                            description: String is the gateway given as
                                              a string
                                            pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$
                                            type: string
                                        type: object
                                      network:
                                        description: Network is the IPv4 network address
                                        pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$
                                        type: string
                                      prefix:
                                        description: Prefix is the mask of the network
                                          as integer (max 32)
                                        maximum: 32
                                        type: integer
                                      services:
                                        description: Services is a list of IPv4 services
                                        properties:
                                          dns:
                                            description: DNS is a list of IPv4 DNS services
                                            items:
                                              description: IPAddressv4 is used for validation
                                                of an IPv6 address.
                                              pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$
                                              type: string
                                            type: array
                                          dnsFromIPPool:
                                            description: DNSFromIPPool is the name of
                                              the IPPool from which to get the DNS servers
                                            type: string
                                        type: object
                                    required:
                                    - gateway
                                    - network
                                    type: object
                                  type: array
                              required:
                              - id
                              - link
                              type: object
                            type: array
                          ipv6:
                            description: IPv4 contains a list of IPv6 static allocations
                            items:
                              description: NetworkDataIPv6 represents an ipv6 static network
                                object.
                              properties:
                                fromPoolRef:
                                  description: FromPoolRef is a reference to a IP pool
                                    to allocate an address from.
                                  properties:
                                    apiGroup:
                                      description: APIGroup is the group for the resource
                                        being referenced. If APIGroup is not specified,
                                        the specified Kind must be in the core API group.
                                        For any other third-party types, APIGroup is required.
                                      type: string
                                    kind:
                                      description: Kind is the type of resource being
                                        referenced
                                      type: string
                                    name:
                                      description: Name is the name of resource being
                                        referenced
                                      type: string
                                  required:
                                  - kind
                                  - name
                                  type: object
                                  x-kubernetes-map-type: atomic
                                id:
                                  description: ID is the network ID (name)
                                  type: string
                                ipAddressFromIPPool:
                                  description: IPAddressFromIPPool contains the name of
                                    the IPPool to use to get an ip address
                                  type: string
                                link:
                                  description: Link is the link on which the network applies
                                  type: string
                                routes:
                                  description: Routes contains a list of IPv6 routes
                                  items:
                                    description: NetworkDataRoutev6 represents an ipv6
                                      route object.
                                    properties:
                                      gateway:
                                        description: Gateway is the IPv6 address of the
                                          gateway
                                        properties:
                                          fromIPPool:
                                            description: FromIPPool is the name of the
                                              IPPool to fetch the gateway from
                                            type: string
                                          string:
                                            description: String is the gateway given as
                                              a string
                                            pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                            type: string
                                        type: object
                                      network:
                                        description: Network is the IPv6 network address
                                        pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                        type: string
                                      prefix:
                                        description: Prefix is the mask of the network
                                          as integer (max 128)
                                        maximum: 128
                                        type: integer
                                      services:
                                        description: Services is a list of IPv6 services
                                        properties:
                                          dns:
                                            description: DNS is a list of IPv6 DNS services
                                            items:
                                              description: IPAddressv6 is used for validation
                                                of an IPv6 address.
                                              pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                              type: string
                                            type: array
                                          dnsFromIPPool:
                                            description: DNSFromIPPool is the name of
                                              the IPPool from which to get the DNS servers
                                            type: string
                                        type: object
                                    required:
                                    - gateway
                                    - network
                                    type: object
                                  type: array
                              required:
                              - id
                              - ipAddressFromIPPool
                              - link
                              type: object
                            type: array
                          ipv6DHCP:
                            description: IPv4 contains a list of IPv6 DHCP allocations
                            items:
                              description: NetworkDataIPv6DHCP represents an ipv6 DHCP
                                network object.
                              properties:
                                id:
                                  description: ID is the network ID (name)
                                  type: string
                                link:
                                  description: Link is the link on which the network applies
                                  type: string
                                routes:
                                  description: Routes contains a list of IPv6 routes
                                  items:
                                    description: NetworkDataRoutev6 represents an ipv6
                                      route object.
                                    properties:
                                      gateway:
                                        description: Gateway is the IPv6 address of the
                                          gateway
                                        properties:
                                          fromIPPool:
                                            description: FromIPPool is the name of the
                                              IPPool to fetch the gateway from
                                            type: string
                                          string:
                                            description: String is the gateway given as
                                              a string
                                            pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                            type: string
                                        type: object
                                      network:
                                        description: Network is the IPv6 network address
                                        pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                        type: string
                                      prefix:
                                        description: Prefix is the mask of the network
                                          as integer (max 128)
                                        maximum: 128
                                        type: integer
                                      services:
                                        description: Services is a list of IPv6 services
                                        properties:
                                          dns:
                                            description: DNS is a list of IPv6 DNS services
                                            items:
                                              description: IPAddressv6 is used for validation
                                                of an IPv6 address.
                                              pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                              type: string
                                            type: array
                                          dnsFromIPPool:
                                            description: DNSFromIPPool is the name of
                                              the IPPool from which to get the DNS servers
                                            type: string
                                        type: object
                                    required:
                                    - gateway
                                    - network
                                    type: object
                                  type: array
                              required:
                              - id
                              - link
                              type: object
                            type: array
                          ipv6SLAAC:
                            description: IPv4 contains a list of IPv6 SLAAC allocations
                            items:
                              description: NetworkDataIPv6DHCP represents an ipv6 DHCP
                                network object.
                              properties:
                                id:
                                  description: ID is the network ID (name)
                                  type: string
                                link:
                                  description: Link is the link on which the network applies
                                  type: string
                                routes:
                                  description: Routes contains a list of IPv6 routes
                                  items:
                                    description: NetworkDataRoutev6 represents an ipv6
                                      route object.
                                    properties:
                                      gateway:
                                        description: Gateway is the IPv6 address of the
                                          gateway
                                        properties:
                                          fromIPPool:
                                            description: FromIPPool is the name of the
                                              IPPool to fetch the gateway from
                                            type: string
                                          string:
                                            description: String is the gateway given as
                                              a string
                                            pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                            type: string
                                        type: object
                                      network:
                                        description: Network is the IPv6 network address
                                        pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                        type: string
                                      prefix:
                                        description: Prefix is the mask of the network
                                          as integer (max 128)
                                        maximum: 128
                                        type: integer
                                      services:
                                        description: Services is a list of IPv6 services
                                        properties:
                                          dns:
                                            description: DNS is a list of IPv6 DNS services
                                            items:
                                              description: IPAddressv6 is used for validation
                                                of an IPv6 address.
                                              pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
                                              type: string
                                            type: array
                                          dnsFromIPPool:
                                            description: DNSFromIPPool is the name of
                                              the IPPool from which to get the DNS servers
                                            type: string
                                        type: object
                                    required:
                                    - gateway
                                    - network
                                    type: object
                                  type: array
                              required:
                              - id
                              - link
                              type: object
                            type: array
                        type: object
                      services:
                        description: Services  is a structure containing lists of different
                          types objects
                        properties:
                          dns:
                            description: DNS is a list of DNS services
                            items:
                              description: IPAddress is used for validation of an IP address.
                              pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$))
                              type: string
                            type: array
                          dnsFromIPPool:
                            description: DNSFromIPPool is the name of the IPPool from
                              which to get the DNS servers
                            type: string
                        type: object
                    type: object
                  templateReference:
                    description: TemplateReference refers to the Template the Metal3MachineTemplate
                      refers to. It can be matched against the key or it may also point
                      to the name of the template Metal3Data refers to
                    type: string
                required:
                - clusterName
                type: object
              status:
                description: Metal3DataTemplateStatus defines the observed state of Metal3DataTemplate.
                properties:
                  indexes:
                    additionalProperties:
                      type: integer
                    description: Indexes contains the map of Metal3Machine and index used
                    type: object
                  lastUpdated:
                    description: LastUpdated identifies when this status was last observed.
                    format: date-time
                    type: string
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1beta1: v1beta1
      name: metal3machines.infrastructure.cluster.x-k8s.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: capm3-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: infrastructure.cluster.x-k8s.io
      names:
        categories:
        - cluster-api
        kind: Metal3Machine
        listKind: Metal3MachineList
        plural: metal3machines
        shortNames:
        - m3m
        - m3machine
        - m3machines
        - metal3m
        - metal3machine
        singular: metal3machine
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Time duration since creation of Metal3Machine
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        - description: Provider ID
          jsonPath: .spec.providerID
          name: ProviderID
          type: string
        - description: metal3machine is Ready
          jsonPath: .status.ready
          name: Ready
          type: string
        - description: Cluster to which this M3Machine belongs
          jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name
          name: Cluster
          type: string
        - description: metal3machine current phase
          jsonPath: .status.phase
          name: Phase
          type: string
        name: v1beta1
        schema:
          openAPIV3Schema:
            description: Metal3Machine is the Schema for the metal3machines API.
            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: Metal3MachineSpec defines the desired state of Metal3Machine.
                properties:
                  automatedCleaningMode:
                    description: When set to disabled, automated cleaning of host disks
                      will be skipped during provisioning and deprovisioning.
                    enum:
                    - metadata
                    - disabled
                    type: string
                  dataTemplate:
                    description: MetadataTemplate is a reference to a Metal3DataTemplate
                      object containing a template of metadata to be rendered. Metadata
                      keys defined in the metadataTemplate take precedence over keys defined
                      in metadata field.
                    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
                    x-kubernetes-map-type: atomic
                  hostSelector:
                    description: HostSelector specifies matching criteria for labels on
                      BareMetalHosts. This is used to limit the set of BareMetalHost objects
                      considered for claiming for a metal3machine.
                    properties:
                      matchExpressions:
                        description: Label match expressions that must be true on a chosen
                          BareMetalHost
                        items:
                          properties:
                            key:
                              type: string
                            operator:
                              description: Operator represents a key/field's relationship
                                to value(s). See labels.Requirement and fields.Requirement
                                for more details.
                              type: string
                            values:
                              items:
                                type: string
                              type: array
                          required:
                          - key
                          - operator
                          - values
                          type: object
                        type: array
                      matchLabels:
                        additionalProperties:
                          type: string
                        description: Key/value pairs of labels that must exist on a chosen
                          BareMetalHost
                        type: object
                    type: object
                  image:
                    description: Image is the image to be provisioned.
                    properties:
                      checksum:
                        description: Checksum is a md5sum, sha256sum or sha512sum value
                          or a URL to retrieve one.
                        type: string
                      checksumType:
                        description: ChecksumType is the checksum algorithm for the image.
                          e.g md5, sha256, sha512
                        enum:
                        - md5
                        - sha256
                        - sha512
                        type: string
                      format:
                        description: DiskFormat contains the image disk format.
                        enum:
                        - raw
                        - qcow2
                        - vdi
                        - vmdk
                        - live-iso
                        type: string
                      url:
                        description: URL is a location of an image to deploy.
                        type: string
                    required:
                    - checksum
                    - url
                    type: object
                  metaData:
                    description: MetaData is an object storing the reference to the secret
                      containing the Metadata given by the user.
                    properties:
                      name:
                        description: name is unique within a namespace to reference a
                          secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the secret
                          name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  networkData:
                    description: NetworkData is an object storing the reference to the
                      secret containing the network data given by the user.
                    properties:
                      name:
                        description: name is unique within a namespace to reference a
                          secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the secret
                          name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  providerID:
                    description: ProviderID will be the Metal3 machine in ProviderID format
                      (metal3://<bmh-uuid>)
                    type: string
                  userData:
                    description: UserData references the Secret that holds user data needed
                      by the bare metal operator. The Namespace is optional; it will default
                      to the metal3machine's namespace if not specified.
                    properties:
                      name:
                        description: name is unique within a namespace to reference a
                          secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the secret
                          name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                required:
                - image
                type: object
              status:
                description: Metal3MachineStatus defines the observed state of Metal3Machine.
                properties:
                  addresses:
                    description: Addresses is a list of addresses assigned to the machine.
                      This field is copied from the infrastructure provider reference.
                    items:
                      description: MachineAddress contains information for the node's
                        address.
                      properties:
                        address:
                          description: The machine address.
                          type: string
                        type:
                          description: Machine address type, one of Hostname, ExternalIP,
                            InternalIP, ExternalDNS or InternalDNS.
                          type: string
                      required:
                      - address
                      - type
                      type: object
                    type: array
                  conditions:
                    description: Conditions defines current service state of the Metal3Machine.
                    items:
                      description: Condition defines an observation of a Cluster API resource
                        operational state.
                      properties:
                        lastTransitionTime:
                          description: Last time the condition transitioned from one status
                            to another. This should be when the underlying condition changed.
                            If that is not known, then using the time when the API field
                            changed is acceptable.
                          format: date-time
                          type: string
                        message:
                          description: A human readable message indicating details about
                            the transition. This field may be empty.
                          type: string
                        reason:
                          description: The reason for the condition's last transition
                            in CamelCase. The specific API may choose whether or not this
                            field is considered a guaranteed API. This field may not be
                            empty.
                          type: string
                        severity:
                          description: Severity provides an explicit classification of
                            Reason code, so the users or machines can immediately understand
                            the current situation and act accordingly. The Severity field
                            MUST be set only when Status=False.
                          type: string
                        status:
                          description: Status of the condition, one of True, False, Unknown.
                          type: string
                        type:
                          description: Type of condition in CamelCase or in foo.example.com/CamelCase.
                            Many .condition.type values are consistent across resources
                            like Available, but because arbitrary conditions can be useful
                            (see .node.status.conditions), the ability to deconflict is
                            important.
                          type: string
                      required:
                      - lastTransitionTime
                      - status
                      - type
                      type: object
                    type: array
                  failureMessage:
                    description: "FailureMessage will be set in the event that there is
                      a terminal problem reconciling the metal3machine and will contain
                      a more verbose string suitable for logging and human consumption.
                      \n This field should not be set for transitive errors that a controller
                      faces that are expected to be fixed automatically over time (like
                      service outages), but instead indicate that something is fundamentally
                      wrong with the metal3machine's spec or the configuration of the
                      controller, and that manual intervention is required. Examples of
                      terminal errors would be invalid combinations of settings in the
                      spec, values that are unsupported by the controller, or the responsible
                      controller itself being critically misconfigured. \n Any transient
                      errors that occur during the reconciliation of metal3machines can
                      be added as events to the metal3machine object and/or logged in
                      the controller's output."
                    type: string
                  failureReason:
                    description: "FailureReason will be set in the event that there is
                      a terminal problem reconciling the metal3machine and will contain
                      a succinct value suitable for machine interpretation. \n This field
                      should not be set for transitive errors that a controller faces
                      that are expected to be fixed automatically over time (like service
                      outages), but instead indicate that something is fundamentally wrong
                      with the metal3machine's spec or the configuration of the controller,
                      and that manual intervention is required. Examples of terminal errors
                      would be invalid combinations of settings in the spec, values that
                      are unsupported by the controller, or the responsible controller
                      itself being critically misconfigured. \n Any transient errors that
                      occur during the reconciliation of metal3machines can be added as
                      events to the metal3machine object and/or logged in the controller's
                      output."
                    type: string
                  lastUpdated:
                    description: LastUpdated identifies when this status was last observed.
                    format: date-time
                    type: string
                  metaData:
                    description: MetaData is an object storing the reference to the secret
                      containing the Metadata used to deploy the BareMetalHost.
                    properties:
                      name:
                        description: name is unique within a namespace to reference a
                          secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the secret
                          name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  networkData:
                    description: NetworkData is an object storing the reference to the
                      secret containing the network data used to deploy the BareMetalHost.
                    properties:
                      name:
                        description: name is unique within a namespace to reference a
                          secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the secret
                          name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  phase:
                    description: Phase represents the current phase of machine actuation.
                      E.g. Pending, Running, Terminating, Failed etc.
                    type: string
                  ready:
                    description: 'Ready is the state of the metal3. TODO : Document the
                      variable : mhrivnak: " it would be good to document what this means,
                      how to interpret it, under what circumstances the value changes,
                      etc."'
                    type: boolean
                  renderedData:
                    description: RenderedData is a reference to a rendered Metal3Data
                      object containing the references to metaData and networkData secrets.
                    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
                    x-kubernetes-map-type: atomic
                  userData:
                    description: UserData references the Secret that holds user data needed
                      by the bare metal operator. The Namespace is optional; it will default
                      to the metal3machine's namespace if not specified.
                    properties:
                      name:
                        description: name is unique within a namespace to reference a
                          secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the secret
                          name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1beta1: v1beta1
      name: metal3machinetemplates.infrastructure.cluster.x-k8s.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: capm3-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: infrastructure.cluster.x-k8s.io
      names:
        categories:
        - cluster-api
        kind: Metal3MachineTemplate
        listKind: Metal3MachineTemplateList
        plural: metal3machinetemplates
        shortNames:
        - m3mt
        - m3machinetemplate
        - m3machinetemplates
        - metal3mt
        - metal3machinetemplate
        singular: metal3machinetemplate
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: Time duration since creation of Metal3MachineTemplate
          jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        name: v1beta1
        schema:
          openAPIV3Schema:
            description: Metal3MachineTemplate is the Schema for the metal3machinetemplates
              API.
            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: Metal3MachineTemplateSpec defines the desired state of Metal3MachineTemplate.
                properties:
                  nodeReuse:
                    default: false
                    description: When set to True, CAPM3 Machine controller will pick
                      the same pool of BMHs' that were released during the upgrade operation.
                    type: boolean
                  template:
                    description: Metal3MachineTemplateResource describes the data needed
                      to create a Metal3Machine from a template.
                    properties:
                      spec:
                        description: Spec is the specification of the desired behavior
                          of the machine.
                        properties:
                          automatedCleaningMode:
                            description: When set to disabled, automated cleaning of host
                              disks will be skipped during provisioning and deprovisioning.
                            enum:
                            - metadata
                            - disabled
                            type: string
                          dataTemplate:
                            description: MetadataTemplate is a reference to a Metal3DataTemplate
                              object containing a template of metadata to be rendered.
                              Metadata keys defined in the metadataTemplate take precedence
                              over keys defined in metadata field.
                            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
                            x-kubernetes-map-type: atomic
                          hostSelector:
                            description: HostSelector specifies matching criteria for
                              labels on BareMetalHosts. This is used to limit the set
                              of BareMetalHost objects considered for claiming for a metal3machine.
                            properties:
                              matchExpressions:
                                description: Label match expressions that must be true
                                  on a chosen BareMetalHost
                                items:
                                  properties:
                                    key:
                                      type: string
                                    operator:
                                      description: Operator represents a key/field's relationship
                                        to value(s). See labels.Requirement and fields.Requirement
                                        for more details.
                                      type: string
                                    values:
                                      items:
                                        type: string
                                      type: array
                                  required:
                                  - key
                                  - operator
                                  - values
                                  type: object
                                type: array
                              matchLabels:
                                additionalProperties:
                                  type: string
                                description: Key/value pairs of labels that must exist
                                  on a chosen BareMetalHost
                                type: object
                            type: object
                          image:
                            description: Image is the image to be provisioned.
                            properties:
                              checksum:
                                description: Checksum is a md5sum, sha256sum or sha512sum
                                  value or a URL to retrieve one.
                                type: string
                              checksumType:
                                description: ChecksumType is the checksum algorithm for
                                  the image. e.g md5, sha256, sha512
                                enum:
                                - md5
                                - sha256
                                - sha512
                                type: string
                              format:
                                description: DiskFormat contains the image disk format.
                                enum:
                                - raw
                                - qcow2
                                - vdi
                                - vmdk
                                - live-iso
                                type: string
                              url:
                                description: URL is a location of an image to deploy.
                                type: string
                            required:
                            - checksum
                            - url
                            type: object
                          metaData:
                            description: MetaData is an object storing the reference to
                              the secret containing the Metadata given by the user.
                            properties:
                              name:
                                description: name is unique within a namespace to reference
                                  a secret resource.
                                type: string
                              namespace:
                                description: namespace defines the space within which
                                  the secret name must be unique.
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          networkData:
                            description: NetworkData is an object storing the reference
                              to the secret containing the network data given by the user.
                            properties:
                              name:
                                description: name is unique within a namespace to reference
                                  a secret resource.
                                type: string
                              namespace:
                                description: namespace defines the space within which
                                  the secret name must be unique.
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          providerID:
                            description: ProviderID will be the Metal3 machine in ProviderID
                              format (metal3://<bmh-uuid>)
                            type: string
                          userData:
                            description: UserData references the Secret that holds user
                              data needed by the bare metal operator. The Namespace is
                              optional; it will default to the metal3machine's namespace
                              if not specified.
                            properties:
                              name:
                                description: name is unique within a namespace to reference
                                  a secret resource.
                                type: string
                              namespace:
                                description: namespace defines the space within which
                                  the secret name must be unique.
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                        required:
                        - image
                        type: object
                    required:
                    - spec
                    type: object
                required:
                - template
                type: object
            type: object
        served: true
        storage: true
        subresources: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1beta1: v1beta1
      name: metal3remediations.infrastructure.cluster.x-k8s.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: capm3-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: infrastructure.cluster.x-k8s.io
      names:
        categories:
        - cluster-api
        kind: Metal3Remediation
        listKind: Metal3RemediationList
        plural: metal3remediations
        shortNames:
        - m3r
        - m3remediation
        singular: metal3remediation
      scope: Namespaced
      versions:
      - additionalPrinterColumns:
        - description: How many times remediation controller should attempt to remediate
            the host
          jsonPath: .spec.strategy.retryLimit
          name: Retry limit
          type: string
        - description: How many times remediation controller has tried to remediate the
            node
          jsonPath: .status.retryCount
          name: Retry count
          type: string
        - description: Timestamp of the last remediation attempt
          jsonPath: .status.lastRemediated
          name: Last Remediated
          type: string
        - description: Type of the remediation strategy
          jsonPath: .spec.strategy.type
          name: Strategy
          type: string
        - description: Phase of the remediation
          jsonPath: .status.phase
          name: Phase
          type: string
        name: v1beta1
        schema:
          openAPIV3Schema:
            description: Metal3Remediation is the Schema for the metal3remediations API.
            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: Metal3RemediationSpec defines the desired state of Metal3Remediation.
                properties:
                  strategy:
                    description: Strategy field defines remediation strategy.
                    properties:
                      retryLimit:
                        description: Sets maximum number of remediation retries.
                        type: integer
                      timeout:
                        description: Sets the timeout between remediation retries.
                        type: string
                      type:
                        description: Type of remediation.
                        type: string
                    type: object
                type: object
              status:
                description: Metal3RemediationStatus defines the observed state of Metal3Remediation.
                properties:
                  lastRemediated:
                    description: LastRemediated identifies when the host was last remediated
                    format: date-time
                    type: string
                  phase:
                    description: Phase represents the current phase of machine remediation.
                      E.g. Pending, Running, Done etc.
                    type: string
                  retryCount:
                    description: RetryCount can be used as a counter during the remediation.
                      Field can hold number of reboots etc.
                    type: integer
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
        controller-gen.kubebuilder.io/version: v0.13.0
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        cluster.x-k8s.io/v1beta1: v1beta1
      name: metal3remediationtemplates.infrastructure.cluster.x-k8s.io
    spec:
      conversion:
        strategy: Webhook
        webhook:
          clientConfig:
            caBundle: Cg==
            service:
              name: capm3-webhook-service
              namespace: capm3-system
              path: /convert
          conversionReviewVersions:
          - v1
          - v1beta1
      group: infrastructure.cluster.x-k8s.io
      names:
        categories:
        - cluster-api
        kind: Metal3RemediationTemplate
        listKind: Metal3RemediationTemplateList
        plural: metal3remediationtemplates
        shortNames:
        - m3rt
        - m3remediationtemplate
        - m3remediationtemplates
        - metal3rt
        - metal3remediationtemplate
        singular: metal3remediationtemplate
      scope: Namespaced
      versions:
      - name: v1beta1
        schema:
          openAPIV3Schema:
            description: Metal3RemediationTemplate is the Schema for the metal3remediationtemplates
              API.
            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: Metal3RemediationTemplateSpec defines the desired state of
                  Metal3RemediationTemplate.
                properties:
                  template:
                    description: Metal3RemediationTemplateResource describes the data
                      needed to create a Metal3Remediation from a template.
                    properties:
                      spec:
                        description: Spec is the specification of the desired behavior
                          of the Metal3Remediation.
                        properties:
                          strategy:
                            description: Strategy field defines remediation strategy.
                            properties:
                              retryLimit:
                                description: Sets maximum number of remediation retries.
                                type: integer
                              timeout:
                                description: Sets the timeout between remediation retries.
                                type: string
                              type:
                                description: Type of remediation.
                                type: string
                            type: object
                        type: object
                    required:
                    - spec
                    type: object
                required:
                - template
                type: object
              status:
                description: Metal3RemediationTemplateStatus defines the observed state
                  of Metal3RemediationTemplate.
                properties:
                  status:
                    description: Metal3RemediationStatus defines the observed state of
                      Metal3Remediation
                    properties:
                      lastRemediated:
                        description: LastRemediated identifies when the host was last
                          remediated
                        format: date-time
                        type: string
                      phase:
                        description: Phase represents the current phase of machine remediation.
                          E.g. Pending, Running, Done etc.
                        type: string
                      retryCount:
                        description: RetryCount can be used as a counter during the remediation.
                          Field can hold number of reboots etc.
                        type: integer
                    type: object
                required:
                - status
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-manager
      namespace: capm3-system
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-manager
      namespace: capm3-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-leader-election-role
      namespace: capm3-system
    rules:
    - apiGroups:
      - ""
      resources:
      - events
      verbs:
      - create
    - apiGroups:
      - coordination.k8s.io
      resources:
      - leases
      verbs:
      - get
      - list
      - watch
      - create
      - update
      - patch
      - delete
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-leader-election-role
      namespace: capm3-system
    rules:
    - apiGroups:
      - ""
      resources:
      - events
      verbs:
      - create
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-manager-role
    rules:
    - apiGroups:
      - ""
      resources:
      - events
      verbs:
      - create
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ""
      resources:
      - secrets
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - authentication.k8s.io
      resources:
      - tokenreviews
      verbs:
      - create
    - apiGroups:
      - authorization.k8s.io
      resources:
      - subjectaccessreviews
      verbs:
      - create
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - clusters
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - clusters
      - clusters/status
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - clusters/status
      verbs:
      - get
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - kubeadmcontrolplanes
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - machinedeployments
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - machines
      - machines/status
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - machinesets
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ""
      resources:
      - nodes
      verbs:
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3clusters
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3clusters/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3dataclaims
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3dataclaims/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3datas
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3datas/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3datatemplates
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3datatemplates/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3machines
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3machines/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3machinetemplates
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3remediations
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - infrastructure.cluster.x-k8s.io
      resources:
      - metal3remediations/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - ipam.cluster.x-k8s.io
      resources:
      - ipaddressclaims
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ipam.cluster.x-k8s.io
      resources:
      - ipaddressclaims/status
      verbs:
      - get
      - watch
    - apiGroups:
      - ipam.cluster.x-k8s.io
      resources:
      - ipaddresses
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ipam.cluster.x-k8s.io
      resources:
      - ipaddresses/status
      verbs:
      - get
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipaddresses
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipaddresses/status
      verbs:
      - get
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipclaims
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipclaims/status
      verbs:
      - get
      - watch
    - apiGroups:
      - metal3.io
      resources:
      - baremetalhosts
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - metal3.io
      resources:
      - baremetalhosts/status
      verbs:
      - get
      - patch
      - update
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-manager-role
    rules:
    - apiGroups:
      - ""
      resources:
      - events
      verbs:
      - create
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ""
      resources:
      - secrets
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - authentication.k8s.io
      resources:
      - tokenreviews
      verbs:
      - create
    - apiGroups:
      - authorization.k8s.io
      resources:
      - subjectaccessreviews
      verbs:
      - create
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - clusters
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - cluster.x-k8s.io
      resources:
      - clusters/status
      verbs:
      - get
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipaddresses
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipaddresses/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipclaims
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipclaims/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ippools
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ippools/status
      verbs:
      - get
      - patch
      - update
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-leader-election-rolebinding
      namespace: capm3-system
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: capm3-leader-election-role
    subjects:
    - kind: ServiceAccount
      name: capm3-manager
      namespace: capm3-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-leader-election-rolebinding
      namespace: capm3-system
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: ipam-leader-election-role
    subjects:
    - kind: ServiceAccount
      name: ipam-manager
      namespace: capm3-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-manager-rolebinding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: capm3-manager-role
    subjects:
    - kind: ServiceAccount
      name: capm3-manager
      namespace: capm3-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-manager-rolebinding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: ipam-manager-role
    subjects:
    - kind: ServiceAccount
      name: ipam-manager
      namespace: capm3-system
    ---
    apiVersion: v1
    data:
      CAPM3_FAST_TRACK: ${CAPM3_FAST_TRACK:='false'}
    kind: ConfigMap
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-capm3fasttrack-configmap
      namespace: capm3-system
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-webhook-service
      namespace: capm3-system
    spec:
      ports:
      - port: 443
        targetPort: webhook-server
      selector:
        cluster.x-k8s.io/provider: infrastructure-metal3
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-webhook-service
      namespace: capm3-system
    spec:
      ports:
      - port: 443
        targetPort: ipam-webhook
      selector:
        cluster.x-k8s.io/provider: infrastructure-metal3
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        control-plane: controller-manager
        controller-tools.k8s.io: "1.0"
      name: capm3-controller-manager
      namespace: capm3-system
    spec:
      selector:
        matchLabels:
          cluster.x-k8s.io/provider: infrastructure-metal3
          control-plane: controller-manager
          controller-tools.k8s.io: "1.0"
      template:
        metadata:
          labels:
            cluster.x-k8s.io/provider: infrastructure-metal3
            control-plane: controller-manager
            controller-tools.k8s.io: "1.0"
        spec:
          containers:
          - args:
            - --webhook-port=9443
            - --enableBMHNameBasedPreallocation=${enableBMHNameBasedPreallocation:=false}
            - --diagnostics-address=${CAPM3_DIAGNOSTICS_ADDRESS:=:8443}
            - --insecure-diagnostics=${CAPM3_INSECURE_DIAGNOSTICS:=false}
            command:
            - /manager
            env:
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            envFrom:
            - configMapRef:
                name: capm3-capm3fasttrack-configmap
            image: quay.io/metal3-io/cluster-api-provider-metal3:v1.7.2
            imagePullPolicy: IfNotPresent
            livenessProbe:
              httpGet:
                path: /healthz
                port: healthz
            name: manager
            ports:
            - containerPort: 9443
              name: webhook-server
              protocol: TCP
            - containerPort: 9440
              name: healthz
              protocol: TCP
            - containerPort: 8443
              name: metrics
              protocol: TCP
            readinessProbe:
              httpGet:
                path: /readyz
                port: healthz
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                - ALL
              privileged: false
              runAsGroup: 65532
              runAsUser: 65532
            volumeMounts:
            - mountPath: /tmp/k8s-webhook-server/serving-certs
              name: cert
              readOnly: true
          securityContext:
            runAsNonRoot: true
            seccompProfile:
              type: RuntimeDefault
          serviceAccountName: capm3-manager
          terminationGracePeriodSeconds: 10
          tolerations:
          - effect: NoSchedule
            key: node-role.kubernetes.io/master
          - effect: NoSchedule
            key: node-role.kubernetes.io/control-plane
          volumes:
          - name: cert
            secret:
              defaultMode: 420
              secretName: capm3-webhook-service-cert
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
        control-plane: controller-manager
        controller-tools.k8s.io: "1.0"
      name: ipam-controller-manager
      namespace: capm3-system
    spec:
      selector:
        matchLabels:
          cluster.x-k8s.io/provider: infrastructure-metal3
          control-plane: controller-manager
          controller-tools.k8s.io: "1.0"
      template:
        metadata:
          labels:
            cluster.x-k8s.io/provider: infrastructure-metal3
            control-plane: controller-manager
            controller-tools.k8s.io: "1.0"
        spec:
          containers:
          - args:
            - --webhook-port=9443
            - --diagnostics-address=${IPAM_DIAGNOSTICS_ADDRESS:=:8443}
            - --insecure-diagnostics=${IPAM_INSECURE_DIAGNOSTICS:=false}
            command:
            - /manager
            env:
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            image: quay.io/metal3-io/ip-address-manager:v1.7.2
            imagePullPolicy: IfNotPresent
            livenessProbe:
              httpGet:
                path: /healthz
                port: healthz
            name: manager
            ports:
            - containerPort: 9443
              name: ipam-webhook
              protocol: TCP
            - containerPort: 9440
              name: healthz
              protocol: TCP
            - containerPort: 8443
              name: metrics
              protocol: TCP
            readinessProbe:
              httpGet:
                path: /readyz
                port: healthz
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                - ALL
              privileged: false
              runAsGroup: 65532
              runAsUser: 65532
            volumeMounts:
            - mountPath: /tmp/k8s-webhook-server/serving-certs
              name: cert
              readOnly: true
          securityContext:
            runAsNonRoot: true
            seccompProfile:
              type: RuntimeDefault
          serviceAccountName: ipam-manager
          terminationGracePeriodSeconds: 10
          tolerations:
          - effect: NoSchedule
            key: node-role.kubernetes.io/master
          - effect: NoSchedule
            key: node-role.kubernetes.io/control-plane
          volumes:
          - name: cert
            secret:
              defaultMode: 420
              secretName: ipam-webhook-service-cert
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-serving-cert
      namespace: capm3-system
    spec:
      dnsNames:
      - capm3-webhook-service.capm3-system.svc
      - capm3-webhook-service.capm3-system.svc.cluster.local
      issuerRef:
        kind: Issuer
        name: capm3-selfsigned-issuer
      secretName: capm3-webhook-service-cert
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-serving-cert
      namespace: capm3-system
    spec:
      dnsNames:
      - ipam-webhook-service.capm3-system.svc
      - ipam-webhook-service.capm3-system.svc.cluster.local
      issuerRef:
        kind: Issuer
        name: ipam-selfsigned-issuer
      secretName: ipam-webhook-service-cert
    ---
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-selfsigned-issuer
      namespace: capm3-system
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-selfsigned-issuer
      namespace: capm3-system
    spec:
      selfSigned: {}
    ---
    apiVersion: admissionregistration.k8s.io/v1
    kind: MutatingWebhookConfiguration
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-mutating-webhook-configuration
    webhooks:
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-metal3cluster
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.metal3cluster.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3clusters
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-metal3data
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.metal3data.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3datas
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-metal3dataclaim
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.metal3dataclaim.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3dataclaims
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-metal3datatemplate
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.metal3datatemplate.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3datatemplates
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-metal3machine
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.metal3machine.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3machines
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-metal3machinetemplate
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.metal3machinetemplate.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3machinetemplates
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-metal3remediation
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.metal3remediation.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3remediations
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /mutate-infrastructure-cluster-x-k8s-io-v1beta1-metal3remediationtemplate
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.metal3remediationtemplate.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3remediationtemplates
      sideEffects: None
    ---
    apiVersion: admissionregistration.k8s.io/v1
    kind: MutatingWebhookConfiguration
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/ipam-serving-cert
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-mutating-webhook-configuration
    webhooks:
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: ipam-webhook-service
          namespace: capm3-system
          path: /mutate-ipam-metal3-io-v1alpha1-ipaddress
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.ipaddress.ipam.metal3.io
      rules:
      - apiGroups:
        - ipam.metal3.io
        apiVersions:
        - v1alpha1
        operations:
        - CREATE
        - UPDATE
        resources:
        - ipaddresses
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: ipam-webhook-service
          namespace: capm3-system
          path: /mutate-ipam-metal3-io-v1alpha1-ipclaim
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.ipclaim.ipam.metal3.io
      rules:
      - apiGroups:
        - ipam.metal3.io
        apiVersions:
        - v1alpha1
        operations:
        - CREATE
        - UPDATE
        resources:
        - ipclaims
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: ipam-webhook-service
          namespace: capm3-system
          path: /mutate-ipam-metal3-io-v1alpha1-ippool
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: default.ippool.ipam.metal3.io
      rules:
      - apiGroups:
        - ipam.metal3.io
        apiVersions:
        - v1alpha1
        operations:
        - CREATE
        - UPDATE
        resources:
        - ippools
      sideEffects: None
    ---
    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingWebhookConfiguration
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/capm3-serving-cert
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: capm3-validating-webhook-configuration
    webhooks:
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-metal3cluster
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.metal3cluster.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3clusters
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-metal3data
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.metal3data.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3datas
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-metal3dataclaim
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.metal3dataclaim.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3dataclaims
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-metal3datatemplate
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.metal3datatemplate.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3datatemplates
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-metal3machine
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.metal3machine.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3machines
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-metal3machinetemplate
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.metal3machinetemplate.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3machinetemplates
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-metal3remediation
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.metal3remediation.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3remediations
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: capm3-webhook-service
          namespace: capm3-system
          path: /validate-infrastructure-cluster-x-k8s-io-v1beta1-metal3remediationtemplate
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.metal3remediationtemplate.infrastructure.cluster.x-k8s.io
      rules:
      - apiGroups:
        - infrastructure.cluster.x-k8s.io
        apiVersions:
        - v1beta1
        operations:
        - CREATE
        - UPDATE
        resources:
        - metal3remediationtemplates
      sideEffects: None
    ---
    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingWebhookConfiguration
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: capm3-system/ipam-serving-cert
      labels:
        cluster.x-k8s.io/provider: infrastructure-metal3
      name: ipam-validating-webhook-configuration
    webhooks:
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: ipam-webhook-service
          namespace: capm3-system
          path: /validate-ipam-metal3-io-v1alpha1-ipaddress
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.ipaddress.ipam.metal3.io
      rules:
      - apiGroups:
        - ipam.metal3.io
        apiVersions:
        - v1alpha1
        operations:
        - CREATE
        - UPDATE
        resources:
        - ipaddresses
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: ipam-webhook-service
          namespace: capm3-system
          path: /validate-ipam-metal3-io-v1alpha1-ipclaim
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.ipclaim.ipam.metal3.io
      rules:
      - apiGroups:
        - ipam.metal3.io
        apiVersions:
        - v1alpha1
        operations:
        - CREATE
        - UPDATE
        resources:
        - ipclaims
      sideEffects: None
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: ipam-webhook-service
          namespace: capm3-system
          path: /validate-ipam-metal3-io-v1alpha1-ippool
      failurePolicy: Fail
      matchPolicy: Equivalent
      name: validation.ippool.ipam.metal3.io
      rules:
      - apiGroups:
        - ipam.metal3.io
        apiVersions:
        - v1alpha1
        operations:
        - CREATE
        - UPDATE
        resources:
        - ippools
      sideEffects: None
  metadata: |
    apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3
    kind: Metadata
    releaseSeries:
    - major: 1
      minor: 7
      contract: v1beta1
    - major: 1
      minor: 6
      contract: v1beta1
    - major: 1
      minor: 5
      contract: v1beta1
    - major: 1
      minor: 4
      contract: v1beta1
    - major: 1
      minor: 3
      contract: v1beta1
    - major: 1
      minor: 2
      contract: v1beta1
    - major: 1
      minor: 1
      contract: v1beta1
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: v1.7.2
  namespace: capm3-system
  labels:
    provider-components: metal3