---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: clusters.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Cluster
    listKind: ClusterList
    plural: clusters
    singular: cluster
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.networkName
      name: NETWORK
      type: string
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .status.db.version
      name: VERSION
      type: string
    - description: name of ConfigRevision in use
      jsonPath: .spec.configRevisionRef.name
      name: CONF
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Cluster is the Schema for the clusters 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: ClusterSpec defines the desired state of Cluster
            properties:
              cluster:
                description: Cluster specifies the cluster topology
                properties:
                  pd:
                    properties:
                      instanceType:
                        description: InstanceType is specified the profile of every
                          PD node, the InstanceType must be declared in the Provider
                          spec
                        type: string
                      replicas:
                        minimum: 1
                        type: integer
                      storageClassName:
                        type: string
                      storageSize:
                        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
                      suspendAction:
                        description: |-
                          SuspendAction defines the suspend actions for the component
                          and overrides the value in `ClusterTopology`
                        properties:
                          suspendCompute:
                            type: boolean
                        type: object
                    required:
                    - instanceType
                    - replicas
                    - storageSize
                    type: object
                  suspendAction:
                    description: SuspendAction defines the suspend actions for a cluster
                    properties:
                      suspendCompute:
                        type: boolean
                    type: object
                  tidb:
                    properties:
                      audit:
                        properties:
                          azure:
                            properties:
                              sasToken:
                                type: string
                            required:
                            - sasToken
                            type: object
                          bucketUrl:
                            type: string
                          enable:
                            description: |-
                              When enable this, means tidb need to be able pushing audit log to the specific object storage.
                              DO NOT means the plugin is enable. User can run "admin plugins enable audit" or "admin plugins disable audit".
                              The plugins is enable default when we start tidb and load the plugin.
                            type: boolean
                          region:
                            type: string
                          roleArn:
                            type: string
                        type: object
                      instanceType:
                        description: InstanceType is specified the profile of every
                          TiDB node, the InstanceType must be declared in the Provider
                          spec
                        type: string
                      precheckAudit:
                        description: Set only if you want to check the permission
                          is granted to tidb cloud right.
                        properties:
                          azure:
                            properties:
                              sasToken:
                                type: string
                            required:
                            - sasToken
                            type: object
                          bucketUrl:
                            type: string
                          enable:
                            description: |-
                              When enable this, means tidb need to be able pushing audit log to the specific object storage.
                              DO NOT means the plugin is enable. User can run "admin plugins enable audit" or "admin plugins disable audit".
                              The plugins is enable default when we start tidb and load the plugin.
                            type: boolean
                          region:
                            type: string
                          roleArn:
                            type: string
                        type: object
                      replicas:
                        description: 'notes: replicas minimum change from 1 to 0 to
                          support extraGroup'
                        minimum: 0
                        type: integer
                      security:
                        description: Set only if you want to overwrite the default
                          TiDB security configurations.
                        properties:
                          authTokenJwksSecret:
                            description: AuthTokenJwksSecret references a secret containing
                              tidb_auth_token JWKS.
                            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
                          sslCASecret:
                            description: SSLCASecret references a secret containing
                              TiDB server's CA cert.
                            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
                      suspendAction:
                        description: |-
                          SuspendAction defines the suspend actions for the component
                          and overrides the value in `ClusterTopology`
                        properties:
                          suspendCompute:
                            type: boolean
                        type: object
                    required:
                    - instanceType
                    - replicas
                    type: object
                  tiflash:
                    properties:
                      instanceType:
                        description: InstanceType is specified the profile of every
                          TiFlash node, the InstanceType must be declared in the Provider
                          spec
                        type: string
                      replicas:
                        minimum: 0
                        type: integer
                      storageClassName:
                        type: string
                      storageSize:
                        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
                      suspendAction:
                        description: |-
                          SuspendAction defines the suspend actions for the component
                          and overrides the value in `ClusterTopology`
                        properties:
                          suspendCompute:
                            type: boolean
                        type: object
                      useLocalStorage:
                        description: UseLocalStorage specifies whethre the local disk
                          should be used for storage
                        type: boolean
                    required:
                    - instanceType
                    - replicas
                    - storageSize
                    type: object
                  tikv:
                    properties:
                      dedicatedRaftEngineStorage:
                        description: (Deprecated) DedicatedRaftEngineStorage specifies
                          provide a dedicated storage for raft engine.
                        properties:
                          storageClassName:
                            type: string
                          storageSize:
                            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
                        required:
                        - storageSize
                        type: object
                      instanceType:
                        description: InstanceType is specified the profile of every
                          TiKV node, the InstanceType must be declared in the Provider
                          spec
                        type: string
                      replicas:
                        minimum: 1
                        type: integer
                      storageClassName:
                        type: string
                      storageSize:
                        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
                      storageVolumes:
                        description: |-
                          StorageVolumes contains the additional storage volumes for TiKV.
                          NOTE: do not support add/remove volumes after the cluster is created now.
                        items:
                          description: |-
                            ComponentStorageVolume represents the additional storage volume for a component.
                            This is similar to `ComponentStorageSpec` but with more detailed information.
                          properties:
                            mountPath:
                              description: |-
                                MountPath is the path where the volume is mounted.
                                This path should be matched the configuration of the component.
                              type: string
                            name:
                              description: Name is the name of the volume, it should
                                be unique in the component.
                              type: string
                            storageClassName:
                              description: |-
                                StorageClassName is the storage class name of the volume.
                                It often includes IOPS and throughput information,
                                then updating the storage class will update the IOPS and throughput.
                              type: string
                            storageSize:
                              anyOf:
                              - type: integer
                              - type: string
                              description: StorageSize is the size of the volume.
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                          required:
                          - mountPath
                          - name
                          - storageClassName
                          - storageSize
                          type: object
                        type: array
                      suspendAction:
                        description: |-
                          SuspendAction defines the suspend actions for the component
                          and overrides the value in `ClusterTopology`
                        properties:
                          suspendCompute:
                            type: boolean
                        type: object
                      useLocalStorage:
                        description: UseLocalStorage specifies whether the local disk
                          should be used for storage
                        type: boolean
                    required:
                    - instanceType
                    - replicas
                    - storageSize
                    type: object
                  tiproxy:
                    properties:
                      instanceType:
                        description: InstanceType is specified the profile of every
                          TiProxy node, the InstanceType must be declared in the Provider
                          spec
                        type: string
                      replicas:
                        minimum: 0
                        type: integer
                      suspendAction:
                        description: |-
                          SuspendAction defines the suspend actions for the component
                          and overrides the value in `ClusterTopology`
                        properties:
                          suspendCompute:
                            type: boolean
                        type: object
                    required:
                    - instanceType
                    - replicas
                    type: object
                required:
                - pd
                - tidb
                - tiflash
                - tikv
                type: object
              configRevisionRef:
                description: ConfigRevisionRef specifies the ConfigRevision related
                  to current cluster.
                properties:
                  name:
                    type: string
                required:
                - name
                type: object
              extraGroups:
                description: ExtraGroups specifies the extra access group for the
                  cluster, it contains the cluster topology and sql endpoints
                items:
                  properties:
                    name:
                      type: string
                    sqlEndpoints:
                      properties:
                        dns:
                          description: DNS defines dns settings about tidb cluster
                          properties:
                            disabled:
                              description: Disabled specifies whether to disable the
                                dns record for tidb cluster
                              type: boolean
                            identity:
                              description: |-
                                Identity defines dns identity of tidb cluster
                                Normally there are these dns record will be genereated
                                1. Public: tidb.$identity.$domain
                                2. Private: private-tidb.$identity.$domain
                                3. PrivateLink: privatelink-tidb.$identity.$domain
                                Default is a random(11) string
                                This field is readonly and can't be changed if it is set
                                See https://docs.google.com/document/d/15h84VUsgWSJoH21bVRN4qVXUHrt9Dh_4vGNYy-L5juY
                                for more help
                              type: string
                          type: object
                        private:
                          description: Private specifies the intranet facing endpoint
                            of the cluster
                          properties:
                            enabled:
                              type: boolean
                            loadBalancerSourceRanges:
                              description: LoadBalancerSourceRanges the IP whitelists
                                of the service
                              items:
                                type: string
                              type: array
                            port:
                              description: Port that will be exposed by this service.
                              format: int32
                              maximum: 65535
                              minimum: 1
                              type: integer
                          required:
                          - enabled
                          type: object
                        privateLinkIPAddressType:
                          description: |-
                            PrivateLinkIPAddressType is the requested TiDB Group PrivateLink address
                            type. Regional Server owns the transition and treats an empty value as IPv4.
                          enum:
                          - ipv4
                          - dualstack
                          type: string
                        privateLinkNLBIPAddressType:
                          description: |-
                            PrivateLinkNLBIPAddressType is the target address type applied to the
                            Group's private NLB. Cluster Controller only consumes this field and treats
                            an empty value as IPv4.
                          enum:
                          - ipv4
                          - dualstack
                          type: string
                        privateLinkService:
                          description: |-
                            PrivateLinkService specifies the private intranet facing enpoint of the cluster
                            supported by AWS PrivateLink or GCP Private Service Connect
                          nullable: true
                          properties:
                            aws:
                              description: PrivateLink service for AWS
                              properties:
                                acceptedEndpoints:
                                  description: |-
                                    AcceptedEndpoints represents the allowed VPC endpoint IDs.
                                    It has to full match with the connections list in status.
                                  items:
                                    type: string
                                  type: array
                              required:
                              - acceptedEndpoints
                              type: object
                            gcp:
                              description: PrivateLink service for GCP
                              properties:
                                acceptedEndpoints:
                                  description: AcceptedEndpoints represents the allowed
                                    endpoints
                                  items:
                                    description: |-
                                      GCP endpoint, which has format:
                                      projects/{project}/regions/{region}/forwardingRules/{endpoint}
                                      It is a string alias, because kubebuilder don't support to add pattern validation to string slice
                                    pattern: ^projects\/.+\/regions\/.+\/forwardingRules\/.+$
                                    type: string
                                  type: array
                              required:
                              - acceptedEndpoints
                              type: object
                          type: object
                        public:
                          description: Public specifies the internet facing endpoint
                            of the cluster
                          properties:
                            enabled:
                              type: boolean
                            loadBalancerSourceRanges:
                              description: LoadBalancerSourceRanges the IP whitelists
                                of the service
                              items:
                                type: string
                              type: array
                            port:
                              description: Port that will be exposed by this service.
                              format: int32
                              maximum: 65535
                              minimum: 1
                              type: integer
                          required:
                          - enabled
                          type: object
                        useTiProxyAsLBTarget:
                          description: |-
                            UseTiProxyAsLBTarget is the flag to use tiproxy as the load balancer target.
                            It's useful when this group is with tiproxy enabled.
                          type: boolean
                      required:
                      - public
                      type: object
                    tidb:
                      properties:
                        audit:
                          properties:
                            azure:
                              properties:
                                sasToken:
                                  type: string
                              required:
                              - sasToken
                              type: object
                            bucketUrl:
                              type: string
                            enable:
                              description: |-
                                When enable this, means tidb need to be able pushing audit log to the specific object storage.
                                DO NOT means the plugin is enable. User can run "admin plugins enable audit" or "admin plugins disable audit".
                                The plugins is enable default when we start tidb and load the plugin.
                              type: boolean
                            region:
                              type: string
                            roleArn:
                              type: string
                          type: object
                        instanceType:
                          description: InstanceType is specified the profile of every
                            TiDB node, the InstanceType must be declared in the Provider
                            spec
                          type: string
                        precheckAudit:
                          description: Set only if you want to check the permission
                            is granted to tidb cloud right.
                          properties:
                            azure:
                              properties:
                                sasToken:
                                  type: string
                              required:
                              - sasToken
                              type: object
                            bucketUrl:
                              type: string
                            enable:
                              description: |-
                                When enable this, means tidb need to be able pushing audit log to the specific object storage.
                                DO NOT means the plugin is enable. User can run "admin plugins enable audit" or "admin plugins disable audit".
                                The plugins is enable default when we start tidb and load the plugin.
                              type: boolean
                            region:
                              type: string
                            roleArn:
                              type: string
                          type: object
                        replicas:
                          description: 'notes: replicas minimum change from 1 to 0
                            to support extraGroup'
                          minimum: 0
                          type: integer
                        security:
                          description: Set only if you want to overwrite the default
                            TiDB security configurations.
                          properties:
                            authTokenJwksSecret:
                              description: AuthTokenJwksSecret references a secret
                                containing tidb_auth_token JWKS.
                              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
                            sslCASecret:
                              description: SSLCASecret references a secret containing
                                TiDB server's CA cert.
                              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
                        suspendAction:
                          description: |-
                            SuspendAction defines the suspend actions for the component
                            and overrides the value in `ClusterTopology`
                          properties:
                            suspendCompute:
                              type: boolean
                          type: object
                      required:
                      - instanceType
                      - replicas
                      type: object
                    tiproxy:
                      properties:
                        instanceType:
                          description: InstanceType is specified the profile of every
                            TiProxy node, the InstanceType must be declared in the
                            Provider spec
                          type: string
                        replicas:
                          minimum: 0
                          type: integer
                        suspendAction:
                          description: |-
                            SuspendAction defines the suspend actions for the component
                            and overrides the value in `ClusterTopology`
                          properties:
                            suspendCompute:
                              type: boolean
                          type: object
                      required:
                      - instanceType
                      - replicas
                      type: object
                  type: object
                type: array
              forProvider:
                description: ForProvider encodes the provider specific spec
                nullable: true
                type: object
                x-kubernetes-embedded-resource: true
                x-kubernetes-preserve-unknown-fields: true
              kubernetes:
                description: Kubernetes means the kubernetes cluster for this tidb
                  cluster
                properties:
                  account:
                    description: |-
                      aws: account id
                      gcp: project name
                    type: string
                  caData:
                    description: client ca of kubernetes
                    format: byte
                    type: string
                  cloud:
                    description: It defines some cloud specific fields
                    properties:
                      ack:
                        properties:
                          adminNodeRole:
                            type: string
                          subnets:
                            items:
                              type: string
                            type: array
                        type: object
                      aws:
                        properties:
                          adminNodeRole:
                            description: AdminNodeRole is the admin nodegroup's node
                              role
                            type: string
                          eksSecurityGroup:
                            description: Security group of eks control-plane
                            type: string
                          subnetGroups:
                            description: all subnets defined for nodegroup or external
                              service
                            items:
                              properties:
                                name:
                                  type: string
                                subnets:
                                  items:
                                    properties:
                                      subnetID:
                                        type: string
                                      zone:
                                        type: string
                                    required:
                                    - subnetID
                                    type: object
                                  type: array
                              required:
                              - name
                              - subnets
                              type: object
                            type: array
                        required:
                        - subnetGroups
                        type: object
                      azure:
                        properties:
                          nodeResourceGroup:
                            type: string
                          nodeSubnets:
                            items:
                              properties:
                                name:
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                          nodeZones:
                            items:
                              type: string
                            type: array
                          podSubnets:
                            items:
                              properties:
                                name:
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                          resourceGroup:
                            type: string
                        required:
                        - nodeResourceGroup
                        - nodeSubnets
                        - nodeZones
                        - podSubnets
                        - resourceGroup
                        type: object
                      gcp:
                        properties:
                          adminNodeSa:
                            type: string
                          nodeZones:
                            items:
                              type: string
                            type: array
                        required:
                        - adminNodeSa
                        - nodeZones
                        type: object
                    type: object
                  endpoint:
                    description: e.g. https://aaa.bbb.ccc
                    type: string
                  kubeConfigSecretRef:
                    description: kubeConfigSecretRef is the secret reference to the
                      kubeconfig of the general dataplane k8s
                    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
                  name:
                    description: name of eks/gke
                    type: string
                  network:
                    description: |-
                      aws: vpc id
                      gcp: network name
                    type: string
                  provider:
                    description: |-
                      provider of this kubernetes
                      aws/gcp
                    type: string
                  version:
                    description: Version of kubernetes
                    type: string
                required:
                - account
                - endpoint
                - name
                - network
                - provider
                type: object
              networkName:
                description: |-
                  NetworkName references the Network where the Cluster is hosted,
                  the Network must exist in the same namespace as Cluster
                type: string
              paused:
                description: Paused specifies whether to pause the reconciliation
                  loop for Cluster CR
                type: boolean
              recoveryMode:
                description: |-
                  RecoveryMode specifies whether enable recovery mode for TiDB cluster to restore
                  Optional: Defaults to false
                type: boolean
              sharedBucket:
                description: SharedBucket specifies a shared bucket URL which can
                  be used for DB audit log, BR, global sort, etc.
                properties:
                  bucketUrl:
                    description: |-
                      BucketURL is the URL of shared bucket. All data written by this cluster should be within this given prefix.
                      The given bucket URL should be pointed at cluster level and endswith '/', in other words, the given prefix will be shared by clusters
                      running in the same dataplane.
                      For example: s3://test-bucket/{tenant_id}/{project_id}/{cluster_id}/, gcs://test-bucket/{tenant_id}/{project_id}/{cluster_id}/
                    type: string
                type: object
              sqlEndpoints:
                description: SqlEndpoints specifies the mysql endpoints of the cluster
                properties:
                  dns:
                    description: DNS defines dns settings about tidb cluster
                    properties:
                      disabled:
                        description: Disabled specifies whether to disable the dns
                          record for tidb cluster
                        type: boolean
                      identity:
                        description: |-
                          Identity defines dns identity of tidb cluster
                          Normally there are these dns record will be genereated
                          1. Public: tidb.$identity.$domain
                          2. Private: private-tidb.$identity.$domain
                          3. PrivateLink: privatelink-tidb.$identity.$domain
                          Default is a random(11) string
                          This field is readonly and can't be changed if it is set
                          See https://docs.google.com/document/d/15h84VUsgWSJoH21bVRN4qVXUHrt9Dh_4vGNYy-L5juY
                          for more help
                        type: string
                    type: object
                  private:
                    description: Private specifies the intranet facing endpoint of
                      the cluster
                    properties:
                      enabled:
                        type: boolean
                      loadBalancerSourceRanges:
                        description: LoadBalancerSourceRanges the IP whitelists of
                          the service
                        items:
                          type: string
                        type: array
                      port:
                        description: Port that will be exposed by this service.
                        format: int32
                        maximum: 65535
                        minimum: 1
                        type: integer
                    required:
                    - enabled
                    type: object
                  privateLinkIPAddressType:
                    description: |-
                      PrivateLinkIPAddressType is the requested TiDB Group PrivateLink address
                      type. Regional Server owns the transition and treats an empty value as IPv4.
                    enum:
                    - ipv4
                    - dualstack
                    type: string
                  privateLinkNLBIPAddressType:
                    description: |-
                      PrivateLinkNLBIPAddressType is the target address type applied to the
                      Group's private NLB. Cluster Controller only consumes this field and treats
                      an empty value as IPv4.
                    enum:
                    - ipv4
                    - dualstack
                    type: string
                  privateLinkService:
                    description: |-
                      PrivateLinkService specifies the private intranet facing enpoint of the cluster
                      supported by AWS PrivateLink or GCP Private Service Connect
                    nullable: true
                    properties:
                      aws:
                        description: PrivateLink service for AWS
                        properties:
                          acceptedEndpoints:
                            description: |-
                              AcceptedEndpoints represents the allowed VPC endpoint IDs.
                              It has to full match with the connections list in status.
                            items:
                              type: string
                            type: array
                        required:
                        - acceptedEndpoints
                        type: object
                      gcp:
                        description: PrivateLink service for GCP
                        properties:
                          acceptedEndpoints:
                            description: AcceptedEndpoints represents the allowed
                              endpoints
                            items:
                              description: |-
                                GCP endpoint, which has format:
                                projects/{project}/regions/{region}/forwardingRules/{endpoint}
                                It is a string alias, because kubebuilder don't support to add pattern validation to string slice
                              pattern: ^projects\/.+\/regions\/.+\/forwardingRules\/.+$
                              type: string
                            type: array
                        required:
                        - acceptedEndpoints
                        type: object
                    type: object
                  public:
                    description: Public specifies the internet facing endpoint of
                      the cluster
                    properties:
                      enabled:
                        type: boolean
                      loadBalancerSourceRanges:
                        description: LoadBalancerSourceRanges the IP whitelists of
                          the service
                        items:
                          type: string
                        type: array
                      port:
                        description: Port that will be exposed by this service.
                        format: int32
                        maximum: 65535
                        minimum: 1
                        type: integer
                    required:
                    - enabled
                    type: object
                  useTiProxyAsLBTarget:
                    description: |-
                      UseTiProxyAsLBTarget is the flag to use tiproxy as the load balancer target.
                      It's useful when this group is with tiproxy enabled.
                    type: boolean
                required:
                - public
                type: object
            required:
            - cluster
            - networkName
            - sqlEndpoints
            type: object
          status:
            description: ClusterStatus defines the observed state of Cluster
            properties:
              azure:
                description: Azure records infos about how this cluster uses Azure
                  specific features
                properties:
                  diskEncryptionSetResourceID:
                    type: string
                type: object
              conditions:
                description: Current service state of cluster.
                items:
                  description: ClusterCondition contains details for the current condition
                    of this cluster.
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      format: date-time
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      format: date-time
                      type: string
                    message:
                      description: Human-readable message indicating details about
                        last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's
                        last transition.
                      type: string
                    status:
                      description: |-
                        Status is the status of the condition.
                        Can be True, False.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              db:
                description: DB represents the status of the TiDB cluster
                properties:
                  pd:
                    description: PD is the current PD status of db cluster
                    properties:
                      conditions:
                        items:
                          description: Condition contains details for one aspect of
                            the current state of this API Resource.
                          properties:
                            lastTransitionTime:
                              description: |-
                                lastTransitionTime is the 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: |-
                                message is a human readable message indicating details about the transition.
                                This may be an empty string.
                              maxLength: 32768
                              type: string
                            observedGeneration:
                              description: |-
                                observedGeneration represents the .metadata.generation that the condition was set based upon.
                                For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                with respect to the current state of the instance.
                              format: int64
                              minimum: 0
                              type: integer
                            reason:
                              description: |-
                                reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                Producers of specific condition types may define expected values and meanings for this field,
                                and whether the values are considered a guaranteed API.
                                The value should be a CamelCase string.
                                This field may not be empty.
                              maxLength: 1024
                              minLength: 1
                              pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                              type: string
                            status:
                              description: status of the condition, one of True, False,
                                Unknown.
                              enum:
                              - "True"
                              - "False"
                              - Unknown
                              type: string
                            type:
                              description: type of condition in CamelCase or in foo.example.com/CamelCase.
                              maxLength: 316
                              pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                              type: string
                          required:
                          - lastTransitionTime
                          - message
                          - reason
                          - status
                          - type
                          type: object
                        type: array
                      instanceTypeScalePhase:
                        type: string
                      members:
                        items:
                          properties:
                            instanceType:
                              description: InstanceType is the current instance type
                                of the member, this may be empty for some providers
                              type: string
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                            name:
                              type: string
                            resources:
                              properties:
                                cpu:
                                  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
                                memory:
                                  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
                                storage:
                                  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
                              required:
                              - cpu
                              - memory
                              type: object
                            status:
                              type: string
                          required:
                          - name
                          - resources
                          - status
                          type: object
                        type: array
                      status:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is the `UpdatedReplicas` of the
                          PD StatefulSet
                        format: int32
                        type: integer
                      volume:
                        description: VolumeStatus is the actual status for a storage
                        properties:
                          boundCount:
                            description: BoundCount is the count of bound volumes.
                            type: integer
                          currentCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              CurrentCapacity is the current capacity of the volume.
                              If any volume is resizing, it is the capacity before resizing.
                              If all volumes are resized, it is the resized capacity and same as desired capacity.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          currentCount:
                            description: CurrentCount is the count of volumes whose
                              capacity is equal to `currentCapacity`.
                            type: integer
                          currentStorageClass:
                            description: |-
                              CurrentStorageClass is the current storage class of the volume.
                              If any volume is modifying, it is the storage class before modification.
                              If all volumes are modified, it is the modified storage class and same as desired storage class.
                            type: string
                          currentVolumeAttributesClass:
                            description: CurrentVolumeAttributesClass is the current
                              volume attributes class of the PVC.
                            type: string
                          modifiedCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: ModifiedCapacity is the modified capacity
                              of the volume.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          modifiedCount:
                            description: ModifiedCount is the count of modified volumes.
                            type: integer
                          modifiedStorageClass:
                            description: ModifiedStorageClass is the modified storage
                              calls of the volume.
                            type: string
                          modifiedVolumeAttributesClass:
                            description: ModifiedVolumeAttributesClass is the modified
                              volume attributes class of the PVC.
                            type: string
                          resizedCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: (Deprecated) ResizedCapacity is the desired
                              capacity of the volume.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          resizedCount:
                            description: (Deprecated) ResizedCount is the count of
                              volumes whose capacity is equal to `resizedCapacity`.
                            type: integer
                        required:
                        - currentCapacity
                        type: object
                    required:
                    - status
                    type: object
                  secondaryStatus:
                    description: SecondaryStatus represents if there is a partial
                      failure of db cluster
                    enum:
                    - Healthy
                    - Unhealthy
                    type: string
                  tidb:
                    description: TiDB is the current TiDB status of db cluster
                    properties:
                      auditReady:
                        description: |-
                          AuditReady is set to true, when tidb is ready to work as spec set in 'cluster.tidb.audit'
                          result will be set in TiDBStatus.
                        type: boolean
                      conditions:
                        items:
                          description: Condition contains details for one aspect of
                            the current state of this API Resource.
                          properties:
                            lastTransitionTime:
                              description: |-
                                lastTransitionTime is the 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: |-
                                message is a human readable message indicating details about the transition.
                                This may be an empty string.
                              maxLength: 32768
                              type: string
                            observedGeneration:
                              description: |-
                                observedGeneration represents the .metadata.generation that the condition was set based upon.
                                For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                with respect to the current state of the instance.
                              format: int64
                              minimum: 0
                              type: integer
                            reason:
                              description: |-
                                reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                Producers of specific condition types may define expected values and meanings for this field,
                                and whether the values are considered a guaranteed API.
                                The value should be a CamelCase string.
                                This field may not be empty.
                              maxLength: 1024
                              minLength: 1
                              pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                              type: string
                            status:
                              description: status of the condition, one of True, False,
                                Unknown.
                              enum:
                              - "True"
                              - "False"
                              - Unknown
                              type: string
                            type:
                              description: type of condition in CamelCase or in foo.example.com/CamelCase.
                              maxLength: 316
                              pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                              type: string
                          required:
                          - lastTransitionTime
                          - message
                          - reason
                          - status
                          - type
                          type: object
                        type: array
                      instanceTypeScalePhase:
                        type: string
                      members:
                        items:
                          properties:
                            instanceType:
                              description: InstanceType is the current instance type
                                of the member, this may be empty for some providers
                              type: string
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                            name:
                              type: string
                            resources:
                              properties:
                                cpu:
                                  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
                                memory:
                                  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
                                storage:
                                  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
                              required:
                              - cpu
                              - memory
                              type: object
                            status:
                              type: string
                          required:
                          - name
                          - resources
                          - status
                          type: object
                        type: array
                      precheckAudit:
                        properties:
                          message:
                            description: Human-readable message indicating details
                            type: string
                          pass:
                            description: Pass the precheck or not.
                            type: boolean
                        required:
                        - pass
                        type: object
                      status:
                        type: string
                      tokenBasedAuthEnabled:
                        description: TokenBasedAuthEnabled Whether the tokenBasedAuth
                          is enabled
                        type: boolean
                      updatedReplicas:
                        description: UpdatedReplicas is the `UpdatedReplicas` of the
                          TiDB StatefulSet
                        format: int32
                        type: integer
                    required:
                    - status
                    type: object
                  tiflash:
                    description: TiFlash is the current TiFlash status of db cluster
                    properties:
                      conditions:
                        items:
                          description: Condition contains details for one aspect of
                            the current state of this API Resource.
                          properties:
                            lastTransitionTime:
                              description: |-
                                lastTransitionTime is the 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: |-
                                message is a human readable message indicating details about the transition.
                                This may be an empty string.
                              maxLength: 32768
                              type: string
                            observedGeneration:
                              description: |-
                                observedGeneration represents the .metadata.generation that the condition was set based upon.
                                For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                with respect to the current state of the instance.
                              format: int64
                              minimum: 0
                              type: integer
                            reason:
                              description: |-
                                reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                Producers of specific condition types may define expected values and meanings for this field,
                                and whether the values are considered a guaranteed API.
                                The value should be a CamelCase string.
                                This field may not be empty.
                              maxLength: 1024
                              minLength: 1
                              pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                              type: string
                            status:
                              description: status of the condition, one of True, False,
                                Unknown.
                              enum:
                              - "True"
                              - "False"
                              - Unknown
                              type: string
                            type:
                              description: type of condition in CamelCase or in foo.example.com/CamelCase.
                              maxLength: 316
                              pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                              type: string
                          required:
                          - lastTransitionTime
                          - message
                          - reason
                          - status
                          - type
                          type: object
                        type: array
                      instanceTypeScalePhase:
                        type: string
                      members:
                        items:
                          properties:
                            instanceType:
                              description: InstanceType is the current instance type
                                of the member, this may be empty for some providers
                              type: string
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                            name:
                              type: string
                            resources:
                              properties:
                                cpu:
                                  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
                                memory:
                                  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
                                storage:
                                  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
                              required:
                              - cpu
                              - memory
                              type: object
                            status:
                              type: string
                          required:
                          - name
                          - resources
                          - status
                          type: object
                        type: array
                      status:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is the `UpdatedReplicas` of the
                          TiFlash StatefulSet
                        format: int32
                        type: integer
                      volume:
                        description: VolumeStatus is the actual status for a storage
                        properties:
                          boundCount:
                            description: BoundCount is the count of bound volumes.
                            type: integer
                          currentCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              CurrentCapacity is the current capacity of the volume.
                              If any volume is resizing, it is the capacity before resizing.
                              If all volumes are resized, it is the resized capacity and same as desired capacity.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          currentCount:
                            description: CurrentCount is the count of volumes whose
                              capacity is equal to `currentCapacity`.
                            type: integer
                          currentStorageClass:
                            description: |-
                              CurrentStorageClass is the current storage class of the volume.
                              If any volume is modifying, it is the storage class before modification.
                              If all volumes are modified, it is the modified storage class and same as desired storage class.
                            type: string
                          currentVolumeAttributesClass:
                            description: CurrentVolumeAttributesClass is the current
                              volume attributes class of the PVC.
                            type: string
                          modifiedCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: ModifiedCapacity is the modified capacity
                              of the volume.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          modifiedCount:
                            description: ModifiedCount is the count of modified volumes.
                            type: integer
                          modifiedStorageClass:
                            description: ModifiedStorageClass is the modified storage
                              calls of the volume.
                            type: string
                          modifiedVolumeAttributesClass:
                            description: ModifiedVolumeAttributesClass is the modified
                              volume attributes class of the PVC.
                            type: string
                          resizedCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: (Deprecated) ResizedCapacity is the desired
                              capacity of the volume.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          resizedCount:
                            description: (Deprecated) ResizedCount is the count of
                              volumes whose capacity is equal to `resizedCapacity`.
                            type: integer
                        required:
                        - currentCapacity
                        type: object
                    required:
                    - status
                    type: object
                  tikv:
                    description: TiKV is the current TiKV status of db cluster
                    properties:
                      conditions:
                        items:
                          description: Condition contains details for one aspect of
                            the current state of this API Resource.
                          properties:
                            lastTransitionTime:
                              description: |-
                                lastTransitionTime is the 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: |-
                                message is a human readable message indicating details about the transition.
                                This may be an empty string.
                              maxLength: 32768
                              type: string
                            observedGeneration:
                              description: |-
                                observedGeneration represents the .metadata.generation that the condition was set based upon.
                                For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                with respect to the current state of the instance.
                              format: int64
                              minimum: 0
                              type: integer
                            reason:
                              description: |-
                                reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                Producers of specific condition types may define expected values and meanings for this field,
                                and whether the values are considered a guaranteed API.
                                The value should be a CamelCase string.
                                This field may not be empty.
                              maxLength: 1024
                              minLength: 1
                              pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                              type: string
                            status:
                              description: status of the condition, one of True, False,
                                Unknown.
                              enum:
                              - "True"
                              - "False"
                              - Unknown
                              type: string
                            type:
                              description: type of condition in CamelCase or in foo.example.com/CamelCase.
                              maxLength: 316
                              pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                              type: string
                          required:
                          - lastTransitionTime
                          - message
                          - reason
                          - status
                          - type
                          type: object
                        type: array
                      instanceTypeScalePhase:
                        type: string
                      members:
                        items:
                          properties:
                            instanceType:
                              description: InstanceType is the current instance type
                                of the member, this may be empty for some providers
                              type: string
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                            name:
                              type: string
                            resources:
                              properties:
                                cpu:
                                  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
                                memory:
                                  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
                                storage:
                                  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
                              required:
                              - cpu
                              - memory
                              type: object
                            status:
                              type: string
                          required:
                          - name
                          - resources
                          - status
                          type: object
                        type: array
                      status:
                        type: string
                      storageVolumes:
                        description: StorageVolumes contains the additional storage
                          volumes for TiKV.
                        items:
                          properties:
                            boundCount:
                              description: BoundCount is the count of bound volumes.
                              type: integer
                            currentCapacity:
                              anyOf:
                              - type: integer
                              - type: string
                              description: |-
                                CurrentCapacity is the current capacity of the volume.
                                If any volume is resizing, it is the capacity before resizing.
                                If all volumes are resized, it is the resized capacity and same as desired capacity.
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            currentCount:
                              description: CurrentCount is the count of volumes whose
                                capacity is equal to `currentCapacity`.
                              type: integer
                            currentStorageClass:
                              description: |-
                                CurrentStorageClass is the current storage class of the volume.
                                If any volume is modifying, it is the storage class before modification.
                                If all volumes are modified, it is the modified storage class and same as desired storage class.
                              type: string
                            currentVolumeAttributesClass:
                              description: CurrentVolumeAttributesClass is the current
                                volume attributes class of the PVC.
                              type: string
                            modifiedCapacity:
                              anyOf:
                              - type: integer
                              - type: string
                              description: ModifiedCapacity is the modified capacity
                                of the volume.
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            modifiedCount:
                              description: ModifiedCount is the count of modified
                                volumes.
                              type: integer
                            modifiedStorageClass:
                              description: ModifiedStorageClass is the modified storage
                                calls of the volume.
                              type: string
                            modifiedVolumeAttributesClass:
                              description: ModifiedVolumeAttributesClass is the modified
                                volume attributes class of the PVC.
                              type: string
                            name:
                              description: Name is the name of the volume, it should
                                be unique in the component.
                              type: string
                            resizedCapacity:
                              anyOf:
                              - type: integer
                              - type: string
                              description: (Deprecated) ResizedCapacity is the desired
                                capacity of the volume.
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            resizedCount:
                              description: (Deprecated) ResizedCount is the count
                                of volumes whose capacity is equal to `resizedCapacity`.
                              type: integer
                          required:
                          - currentCapacity
                          - name
                          type: object
                        type: array
                      updatedReplicas:
                        description: UpdatedReplicas is the `UpdatedReplicas` of the
                          TiKV StatefulSet
                        format: int32
                        type: integer
                      volume:
                        description: Volume contains the info of the data volume used
                          by the TiKV
                        properties:
                          boundCount:
                            description: BoundCount is the count of bound volumes.
                            type: integer
                          currentCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              CurrentCapacity is the current capacity of the volume.
                              If any volume is resizing, it is the capacity before resizing.
                              If all volumes are resized, it is the resized capacity and same as desired capacity.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          currentCount:
                            description: CurrentCount is the count of volumes whose
                              capacity is equal to `currentCapacity`.
                            type: integer
                          currentStorageClass:
                            description: |-
                              CurrentStorageClass is the current storage class of the volume.
                              If any volume is modifying, it is the storage class before modification.
                              If all volumes are modified, it is the modified storage class and same as desired storage class.
                            type: string
                          currentVolumeAttributesClass:
                            description: CurrentVolumeAttributesClass is the current
                              volume attributes class of the PVC.
                            type: string
                          modifiedCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: ModifiedCapacity is the modified capacity
                              of the volume.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          modifiedCount:
                            description: ModifiedCount is the count of modified volumes.
                            type: integer
                          modifiedStorageClass:
                            description: ModifiedStorageClass is the modified storage
                              calls of the volume.
                            type: string
                          modifiedVolumeAttributesClass:
                            description: ModifiedVolumeAttributesClass is the modified
                              volume attributes class of the PVC.
                            type: string
                          resizedCapacity:
                            anyOf:
                            - type: integer
                            - type: string
                            description: (Deprecated) ResizedCapacity is the desired
                              capacity of the volume.
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          resizedCount:
                            description: (Deprecated) ResizedCount is the count of
                              volumes whose capacity is equal to `resizedCapacity`.
                            type: integer
                        required:
                        - currentCapacity
                        type: object
                    required:
                    - status
                    type: object
                  tiproxy:
                    description: TiProxy is the current TiProxy status of db cluster
                    properties:
                      conditions:
                        items:
                          description: Condition contains details for one aspect of
                            the current state of this API Resource.
                          properties:
                            lastTransitionTime:
                              description: |-
                                lastTransitionTime is the 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: |-
                                message is a human readable message indicating details about the transition.
                                This may be an empty string.
                              maxLength: 32768
                              type: string
                            observedGeneration:
                              description: |-
                                observedGeneration represents the .metadata.generation that the condition was set based upon.
                                For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                with respect to the current state of the instance.
                              format: int64
                              minimum: 0
                              type: integer
                            reason:
                              description: |-
                                reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                Producers of specific condition types may define expected values and meanings for this field,
                                and whether the values are considered a guaranteed API.
                                The value should be a CamelCase string.
                                This field may not be empty.
                              maxLength: 1024
                              minLength: 1
                              pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                              type: string
                            status:
                              description: status of the condition, one of True, False,
                                Unknown.
                              enum:
                              - "True"
                              - "False"
                              - Unknown
                              type: string
                            type:
                              description: type of condition in CamelCase or in foo.example.com/CamelCase.
                              maxLength: 316
                              pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                              type: string
                          required:
                          - lastTransitionTime
                          - message
                          - reason
                          - status
                          - type
                          type: object
                        type: array
                      instanceTypeScalePhase:
                        type: string
                      members:
                        items:
                          properties:
                            instanceType:
                              description: InstanceType is the current instance type
                                of the member, this may be empty for some providers
                              type: string
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                            name:
                              type: string
                            resources:
                              properties:
                                cpu:
                                  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
                                memory:
                                  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
                                storage:
                                  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
                              required:
                              - cpu
                              - memory
                              type: object
                            status:
                              type: string
                          required:
                          - name
                          - resources
                          - status
                          type: object
                        type: array
                      status:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is the `UpdatedReplicas` of the
                          TiProxy StatefulSet
                        format: int32
                        type: integer
                    required:
                    - status
                    type: object
                  version:
                    description: Version is the current version of db cluster
                    type: string
                required:
                - secondaryStatus
                - version
                type: object
              extraEndpoints:
                description: |-
                  ExtraEndpoints represents the status of the extraGroups endpoints
                  (please remember sort the list)
                items:
                  properties:
                    conditions:
                      description: Current service state of cluster.
                      items:
                        description: ClusterCondition contains details for the current
                          condition of this cluster.
                        properties:
                          lastProbeTime:
                            description: Last time we probed the condition.
                            format: date-time
                            type: string
                          lastTransitionTime:
                            description: Last time the condition transitioned from
                              one status to another.
                            format: date-time
                            type: string
                          message:
                            description: Human-readable message indicating details
                              about last transition.
                            type: string
                          reason:
                            description: Unique, one-word, CamelCase reason for the
                              condition's last transition.
                            type: string
                          status:
                            description: |-
                              Status is the status of the condition.
                              Can be True, False.
                            type: string
                          type:
                            description: Type is the type of the condition.
                            type: string
                        required:
                        - status
                        - type
                        type: object
                      nullable: true
                      type: array
                    name:
                      nullable: true
                      type: string
                    phase:
                      description: Phase is lifecycle phase of the Extra Group, it
                        is the same as the cluster phase
                      enum:
                      - Pending
                      - Creating
                      - Running
                      - Hibernated
                      - PendingDelete
                      - Deleting
                      - Scaling
                      - Upgrading
                      - Unavailable
                      - Suspend
                      nullable: true
                      type: string
                    reason:
                      description: |-
                        Reason explains why the cluster is in current phase to human,
                        reason is not supposed to be parsed by program, Phase should be
                        used instead.
                      nullable: true
                      type: string
                    secondaryStatus:
                      description: SecondaryStatus represents if there is a partial
                        failure of db cluster
                      enum:
                      - Healthy
                      - Unhealthy
                      nullable: true
                      type: string
                    sqlEndpoints:
                      nullable: true
                      properties:
                        privateEndpoint:
                          nullable: true
                          properties:
                            host:
                              type: string
                            port:
                              type: integer
                            resourceID:
                              type: string
                            token:
                              type: string
                          required:
                          - host
                          - port
                          type: object
                        privateLinkService:
                          nullable: true
                          properties:
                            aws:
                              nullable: true
                              properties:
                                availabilityZones:
                                  description: |-
                                    AvailabilityZones denotes the availability zones of the VPC endpoint
                                    service
                                  items:
                                    type: string
                                  nullable: true
                                  type: array
                                connections:
                                  description: Connections contains all the connections
                                    on the AWS endpoint service
                                  items:
                                    properties:
                                      endpoint:
                                        description: Endpoint represents the VPC endpoint
                                          ID
                                        type: string
                                      message:
                                        description: Message contains the error message
                                          if in 'Failed' phase.
                                        type: string
                                      phase:
                                        description: PrivateLinkServiceConnectionPhase
                                          represents the phase of the connection
                                        enum:
                                        - Pending
                                        - Active
                                        - Deleting
                                        - Failed
                                        type: string
                                    required:
                                    - endpoint
                                    - message
                                    - phase
                                    type: object
                                  nullable: true
                                  type: array
                                nlb:
                                  description: NLB is the network LoadBalance used
                                    by the AWS endpoint service
                                  nullable: true
                                  type: string
                                port:
                                  description: Port is the port to connect with privatelink
                                    service
                                  format: int32
                                  nullable: true
                                  type: integer
                                privateDNSName:
                                  description: PrivateDNSName is the private  DNS
                                    name of the AWS endpoint service, constructed
                                    from DNS identity
                                  nullable: true
                                  type: string
                                serviceID:
                                  description: ServiceID is the ID of the the AWS
                                    endpoint service
                                  nullable: true
                                  type: string
                                serviceName:
                                  description: ServiceName is the name of the AWS
                                    ednpoint service
                                  nullable: true
                                  type: string
                              required:
                              - nlb
                              - port
                              - privateDNSName
                              - serviceID
                              - serviceName
                              type: object
                            creationTimestamp:
                              description: |-
                                CreationTimestamp is a timestamp representing the server time when this object was
                                created. It is represented in RFC3339 form and is in UTC.
                              format: date-time
                              type: string
                            gcp:
                              nullable: true
                              properties:
                                connections:
                                  description: Connections contains all the connections
                                    on the GCP endpoint service which filtered with
                                    the `acceptedEndpoints` in spec
                                  items:
                                    properties:
                                      endpoint:
                                        description: |-
                                          Endpoint, which has the format:
                                          projects/{project}/regions/{region}/forwardingRules/{endpoint}
                                        pattern: ^projects\/.+\/regions\/.+\/forwardingRules\/.+$
                                        type: string
                                      message:
                                        description: Message contains the error message
                                          if in 'Failed' phase.
                                        type: string
                                      phase:
                                        description: PrivateLinkServiceConnectionPhase
                                          represents the phase of the connection
                                        enum:
                                        - Pending
                                        - Active
                                        - Deleting
                                        - Failed
                                        type: string
                                    required:
                                    - endpoint
                                    - message
                                    - phase
                                    type: object
                                  nullable: true
                                  type: array
                                domainName:
                                  description: |-
                                    DomainName is the doamin name used to construct private DNS name
                                    It will be suffix of the consumer's private DNS name
                                  nullable: true
                                  type: string
                                nlb:
                                  description: NLB is the network LoadBalance used
                                    by the GCP endpoint service
                                  nullable: true
                                  type: string
                                port:
                                  description: Port is the port to connect
                                  format: int32
                                  nullable: true
                                  type: integer
                                serviceAttachment:
                                  description: ServiceAttachment is the service name
                                    of the GCP ednpoint service
                                  nullable: true
                                  type: string
                                subnet:
                                  description: Subnet is the subnet used by the GCP
                                    endpoint service to perform NAT
                                  nullable: true
                                  type: string
                              required:
                              - nlb
                              - port
                              - serviceAttachment
                              - subnet
                              type: object
                            message:
                              nullable: true
                              type: string
                            phase:
                              enum:
                              - Creating
                              - Active
                              - Deleting
                              - Unavailable
                              nullable: true
                              type: string
                          type: object
                        publicEndpoint:
                          nullable: true
                          properties:
                            host:
                              type: string
                            port:
                              type: integer
                            resourceID:
                              type: string
                            token:
                              type: string
                          required:
                          - host
                          - port
                          type: object
                      type: object
                    tidb:
                      description: TiDB is the current TiDB status of db cluster
                      properties:
                        auditReady:
                          description: |-
                            AuditReady is set to true, when tidb is ready to work as spec set in 'cluster.tidb.audit'
                            result will be set in TiDBStatus.
                          type: boolean
                        conditions:
                          items:
                            description: Condition contains details for one aspect
                              of the current state of this API Resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  lastTransitionTime is the 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: |-
                                  message is a human readable message indicating details about the transition.
                                  This may be an empty string.
                                maxLength: 32768
                                type: string
                              observedGeneration:
                                description: |-
                                  observedGeneration represents the .metadata.generation that the condition was set based upon.
                                  For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                  with respect to the current state of the instance.
                                format: int64
                                minimum: 0
                                type: integer
                              reason:
                                description: |-
                                  reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                  Producers of specific condition types may define expected values and meanings for this field,
                                  and whether the values are considered a guaranteed API.
                                  The value should be a CamelCase string.
                                  This field may not be empty.
                                maxLength: 1024
                                minLength: 1
                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                type: string
                              status:
                                description: status of the condition, one of True,
                                  False, Unknown.
                                enum:
                                - "True"
                                - "False"
                                - Unknown
                                type: string
                              type:
                                description: type of condition in CamelCase or in
                                  foo.example.com/CamelCase.
                                maxLength: 316
                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                type: string
                            required:
                            - lastTransitionTime
                            - message
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                        instanceTypeScalePhase:
                          type: string
                        members:
                          items:
                            properties:
                              instanceType:
                                description: InstanceType is the current instance
                                  type of the member, this may be empty for some providers
                                type: string
                              labels:
                                additionalProperties:
                                  type: string
                                type: object
                              name:
                                type: string
                              resources:
                                properties:
                                  cpu:
                                    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
                                  memory:
                                    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
                                  storage:
                                    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
                                required:
                                - cpu
                                - memory
                                type: object
                              status:
                                type: string
                            required:
                            - name
                            - resources
                            - status
                            type: object
                          type: array
                        precheckAudit:
                          properties:
                            message:
                              description: Human-readable message indicating details
                              type: string
                            pass:
                              description: Pass the precheck or not.
                              type: boolean
                          required:
                          - pass
                          type: object
                        status:
                          type: string
                        tokenBasedAuthEnabled:
                          description: TokenBasedAuthEnabled Whether the tokenBasedAuth
                            is enabled
                          type: boolean
                        updatedReplicas:
                          description: UpdatedReplicas is the `UpdatedReplicas` of
                            the TiDB StatefulSet
                          format: int32
                          type: integer
                      required:
                      - status
                      type: object
                    tiproxy:
                      description: TiProxy is the current TiProxy status of db cluster
                      properties:
                        conditions:
                          items:
                            description: Condition contains details for one aspect
                              of the current state of this API Resource.
                            properties:
                              lastTransitionTime:
                                description: |-
                                  lastTransitionTime is the 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: |-
                                  message is a human readable message indicating details about the transition.
                                  This may be an empty string.
                                maxLength: 32768
                                type: string
                              observedGeneration:
                                description: |-
                                  observedGeneration represents the .metadata.generation that the condition was set based upon.
                                  For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                                  with respect to the current state of the instance.
                                format: int64
                                minimum: 0
                                type: integer
                              reason:
                                description: |-
                                  reason contains a programmatic identifier indicating the reason for the condition's last transition.
                                  Producers of specific condition types may define expected values and meanings for this field,
                                  and whether the values are considered a guaranteed API.
                                  The value should be a CamelCase string.
                                  This field may not be empty.
                                maxLength: 1024
                                minLength: 1
                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                type: string
                              status:
                                description: status of the condition, one of True,
                                  False, Unknown.
                                enum:
                                - "True"
                                - "False"
                                - Unknown
                                type: string
                              type:
                                description: type of condition in CamelCase or in
                                  foo.example.com/CamelCase.
                                maxLength: 316
                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                type: string
                            required:
                            - lastTransitionTime
                            - message
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                        instanceTypeScalePhase:
                          type: string
                        members:
                          items:
                            properties:
                              instanceType:
                                description: InstanceType is the current instance
                                  type of the member, this may be empty for some providers
                                type: string
                              labels:
                                additionalProperties:
                                  type: string
                                type: object
                              name:
                                type: string
                              resources:
                                properties:
                                  cpu:
                                    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
                                  memory:
                                    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
                                  storage:
                                    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
                                required:
                                - cpu
                                - memory
                                type: object
                              status:
                                type: string
                            required:
                            - name
                            - resources
                            - status
                            type: object
                          type: array
                        status:
                          type: string
                        updatedReplicas:
                          description: UpdatedReplicas is the `UpdatedReplicas` of
                            the TiProxy StatefulSet
                          format: int32
                          type: integer
                      required:
                      - status
                      type: object
                    version:
                      description: Version is the current version of db cluster
                      nullable: true
                      type: string
                  type: object
                type: array
              fromProvider:
                description: |-
                  (Deprecated) We should use structured field such as NodeIdentity
                  FromProvider encodes the provider specific status of
                  the Cluster, e.g. AWS IAM role of the cluster
                nullable: true
                type: object
                x-kubernetes-embedded-resource: true
                x-kubernetes-preserve-unknown-fields: true
              gateway:
                description: |-
                  Gateway represents the status of the gateway service for
                  the TiDB cluster.
                properties:
                  endpoint:
                    type: string
                required:
                - endpoint
                type: object
              lastActiveTimestamp:
                description: LastActiveTimestamp is the last active time of the cluster
                  in RFC3339 format.
                format: date-time
                type: string
              lastDetectTimestamp:
                description: LastDetectTimestamp is the last time we try to detect
                  the cluster and update LastActiveTimestamp.
                format: date-time
                type: string
              metrics:
                description: |-
                  Metrics represents the status of the monitoring service
                  for the TiDB cluster
                properties:
                  baseUrl:
                    type: string
                  credentialConfig:
                    type: string
                required:
                - baseUrl
                - credentialConfig
                type: object
              nodeIdentity:
                description: NodeIdentity is the cloud IAM identity used by tidb cluster
                  worker node
                properties:
                  aws:
                    properties:
                      externalID:
                        type: string
                      roleARN:
                        type: string
                    type: object
                  gcp:
                    properties:
                      serviceAccount:
                        type: string
                    type: object
                type: object
              objectStore:
                description: |-
                  ObjectStore represents the status of the object store
                  for the TiDB cluster
                properties:
                  gcs:
                    properties:
                      path:
                        type: string
                    required:
                    - path
                    type: object
                  s3:
                    properties:
                      path:
                        type: string
                    required:
                    - path
                    type: object
                type: object
              phase:
                description: Phase is lifecycle phase of the Cluster
                enum:
                - Pending
                - Creating
                - Running
                - Hibernated
                - PendingDelete
                - Deleting
                - Scaling
                - Upgrading
                - Unavailable
                - Suspend
                type: string
              proxy:
                description: |-
                  Proxy represents the status of the proxy service for
                  the TiDB cluster.
                properties:
                  credentialConfig:
                    type: string
                  endpoint:
                    type: string
                required:
                - credentialConfig
                - endpoint
                type: object
              reason:
                description: |-
                  Reason explains why the cluster is in current phase to human,
                  reason is not supposed to be parsed by program, Phase should be
                  used instead.
                type: string
              sharedBucket:
                description: SharedBucket records infos about how this cluster accesses
                  the given shared bucket
                properties:
                  aws:
                    properties:
                      dbAuditLogWriterRoleARN:
                        type: string
                      readonlyRoleARN:
                        type: string
                    type: object
                  azure:
                    type: object
                  gcp:
                    properties:
                      readonlySA:
                        type: string
                    type: object
                type: object
              sqlEndpoints:
                description: SQLEndpoints represents the status of the SQL endpoints
                properties:
                  privateEndpoint:
                    nullable: true
                    properties:
                      host:
                        type: string
                      port:
                        type: integer
                      resourceID:
                        type: string
                      token:
                        type: string
                    required:
                    - host
                    - port
                    type: object
                  privateLinkService:
                    nullable: true
                    properties:
                      aws:
                        nullable: true
                        properties:
                          availabilityZones:
                            description: |-
                              AvailabilityZones denotes the availability zones of the VPC endpoint
                              service
                            items:
                              type: string
                            nullable: true
                            type: array
                          connections:
                            description: Connections contains all the connections
                              on the AWS endpoint service
                            items:
                              properties:
                                endpoint:
                                  description: Endpoint represents the VPC endpoint
                                    ID
                                  type: string
                                message:
                                  description: Message contains the error message
                                    if in 'Failed' phase.
                                  type: string
                                phase:
                                  description: PrivateLinkServiceConnectionPhase represents
                                    the phase of the connection
                                  enum:
                                  - Pending
                                  - Active
                                  - Deleting
                                  - Failed
                                  type: string
                              required:
                              - endpoint
                              - message
                              - phase
                              type: object
                            nullable: true
                            type: array
                          nlb:
                            description: NLB is the network LoadBalance used by the
                              AWS endpoint service
                            nullable: true
                            type: string
                          port:
                            description: Port is the port to connect with privatelink
                              service
                            format: int32
                            nullable: true
                            type: integer
                          privateDNSName:
                            description: PrivateDNSName is the private  DNS name of
                              the AWS endpoint service, constructed from DNS identity
                            nullable: true
                            type: string
                          serviceID:
                            description: ServiceID is the ID of the the AWS endpoint
                              service
                            nullable: true
                            type: string
                          serviceName:
                            description: ServiceName is the name of the AWS ednpoint
                              service
                            nullable: true
                            type: string
                        required:
                        - nlb
                        - port
                        - privateDNSName
                        - serviceID
                        - serviceName
                        type: object
                      creationTimestamp:
                        description: |-
                          CreationTimestamp is a timestamp representing the server time when this object was
                          created. It is represented in RFC3339 form and is in UTC.
                        format: date-time
                        type: string
                      gcp:
                        nullable: true
                        properties:
                          connections:
                            description: Connections contains all the connections
                              on the GCP endpoint service which filtered with the
                              `acceptedEndpoints` in spec
                            items:
                              properties:
                                endpoint:
                                  description: |-
                                    Endpoint, which has the format:
                                    projects/{project}/regions/{region}/forwardingRules/{endpoint}
                                  pattern: ^projects\/.+\/regions\/.+\/forwardingRules\/.+$
                                  type: string
                                message:
                                  description: Message contains the error message
                                    if in 'Failed' phase.
                                  type: string
                                phase:
                                  description: PrivateLinkServiceConnectionPhase represents
                                    the phase of the connection
                                  enum:
                                  - Pending
                                  - Active
                                  - Deleting
                                  - Failed
                                  type: string
                              required:
                              - endpoint
                              - message
                              - phase
                              type: object
                            nullable: true
                            type: array
                          domainName:
                            description: |-
                              DomainName is the doamin name used to construct private DNS name
                              It will be suffix of the consumer's private DNS name
                            nullable: true
                            type: string
                          nlb:
                            description: NLB is the network LoadBalance used by the
                              GCP endpoint service
                            nullable: true
                            type: string
                          port:
                            description: Port is the port to connect
                            format: int32
                            nullable: true
                            type: integer
                          serviceAttachment:
                            description: ServiceAttachment is the service name of
                              the GCP ednpoint service
                            nullable: true
                            type: string
                          subnet:
                            description: Subnet is the subnet used by the GCP endpoint
                              service to perform NAT
                            nullable: true
                            type: string
                        required:
                        - nlb
                        - port
                        - serviceAttachment
                        - subnet
                        type: object
                      message:
                        nullable: true
                        type: string
                      phase:
                        enum:
                        - Creating
                        - Active
                        - Deleting
                        - Unavailable
                        nullable: true
                        type: string
                    type: object
                  publicEndpoint:
                    nullable: true
                    properties:
                      host:
                        type: string
                      port:
                        type: integer
                      resourceID:
                        type: string
                      token:
                        type: string
                    required:
                    - host
                    - port
                    type: object
                type: object
            required:
            - phase
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
