apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: accounts.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: Account
    listKind: AccountList
    plural: accounts
    singular: account
  preserveUnknownFields: false
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.provider
      name: PROVIDER
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Account is the Schema for the accounts 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: AccountSpec defines the desired state of Account
            properties:
              aws:
                description: AWS is the AWS account configuration.
                properties:
                  accountID:
                    description: AccountID is the AWS account ID.
                    type: string
                  assumeRoleARN:
                    description: |-
                      AssumeRoleARN is the ARN of the IAM role that provides permissions
                      for EKS-Provider to assume.
                    type: string
                  externalID:
                    description: ExternalID is the external ID that third-party should
                      provide when assuming the role.
                    type: string
                required:
                - accountID
                - assumeRoleARN
                type: object
              gcp:
                description: GCP is the GCP account configuration.
                properties:
                  projectID:
                    description: ProjectID is the GCP project ID.
                    type: string
                  serviceAccount:
                    description: ServiceAccount is the GCP service account.
                    type: string
                required:
                - projectID
                type: object
              provider:
                description: Provider is the cloud provider of the account.
                type: string
            required:
            - provider
            type: object
          status:
            description: AccountStatus defines the observed state of Account
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: backups.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Backup
    listKind: BackupList
    plural: backups
    singular: backup
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Backup is the Schema for the backups 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: BackupSpec defines the desired state of Backup
            properties:
              accountRef:
                description: |-
                  Attach the account ref into the backup when it is created
                  Now we use the account same with the network
                properties:
                  name:
                    type: string
                type: object
              clean_policy:
                description: CleanPolicy indicates how to clean backup
                type: string
              clusterName:
                description: ClusterName is the target cluster name, target cluster
                  must exist in the same namespace as backup
                type: string
              commitTS:
                description: |-
                  CommitTs is the commit ts of the backup, snapshot ts for snapshot backup or start ts for log backup.
                  Format supports TSO or datetime, e.g. '400036290571534337', '2018-05-11 01:42:23'.
                  Default is current timestamp.
                type: string
              configuration:
                description: |-
                  Configuration is the configuration passed from dataflow
                  it is used to replace gitops
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag
                    type: string
                  tikvImage:
                    description: TiKVImage is the custom TiKV image
                    type: string
                  tikvVersion:
                    description: TiKVVersion is the custom TiKV version
                    type: string
                type: object
              env:
                description: Env adds environment variables to backup pod
                items:
                  description: EnvVar represents an environment variable present in
                    a Container.
                  properties:
                    name:
                      description: Name of the environment variable. Must be a C_IDENTIFIER.
                      type: string
                    value:
                      description: |-
                        Variable references $(VAR_NAME) are expanded
                        using the previously defined environment variables in the container and
                        any service environment variables. If a variable cannot be resolved,
                        the reference in the input string will be unchanged. Double $$ are reduced
                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                        "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
                        Escaped references will never be expanded, regardless of whether the variable
                        exists or not.
                        Defaults to "".
                      type: string
                    valueFrom:
                      description: Source for the environment variable's value. Cannot
                        be used if value is not empty.
                      properties:
                        configMapKeyRef:
                          description: Selects a key of a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key
                                must be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                        fieldRef:
                          description: |-
                            Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
                            spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
                          properties:
                            apiVersion:
                              description: Version of the schema the FieldPath is
                                written in terms of, defaults to "v1".
                              type: string
                            fieldPath:
                              description: Path of the field to select in the specified
                                API version.
                              type: string
                          required:
                          - fieldPath
                          type: object
                          x-kubernetes-map-type: atomic
                        resourceFieldRef:
                          description: |-
                            Selects a resource of the container: only resources limits and requests
                            (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
                          properties:
                            containerName:
                              description: 'Container name: required for volumes,
                                optional for env vars'
                              type: string
                            divisor:
                              anyOf:
                              - type: integer
                              - type: string
                              description: Specifies the output format of the exposed
                                resources, defaults to "1"
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            resource:
                              description: 'Required: resource to select'
                              type: string
                          required:
                          - resource
                          type: object
                          x-kubernetes-map-type: atomic
                        secretKeyRef:
                          description: Selects a key of a secret in the pod's namespace
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                  required:
                  - name
                  type: object
                type: array
              instanceType:
                description: InstanceType specifies the instance type required by
                  backup pod
                type: string
              logStop:
                description: LogStop indicates that will stop the log backup.
                type: boolean
              logTruncateUntil:
                description: |-
                  LogTruncateUntil is log backup truncate until timestamp.
                  Format supports TSO or datetime, e.g. '400036290571534337', '2018-05-11 01:42:23'.
                type: string
              mode:
                description: Mode is the backup mode, such as snapshot backup or log
                  backup.
                type: string
              nodeRole:
                description: NodeRole is the aws role or gcp service account that
                  the br node uses
                type: string
              options:
                description: Options is the parameters list of br, like --backupts=xxx
                items:
                  type: string
                type: array
              paused:
                description: Paused specifies whether to pause the reconciliation
                  loop for Backup CR
                type: boolean
              resourceRequirements:
                description: ResourceRequirements manage resources(cpu,memory) of
                  backup pod
                properties:
                  claims:
                    description: |-
                      Claims lists the names of resources, defined in spec.resourceClaims,
                      that are used by this container.

                      This is an alpha field and requires enabling the
                      DynamicResourceAllocation feature gate.

                      This field is immutable. It can only be set for containers.
                    items:
                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                      properties:
                        name:
                          description: |-
                            Name must match the name of one entry in pod.spec.resourceClaims of
                            the Pod where this field is used. It makes that resource available
                            inside a container.
                          type: string
                        request:
                          description: |-
                            Request is the name chosen for a request in the referenced claim.
                            If empty, everything from the claim is made available, otherwise
                            only the result of this request.
                          type: string
                      required:
                      - name
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - name
                    x-kubernetes-list-type: map
                  limits:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Limits describes the maximum amount of compute resources allowed.
                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    type: object
                  requests:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Requests describes the minimum amount of compute resources required.
                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                      otherwise to an implementation-defined value. Requests cannot exceed Limits.
                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    type: object
                type: object
              storage:
                description: Storage is the target storage address, use s3 uri. like
                  gs://xxxx
                type: string
              tableFilter:
                description: TableFilter means table filter expression for 'db.table'
                  matching.
                items:
                  type: string
                type: array
            required:
            - clusterName
            type: object
          status:
            description: BackupStatus defines the observed state of Backup
            properties:
              backupPath:
                description: BackupPath is the location of the backup.
                type: string
              backupSize:
                description: BackupSize is the physical storage size taken by the
                  backup assets
                format: int64
                type: integer
              backupTS:
                description: BackupTS is the snapshot timestamp for snapshot backup
                  or start timestamp for log backup
                type: string
              bucketName:
                description: BucketName is the object store path of this backup
                type: string
              fromProvider:
                description: |-
                  FromProvider encodes the provider specific status of
                  the backup, e.g. target shoot name of the backup
                nullable: true
                type: object
                x-kubernetes-embedded-resource: true
                x-kubernetes-preserve-unknown-fields: true
              logCheckpointTs:
                description: LogCheckpointTs is the ts of log backup process
                type: string
              logSubCommandStatuses:
                additionalProperties:
                  description: LogSubCommandStatus is the log backup subcommand's
                    status.
                  properties:
                    command:
                      description: Command is the log backup subcommand.
                      type: string
                    conditions:
                      items:
                        description: BackupCondition describes the observed state
                          of a Backup at a certain point.
                        properties:
                          command:
                            type: string
                          lastTransitionTime:
                            format: date-time
                            nullable: true
                            type: string
                          message:
                            type: string
                          reason:
                            type: string
                          status:
                            type: string
                          type:
                            description: BackupConditionType represents a valid condition
                              of a Backup.
                            type: string
                        required:
                        - status
                        - type
                        type: object
                      nullable: true
                      type: array
                    logTruncatingUntil:
                      description: LogTruncatingUntil is log backup truncate until
                        timestamp which is used to mark the truncate command.
                      type: string
                    phase:
                      description: Phase is the command current phase.
                      type: string
                    timeCompleted:
                      description: TimeCompleted is the time at which the command
                        was completed.
                      format: date-time
                      nullable: true
                      type: string
                    timeStarted:
                      description: TimeStarted is the time at which the command was
                        started.
                      format: date-time
                      nullable: true
                      type: string
                  type: object
                description: LogSubCommandStatuses is the detail status of log backup
                  subcommands, record each command separately, but only record the
                  last command.
                type: object
              logTruncateUntil:
                description: LogTruncateUntil is log backup truncate until timestamp
                  which will be the same as Spec.LogTruncateUntil when truncate is
                  complete
                type: string
              phase:
                description: Phase denotes current backup progress
                type: string
            required:
            - phase
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: branches.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Branch
    listKind: BranchList
    plural: branches
    singular: branch
  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
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Branch is the Schema for the branches 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: BranchSpec defines the desired state of Branch
            properties:
              autoScaling:
                description: AutoScaling carries the RCU values
                properties:
                  max_rcu:
                    format: int32
                    type: integer
                  min_rcu:
                    format: int32
                    type: integer
                type: object
              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
              forProvider:
                description: ForProvider encodes the provider specific spec
                nullable: true
                type: object
                x-kubernetes-embedded-resource: true
                x-kubernetes-preserve-unknown-fields: true
              networkName:
                description: |-
                  NetworkName references the Network where the Cluster is hosted,
                  the Network must exist in the same namespace as Cluster
                type: string
              recoveryMode:
                description: |-
                  RecoveryMode specifies whether enable recovery mode for TiDB cluster to restore
                  Optional: Defaults to false
                type: boolean
              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
                  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:
                      authorizedNetworks:
                        items:
                          properties:
                            display_name:
                              type: string
                            end_ip_address:
                              type: string
                            start_ip_address:
                              type: string
                          type: object
                        nullable: true
                        type: array
                      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
                required:
                - public
                type: object
            required:
            - cluster
            - networkName
            - sqlEndpoints
            type: object
          status:
            description: BranchStatus defines the observed state of Branch
            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
                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
              fromProvider:
                description: |-
                  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
              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
              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 branch
                enum:
                - Pending
                - Creating
                - Running
                - PendingDelete
                - Deleting
                - Unavailable
                - Restoring
                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 branch is in current phase to human,
                  reason is not supposed to be parsed by program, Phase should be
                  used instead.
                type: string
              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: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: clusterconfigs.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: ClusterConfig
    listKind: ClusterConfigList
    plural: clusterconfigs
    singular: clusterconfig
  preserveUnknownFields: false
  scope: Cluster
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: ClusterConfig is the Schema for the clusterconfigs 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: ClusterConfigSpec defines the desired state of ClusterConfig
            properties:
              backup:
                description: Backup contains all configurations about backup job
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              configMeta:
                description: ConfigMeta contains metadata information of configurations
                properties:
                  configVersion:
                    description: |-
                      ConfigVersion is configuration version, version will auto-increment to
                      aviod old version overrides new version configuration
                    format: int64
                    type: integer
                  gitCommitID:
                    description: GitCommitID is git commit ID of cluster configuration
                    type: string
                required:
                - configVersion
                - gitCommitID
                type: object
              lightning:
                description: Lightning contains all configurations about a lightning
                  job
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              pd:
                description: PD contains all default and overlay configurations of
                  pd server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              priority:
                description: |-
                  Priority used for overlay in server side
                  Higher priority config will overwrite lower priority config
                type: integer
              restore:
                description: Restore contains all configurations about restore job
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              selector:
                description: Label selector for clusters, it wll match the cluster
                  object's labels.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              ticdc:
                description: TiCDC contains all configurations about a ticdc cluster
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tidb:
                description: TiDB contains all default and overlay configurations
                  of tidb server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiflash:
                description: TiFlash contains all default and overlay configurations
                  of tiflash server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiflashLearner:
                description: TiFlashLearner contains all default and overlay configurations
                  of tiflash learner
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiflowExecutor:
                description: TiflowExecutor contains all configurations about the
                  tiflow exector
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiflowMaster:
                description: TiflowMaster contains all configurations about the tiflow
                  master
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tikv:
                description: TiKV contains all default and overlay configurations
                  of tikv server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiproxy:
                description: TiProxy contains all default and overlay configurations
                  of tiproxy server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              updatePolicy:
                type: string
              version:
                description: TiDB cluster version
                type: string
            required:
            - selector
            type: object
          status:
            description: ClusterConfigStatus defines the observed state of ClusterConfig
            type: object
        type: object
    served: true
    storage: true
---
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: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: compactbackups.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: CompactBackup
    listKind: CompactBackupList
    plural: compactbackups
    shortNames:
    - cpbk
    singular: compactbackup
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: CompactBackup is the Schema for the compactbackups 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: CompactBackupSpec defines the desired state of CompactBackup
            properties:
              cleanPolicy:
                default: Retain
                description: CleanPolicy denotes whether to clean compact data when
                  deleted
                type: string
              clusterName:
                description: ClusterName is the name of the TiDB cluster to compact
                type: string
              concurrency:
                default: 4
                description: Concurrency is the concurrency for compact
                format: int32
                type: integer
              configuration:
                description: Configuration contains compact-specific configurations
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag
                    type: string
                  tikvImage:
                    description: TiKVImage is the custom TiKV image
                    type: string
                  tikvVersion:
                    description: TiKVVersion is the custom TiKV version
                    type: string
                type: object
              endTs:
                description: EndTs is the end timestamp for compact
                type: string
              instanceType:
                description: InstanceType specifies the instance type for compact
                type: string
              paused:
                description: Paused specifies whether to pause the reconciliation
                  loop for CompactBackup CR
                type: boolean
              resourceRequirements:
                description: ResourceRequirements manage resources(cpu,memory) of
                  compact pod
                properties:
                  claims:
                    description: |-
                      Claims lists the names of resources, defined in spec.resourceClaims,
                      that are used by this container.

                      This is an alpha field and requires enabling the
                      DynamicResourceAllocation feature gate.

                      This field is immutable. It can only be set for containers.
                    items:
                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                      properties:
                        name:
                          description: |-
                            Name must match the name of one entry in pod.spec.resourceClaims of
                            the Pod where this field is used. It makes that resource available
                            inside a container.
                          type: string
                        request:
                          description: |-
                            Request is the name chosen for a request in the referenced claim.
                            If empty, everything from the claim is made available, otherwise
                            only the result of this request.
                          type: string
                      required:
                      - name
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - name
                    x-kubernetes-list-type: map
                  limits:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Limits describes the maximum amount of compute resources allowed.
                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    type: object
                  requests:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Requests describes the minimum amount of compute resources required.
                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                      otherwise to an implementation-defined value. Requests cannot exceed Limits.
                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    type: object
                type: object
              shardCount:
                description: |-
                  ShardCount is the number of shards used by sharded compaction.
                  Required when Mode == "sharded"; ignored otherwise.
                format: int32
                minimum: 1
                type: integer
              startTs:
                description: StartTs is the start timestamp for compact
                type: string
              storage:
                description: Storage is the storage URL for compact backup
                type: string
            required:
            - clusterName
            type: object
          status:
            description: CompactBackupStatus defines the observed state of CompactBackup
            properties:
              backupPath:
                description: BackupPath is the location of the compact backup.
                type: string
              completionTime:
                description: CompletionTime is when compact completed
                format: date-time
                type: string
              endTs:
                description: EndTs is the real endTs processed by compact
                type: string
              message:
                description: Message is the error message
                type: string
              phase:
                description: Phase represents the current phase of compact backup
                type: string
              progress:
                description: Progress is the detailed progress of compact
                type: string
              startTime:
                description: StartTime is when compact started
                format: date-time
                type: string
              state:
                description: State is the current state of the compact
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: configchanges.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: ConfigChange
    listKind: ConfigChangeList
    plural: configchanges
    singular: configchange
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.clusterName
      name: CLUSTER
      type: string
    - jsonPath: .spec.configRevisionName
      name: CONFIG-REVISION
      type: string
    - jsonPath: .spec.changeStrategy
      name: STRATEGY
      type: string
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .status.lastConfigRevisionName
      name: LAST-CONFIG-REVISION
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: |-
          ConfigChange is a Job type CRD. you can create a ConfigChange to change and then apply a new ConfigRevision
          to the cluster.
        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: ConfigChangeSpec defines the desired state of ConfigChange
            properties:
              changeStrategy:
                description: ChangeStrategy represents how to apply config to cluster
                enum:
                - RollingRestart
                - HotReload
                - ChangeCMOnly
                - EnsureUpdateToTC
                type: string
              clusterName:
                description: ClusterName is the name of Cluster you want to change
                  ConfigRevision
                type: string
              configRevisionName:
                description: the name of target ConfigRevision
                type: string
              paused:
                description: Paused specifies whether to pause the reconciliation
                  loop for ConfigChange CR
                type: boolean
            required:
            - changeStrategy
            - clusterName
            - configRevisionName
            type: object
          status:
            description: ConfigChangeStatus defines the observed state of ConfigChange
            properties:
              beginTime:
                format: date-time
                type: string
              changedCategories:
                description: ChangedCategories represents what will be changed by
                  this ConfigChange
                items:
                  description: ConfigChangeCategory represents what will be changed
                    by this ConfigChange
                  type: string
                type: array
              changedComponents:
                description: ChangedComponents represents which components will be
                  affected by this ConfigChange
                items:
                  type: string
                type: array
              db:
                description: DB represents the status of the ConfigChange
                properties:
                  pd:
                    properties:
                      changedCategories:
                        description: ChangedCategories represents what of this component
                          will be changed
                        items:
                          description: ConfigChangeCategory represents what will be
                            changed by this ConfigChange
                          type: string
                        type: array
                      done:
                        type: boolean
                      reason:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is used for RollingRestart strategy
                        format: int32
                        type: integer
                    required:
                    - changedCategories
                    - done
                    type: object
                  ticdc:
                    properties:
                      changedCategories:
                        description: ChangedCategories represents what of this component
                          will be changed
                        items:
                          description: ConfigChangeCategory represents what will be
                            changed by this ConfigChange
                          type: string
                        type: array
                      done:
                        type: boolean
                      reason:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is used for RollingRestart strategy
                        format: int32
                        type: integer
                    required:
                    - changedCategories
                    - done
                    type: object
                  tidb:
                    properties:
                      changedCategories:
                        description: ChangedCategories represents what of this component
                          will be changed
                        items:
                          description: ConfigChangeCategory represents what will be
                            changed by this ConfigChange
                          type: string
                        type: array
                      done:
                        type: boolean
                      reason:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is used for RollingRestart strategy
                        format: int32
                        type: integer
                    required:
                    - changedCategories
                    - done
                    type: object
                  tiflash:
                    properties:
                      changedCategories:
                        description: ChangedCategories represents what of this component
                          will be changed
                        items:
                          description: ConfigChangeCategory represents what will be
                            changed by this ConfigChange
                          type: string
                        type: array
                      done:
                        type: boolean
                      reason:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is used for RollingRestart strategy
                        format: int32
                        type: integer
                    required:
                    - changedCategories
                    - done
                    type: object
                  tiflashLearner:
                    properties:
                      changedCategories:
                        description: ChangedCategories represents what of this component
                          will be changed
                        items:
                          description: ConfigChangeCategory represents what will be
                            changed by this ConfigChange
                          type: string
                        type: array
                      done:
                        type: boolean
                      reason:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is used for RollingRestart strategy
                        format: int32
                        type: integer
                    required:
                    - changedCategories
                    - done
                    type: object
                  tikv:
                    properties:
                      changedCategories:
                        description: ChangedCategories represents what of this component
                          will be changed
                        items:
                          description: ConfigChangeCategory represents what will be
                            changed by this ConfigChange
                          type: string
                        type: array
                      done:
                        type: boolean
                      reason:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is used for RollingRestart strategy
                        format: int32
                        type: integer
                    required:
                    - changedCategories
                    - done
                    type: object
                  tiproxy:
                    properties:
                      changedCategories:
                        description: ChangedCategories represents what of this component
                          will be changed
                        items:
                          description: ConfigChangeCategory represents what will be
                            changed by this ConfigChange
                          type: string
                        type: array
                      done:
                        type: boolean
                      reason:
                        type: string
                      updatedReplicas:
                        description: UpdatedReplicas is used for RollingRestart strategy
                        format: int32
                        type: integer
                    required:
                    - changedCategories
                    - done
                    type: object
                type: object
              duration:
                type: string
              endTime:
                format: date-time
                type: string
              lastConfigRevisionName:
                description: LastConfigRevisionName is name of last used ConfigRevision
                type: string
              lastEventSendTime:
                description: LastEventSendTime records the last time we send events
                  to avoid send too more events to clinic
                format: date-time
                type: string
              phase:
                description: Phase is lifecycle phase of the ConfigChange
                enum:
                - Pending
                - Running
                - Completed
                - Failed
                type: string
              reason:
                description: |-
                  Reason explains why the ConfigChange is in current phase to human,
                  reason is not supposed to be parsed by program, Phase should be
                  used instead.
                type: string
              steps:
                items:
                  properties:
                    name:
                      type: string
                    reason:
                      type: string
                    status:
                      type: string
                  required:
                  - name
                  - reason
                  - status
                  type: object
                type: array
            required:
            - phase
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: configrevisions.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: ConfigRevision
    listKind: ConfigRevisionList
    plural: configrevisions
    singular: configrevision
  preserveUnknownFields: false
  scope: Cluster
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: ConfigRevision is the Schema for the configrevisions 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: ConfigRevisionSpec defines the desired state of ConfigRevision
            properties:
              backup:
                description: Backup contains all configurations about backup job
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              lightning:
                description: Lightning contains all configurations about a lightning
                  job
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              pd:
                description: PD contains all default and overlay configurations of
                  pd server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              restore:
                description: Restore contains all configurations about restore job
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              ticdc:
                description: TiCDC contains all configurations about a ticdc cluster
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tidb:
                description: TiDB contains all default and overlay configurations
                  of tidb server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiflash:
                description: TiFlash contains all default and overlay configurations
                  of tiflash server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiflashLearner:
                description: TiFlashLearner contains all default and overlay configurations
                  of tiflash learner
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiflowExecutor:
                description: TiflowExecutor contains all configurations about the
                  tiflow exector
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiflowMaster:
                description: TiflowMater contains all configurations about the tiflow
                  master
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tikv:
                description: TiKV contains all default and overlay configurations
                  of tikv server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              tiproxy:
                description: TiProxy contains all default and overlay configurations
                  of tiproxy server
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag, if not specipy, will
                      use global version value.
                    type: string
                type: object
              version:
                description: TiDB cluster version
                type: string
            required:
            - version
            type: object
          status:
            description: ConfigRevisionStatus defines the observed state of ConfigRevision
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: dumplings.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: Dumpling
    listKind: DumplingList
    plural: dumplings
    singular: dumpling
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: Dumpling is the Schema for the dumplings 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: DumplingSpec defines the desired state of Dumpling
            properties:
              bucketPath:
                description: BucketPath is the target bucket address with path,  use
                  s3 uri
                type: string
              clusterName:
                description: ClusterName is the target cluster name, target cluster
                  must exist in the same namespace as dumpling
                type: string
              options:
                description: Options is the parameters list of dumpling
                items:
                  type: string
                type: array
              password:
                type: string
              region:
                description: region for s3 bucket
                type: string
              s3Accesskey:
                type: string
              s3Secretkey:
                type: string
              tableFilter:
                description: TableFilter means Table filter expression for 'db.table'
                  matching. BR supports this from v4.0.3.
                items:
                  type: string
                type: array
              user:
                description: info of the tidb cluster
                type: string
            required:
            - bucketPath
            - clusterName
            - password
            - s3Accesskey
            - s3Secretkey
            - user
            type: object
          status:
            description: DumplingStatus defines the observed state of Dumpling
            properties:
              backupPath:
                description: BackupPath is the location of the dumpling.
                type: string
              backupSize:
                description: BackupSize is the data size of the backup.
                format: int64
                type: integer
              backupSizeReadable:
                description: |-
                  BackupSizeReadable is the data size of the backup.
                  the difference with BackupSize is that its format is human readable
                type: string
              message:
                description: Message is the error message of the Dumpling.
                type: string
              phase:
                description: Phase is lifecycle phase of the Dumpling
                enum:
                - Running
                - Failed
                - Succeed
                - CreatingNodeGroup
                - CreatedNodeGroup
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: dwworkers.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: DWWorker
    listKind: DWWorkerList
    plural: dwworkers
    singular: dwworker
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: DWWorker is the Schema for the dwworkers 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: DWWorkerSpec defines the desired state of DWWorker
            properties:
              args:
                description: Args specifies the start command of the DWWorker.
                items:
                  type: string
                type: array
              clusterName:
                description: |-
                  ClusterName specifies the name of the cluster where the DWWorker should be running with,
                  the Cluster must exist in the same namespace.
                type: string
            required:
            - args
            - clusterName
            type: object
          status:
            description: |-
              DWWorkerStatus defines the observed state of DWWorker.
              This struct is intentionally aligned with tidb2dw's apiservice.InfoResponse.
            properties:
              error_message:
                type: string
              status:
                type: string
              tables_info:
                additionalProperties:
                  properties:
                    error_message:
                      type: string
                    stage:
                      type: string
                    status:
                      type: string
                  type: object
                type: object
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: exports.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: Export
    listKind: ExportList
    plural: exports
    singular: export
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: Export is the Schema for the export 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: ExportSpec defines the desired state of Export
            properties:
              clusterName:
                description: ClusterName is the target cluster name, target cluster
                  must exist in the same namespace as export
                type: string
              options:
                description: Options is the configuration of the export
                properties:
                  columnSelectors:
                    description: |-
                      ColumnSelectors select output columns for matching tables. They are passed
                      to Dumpling as repeated --column-filter arguments.
                    items:
                      description: |-
                        ColumnSelector selects columns from tables matched by Matcher. The matcher
                        and columns syntax is shared with TiCDC column selectors.
                      properties:
                        columns:
                          items:
                            type: string
                          minItems: 1
                          type: array
                        matcher:
                          items:
                            type: string
                          minItems: 1
                          type: array
                      type: object
                    type: array
                  compression:
                    description: Compression is the compression algorithm of the export
                      file
                    type: string
                  consistency:
                    description: Consistency is the consistency level of the export
                    type: string
                  csvOptions:
                    description: CSVOptions is the configuration of the CSV file
                    properties:
                      delimiter:
                        description: Delimiter is the delimiter of the CSV file
                        type: string
                      dialect:
                        description: |-
                          Dialect is the CSV output dialect of dumpling (e.g. "snowflake",
                          "bigquery", "redshift"). Empty means the dumpling default dialect.
                        type: string
                      lineTerminator:
                        description: LineTerminator is the line terminator of the
                          CSV file
                        type: string
                      noHeader:
                        description: NoHeader Export CSV files of the tables without
                          generating header
                        type: boolean
                      "null":
                        description: Null is the null of the CSV file
                        type: string
                      separator:
                        description: Separator is the separator of the CSV file
                        type: string
                    type: object
                  escapeBackslash:
                    description: |-
                      EscapeBackslash controls whether dumpling escapes special characters with a
                      backslash (\) in the export file. It is tri-state: nil leaves the dumpling
                      default (escaping enabled), while an explicit true/false forces the setting.
                    type: boolean
                  fileType:
                    description: FileType is the exported file type
                    type: string
                  filter:
                    description: Filter is the Table filter expression in dumpling
                    type: string
                  parquetOptions:
                    description: ParquetOptions is the configuration of the parquet
                      file
                    properties:
                      compression:
                        description: Compression is the inside compression of parquet
                        type: string
                    type: object
                  partition:
                    items:
                      type: string
                    type: array
                  rows:
                    description: Rows Enable the in-table concurrency to speed up
                      the export
                    type: boolean
                  snapshot:
                    description: Snapshot is the snapshot TSO of the export
                    type: string
                  sql:
                    description: SQL export data according to the specified SQL statement
                    type: string
                  tableFilter:
                    description: TableFilter is the table filter expression in dumpling
                    items:
                      type: string
                    type: array
                  thread:
                    description: Thread is the number of threads in dumpling
                    format: int32
                    type: integer
                  where:
                    description: Where is the where condition of the export
                    type: string
                required:
                - fileType
                type: object
                x-kubernetes-validations:
                - message: sql and columnSelectors cannot be used together
                  rule: '!has(self.sql) || self.sql == '''' || !has(self.columnSelectors)
                    || size(self.columnSelectors) == 0'
              secret:
                description: Secret is the secret of the export
                properties:
                  password:
                    type: string
                  user:
                    type: string
                type: object
              target:
                description: Target is the target of the export
                properties:
                  azure:
                    properties:
                      accessTier:
                        type: string
                      accountKey:
                        type: string
                      accountName:
                        type: string
                      containerName:
                        type: string
                      encryptionKey:
                        type: string
                      encryptionScope:
                        type: string
                      sasToken:
                        type: string
                      sasUrl:
                        type: string
                    type: object
                  exportType:
                    description: ExportType is the type of export target
                    type: string
                  gcs:
                    properties:
                      bucketUri:
                        type: string
                      credentialsFile:
                        type: string
                      predefinedAcl:
                        type: string
                      serviceAccountKey:
                        type: string
                      storageClass:
                        type: string
                    type: object
                  local:
                    type: string
                  region:
                    type: string
                  s3:
                    properties:
                      accessKey:
                        type: string
                      bucketUri:
                        description: BucketUri is the s3 bucket uri
                        type: string
                      endpoint:
                        type: string
                      provider:
                        type: string
                      roleArn:
                        type: string
                      secretAccess:
                        type: string
                    type: object
                required:
                - exportType
                type: object
            required:
            - clusterName
            - options
            - secret
            - target
            type: object
          status:
            description: ExportStatus defines the observed state of Export
            properties:
              compressedSize:
                description: CompressedSize is the size of the compressed exported
                  data.
                type: string
              finishedSize:
                description: FinishedSize is the size of the exported data.
                type: string
              message:
                description: Message is the error message of the Export.
                type: string
              phase:
                description: Phase is lifecycle phase of the Export
                enum:
                - Prepare
                - Running
                - Failed
                - Completed
                - Cancel
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: imports.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Import
    listKind: ImportList
    plural: imports
    singular: import
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Import is the Schema for the imports 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: ImportSpec defines the desired state of Import
            properties:
              accessConfig:
                description: AccessConfig includes the information for access the
                  import source.
                properties:
                  roleArn:
                    description: RoleArn is the ARN of the AWS role which the workload
                      will assume.
                    type: string
                type: object
              clusterName:
                description: |-
                  ClusterName specifies the name of the cluster where the data is imported to,
                  the Cluster must exist in the same namespace as Import
                type: string
              customConfigs:
                description: CustomConfigs include some custom configs replacing the
                  import configs.
                properties:
                  duplicationHandlingForSQL:
                    description: DuplicationHandlingForSQL specifies how the SQL is
                      generated to handle duplicated rows
                    type: string
                  skipPrecheck:
                    description: SkipPrecheck specifies whether to skip the precheck
                      before import
                    type: boolean
                type: object
              dryRun:
                description: |-
                  With DryRun marked as true, the import job will only run a dry run job to
                  verify the permission to access the import source
                  depacated
                type: boolean
              lightningConfig:
                description: LightningConfig is the config for TiDB Lightning.
                type: string
              nodeRole:
                description: NodeRole is the aws role or gcp service account that
                  the import node uses
                type: string
              source:
                description: Source specifies where the import data should be retrieved
                  and parsed
                properties:
                  csvFormat:
                    description: CsvFormat is the format of the CSV files.
                    properties:
                      backslashEscape:
                        type: boolean
                      delimiter:
                        type: string
                      header:
                        type: boolean
                      headerSchemaMatch:
                        type: boolean
                      notNull:
                        type: boolean
                      "null":
                        type: string
                      separator:
                        type: string
                      trimLastSeparator:
                        type: boolean
                    required:
                    - backslashEscape
                    - delimiter
                    - header
                    - notNull
                    - "null"
                    - separator
                    - trimLastSeparator
                    type: object
                  filters:
                    items:
                      type: string
                    type: array
                  format:
                    description: |-
                      Format is the data format of the source data
                      0: Unknown
                      1: SQL
                      2: Amazon Aurora Parquet
                      3: CSV
                      4: Raw Parquet
                    format: int32
                    type: integer
                  objectNamePattern:
                    description: ObjectNamePattern specifies objects which match the
                      pattern to import
                    type: string
                  password:
                    description: Password is the TiDB password for Import job
                    type: string
                  storage:
                    description: Storage specifies where the data is located
                    properties:
                      gcs:
                        properties:
                          region:
                            type: string
                          url:
                            type: string
                        required:
                        - region
                        - url
                        type: object
                      s3:
                        properties:
                          region:
                            type: string
                          url:
                            type: string
                        required:
                        - region
                        - url
                        type: object
                    type: object
                  targetTablePattern:
                    description: TargetTablePattern specifies target db name and table
                      name
                    type: string
                  userName:
                    description: UserName is the TiDB username for Import job
                    type: string
                type: object
              storageRequest:
                description: StorageRequest specifies additional storage size for
                  the import job to use
                type: string
            required:
            - clusterName
            type: object
          status:
            description: ImportStatus defines the observed state of Import
            properties:
              allTableDetails:
                description: AllTableDetails is the table detailed status for each
                  table.
                items:
                  description: CurrentTableStatus defines the detailed information
                    on importing a table.
                  properties:
                    completed_percent:
                      description: |-
                        CompletedPercent is the completed percentage for importing on this table.
                        The value is in 0 ~ 100.  Post-processing time is not included.
                      format: int32
                      type: integer
                    message:
                      description: Message is the error message of the table import
                      type: string
                    name:
                      description: Name is the table name to import.
                      type: string
                    phase:
                      description: Phase is the detailed import phase for this table.
                        Such as "Pre-Processing / Importing / ... "
                      type: string
                    postImportCompletedPercent:
                      description: PostImportCompletedPercent is the completed percentage
                        after importing on this table (post-process and analyze).
                        The value is in 0 ~ 100.
                      format: int32
                      type: integer
                    processedSize:
                      description: |-
                        ProcessedSize is the total size of the source data that has been processed.
                        For local backend, this means that the source data is converted to local temp KV for fast import.
                        For tidb backend, this means that the source data has been converted into INSERT statements and executed in the target.
                      format: int64
                      type: integer
                    size:
                      description: Size is the total size of the source data of this
                        table.
                      format: int64
                      type: integer
                    timeRecord:
                      description: TimeRecord is detailed time record of the whole
                        importing process on this table.
                      properties:
                        analyzeDuration:
                          description: AnalyzeDuration is the duration in seconds
                            of the analyzing phase.
                          format: int64
                          type: integer
                        buildIndexDuration:
                          description: BuildIndexDuration is the duration in seconds
                            of the building index phase.
                          format: int64
                          type: integer
                        importDuration:
                          description: ImportDuration is the duration in seconds of
                            the data import phase.
                          format: int64
                          type: integer
                        importFinishTime:
                          description: ImportFinishTime is the UNIX timestamp when
                            first detected the importing has finished.
                          format: int64
                          type: integer
                        importStartTime:
                          description: ImportStartTime is the UNIX timestamp when
                            first detected the importing has started.
                          format: int64
                          type: integer
                        postProcessDuration:
                          description: PostProcessDuration is the duration in seconds
                            of the post-processing phase.  Post-processing consists
                            of duplication detection and checksum.
                          format: int64
                          type: integer
                        postProcessFinishTime:
                          description: PostProcessFinishTime is the UNIX timestamp
                            when first detected the post-processing has finished.
                          format: int64
                          type: integer
                        postProcessStartTime:
                          description: PostProcessStartTime is the UNIX timestamp
                            when first detected the post-processing has started.
                          format: int64
                          type: integer
                        preProcessDuration:
                          description: PreProcessDuration is the duration in seconds
                            of the pre-process phase.
                          format: int64
                          type: integer
                      type: object
                  required:
                  - completed_percent
                  - name
                  - size
                  type: object
                type: array
              awsNodeRoleArn:
                description: AWSNodeRoleARN is the ARN of the AWS node role.
                type: string
              collectTime:
                description: CollectTime is the UNIX timestamp when the status is
                  collected.
                format: int64
                type: integer
              completedPercent:
                description: |-
                  CompletedPercent is the overall completed percentage for importing.
                  The value is in 0 ~ 100.  Post-processing time is not included.
                format: int32
                type: integer
              completedTables:
                description: CompletedTables is the table count that the data has
                  been imported, but the table has not been post-processed.
                format: int32
                type: integer
              currentTables:
                description: CurrentTables is the table detailed status for each importing
                  table.
                items:
                  description: CurrentTableStatus defines the detailed information
                    on importing a table.
                  properties:
                    completed_percent:
                      description: |-
                        CompletedPercent is the completed percentage for importing on this table.
                        The value is in 0 ~ 100.  Post-processing time is not included.
                      format: int32
                      type: integer
                    message:
                      description: Message is the error message of the table import
                      type: string
                    name:
                      description: Name is the table name to import.
                      type: string
                    phase:
                      description: Phase is the detailed import phase for this table.
                        Such as "Pre-Processing / Importing / ... "
                      type: string
                    postImportCompletedPercent:
                      description: PostImportCompletedPercent is the completed percentage
                        after importing on this table (post-process and analyze).
                        The value is in 0 ~ 100.
                      format: int32
                      type: integer
                    processedSize:
                      description: |-
                        ProcessedSize is the total size of the source data that has been processed.
                        For local backend, this means that the source data is converted to local temp KV for fast import.
                        For tidb backend, this means that the source data has been converted into INSERT statements and executed in the target.
                      format: int64
                      type: integer
                    size:
                      description: Size is the total size of the source data of this
                        table.
                      format: int64
                      type: integer
                    timeRecord:
                      description: TimeRecord is detailed time record of the whole
                        importing process on this table.
                      properties:
                        analyzeDuration:
                          description: AnalyzeDuration is the duration in seconds
                            of the analyzing phase.
                          format: int64
                          type: integer
                        buildIndexDuration:
                          description: BuildIndexDuration is the duration in seconds
                            of the building index phase.
                          format: int64
                          type: integer
                        importDuration:
                          description: ImportDuration is the duration in seconds of
                            the data import phase.
                          format: int64
                          type: integer
                        importFinishTime:
                          description: ImportFinishTime is the UNIX timestamp when
                            first detected the importing has finished.
                          format: int64
                          type: integer
                        importStartTime:
                          description: ImportStartTime is the UNIX timestamp when
                            first detected the importing has started.
                          format: int64
                          type: integer
                        postProcessDuration:
                          description: PostProcessDuration is the duration in seconds
                            of the post-processing phase.  Post-processing consists
                            of duplication detection and checksum.
                          format: int64
                          type: integer
                        postProcessFinishTime:
                          description: PostProcessFinishTime is the UNIX timestamp
                            when first detected the post-processing has finished.
                          format: int64
                          type: integer
                        postProcessStartTime:
                          description: PostProcessStartTime is the UNIX timestamp
                            when first detected the post-processing has started.
                          format: int64
                          type: integer
                        preProcessDuration:
                          description: PreProcessDuration is the duration in seconds
                            of the pre-process phase.
                          format: int64
                          type: integer
                      type: object
                  required:
                  - completed_percent
                  - name
                  - size
                  type: object
                type: array
              isTaskCreated:
                description: IsTaskCreated means whether the task config has been
                  posted to the Lightning server.
                type: boolean
              message:
                description: Message is the error message of the import.
                type: string
              pendingTables:
                description: PendingTables is the table count that has not started
                  importing.
                format: int32
                type: integer
              phase:
                description: Phase means the overall phase of an import job.  Available
                  values are "Prepare / Running / Complete / Failed".
                type: string
              postImportCompletedPercent:
                description: PostImportCompletedPercent is the overall completed percentage
                  after importing (post-process and analyze). The value is in 0 ~
                  100.
                format: int32
                type: integer
              processedDataSize:
                description: ProcessedDataSize is the total source data size that
                  has been processed.  Processing data means the source data is converted
                  into local temp KV storage for quick import.
                format: int64
                type: integer
              taskId:
                description: TaskId is a uuid generated in the task creating phase.
                format: int64
                type: integer
              taskPhase:
                description: TaskPhase is the phase of a running import task.  Available
                  values are "Importing / Post-Processing".
                type: string
              totalFiles:
                description: TotalFiles is the total data source file count.
                format: int32
                type: integer
              totalSize:
                description: TotalSize is the total source data size.
                format: int64
                type: integer
              totalSizeWithIndex:
                description: TotalSizeWithIndex is the total source data size including
                  index size.
                format: int64
                type: integer
              totalTables:
                description: TotalTables is the total table count for import.
                format: int32
                type: integer
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: infraapiconfigs.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: InfraAPIConfig
    listKind: InfraAPIConfigList
    plural: infraapiconfigs
    singular: infraapiconfig
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: InfraAPIConfig is the Schema for the infraapiconfigs 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
          audit:
            properties:
              sidecarCommand:
                items:
                  type: string
                type: array
              sidecarImage:
                type: string
            type: object
          centralCIDR:
            items:
              type: string
            type: array
          clusterMaxConcurrentReconciles:
            description: We use two controllers(aws, gcp) now, the actual total worker
              will be 2 * this value.
            type: integer
          configServiceUrl:
            type: string
          crossplaneController:
            properties:
              enableGroupVersionKinds:
                items:
                  properties:
                    frozenTimeDuration:
                      type: string
                    group:
                      type: string
                    kind:
                      type: string
                    unPausePollInterval:
                      type: string
                    version:
                      type: string
                  required:
                  - frozenTimeDuration
                  - group
                  - kind
                  - unPausePollInterval
                  - version
                  type: object
                type: array
            required:
            - enableGroupVersionKinds
            type: object
          dns:
            properties:
              publicHostedZoneDomain:
                type: string
              publicHostedZoneID:
                type: string
            required:
            - publicHostedZoneDomain
            - publicHostedZoneID
            type: object
          expFeatureGates:
            items:
              properties:
                command:
                  type: string
                featureGate:
                  properties:
                    all:
                      description: |-
                        If `All` is true, this feature gate will be enabled for all except DisabledTenants and DisabledProjects.
                        If `All` is false, this feature gate will be disabled for all except EnabledTenants and EnabledProjects.
                      type: boolean
                    disabledProjects:
                      description: Disable the feature for the specified projects.
                      items:
                        format: int64
                        type: integer
                      type: array
                    disabledTenants:
                      description: Disable the feature for the specified tenants.
                      items:
                        format: int64
                        type: integer
                      type: array
                    enabledProjects:
                      description: Enable the feature for the specified projects.
                      items:
                        format: int64
                        type: integer
                      type: array
                    enabledTenants:
                      description: Enable the feature for the specified tenants.
                      items:
                        format: int64
                        type: integer
                      type: array
                  required:
                  - all
                  - disabledProjects
                  - disabledTenants
                  - enabledProjects
                  - enabledTenants
                  type: object
                minSupportVersion:
                  type: string
                name:
                  type: string
              required:
              - command
              - featureGate
              - minSupportVersion
              - name
              type: object
            type: array
          featureGates:
            additionalProperties:
              properties:
                all:
                  description: |-
                    If `All` is true, this feature gate will be enabled for all except DisabledTenants and DisabledProjects.
                    If `All` is false, this feature gate will be disabled for all except EnabledTenants and EnabledProjects.
                  type: boolean
                disabledProjects:
                  description: Disable the feature for the specified projects.
                  items:
                    format: int64
                    type: integer
                  type: array
                disabledTenants:
                  description: Disable the feature for the specified tenants.
                  items:
                    format: int64
                    type: integer
                  type: array
                enabledProjects:
                  description: Enable the feature for the specified projects.
                  items:
                    format: int64
                    type: integer
                  type: array
                enabledTenants:
                  description: Enable the feature for the specified tenants.
                  items:
                    format: int64
                    type: integer
                  type: array
              required:
              - all
              - disabledProjects
              - disabledTenants
              - enabledProjects
              - enabledTenants
              type: object
            type: object
          gardener:
            description: copy from https://github.com/tidbcloud/dbaas/blob/af433fc6bbd814c7f1630947246673f21b22d587/central/config/config.go#L216
            properties:
              awsMasterCount:
                format: int32
                type: integer
              awsMasterType:
                type: string
              gardenBaseDomain:
                description: The base domain of gardener
                type: string
              gardenerProjectName:
                type: string
              gcpMasterCount:
                format: int32
                type: integer
              gcpMasterType:
                type: string
              kubeConfigPath:
                description: kubeconfig file for base cluster, ignore if in cluster
                type: string
              nodeImage:
                type: string
              storageNodeImage:
                type: string
            required:
            - awsMasterCount
            - awsMasterType
            - gardenBaseDomain
            - gardenerProjectName
            - gcpMasterCount
            - gcpMasterType
            - kubeConfigPath
            - nodeImage
            - storageNodeImage
            type: object
          hibernation:
            properties:
              checkIdleInterval:
                type: string
              dryRun:
                type: boolean
              idleTimeThreshold:
                type: string
            required:
            - checkIdleInterval
            - dryRun
            - idleTimeThreshold
            type: object
          identityImage:
            type: string
          import:
            properties:
              centralRoleARN:
                type: string
              skipBanMyBuckets:
                type: boolean
            required:
            - centralRoleARN
            - skipBanMyBuckets
            type: object
          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
          mixedDeployPDWithTiKV:
            properties:
              affectClusterCreatedAfter:
                format: date-time
                type: string
              affectNamespaceAllowList:
                items:
                  type: string
                type: array
              affectNamespaceBlockList:
                items:
                  type: string
                type: array
              affectTopology:
                properties:
                  lessEqualTiDBCount:
                    type: integer
                  lessEqualTiFlashCount:
                    type: integer
                  lessEqualTiKVCount:
                    type: integer
                  lessEqualTiKVInstanceCores:
                    type: integer
                required:
                - lessEqualTiDBCount
                - lessEqualTiFlashCount
                - lessEqualTiKVCount
                - lessEqualTiKVInstanceCores
                type: object
              enabled:
                type: boolean
            required:
            - affectClusterCreatedAfter
            - affectNamespaceAllowList
            - affectNamespaceBlockList
            - affectTopology
            - enabled
            type: object
          networkMaxConcurrentReconciles:
            type: integer
          observabilityAgentConfig:
            properties:
              auth0Audience:
                type: string
              auth0ClientID:
                type: string
              auth0ClientSecret:
                type: string
              auth0GetTokenURL:
                type: string
              createO11yInfraPath:
                type: string
              deleteO11yInfraPath:
                type: string
              effectiveRegion:
                items:
                  type: string
                type: array
              env:
                type: string
              getO11yInfraPath:
                type: string
              openAPIAddress:
                type: string
              pauseO11yInfraPath:
                type: string
              resumeO11yInfraPath:
                type: string
              version:
                type: integer
            required:
            - auth0Audience
            - auth0ClientID
            - auth0ClientSecret
            - auth0GetTokenURL
            - createO11yInfraPath
            - deleteO11yInfraPath
            - effectiveRegion
            - env
            - getO11yInfraPath
            - openAPIAddress
            - pauseO11yInfraPath
            - resumeO11yInfraPath
            - version
            type: object
          predicate:
            description: |-
              A label selector is a label query over a set of resources. The result of matchLabels and
              matchExpressions are ANDed. An empty label selector matches all objects. A null
              label selector matches no objects.
            properties:
              matchExpressions:
                description: matchExpressions is a list of label selector requirements.
                  The requirements are ANDed.
                items:
                  description: |-
                    A label selector requirement is a selector that contains values, a key, and an operator that
                    relates the key and values.
                  properties:
                    key:
                      description: key is the label key that the selector applies
                        to.
                      type: string
                    operator:
                      description: |-
                        operator represents a key's relationship to a set of values.
                        Valid operators are In, NotIn, Exists and DoesNotExist.
                      type: string
                    values:
                      description: |-
                        values is an array of string values. If the operator is In or NotIn,
                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                        the values array must be empty. This array is replaced during a strategic
                        merge patch.
                      items:
                        type: string
                      type: array
                      x-kubernetes-list-type: atomic
                  required:
                  - key
                  - operator
                  type: object
                type: array
                x-kubernetes-list-type: atomic
              matchLabels:
                additionalProperties:
                  type: string
                description: |-
                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                type: object
            type: object
            x-kubernetes-map-type: atomic
          proxy:
            description: cluster-proxy config, only `auth0Audience` and `auth0Domain`
              used now
            properties:
              auth0Audience:
                type: string
              auth0Domain:
                type: string
              image:
                type: string
              loadBalancerSourceRanges:
                description: config.Global().ServerConfig.CentralCIDR in dbaas
                items:
                  type: string
                type: array
              saltSecret:
                type: string
            required:
            - auth0Audience
            - auth0Domain
            - image
            - loadBalancerSourceRanges
            - saltSecret
            type: object
          server:
            properties:
              manifestDirectoryPrefix:
                type: string
            required:
            - manifestDirectoryPrefix
            type: object
        required:
        - centralCIDR
        - clusterMaxConcurrentReconciles
        - configServiceUrl
        - crossplaneController
        - expFeatureGates
        - featureGates
        - gardener
        - hibernation
        - identityImage
        - import
        - mixedDeployPDWithTiKV
        - networkMaxConcurrentReconciles
        - observabilityAgentConfig
        - predicate
        - proxy
        - server
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: networkpeers.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: NetworkPeer
    listKind: NetworkPeerList
    plural: networkpeers
    singular: networkpeer
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: NetworkPeer is the Schema for the networkpeers 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: NetworkPeerSpec defines the desired state of NetworkPeer
            properties:
              source:
                type: string
              target:
                properties:
                  aws:
                    properties:
                      accountId:
                        type: string
                      peerCIDR:
                        type: string
                      peerRegion:
                        type: string
                      vpcId:
                        type: string
                    required:
                    - accountId
                    - peerCIDR
                    - peerRegion
                    - vpcId
                    type: object
                  gcp:
                    properties:
                      peerNetwork:
                        type: string
                      projectId:
                        type: string
                    required:
                    - peerNetwork
                    - projectId
                    type: object
                  network:
                    properties:
                      networkName:
                        type: string
                    required:
                    - networkName
                    type: object
                type: object
            required:
            - source
            - target
            type: object
          status:
            description: NetworkPeerStatus defines the observed state of NetworkPeer
            properties:
              hostedZoneId:
                type: string
              peeringId:
                type: string
              phase:
                type: string
              vpcCidr:
                type: string
            required:
            - phase
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: networks.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Network
    listKind: NetworkList
    plural: networks
    singular: network
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .status.fromProvider.shootName
      name: SHOOT
      type: string
    - jsonPath: .status.fromProvider.bucketName
      name: BUCKET
      type: string
    - jsonPath: .spec.provider
      name: PROVIDER
      type: string
    - jsonPath: .spec.accountRef.name
      name: ACCOUNT
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Network is the Schema for the networks 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: NetworkSpec defines the desired state of Network
            properties:
              accountRef:
                description: |-
                  AccountReference is a reference to an Account CR.
                  It can be extended to use other types of references, like label selector.
                properties:
                  name:
                    type: string
                type: object
              cidr:
                type: string
              forProvider:
                description: ForProvider encodes the provider specific spec
                nullable: true
                type: object
                x-kubernetes-embedded-resource: true
                x-kubernetes-preserve-unknown-fields: true
              paused:
                description: Paused indicates whether to stop the reconciliation loop
                  for Network
                type: boolean
              provider:
                type: string
              region:
                type: string
            type: object
          status:
            description: NetworkStatus defines the observed state of Network
            properties:
              coredns:
                properties:
                  ingressIps:
                    type: string
                  loadbalanceDns:
                    type: string
                type: object
              externalIPs:
                description: the outbound IP addresses for the VPC network, such as
                  NAT-ips
                items:
                  type: string
                type: array
              fromProvider:
                description: FromProvider encodes the provider specific status
                nullable: true
                type: object
                x-kubernetes-embedded-resource: true
                x-kubernetes-preserve-unknown-fields: true
              iam:
                properties:
                  accountID:
                    type: string
                  externalId:
                    type: string
                  serviceAccountEmail:
                    type: string
                type: object
              import:
                properties:
                  roleARN:
                    type: string
                type: object
              peering:
                properties:
                  allowed:
                    type: boolean
                type: object
              phase:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: providers.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Provider
    listKind: ProviderList
    plural: providers
    singular: provider
  preserveUnknownFields: false
  scope: Cluster
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: Provider is the Schema for the providers 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: ProviderSpec defines the desired state of Provider
            properties:
              forProvider:
                description: ForProvider encodes the provider specific spec
                nullable: true
                type: object
                x-kubernetes-embedded-resource: true
                x-kubernetes-preserve-unknown-fields: true
              instanceTypes:
                items:
                  properties:
                    arch:
                      type: string
                    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
                    localStorageSize:
                      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
                    maxStorage:
                      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
                    minStorage:
                      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
                    name:
                      type: string
                    regions:
                      items:
                        type: string
                      type: array
                    unavailableMemory:
                      anyOf:
                      - type: integer
                      - type: string
                      description: Capacity = Memory - UnavailableMemory
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                  type: object
                type: array
              regions:
                items:
                  properties:
                    name:
                      type: string
                    zones:
                      items:
                        type: string
                      type: array
                  type: object
                type: array
              storageClasses:
                items:
                  properties:
                    encryption:
                      properties:
                        awsKMSARN:
                          type: string
                      type: object
                    iops:
                      type: integer
                    name:
                      type: string
                    throughput:
                      description: Throughput in MiB/s. Only effective when gp3 volume
                        type is specified.
                      type: integer
                    type:
                      type: string
                  type: object
                type: array
              type:
                type: string
            type: object
          status:
            description: ProviderStatus defines the observed state of Provider
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: providertypes.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: ProviderType
    listKind: ProviderTypeList
    plural: providertypes
    singular: providertype
  preserveUnknownFields: false
  scope: Cluster
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: ProviderType is the Schema for the providertypes 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: ProviderTypeSpec defines the desired state of ProviderType
            properties:
              capabilities:
                items:
                  properties:
                    group:
                      type: string
                    resources:
                      items:
                        type: string
                      type: array
                  type: object
                type: array
            type: object
          status:
            description: ProviderTypeStatus defines the observed state of ProviderType
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: replays.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: Replay
    listKind: ReplayList
    plural: replays
    shortNames:
    - rp
    singular: replay
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.clusterId
      name: ClusterID
      type: string
    - jsonPath: .spec.state
      name: State
      type: string
    - jsonPath: .status.phase
      name: Phase
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Replay is the Schema for the replays 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: ReplaySpec defines the desired state of Replay
            properties:
              kubernetes:
                description: Kubernetses defines the Kubernetes cluster information
                  where the replay task will run
                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
              passwordSecretRef:
                description: PasswordSecretRef references the secret containing the
                  database password
                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
              paused:
                description: Paused indicates whether controller should stop reconciling
                  this CR
                type: boolean
              replayConfig:
                description: ReplayConfig defines the configuration for the replay
                properties:
                  bufSize:
                    description: BufSize is the size of buffer for reordering commands
                      from audit files
                    format: int32
                    type: integer
                  checkpointPath:
                    description: |-
                      CheckpointPath is the file path to store replay checkpoint information
                      If the file exists and not empty, the internal state will be loaded from the file to resume replaying
                    type: string
                  commandEndTime:
                    description: |-
                      CommandEndTime is the end time to replay the traffic, format is RFC3339
                      The command whose end ts is before or equal this end time will be ignored
                    type: string
                  commandStartTime:
                    description: |-
                      CommandStartTime is the start time to replay the traffic, format is RFC3339
                      The command before this start time will be ignored
                    type: string
                  customArguments:
                    additionalProperties:
                      type: string
                    description: CustomArguments specifies user-defined key-value
                      pairs that will be passed as additional arguments to the component.
                    type: object
                  dryRun:
                    description: DryRun indicates whether to run in dry-run mode (don't
                      actually connect to TiDB)
                    type: boolean
                  dynamicInput:
                    description: DynamicInput is the dynamic input path for continuous
                      replay
                    type: boolean
                  format:
                    description: Format is the audit log format
                    type: string
                  ignoreErrs:
                    description: IgnoreErrs indicates whether to ignore errors during
                      replay
                    type: boolean
                  image:
                    description: Image is the replayer container image
                    type: string
                  logFile:
                    description: LogFile is the path to the log file
                    type: string
                  outputPath:
                    description: OutputPath is the file path to store replayed sql.
                      Empty indicates do not output replayed sql.
                    type: string
                  psClose:
                    description: PsClose defines the prepared statement close policy
                    type: string
                  readOnly:
                    description: ReadOnly indicates whether to only replay read-only
                      queries
                    type: boolean
                  replayerCount:
                    description: |-
                      ReplayerCount is the total number of replayer instances
                      Used for distributed replay to split the workload
                    format: int32
                    type: integer
                  replayerIndex:
                    description: |-
                      ReplayerIndex is the index of current replayer instance (0-based)
                      Used for distributed replay to identify each instance
                    format: int32
                    type: integer
                  speed:
                    description: Speed is the replay speed multiplier (e.g., 1.0 for
                      normal speed, 2.0 for 2x speed)
                    type: string
                  startTime:
                    description: StartTime is the actual start time of the replay
                      task
                    type: string
                type: object
              sourceClusterID:
                description: SourceClusterID is the ID of the source dedicated cluster
                  from which audit logs will be replayed
                type: string
              sourceClusterType:
                description: SourceClusterType indicates the type of the source cluster
                type: string
              sourceProvider:
                description: SourceProvider indicates the cloud provider of the source
                  cluster
                type: string
              sourceRegion:
                description: SourceRegion indicates the region of the source cluster
                type: string
              state:
                description: State represents the desired state of the Replay
                enum:
                - Deploy
                - Active
                - Pause
                type: string
              targetClusterID:
                description: TargetClusterID is the ID of the target cluster where
                  the replay will be executed，dedicated/serverless/next-gen
                type: string
              targetClusterType:
                description: TargetClusterType indicates the type of the target cluster
                type: string
              targetProvider:
                description: TargetProvider indicates the cloud provider of the target
                  cluster
                type: string
              targetRegion:
                description: TargetRegion indicates the region of the target cluster
                type: string
              tasks:
                description: Tasks defines the list of replay tasks to be executed
                items:
                  description: ReplayTask defines a single replay task
                  properties:
                    commandEndTime:
                      description: |-
                        CommandEndTime is the end time to replay the traffic, format is RFC3339
                        The command whose end ts is before or equal this end time will be ignored
                      type: string
                    commandStartTime:
                      description: |-
                        CommandStartTime is the start time to replay the traffic, format is RFC3339
                        The command before this start time will be ignored
                      type: string
                    name:
                      description: Name is the name of the task
                      type: string
                    replayConfigs:
                      description: ReplayConfigs defines the per-replay configurations
                        for this task
                      items:
                        description: ReplayConfig defines the configuration for the
                          replay process
                        properties:
                          bufSize:
                            description: BufSize is the size of buffer for reordering
                              commands from audit files
                            format: int32
                            type: integer
                          checkpointPath:
                            description: |-
                              CheckpointPath is the file path to store replay checkpoint information
                              If the file exists and not empty, the internal state will be loaded from the file to resume replaying
                            type: string
                          commandEndTime:
                            description: |-
                              CommandEndTime is the end time to replay the traffic, format is RFC3339
                              The command whose end ts is before or equal this end time will be ignored
                            type: string
                          commandStartTime:
                            description: |-
                              CommandStartTime is the start time to replay the traffic, format is RFC3339
                              The command before this start time will be ignored
                            type: string
                          customArguments:
                            additionalProperties:
                              type: string
                            description: CustomArguments specifies user-defined key-value
                              pairs that will be passed as additional arguments to
                              the component.
                            type: object
                          dryRun:
                            description: DryRun indicates whether to run in dry-run
                              mode (don't actually connect to TiDB)
                            type: boolean
                          dynamicInput:
                            description: DynamicInput is the dynamic input path for
                              continuous replay
                            type: boolean
                          format:
                            description: Format is the audit log format
                            type: string
                          ignoreErrs:
                            description: IgnoreErrs indicates whether to ignore errors
                              during replay
                            type: boolean
                          image:
                            description: Image is the replayer container image
                            type: string
                          logFile:
                            description: LogFile is the path to the log file
                            type: string
                          outputPath:
                            description: OutputPath is the file path to store replayed
                              sql. Empty indicates do not output replayed sql.
                            type: string
                          psClose:
                            description: PsClose defines the prepared statement close
                              policy
                            type: string
                          readOnly:
                            description: ReadOnly indicates whether to only replay
                              read-only queries
                            type: boolean
                          replayerCount:
                            description: |-
                              ReplayerCount is the total number of replayer instances
                              Used for distributed replay to split the workload
                            format: int32
                            type: integer
                          replayerIndex:
                            description: |-
                              ReplayerIndex is the index of current replayer instance (0-based)
                              Used for distributed replay to identify each instance
                            format: int32
                            type: integer
                          speed:
                            description: Speed is the replay speed multiplier (e.g.,
                              1.0 for normal speed, 2.0 for 2x speed)
                            type: string
                          startTime:
                            description: StartTime is the actual start time of the
                              replay task
                            type: string
                        type: object
                      type: array
                    replicas:
                      description: Replicas is the number of replicas for this task
                      format: int32
                      type: integer
                    resources:
                      description: Resources defines the compute resources required
                        by the replay task
                      properties:
                        instanceType:
                          description: InstanceType is the instance type for the replay
                            task
                          type: string
                        storageSize:
                          description: StorageSize is the storage size for the replay
                            task
                          type: string
                      type: object
                    sourceAuditLogAddrs:
                      description: SourceAuditLogAddrs is the list of audit log addresses
                        to replay from
                      items:
                        description: AuditLogAddr defines the audit log address configuration
                        properties:
                          aliyun:
                            description: Aliyun is the Aliyun audit log configuration
                            properties:
                              bucketURL:
                                description: BucketURL is the OSS URL/prefix of the
                                  audit log
                                type: string
                            type: object
                          aws:
                            description: AWS is the AWS audit log configuration
                            properties:
                              externalID:
                                description: ExternalID is the external ID for assuming
                                  the IAM role
                                type: string
                              roleArn:
                                description: RoleArn is the ARN of the IAM role to
                                  access the S3 bucket
                                type: string
                              s3URL:
                                description: S3URL is the S3 URL of the audit log
                                type: string
                            type: object
                        type: object
                      type: array
                    startTime:
                      description: StartTime is the actual start time of the replay
                        task
                      type: string
                    targetEndpoint:
                      description: TargetEndpoint is the target TiDB endpoint to replay
                        to
                      type: string
                    username:
                      description: Username is the username to connect to TiDB
                      type: string
                  required:
                  - name
                  - sourceAuditLogAddrs
                  - targetEndpoint
                  - username
                  type: object
                type: array
            required:
            - kubernetes
            - passwordSecretRef
            - replayConfig
            - sourceClusterType
            - sourceProvider
            - sourceRegion
            - state
            - targetClusterID
            - targetClusterType
            - targetProvider
            - targetRegion
            - tasks
            type: object
          status:
            description: ReplayStatus defines the observed state of Replay
            properties:
              awsNodeRoleARN:
                description: AWSNodeRoleARN is the ARN of the AWS node role.
                type: string
              lastUpdateTime:
                description: LastUpdateTime is the last time the status was updated
                format: date-time
                type: string
              message:
                description: Message provides additional information about the replay
                  status
                type: string
              phase:
                description: Phase denotes current replay progress
                enum:
                - Creating
                - Running
                - Stopped
                - Deleting
                type: string
              tasks:
                description: Tasks contains the status of individual replay tasks
                items:
                  description: ReplayTaskStatus defines the status of a replay task
                  properties:
                    message:
                      description: Message provides additional information about the
                        task (e.g., errors during task creation)
                      type: string
                    name:
                      description: Name is the name of the task
                      type: string
                    replicaStatuses:
                      description: ReplicaStatuses contains the status of each individual
                        replica
                      items:
                        description: ReplayReplicaStatus defines the status of a single
                          replica in a replay task
                        properties:
                          index:
                            description: Index is the replica index (0-based)
                            format: int32
                            type: integer
                          message:
                            description: |-
                              Message provides error or status information for this replica
                              This replaces the separate ErrorMessage field
                            type: string
                          phase:
                            description: Phase is the current phase of this replica
                            type: string
                          podName:
                            description: PodName is the name of the pod running this
                              replica
                            type: string
                          ready:
                            description: Ready indicates whether this replica is ready
                            type: boolean
                          taskInfo:
                            description: TaskInfo contains detailed replay information
                              from the replayer API
                            properties:
                              endTime:
                                description: EndTime is the end time of the job
                                type: string
                              error:
                                description: |-
                                  Error is the error message of the job
                                  It's recorded when the job is stopped due to an error
                                type: string
                              failedCommands:
                                description: FailedCommands is the number of commands
                                  that failed during replay
                                format: int64
                                type: integer
                              lastCommandTimestamp:
                                description: LastCommandTimestamp is the start timestamp
                                  of the latest command being replayed
                                type: string
                              processedBytes:
                                description: ProcessedBytes is the number of bytes
                                  that have been processed
                                format: int64
                                type: integer
                              progress:
                                description: |-
                                  Progress is the progress of the job (0-100)
                                  Note: Always 0 for audit log format
                                format: int32
                                type: integer
                              replayedCommands:
                                description: ReplayedCommands is the number of commands
                                  that have been replayed
                                format: int64
                                type: integer
                              sourceAuditLogAddrs:
                                description: SourceAuditLogAddrs contains the audit
                                  log addresses being processed
                                items:
                                  description: AuditLogAddr defines the audit log
                                    address configuration
                                  properties:
                                    aliyun:
                                      description: Aliyun is the Aliyun audit log
                                        configuration
                                      properties:
                                        bucketURL:
                                          description: BucketURL is the OSS URL/prefix
                                            of the audit log
                                          type: string
                                      type: object
                                    aws:
                                      description: AWS is the AWS audit log configuration
                                      properties:
                                        externalID:
                                          description: ExternalID is the external
                                            ID for assuming the IAM role
                                          type: string
                                        roleArn:
                                          description: RoleArn is the ARN of the IAM
                                            role to access the S3 bucket
                                          type: string
                                        s3URL:
                                          description: S3URL is the S3 URL of the
                                            audit log
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              startTime:
                                description: StartTime is the start time of the job
                                type: string
                              status:
                                description: |-
                                  Status is the current status of the job
                                  Possible values: "canceled", "done", "running"
                                type: string
                              totalBytes:
                                description: TotalBytes is the total size of audit
                                  logs to replay (in bytes)
                                format: int64
                                type: integer
                              totalCommands:
                                description: TotalCommands is the total number of
                                  commands to replay
                                format: int64
                                type: integer
                              type:
                                description: Type indicates the job type (replay or
                                  capture)
                                type: string
                            type: object
                        required:
                        - podName
                        type: object
                      type: array
                  required:
                  - name
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: restores.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: Restore
    listKind: RestoreList
    plural: restores
    singular: restore
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - jsonPath: .spec.from.backup
      name: From
      type: string
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: Restore is the Schema for the restores 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: RestoreSpec defines the desired state of Restore
            properties:
              clusterName:
                description: |-
                  ClusterName specifies the name of the target cluster where data is restored to,
                  the cluster must exist in the same namespace with Restore
                type: string
              compactBackupName:
                description: |-
                  CompactBackupName is the name of the sibling cloudv1.CompactBackup CR used
                  for compaction-accelerated PiTR restore. When set, the restore-controller
                  populates ReplicationConfig.CompactBackupName on the operator Restore CR.

                  For PiTR restore only.
                type: string
              configuration:
                description: |-
                  Configuration is the configuration passed from dataflow
                  it is used to replace gitops
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag
                    type: string
                  tikvImage:
                    description: TiKVImage is the custom TiKV image
                    type: string
                  tikvVersion:
                    description: TiKVVersion is the custom TiKV version
                    type: string
                type: object
              env:
                description: Env adds environment variables to restore pod
                items:
                  description: EnvVar represents an environment variable present in
                    a Container.
                  properties:
                    name:
                      description: Name of the environment variable. Must be a C_IDENTIFIER.
                      type: string
                    value:
                      description: |-
                        Variable references $(VAR_NAME) are expanded
                        using the previously defined environment variables in the container and
                        any service environment variables. If a variable cannot be resolved,
                        the reference in the input string will be unchanged. Double $$ are reduced
                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                        "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
                        Escaped references will never be expanded, regardless of whether the variable
                        exists or not.
                        Defaults to "".
                      type: string
                    valueFrom:
                      description: Source for the environment variable's value. Cannot
                        be used if value is not empty.
                      properties:
                        configMapKeyRef:
                          description: Selects a key of a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key
                                must be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                        fieldRef:
                          description: |-
                            Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
                            spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
                          properties:
                            apiVersion:
                              description: Version of the schema the FieldPath is
                                written in terms of, defaults to "v1".
                              type: string
                            fieldPath:
                              description: Path of the field to select in the specified
                                API version.
                              type: string
                          required:
                          - fieldPath
                          type: object
                          x-kubernetes-map-type: atomic
                        resourceFieldRef:
                          description: |-
                            Selects a resource of the container: only resources limits and requests
                            (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
                          properties:
                            containerName:
                              description: 'Container name: required for volumes,
                                optional for env vars'
                              type: string
                            divisor:
                              anyOf:
                              - type: integer
                              - type: string
                              description: Specifies the output format of the exposed
                                resources, defaults to "1"
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            resource:
                              description: 'Required: resource to select'
                              type: string
                          required:
                          - resource
                          type: object
                          x-kubernetes-map-type: atomic
                        secretKeyRef:
                          description: Selects a key of a secret in the pod's namespace
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                  required:
                  - name
                  type: object
                type: array
              from:
                description: From specified where the backup data locates
                properties:
                  PiTRRestoredTS:
                    description: |-
                      PiTRRestoredTS is the PiTR restored ts.
                      it is used when LogBackup is specified
                    type: string
                  backup:
                    description: |-
                      Backup is the name of the target Backup object, if this field is specified,
                      the backup data will be retrieved from the Backup job.
                      The Backup must exist in the same namespace if specified.
                    type: string
                  bucket:
                    description: |-
                      (Deprecated) RestoreBucketInfo is the bucket info of the backup data
                      it is used in the case that the restore with workflow
                      Please use Region, SnapshotBackupStorage and LogBackupStorage fields instead
                    properties:
                      backupPrefix:
                        description: BackupPrefix is the prefix of the backup file.
                        type: string
                      cloudProvider:
                        description: CloudProvider is the cloud provider of the bucket
                        type: string
                      logBackupPrefix:
                        description: LogBackupPrefix is the prefix of the log backup
                          file.
                        type: string
                      name:
                        description: Name is the name of the bucket
                        type: string
                      region:
                        description: Region is the region of the bucket
                        type: string
                    type: object
                  logBackup:
                    description: |-
                      LogBackup represents to execute PiTR
                      it is the name of Backup object with Log mode
                      its usage is same as Backup field
                    type: string
                  logBackupStorage:
                    description: LogBackupStorage is the log backup bucket storage
                    type: string
                  region:
                    description: Region is the region of the backup bucket
                    type: string
                  snapshotBackupStorage:
                    description: SnapshotBackupStorage is the snapshot backup bucket
                      storage
                    type: string
                required:
                - backup
                type: object
              instanceType:
                description: InstanceType specifies the instance type required by
                  restore pod
                type: string
              nodeRole:
                description: NodeRole is the aws role or gcp service account that
                  the br node uses
                type: string
              options:
                description: Options is the parameters list of br, like --filters=xxx
                items:
                  type: string
                type: array
              paused:
                description: Paused specifies whether to pause the reconciliation
                  loop for Restore CR
                type: boolean
              resourceRequirements:
                description: ResourceRequirements manage resources(cpu,memory) of
                  restore pod
                properties:
                  claims:
                    description: |-
                      Claims lists the names of resources, defined in spec.resourceClaims,
                      that are used by this container.

                      This is an alpha field and requires enabling the
                      DynamicResourceAllocation feature gate.

                      This field is immutable. It can only be set for containers.
                    items:
                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                      properties:
                        name:
                          description: |-
                            Name must match the name of one entry in pod.spec.resourceClaims of
                            the Pod where this field is used. It makes that resource available
                            inside a container.
                          type: string
                        request:
                          description: |-
                            Request is the name chosen for a request in the referenced claim.
                            If empty, everything from the claim is made available, otherwise
                            only the result of this request.
                          type: string
                      required:
                      - name
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - name
                    x-kubernetes-list-type: map
                  limits:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Limits describes the maximum amount of compute resources allowed.
                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    type: object
                  requests:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Requests describes the minimum amount of compute resources required.
                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                      otherwise to an implementation-defined value. Requests cannot exceed Limits.
                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    type: object
                type: object
            required:
            - clusterName
            - from
            type: object
          status:
            description: RestoreStatus defines the observed state of Restore
            properties:
              phase:
                description: Phase denotes the current restore progress
                type: string
              progresses:
                items:
                  properties:
                    lastTransitionTime:
                      description: LastTransitionTime is the update time
                      format: date-time
                      nullable: true
                      type: string
                    progress:
                      description: Progress is the restore progress percentage value
                      format: int32
                      type: integer
                    step:
                      description: Step is the step name of progress
                      type: string
                  type: object
                type: array
            required:
            - phase
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: ticdcs.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    categories:
    - infra-api
    kind: TiCDC
    listKind: TiCDCList
    plural: ticdcs
    singular: ticdc
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.clusterName
      name: Cluster
      type: string
    - jsonPath: .status.phase
      name: PHASE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: TiCDC is the Schema for the ticdcs 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: |-
              TiCDCSpec defines the desired state of TiCDC
              TiCDC only use cloud ssd for storage
            properties:
              CDCClusterID:
                description: CDCClusterID is the cdc  cluster id. When you want to
                  deploy multi cdc cluster to replica one TIDB cluster, fill this
                  field.
                type: string
              UpstreamCoreDNSIp:
                description: UpstreamCoreDNSIp only use on eks provider, downstream
                  use this ip string to connect upstream tidb components
                type: string
              UpstreamclusterName:
                description: UpstreamCluster is the upstream cluster name. When you
                  want to connect the upstream PD client, fill this field.
                type: string
              clusterName:
                description: ClusterName is the target cluster name, target cluster
                  must exist in the same namespace as cdc cluster. It decides where
                  the TiCDC is deployed.
                type: string
              configuration:
                description: |-
                  Configuration is the configuration passed from dataflow
                  it is used to replace gitops
                properties:
                  baseImage:
                    description: BaseImage of the component
                    type: string
                  config:
                    description: Config is the default configuration of component
                    type: string
                  tag:
                    description: Tag is component image tag
                    type: string
                  tikvImage:
                    description: TiKVImage is the custom TiKV image
                    type: string
                  tikvVersion:
                    description: TiKVVersion is the custom TiKV version
                    type: string
                type: object
              instanceType:
                description: InstanceType is specified the profile of every TiCDC
                  node, the InstanceType must be declared in the Provider spec
                type: string
              networkName:
                description: |-
                  NetworkName references the Network where the TiCDC is hosted,
                  note: the Network need not as the same as the cluster's Network for decouple these two resources
                type: string
              nodeRole:
                description: NodeRole is the aws role or gcp service account that
                  the br node uses
                type: string
              replicas:
                minimum: 0
                type: integer
              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:
            - instanceType
            - networkName
            - replicas
            - storageSize
            type: object
          status:
            description: TiCDCStatus defines the observed state of TiCDC
            properties:
              baseProxyURL:
                description: BaseProxyURL denotes base proxy url for ticdc
                type: string
              phase:
                description: Phase denotes current ticdc progress
                type: string
              reason:
                description: |-
                  Reason explains why the ticdc is in current phase to human,
                  reason is not supposed to be parsed by program, Phase should be
                  used instead.
                type: string
            required:
            - phase
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: upgradeoperations.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: UpgradeOperation
    listKind: UpgradeOperationList
    plural: upgradeoperations
    shortNames:
    - uo
    singular: upgradeoperation
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.networkName
      name: NetworkName
      type: string
    - jsonPath: .spec.schedule
      name: Schedule
      type: string
    - jsonPath: .spec.paused
      name: Paused
      type: boolean
    - jsonPath: .status.phase
      name: Phase
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: UpgradeOperation is the Schema for the upgradeoperations 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: UpgradeOperationSpec defines the desired state of UpgradeOperation
            properties:
              duration:
                default: 2h
                description: |-
                  Duration is the desired duration of the upgrade operation, it's used for alerting.
                  If unset, this defaults to 2 hours.
                  Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration.
                type: string
              networkName:
                description: NetworkName is the name of the network CR.
                type: string
              paused:
                default: false
                description: Paused indicates if the upgrade operation is paused.
                type: boolean
              schedule:
                description: |-
                  Schedule specifies when the upgrade should be performed.
                  The UpgradeOperationScheduleLayout should be `2006-01-02 15:04:05 -0700 MST`.
                type: string
              steps:
                description: Steps is a list of upgrade steps to be performed.
                items:
                  description: Step defines a single upgrade step, i.e. upgrade <Target>
                    to <Version> for <Cluster>.
                  properties:
                    beginTime:
                      format: date-time
                      type: string
                    cluster:
                      type: string
                    duration:
                      type: string
                    endTime:
                      format: date-time
                      type: string
                    lastProgressTime:
                      description: LastProgressTime is the step-level high-water mark
                        for stuck detection (monotonic within this step).
                      format: date-time
                      type: string
                    options:
                      additionalProperties:
                        type: string
                      description: |-
                        Options is a set of key-value pairs that can be used to specify additional options.

                        The following options are supported:
                          - "migrate-managed-nodegroup": if set to "true", will migrate managed node groups to self-managed node groups.
                          - "scale-out-extra-tidb": if set to "true", an extra TiDB instance will be scaled out when upgrading.
                      type: object
                    phases:
                      description: Phases records fine-grained sub-phase history within
                        this step (forward-only, append on advance).
                      items:
                        description: StepPhase records one visit to a fine-grained
                          sub-phase within a step.
                        properties:
                          beginTime:
                            description: BeginTime is when this sub-phase visit started.
                            format: date-time
                            type: string
                          done:
                            description: Done is the current done count within this
                              visit.
                            type: integer
                          endTime:
                            description: EndTime is set when advancing to the next
                              sub-phase.
                            format: date-time
                            type: string
                          lastProgressTime:
                            description: LastProgressTime is when MaxDone last increased
                              in this visit.
                            format: date-time
                            type: string
                          maxDone:
                            description: MaxDone is the highest done count observed
                              in this visit (high-water for stuck within visit).
                            type: integer
                          name:
                            description: Name identifies the sub-phase, e.g. "wait-nodes-ready".
                            type: string
                          progressInfo:
                            description: ProgressInfo is human-readable progress,
                              e.g. "wait-nodes-ready=2/3".
                            type: string
                          total:
                            description: Total is the total count within this visit.
                            type: integer
                        type: object
                      type: array
                    target:
                      type: string
                    version:
                      type: string
                  required:
                  - target
                  - version
                  type: object
                type: array
              ttl:
                default: 8760h
                description: |-
                  TTL is the time to live for Completed/Failed UpgradeOperation CRs.
                  Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration.
                  If unset, this defaults to 8760 hours (1 year).
                type: string
            required:
            - networkName
            - schedule
            - steps
            type: object
          status:
            description: UpgradeOperationStatus defines the observed state of UpgradeOperation
            properties:
              beginTime:
                format: date-time
                type: string
              currentStep:
                description: Step defines a single upgrade step, i.e. upgrade <Target>
                  to <Version> for <Cluster>.
                properties:
                  beginTime:
                    format: date-time
                    type: string
                  cluster:
                    type: string
                  duration:
                    type: string
                  endTime:
                    format: date-time
                    type: string
                  lastProgressTime:
                    description: LastProgressTime is the step-level high-water mark
                      for stuck detection (monotonic within this step).
                    format: date-time
                    type: string
                  options:
                    additionalProperties:
                      type: string
                    description: |-
                      Options is a set of key-value pairs that can be used to specify additional options.

                      The following options are supported:
                        - "migrate-managed-nodegroup": if set to "true", will migrate managed node groups to self-managed node groups.
                        - "scale-out-extra-tidb": if set to "true", an extra TiDB instance will be scaled out when upgrading.
                    type: object
                  phases:
                    description: Phases records fine-grained sub-phase history within
                      this step (forward-only, append on advance).
                    items:
                      description: StepPhase records one visit to a fine-grained sub-phase
                        within a step.
                      properties:
                        beginTime:
                          description: BeginTime is when this sub-phase visit started.
                          format: date-time
                          type: string
                        done:
                          description: Done is the current done count within this
                            visit.
                          type: integer
                        endTime:
                          description: EndTime is set when advancing to the next sub-phase.
                          format: date-time
                          type: string
                        lastProgressTime:
                          description: LastProgressTime is when MaxDone last increased
                            in this visit.
                          format: date-time
                          type: string
                        maxDone:
                          description: MaxDone is the highest done count observed
                            in this visit (high-water for stuck within visit).
                          type: integer
                        name:
                          description: Name identifies the sub-phase, e.g. "wait-nodes-ready".
                          type: string
                        progressInfo:
                          description: ProgressInfo is human-readable progress, e.g.
                            "wait-nodes-ready=2/3".
                          type: string
                        total:
                          description: Total is the total count within this visit.
                          type: integer
                      type: object
                    type: array
                  target:
                    type: string
                  version:
                    type: string
                required:
                - target
                - version
                type: object
              duration:
                type: string
              endTime:
                format: date-time
                type: string
              finishedSteps:
                description: Steps is a FIFO queue of upgrade steps.
                items:
                  description: Step defines a single upgrade step, i.e. upgrade <Target>
                    to <Version> for <Cluster>.
                  properties:
                    beginTime:
                      format: date-time
                      type: string
                    cluster:
                      type: string
                    duration:
                      type: string
                    endTime:
                      format: date-time
                      type: string
                    lastProgressTime:
                      description: LastProgressTime is the step-level high-water mark
                        for stuck detection (monotonic within this step).
                      format: date-time
                      type: string
                    options:
                      additionalProperties:
                        type: string
                      description: |-
                        Options is a set of key-value pairs that can be used to specify additional options.

                        The following options are supported:
                          - "migrate-managed-nodegroup": if set to "true", will migrate managed node groups to self-managed node groups.
                          - "scale-out-extra-tidb": if set to "true", an extra TiDB instance will be scaled out when upgrading.
                      type: object
                    phases:
                      description: Phases records fine-grained sub-phase history within
                        this step (forward-only, append on advance).
                      items:
                        description: StepPhase records one visit to a fine-grained
                          sub-phase within a step.
                        properties:
                          beginTime:
                            description: BeginTime is when this sub-phase visit started.
                            format: date-time
                            type: string
                          done:
                            description: Done is the current done count within this
                              visit.
                            type: integer
                          endTime:
                            description: EndTime is set when advancing to the next
                              sub-phase.
                            format: date-time
                            type: string
                          lastProgressTime:
                            description: LastProgressTime is when MaxDone last increased
                              in this visit.
                            format: date-time
                            type: string
                          maxDone:
                            description: MaxDone is the highest done count observed
                              in this visit (high-water for stuck within visit).
                            type: integer
                          name:
                            description: Name identifies the sub-phase, e.g. "wait-nodes-ready".
                            type: string
                          progressInfo:
                            description: ProgressInfo is human-readable progress,
                              e.g. "wait-nodes-ready=2/3".
                            type: string
                          total:
                            description: Total is the total count within this visit.
                            type: integer
                        type: object
                      type: array
                    target:
                      type: string
                    version:
                      type: string
                  required:
                  - target
                  - version
                  type: object
                type: array
              nextSteps:
                description: Steps is a FIFO queue of upgrade steps.
                items:
                  description: Step defines a single upgrade step, i.e. upgrade <Target>
                    to <Version> for <Cluster>.
                  properties:
                    beginTime:
                      format: date-time
                      type: string
                    cluster:
                      type: string
                    duration:
                      type: string
                    endTime:
                      format: date-time
                      type: string
                    lastProgressTime:
                      description: LastProgressTime is the step-level high-water mark
                        for stuck detection (monotonic within this step).
                      format: date-time
                      type: string
                    options:
                      additionalProperties:
                        type: string
                      description: |-
                        Options is a set of key-value pairs that can be used to specify additional options.

                        The following options are supported:
                          - "migrate-managed-nodegroup": if set to "true", will migrate managed node groups to self-managed node groups.
                          - "scale-out-extra-tidb": if set to "true", an extra TiDB instance will be scaled out when upgrading.
                      type: object
                    phases:
                      description: Phases records fine-grained sub-phase history within
                        this step (forward-only, append on advance).
                      items:
                        description: StepPhase records one visit to a fine-grained
                          sub-phase within a step.
                        properties:
                          beginTime:
                            description: BeginTime is when this sub-phase visit started.
                            format: date-time
                            type: string
                          done:
                            description: Done is the current done count within this
                              visit.
                            type: integer
                          endTime:
                            description: EndTime is set when advancing to the next
                              sub-phase.
                            format: date-time
                            type: string
                          lastProgressTime:
                            description: LastProgressTime is when MaxDone last increased
                              in this visit.
                            format: date-time
                            type: string
                          maxDone:
                            description: MaxDone is the highest done count observed
                              in this visit (high-water for stuck within visit).
                            type: integer
                          name:
                            description: Name identifies the sub-phase, e.g. "wait-nodes-ready".
                            type: string
                          progressInfo:
                            description: ProgressInfo is human-readable progress,
                              e.g. "wait-nodes-ready=2/3".
                            type: string
                          total:
                            description: Total is the total count within this visit.
                            type: integer
                        type: object
                      type: array
                    target:
                      type: string
                    version:
                      type: string
                  required:
                  - target
                  - version
                  type: object
                type: array
              phase:
                description: Phase describes the current phase of the upgrade operation.
                type: string
              reason:
                description: Reason describes the reason for the current phase.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: workflows.cloud.pingcap.com
spec:
  group: cloud.pingcap.com
  names:
    kind: Workflow
    listKind: WorkflowList
    plural: workflows
    shortNames:
    - wf
    singular: workflow
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.type
      name: Type
      type: string
    - jsonPath: .spec.paused
      name: Paused
      type: boolean
    - jsonPath: .status.phase
      name: Phase
      type: string
    - jsonPath: .status.progress
      name: Progress
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    - jsonPath: .status.runningSteps
      name: RunningSteps
      type: string
    - jsonPath: .status.endingSteps
      name: EndingSteps
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: Workflow is the Schema for the workflows 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:
            properties:
              inputs:
                additionalProperties:
                  type: string
                type: object
              paused:
                default: false
                description: Paused indicates if the workflow instance is paused.
                type: boolean
              retryPolicy:
                description: default to Always
                properties:
                  backoff:
                    description: Backoff is duration string such as '30s', means wait
                      how long to do next retry when encounter error for a step
                    type: string
                  type:
                    enum:
                    - Always
                    - Never
                    type: string
                required:
                - type
                type: object
              schedule:
                description: |-
                  execute this workflow at specific time
                  should be `2006-01-02T15:04:05Z`.
                format: date-time
                type: string
              steps:
                description: WorkflowSteps is a FIFO queue of upgrade steps.
                items:
                  properties:
                    inputs:
                      description: Inputs is inputs of this step
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    name:
                      description: Name acts as the unique key of this step in a Workflow
                        Instance
                      type: string
                    stepGroup:
                      description: StepGroup is the group name of this step
                      type: string
                    uses:
                      description: Uses represents which Workflow Action to be used
                      type: string
                  required:
                  - name
                  - uses
                  type: object
                type: array
              ttl:
                default: 8760h
                description: |-
                  Wait how long to GC a finished Workflow CR
                  TTL is the time to live for Completed/Failed Workflow CRs.
                  Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration.
                  If unset, this defaults to 8760 hours (1 year).
                type: string
              type:
                type: string
            required:
            - steps
            - type
            type: object
          status:
            properties:
              beginTime:
                format: date-time
                type: string
              cancelEndingSteps:
                items:
                  type: string
                type: array
              cancellingSteps:
                items:
                  type: string
                type: array
              duration:
                type: string
              endTime:
                format: date-time
                type: string
              endingSteps:
                items:
                  type: string
                type: array
              finishedSteps:
                items:
                  type: string
                type: array
              nextExecuteTime:
                description: NextExecuteTime is the next time to execute this workflow.
                  Empty means no limit.
                format: date-time
                type: string
              outputs:
                additionalProperties:
                  type: string
                type: object
              phase:
                enum:
                - Pending
                - Running
                - Completed
                - Failed
                - Cancelling
                - Cancelled
                type: string
              progress:
                description: |-
                  Progress means the overall progress of the workflow, such as '2/10'. The denominator is the total number of steps.
                  The numerator is the number of finished steps.
                type: string
              reason:
                type: string
              runningSteps:
                items:
                  type: string
                type: array
              steps:
                items:
                  properties:
                    beginTime:
                      format: date-time
                      type: string
                    cancelEndingCount:
                      description: CancelEndingCount is execution count of this step
                        in Cancelled phase
                      type: integer
                    cancellingCount:
                      description: CancellingCount is execution count of this step
                        in Cancelling phase
                      type: integer
                    count:
                      description: Count is execution count of this step in Running
                        phase
                      type: integer
                    duration:
                      type: string
                    endTime:
                      format: date-time
                      type: string
                    endingCount:
                      description: EndingCount is execution count of this step in
                        Ending phase
                      type: integer
                    lastError:
                      type: string
                    name:
                      type: string
                    outputs:
                      additionalProperties:
                        type: string
                      type: object
                    phase:
                      default: Pending
                      enum:
                      - Pending
                      - Running
                      - Ending
                      - Completed
                      - Failed
                      - Cancelling
                      - Cancelled
                      - CancelEnding
                      type: string
                    reason:
                      type: string
                  required:
                  - count
                  - name
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
