{{- if not (lookup "v1" "Namespace" "" "metal3-ipam-system") }}
apiVersion: v1
kind: Namespace
metadata:
  labels:
    cluster.x-k8s.io/provider: ipam-metal3ipam
    pod-security.kubernetes.io/enforce: restricted
  name: metal3-ipam-system
---
{{- end }}
apiVersion: v1
data:
  components: |
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
        control-plane: controller-manager
      name: metal3-ipam-system
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: metal3-ipam-system/ipam-serving-cert
        controller-gen.kubebuilder.io/version: v0.16.5
      labels:
        cluster.x-k8s.io/provider: ipam-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:
            service:
              name: ipam-webhook-service
              namespace: metal3-ipam-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.
                        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.
                        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: metal3-ipam-system/ipam-serving-cert
        controller-gen.kubebuilder.io/version: v0.16.5
      labels:
        cluster.x-k8s.io/provider: ipam-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:
            service:
              name: ipam-webhook-service
              namespace: metal3-ipam-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.
                        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.
                        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: metal3-ipam-system/ipam-serving-cert
        controller-gen.kubebuilder.io/version: v0.16.5
      labels:
        cluster.x-k8s.io/provider: ipam-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:
            service:
              name: ipam-webhook-service
              namespace: metal3-ipam-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: v1
    kind: ServiceAccount
    metadata:
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
      name: ipam-manager
      namespace: metal3-ipam-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
      name: ipam-leader-election-role
      namespace: metal3-ipam-system
    rules:
    - apiGroups:
      - ""
      resources:
      - events
      verbs:
      - create
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      labels:
        cluster.x-k8s.io/provider: ipam-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.cluster.x-k8s.io
      resources:
      - ipaddressclaims
      - ipaddresses
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ipam.cluster.x-k8s.io
      resources:
      - ipaddressclaims/status
      - ipaddresses/status
      verbs:
      - get
      - patch
      - update
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipaddresses
      - ipclaims
      - ippools
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    - apiGroups:
      - ipam.metal3.io
      resources:
      - ipaddresses/status
      - ipclaims/status
      - ippools/status
      verbs:
      - get
      - patch
      - update
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
      name: ipam-leader-election-rolebinding
      namespace: metal3-ipam-system
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: ipam-leader-election-role
    subjects:
    - kind: ServiceAccount
      name: ipam-manager
      namespace: metal3-ipam-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
      name: ipam-manager-rolebinding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: ipam-manager-role
    subjects:
    - kind: ServiceAccount
      name: ipam-manager
      namespace: metal3-ipam-system
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
      name: ipam-webhook-service
      namespace: metal3-ipam-system
    spec:
      ports:
      - port: 443
        targetPort: ipam-webhook
      selector:
        cluster.x-k8s.io/provider: ipam-metal3
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
        control-plane: controller-manager
        controller-tools.k8s.io: "1.0"
      name: ipam-controller-manager
      namespace: metal3-ipam-system
    spec:
      selector:
        matchLabels:
          cluster.x-k8s.io/provider: ipam-metal3
          control-plane: controller-manager
          controller-tools.k8s.io: "1.0"
      template:
        metadata:
          labels:
            cluster.x-k8s.io/provider: ipam-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}
            - --tls-min-version=${TLS_MIN_VERSION:=VersionTLS13}
            command:
            - /manager
            env:
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            image: registry.rancher.com/rancher/ip-address-manager:v1.10.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
            terminationMessagePolicy: FallbackToLogsOnError
            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: ipam-metal3
      name: ipam-serving-cert
      namespace: metal3-ipam-system
    spec:
      dnsNames:
      - ipam-webhook-service.metal3-ipam-system.svc
      - ipam-webhook-service.metal3-ipam-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: ipam-metal3
      name: ipam-selfsigned-issuer
      namespace: metal3-ipam-system
    spec:
      selfSigned: {}
    ---
    apiVersion: admissionregistration.k8s.io/v1
    kind: MutatingWebhookConfiguration
    metadata:
      annotations:
        cert-manager.io/inject-ca-from: metal3-ipam-system/ipam-serving-cert
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
      name: ipam-mutating-webhook-configuration
    webhooks:
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: ipam-webhook-service
          namespace: metal3-ipam-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: metal3-ipam-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: metal3-ipam-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: metal3-ipam-system/ipam-serving-cert
      labels:
        cluster.x-k8s.io/provider: ipam-metal3
      name: ipam-validating-webhook-configuration
    webhooks:
    - admissionReviewVersions:
      - v1
      - v1beta1
      clientConfig:
        service:
          name: ipam-webhook-service
          namespace: metal3-ipam-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: metal3-ipam-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: metal3-ipam-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: 10
      contract: v1beta1
    - major: 1
      minor: 9
      contract: v1beta1
    - major: 1
      minor: 8
      contract: v1beta1
    - 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.10.2
  namespace: metal3-ipam-system
  labels:
    provider-components: metal3ipam
