apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crcclusters.crc.developer.openshift.io
spec:
  group: crc.developer.openshift.io
  names:
    kind: CrcCluster
    listKind: CrcClusterList
    plural: crcclusters
    shortNames:
    - crc
    singular: crccluster
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: CrcCluster is the Schema for the crcclusters 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: CrcClusterSpec defines the desired state of CrcCluster
            properties:
              bundleImage:
                description: BundleImage is the CRC bundle image to use. If not set,
                  a default will be chosen based on the BundleName. This exists only
                  to allow temporary overriding of new bundle images before a formal
                  API gets created to allow dynamically creating new bundle images.
                  The new bundle image will need to have the same SSH key and initial
                  kubeconfig as the bundle specified in BundleName.
                type: string
              bundleName:
                description: BundleName is the CRC bundle name to use. If not set,
                  a default will be chosen by the CRC Operator.
                enum:
                - ocp445
                - ocp450rc1
                - ocp450rc2
                type: string
              cpu:
                default: 4
                description: CPU is the number of CPUs to allocate to the cluster
                type: integer
              memory:
                default: 16Gi
                description: Memory is the amount of memory to allocate to the cluster
                type: string
              pullSecret:
                description: PullSecret is your base64-encoded OpenShift pull secret
                type: string
            required:
            - cpu
            - memory
            - pullSecret
            type: object
          status:
            description: CrcClusterStatus defines the observed state of CrcCluster
            properties:
              apiURL:
                description: APIURL is the URL of the cluster's API server
                type: string
              baseDomain:
                description: BaseDomain is the base domain of the cluster's URLs
                type: string
              clusterID:
                description: ClusterID is the ID of this cluster, only really used
                  if connected cluster features are enabled
                type: string
              conditions:
                description: Conditions represent the latest available observations
                  of an object's state
                items:
                  description: "Condition represents an observation of an object's
                    state. Conditions are an extension mechanism intended to be used
                    when the details of an observation are not a priori known or would
                    not apply to all instances of a given Kind. \n Conditions should
                    be added to explicitly convey properties that users and components
                    care about rather than requiring those properties to be inferred
                    from other observations. Once defined, the meaning of a Condition
                    can not be changed arbitrarily - it becomes part of the API, and
                    has the same backwards- and forwards-compatibility concerns of
                    any other part of the API."
                  properties:
                    lastTransitionTime:
                      format: date-time
                      type: string
                    message:
                      type: string
                    reason:
                      description: ConditionReason is intended to be a one-word, CamelCase
                        representation of the category of cause of the current status.
                        It is intended to be used in concise output, such as one-line
                        kubectl get output, and in summarizing occurrences of causes.
                      type: string
                    status:
                      type: string
                    type:
                      description: "ConditionType is the type of the condition and
                        is typically a CamelCased word or short phrase. \n Condition
                        types should indicate state in the \"abnormal-true\" polarity.
                        For example, if the condition indicates when a policy is invalid,
                        the \"is valid\" case is probably the norm, so the condition
                        should be called \"Invalid\"."
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              consoleURL:
                description: ConsoleURL is the URL of the cluster's web console
                type: string
              kubeAdminClientKey:
                description: KubeAdminClientKey is the base64-encoded client key to
                  connect to the cluster as an administrator.
                type: string
              kubeAdminPassword:
                description: KubeAdminPassword is the password to connect to the cluster
                  as an administrator
                type: string
              kubeconfig:
                description: Kubeconfig is the base64-encoded kubeconfig to connect
                  to the cluster as an administrator
                type: string
            required:
            - conditions
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
