apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cnrm.cloud.google.com/version: 0.0.0-dev
  creationTimestamp: null
  labels:
    cnrm.cloud.google.com/managed-by-kcc: "true"
    cnrm.cloud.google.com/system: "true"
  name: managedkafkaclusters.managedkafka.cnrm.cloud.google.com
spec:
  group: managedkafka.cnrm.cloud.google.com
  names:
    categories:
    - gcp
    kind: ManagedKafkaCluster
    listKind: ManagedKafkaClusterList
    plural: managedkafkaclusters
    shortNames:
    - gcpmanagedkafkacluster
    - gcpmanagedkafkaclusters
    singular: managedkafkacluster
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: When 'True', the most recent reconcile of the resource succeeded
      jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - description: The reason for the value in 'Ready'
      jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Status
      type: string
    - description: The last transition time for the value in 'Status'
      jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
      name: Status Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ManagedKafkaCluster is the Schema for the ManagedKafkaCluster
          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: ManagedKafkaClusterSpec defines the desired state of ManagedKafkaCluster
            properties:
              capacityConfig:
                description: Required. Capacity configuration for the Kafka cluster.
                properties:
                  memoryBytes:
                    description: 'Required. The memory to provision for the cluster
                      in bytes. The CPU:memory ratio (vCPU:GiB) must be between 1:1
                      and 1:8. Minimum: 3221225472 (3 GiB).'
                    format: int64
                    type: integer
                  vcpuCount:
                    description: 'Required. The number of vCPUs to provision for the
                      cluster. Minimum: 3.'
                    format: int64
                    type: integer
                required:
                - memoryBytes
                - vcpuCount
                type: object
              gcpConfig:
                description: Required. Configuration properties for a Kafka cluster
                  deployed to Google Cloud Platform.
                properties:
                  accessConfig:
                    description: Required. Access configuration for the Kafka cluster.
                    properties:
                      networkConfigs:
                        description: Required. Virtual Private Cloud (VPC) networks
                          that must be granted direct access to the Kafka cluster.
                          Minimum of 1 network is required. Maximum 10 networks can
                          be specified.
                        items:
                          properties:
                            subnetworkRef:
                              description: |-
                                Required. Reference to the VPC subnet in which to create Private Service Connect
                                 (PSC) endpoints for the Kafka brokers and bootstrap address.

                                 The subnet must be located in the same region as the Kafka cluster. The
                                 project may differ. Multiple subnets from the same parent network must not
                                 be specified.

                                 The CIDR range of the subnet must be within the IPv4 address ranges for
                                 private networks, as specified in RFC 1918.
                              oneOf:
                              - not:
                                  required:
                                  - external
                                required:
                                - name
                              - not:
                                  anyOf:
                                  - required:
                                    - name
                                  - required:
                                    - namespace
                                required:
                                - external
                              properties:
                                external:
                                  description: The ComputeSubnetwork selflink of form
                                    "projects/{{project}}/regions/{{region}}/subnetworks/{{name}}",
                                    when not managed by Config Connector.
                                  type: string
                                name:
                                  description: The `name` field of a `ComputeSubnetwork`
                                    resource.
                                  type: string
                                namespace:
                                  description: The `namespace` field of a `ComputeSubnetwork`
                                    resource.
                                  type: string
                              type: object
                          required:
                          - subnetworkRef
                          type: object
                        type: array
                    required:
                    - networkConfigs
                    type: object
                  kmsKeyRef:
                    description: Optional. Immutable. The Cloud KMS Key name to use
                      for encryption. The key must be located in the same region as
                      the cluster and cannot be changed.
                    oneOf:
                    - not:
                        required:
                        - external
                      required:
                      - name
                    - not:
                        anyOf:
                        - required:
                          - name
                        - required:
                          - namespace
                      required:
                      - external
                    properties:
                      external:
                        description: A reference to an externally managed KMSCryptoKey.
                          Should be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`.
                        type: string
                      name:
                        description: The `name` of a `KMSCryptoKey` resource.
                        type: string
                      namespace:
                        description: The `namespace` of a `KMSCryptoKey` resource.
                        type: string
                    type: object
                required:
                - accessConfig
                type: object
              labels:
                additionalProperties:
                  type: string
                description: Optional. Labels as key value pairs.
                type: object
              location:
                type: string
              projectRef:
                description: The Project that this resource belongs to.
                oneOf:
                - not:
                    required:
                    - external
                  required:
                  - name
                - not:
                    anyOf:
                    - required:
                      - name
                    - required:
                      - namespace
                  required:
                  - external
                properties:
                  external:
                    description: The `projectID` field of a project, when not managed
                      by Config Connector.
                    type: string
                  kind:
                    description: The kind of the Project resource; optional but must
                      be `Project` if provided.
                    type: string
                  name:
                    description: The `name` field of a `Project` resource.
                    type: string
                  namespace:
                    description: The `namespace` field of a `Project` resource.
                    type: string
                type: object
              rebalanceConfig:
                description: Optional. Rebalance configuration for the Kafka cluster.
                properties:
                  mode:
                    description: Optional. The rebalance behavior for the cluster.
                      When not specified, defaults to `NO_REBALANCE`.
                    type: string
                type: object
              resourceID:
                description: The GCP resource identifier. If not given, the metadata.name
                  will be used.
                type: string
            required:
            - capacityConfig
            - gcpConfig
            - location
            - projectRef
            type: object
          status:
            description: ManagedKafkaClusterStatus defines the config connector machine
              state of ManagedKafkaCluster
            properties:
              conditions:
                description: Conditions represent the latest available observations
                  of the object's current state.
                items:
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      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, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                type: array
              externalRef:
                description: A unique specifier for the ManagedKafkaCluster resource
                  in GCP.
                type: string
              observedGeneration:
                description: ObservedGeneration is the generation of the resource
                  that was most recently observed by the Config Connector controller.
                  If this is equal to metadata.generation, then that means that the
                  current reported status reflects the most recent desired state of
                  the resource.
                format: int64
                type: integer
              observedState:
                description: ObservedState is the state of the resource as most recently
                  observed in GCP.
                properties:
                  createTime:
                    description: Output only. The time when the cluster was created.
                    type: string
                  state:
                    description: Output only. The current state of the cluster.
                    type: string
                  updateTime:
                    description: Output only. The time when the cluster was last updated.
                    type: string
                type: object
            type: object
        required:
        - spec
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: When 'True', the most recent reconcile of the resource succeeded
      jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - description: The reason for the value in 'Ready'
      jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Status
      type: string
    - description: The last transition time for the value in 'Status'
      jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
      name: Status Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: ManagedKafkaCluster is the Schema for the ManagedKafkaCluster
          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: ManagedKafkaClusterSpec defines the desired state of ManagedKafkaCluster
            properties:
              capacityConfig:
                description: Required. Capacity configuration for the Kafka cluster.
                properties:
                  memoryBytes:
                    description: 'Required. The memory to provision for the cluster
                      in bytes. The CPU:memory ratio (vCPU:GiB) must be between 1:1
                      and 1:8. Minimum: 3221225472 (3 GiB).'
                    format: int64
                    type: integer
                  vcpuCount:
                    description: 'Required. The number of vCPUs to provision for the
                      cluster. Minimum: 3.'
                    format: int64
                    type: integer
                required:
                - memoryBytes
                - vcpuCount
                type: object
              gcpConfig:
                description: Required. Configuration properties for a Kafka cluster
                  deployed to Google Cloud Platform.
                properties:
                  accessConfig:
                    description: Required. Access configuration for the Kafka cluster.
                    properties:
                      networkConfigs:
                        description: Required. Virtual Private Cloud (VPC) networks
                          that must be granted direct access to the Kafka cluster.
                          Minimum of 1 network is required. Maximum 10 networks can
                          be specified.
                        items:
                          properties:
                            subnetworkRef:
                              description: |-
                                Required. Reference to the VPC subnet in which to create Private Service Connect
                                 (PSC) endpoints for the Kafka brokers and bootstrap address.

                                 The subnet must be located in the same region as the Kafka cluster. The
                                 project may differ. Multiple subnets from the same parent network must not
                                 be specified.

                                 The CIDR range of the subnet must be within the IPv4 address ranges for
                                 private networks, as specified in RFC 1918.
                              oneOf:
                              - not:
                                  required:
                                  - external
                                required:
                                - name
                              - not:
                                  anyOf:
                                  - required:
                                    - name
                                  - required:
                                    - namespace
                                required:
                                - external
                              properties:
                                external:
                                  description: The ComputeSubnetwork selflink of form
                                    "projects/{{project}}/regions/{{region}}/subnetworks/{{name}}",
                                    when not managed by Config Connector.
                                  type: string
                                name:
                                  description: The `name` field of a `ComputeSubnetwork`
                                    resource.
                                  type: string
                                namespace:
                                  description: The `namespace` field of a `ComputeSubnetwork`
                                    resource.
                                  type: string
                              type: object
                          required:
                          - subnetworkRef
                          type: object
                        type: array
                    required:
                    - networkConfigs
                    type: object
                  kmsKeyRef:
                    description: Optional. Immutable. The Cloud KMS Key name to use
                      for encryption. The key must be located in the same region as
                      the cluster and cannot be changed.
                    oneOf:
                    - not:
                        required:
                        - external
                      required:
                      - name
                    - not:
                        anyOf:
                        - required:
                          - name
                        - required:
                          - namespace
                      required:
                      - external
                    properties:
                      external:
                        description: A reference to an externally managed KMSCryptoKey.
                          Should be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`.
                        type: string
                      name:
                        description: The `name` of a `KMSCryptoKey` resource.
                        type: string
                      namespace:
                        description: The `namespace` of a `KMSCryptoKey` resource.
                        type: string
                    type: object
                required:
                - accessConfig
                type: object
              labels:
                additionalProperties:
                  type: string
                description: Optional. Labels as key value pairs.
                type: object
              location:
                type: string
              projectRef:
                description: The Project that this resource belongs to.
                oneOf:
                - not:
                    required:
                    - external
                  required:
                  - name
                - not:
                    anyOf:
                    - required:
                      - name
                    - required:
                      - namespace
                  required:
                  - external
                properties:
                  external:
                    description: The `projectID` field of a project, when not managed
                      by Config Connector.
                    type: string
                  kind:
                    description: The kind of the Project resource; optional but must
                      be `Project` if provided.
                    type: string
                  name:
                    description: The `name` field of a `Project` resource.
                    type: string
                  namespace:
                    description: The `namespace` field of a `Project` resource.
                    type: string
                type: object
              rebalanceConfig:
                description: Optional. Rebalance configuration for the Kafka cluster.
                properties:
                  mode:
                    description: Optional. The rebalance behavior for the cluster.
                      When not specified, defaults to `NO_REBALANCE`.
                    type: string
                type: object
              resourceID:
                description: The GCP resource identifier. If not given, the metadata.name
                  will be used.
                type: string
            required:
            - capacityConfig
            - gcpConfig
            - location
            - projectRef
            type: object
          status:
            description: ManagedKafkaClusterStatus defines the config connector machine
              state of ManagedKafkaCluster
            properties:
              conditions:
                description: Conditions represent the latest available observations
                  of the object's current state.
                items:
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      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, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                type: array
              externalRef:
                description: A unique specifier for the ManagedKafkaCluster resource
                  in GCP.
                type: string
              observedGeneration:
                description: ObservedGeneration is the generation of the resource
                  that was most recently observed by the Config Connector controller.
                  If this is equal to metadata.generation, then that means that the
                  current reported status reflects the most recent desired state of
                  the resource.
                format: int64
                type: integer
              observedState:
                description: ObservedState is the state of the resource as most recently
                  observed in GCP.
                properties:
                  createTime:
                    description: Output only. The time when the cluster was created.
                    type: string
                  state:
                    description: Output only. The current state of the cluster.
                    type: string
                  updateTime:
                    description: Output only. The time when the cluster was last updated.
                    type: string
                type: object
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
