---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2-0.20250203100058-d1f73b5ea552
  labels:
    cluster.x-k8s.io/v1beta1: v1beta1
  name: kkclusters.infrastructure.cluster.x-k8s.io
spec:
  group: infrastructure.cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: KKCluster
    listKind: KKClusterList
    plural: kkclusters
    shortNames:
    - kkc
    singular: kkcluster
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Cluster to which this KKClusters belongs
      jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name
      name: Cluster
      type: string
    - description: Cluster infrastructure is ready for SSH instances
      jsonPath: .status.ready
      name: Ready
      type: string
    - description: the ControlPlaneEndpointType to connect workload cluster
      jsonPath: .spec.controlPlaneEndpointType
      name: ControlPlaneEndpointType
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: KKCluster resource maps a kubernetes cluster, manage and reconcile
          cluster status.
        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: KKClusterSpec defines the desired state of KKCluster.
            properties:
              controlPlaneEndpointType:
                description: |-
                  ControlPlaneEndpointType defines the type of control plane endpoint. such as dns, vip.
                  when use vip, it will deploy kube-vip in each control_plane node. the default value is vip.
                type: string
              hostCheckGroup:
                description: |-
                  which Group defined in Inventory will be checked. there is some default group by system:
                  - all: contains all hosts
                  - ungrouped: contains hosts which do not belong to any groups.
                  if the value is empty, "ungrouped" will be used.
                type: string
              inventory:
                description: InventoryHosts contains all hosts of the cluster.
                items:
                  properties:
                    connector:
                      description: Connector to connect the host.
                      properties:
                        host:
                          description: Host address. default use host.name.
                          type: string
                        password:
                          description: Password is the password of the host.
                          type: string
                        privateKey:
                          description: PrivateKey is the private key of the host.
                            default is ~/.ssh/id_rsa.
                          type: string
                        type:
                          description: Type to connector the host.
                          type: string
                        user:
                          description: User is the user name of the host. default
                            is root.
                          type: string
                      type: object
                    name:
                      description: Name of the host.
                      type: string
                    vars:
                      description: Vars for the host.
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  type: object
                type: array
              tolerate:
                description: tolerate defines if tolerate host check if failed.
                type: boolean
            type: object
          status:
            description: KKClusterStatus defines the observed state of KKCluster.
            properties:
              conditions:
                description: Conditions defines current service state of the KKCluster.
                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 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:
                type: string
              failureReason:
                description: FailureReason
                type: string
              ready:
                description: if Ready to create cluster. usage after inventory is
                  ready.
                type: boolean
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
