---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.1
  creationTimestamp: null
  name: kkmachinetemplates.infrastructure.cluster.x-k8s.io
spec:
  group: infrastructure.cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: KKMachineTemplate
    listKind: KKMachineTemplateList
    plural: kkmachinetemplates
    shortNames:
    - kkmt
    singular: kkmachinetemplate
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Time duration since creation of KKMachineTemplate
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: KKMachineTemplate is the Schema for the kkmachinetemplates 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: KKMachineTemplateSpec defines the desired state of KKMachineTemplate
            properties:
              template:
                description: KKMachineTemplateResource describes the data needed to
                  create am KKMachine from a template.
                properties:
                  metadata:
                    description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: 'Annotations is an unstructured key value map
                          stored with a resource that may be set by external tools
                          to store and retrieve arbitrary metadata. They are not queryable
                          and should be preserved when modifying objects. More info:
                          http://kubernetes.io/docs/user-guide/annotations'
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: 'Map of string keys and values that can be used
                          to organize and categorize (scope and select) objects. May
                          match selectors of replication controllers and services.
                          More info: http://kubernetes.io/docs/user-guide/labels'
                        type: object
                    type: object
                  spec:
                    description: Spec is the specification of the desired behavior
                      of the machine.
                    properties:
                      containerManager:
                        description: ContainerManager is the container manager config
                          of this machine.
                        properties:
                          criDockerdVersion:
                            description: CRIDockerdVersion defines the version of
                              cri-dockerd, available only when Type is docker. https://github.com/Mirantis/cri-dockerd
                            type: string
                          criSocket:
                            description: CRISocket is used to connect an existing
                              CRIClient.
                            type: string
                          crictlVersion:
                            description: CRICTLVersion defines the version of CRICTL.
                            type: string
                          type:
                            description: Type defines the type of ContainerManager.
                              "docker", "containerd"
                            type: string
                          version:
                            description: Version defines the version of ContainerManager.
                            type: string
                        type: object
                      instanceID:
                        description: InstanceID is the name of the KKInstance.
                        type: string
                      providerID:
                        description: ProviderID is the unique identifier as specified
                          by the kubekey provider.
                        type: string
                      repository:
                        description: Repository is the repository config of this machine.
                        properties:
                          iso:
                            description: 'ISO specifies the ISO file name. There are
                              3 options: "": empty string means will not install the
                              packages. "none": no ISO file will be used. And capkk
                              will use the default repository to install the required
                              packages. "auto": capkk will detect the ISO file automatically.
                              Only support Ubuntu/Debian/CentOS. "xxx-20.04-debs-amd64.iso":
                              use the specified name to get the ISO file name.'
                            type: string
                          packages:
                            description: Packages is a list of packages to be installed.
                            items:
                              type: string
                            type: array
                          update:
                            description: Update will update the repository packages
                              list and cache if it is true.
                            type: boolean
                        type: object
                      roles:
                        description: Roles is the role of the machine.
                        items:
                          description: Role represents a role of a node.
                          type: string
                        type: array
                    type: object
                required:
                - spec
                type: object
            required:
            - template
            type: object
          status:
            description: KKMachineTemplateStatus defines a status for an KKMachineTemplate.
            properties:
              capacity:
                additionalProperties:
                  anyOf:
                  - type: integer
                  - type: string
                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                  x-kubernetes-int-or-string: true
                description: 'Capacity defines the resource capacity for this machine.
                  This value is used for autoscaling from zero operations as defined
                  in: https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20210310-opt-in-autoscaling-from-zero.md'
                type: object
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
