# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cnrm.cloud.google.com/version: 1.128.0
  creationTimestamp: null
  labels:
    cnrm.cloud.google.com/managed-by-kcc: "true"
    cnrm.cloud.google.com/system: "true"
  name: memorystoreinstances.memorystore.cnrm.cloud.google.com
spec:
  group: memorystore.cnrm.cloud.google.com
  names:
    categories:
    - gcp
    kind: MemorystoreInstance
    listKind: MemorystoreInstanceList
    plural: memorystoreinstances
    shortNames:
    - gcpmemorystoreinstance
    - gcpmemorystoreinstances
    singular: memorystoreinstance
  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: MemorystoreInstance is the Schema for the MemorystoreInstance
          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: MemorystoreInstanceSpec defines the desired state of MemorystoreInstance
            properties:
              authorizationMode:
                description: Optional. Immutable. Authorization mode of the instance.
                type: string
              deletionProtectionEnabled:
                description: Optional. If set to true deletion of the instance will
                  fail.
                type: boolean
              engineConfigs:
                additionalProperties:
                  type: string
                description: Optional. User-provided engine configurations for the
                  instance.
                type: object
              engineVersion:
                description: Optional. Immutable. Engine version of the instance.
                type: string
              location:
                description: Immutable.
                type: string
                x-kubernetes-validations:
                - message: Location field is immutable
                  rule: self == oldSelf
              nodeType:
                description: Optional. Immutable. Machine type for individual nodes
                  of the instance.
                type: string
              persistenceConfig:
                description: Optional. Persistence configuration of the instance.
                properties:
                  aofConfig:
                    description: Optional. AOF configuration. This field will be ignored
                      if mode is not AOF.
                    properties:
                      appendFsync:
                        description: Optional. The fsync mode.
                        type: string
                    type: object
                  mode:
                    description: Optional. Current persistence mode.
                    type: string
                  rdbConfig:
                    description: Optional. RDB configuration. This field will be ignored
                      if mode is not RDB.
                    properties:
                      rdbSnapshotPeriod:
                        description: Optional. Period between RDB snapshots.
                        type: string
                      rdbSnapshotStartTime:
                        description: Optional. Time that the first snapshot was/will
                          be attempted, and to which future snapshots will be aligned.
                          If not provided, the current time will be used.
                        type: string
                    type: object
                type: object
              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
              pscAutoConnections:
                description: Required. Immutable. User inputs for the auto-created
                  PSC connections.
                items:
                  description: kcc specific struct to separate input and output fields
                    in google.cloud.memorystore.v1beta.PscAutoConnection
                  properties:
                    networkRef:
                      description: Required. The network where the PSC endpoints are
                        created, in the form of projects/{project_id}/global/networks/{network_id}.
                      oneOf:
                      - not:
                          required:
                          - external
                        required:
                        - name
                      - not:
                          anyOf:
                          - required:
                            - name
                          - required:
                            - namespace
                        required:
                        - external
                      properties:
                        external:
                          description: A reference to an externally managed Compute
                            Network resource. Should be in the format `projects/{{projectID}}/global/networks/{{network}}`.
                          type: string
                        name:
                          description: The `name` field of a `ComputeNetwork` resource.
                          type: string
                        namespace:
                          description: The `namespace` field of a `ComputeNetwork`
                            resource.
                          type: string
                      type: object
                    projectRef:
                      description: Required. The consumer project_id where PSC connections
                        are established. This should be the same project_id that the
                        cluster is being created in.
                      oneOf:
                      - not:
                          required:
                          - external
                        required:
                        - name
                        - kind
                      - not:
                          anyOf:
                          - required:
                            - name
                          - required:
                            - namespace
                          - required:
                            - kind
                        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
                  required:
                  - networkRef
                  - projectRef
                  type: object
                type: array
              replicaCount:
                description: Optional. Number of replica nodes per shard. If omitted
                  the default is 0 replicas.
                format: int32
                type: integer
              resourceID:
                description: Optional. Immutable. The MemorystoreInstance name. If
                  not given, the metadata.name will be used.
                type: string
              shardCount:
                description: Optional. Number of shards for the instance.
                format: int32
                type: integer
              transitEncryptionMode:
                description: Optional. Immutable. In-transit encryption mode of the
                  instance.
                type: string
              zoneDistributionConfig:
                description: Optional. Immutable. Zone distribution configuration
                  of the instance for node allocatiteon.
                properties:
                  mode:
                    description: Optional. Current zone distribution mode. Defaults
                      to MULTI_ZONE.
                    type: string
                  zone:
                    description: Optional. Defines zone where all resources will be
                      allocated with SINGLE_ZONE mode. Ignored for MULTI_ZONE mode.
                    type: string
                type: object
            required:
            - location
            - projectRef
            type: object
          status:
            description: MemorystoreInstanceStatus defines the config connector machine
              state of MemorystoreInstance
            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 MemorystoreInstance 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:
                  authorizationMode:
                    description: Optional. Immutable. Authorization mode of the instance.
                    type: string
                  createTime:
                    description: Output only. Creation timestamp of the instance.
                    type: string
                  discoveryEndpoints:
                    description: Output only. Endpoints clients can connect to the
                      instance through. Currently only one discovery endpoint is supported.
                    items:
                      properties:
                        address:
                          description: Output only. IP address of the exposed endpoint
                            clients connect to.
                          type: string
                        network:
                          description: Output only. The network where the IP address
                            of the discovery endpoint will be reserved, in the form
                            of projects/{network_project}/global/networks/{network_id}.
                          type: string
                        port:
                          description: Output only. The port number of the exposed
                            endpoint.
                          format: int32
                          type: integer
                      type: object
                    type: array
                  engineVersion:
                    description: Optional. Immutable. Engine version of the instance.
                      https://cloud.google.com/memorystore/docs/valkey/supported-versions
                    type: string
                  name:
                    description: 'Identifier. Unique name of the instance. Format:
                      projects/{project}/locations/{location}/instances/{instance}'
                    type: string
                  nodeConfig:
                    description: Output only. Configuration of individual nodes of
                      the instance.
                    properties:
                      sizeGb:
                        description: Output only. Memory size in GB of the node.
                        type: number
                    type: object
                  nodeType:
                    description: Optional. Immutable. Machine type for individual
                      nodes of the instance.
                    type: string
                  pscAutoConnections:
                    description: Output only. Resource details of the auto-created
                      PSC connections.
                    items:
                      properties:
                        connectionType:
                          description: Output only. Type of the PSC connection.
                          type: string
                        forwardingRule:
                          description: 'Output only. The URI of the consumer side
                            forwarding rule. Format: projects/{project}/regions/{region}/forwardingRules/{forwarding_rule}'
                          type: string
                        ipAddress:
                          description: Output only. The IP allocated on the consumer
                            network for the PSC forwarding rule.
                          type: string
                        network:
                          description: Required. The network where the PSC endpoints
                            are created, in the form of projects/{project_id}/global/networks/{network_id}.
                          type: string
                        port:
                          description: Optional. Output only. port will only be set
                            for Primary/Reader or Discovery endpoint.
                          format: int32
                          type: integer
                        projectID:
                          description: Required. The consumer project_id where PSC
                            connections are established. This should be the same project_id
                            that the cluster is being created in.
                          type: string
                        pscConnectionID:
                          description: Output only. The PSC connection id of the forwarding
                            rule connected to the service attachment.
                          type: string
                        pscConnectionStatus:
                          description: 'Output only. The status of the PSC connection:
                            whether a connection exists and ACTIVE or it no longer
                            exists. Please note that this value is updated periodically.
                            Please use Private Service Connect APIs for the latest
                            status.'
                          type: string
                        serviceAttachment:
                          description: Output only. The service attachment which is
                            the target of the PSC connection, in the form of projects/{project-id}/regions/{region}/serviceAttachments/{service-attachment-id}.
                          type: string
                      type: object
                    type: array
                  state:
                    description: Output only. Current state of the instance.
                    type: string
                  stateInfo:
                    description: Output only. Additional information about the state
                      of the instance.
                    properties:
                      updateInfo:
                        description: Output only. Describes ongoing update when instance
                          state is UPDATING.
                        properties:
                          targetReplicaCount:
                            description: Output only. Target number of replica nodes
                              per shard for the instance.
                            format: int32
                            type: integer
                          targetShardCount:
                            description: Output only. Target number of shards for
                              the instance.
                            format: int32
                            type: integer
                        type: object
                    type: object
                  transitEncryptionMode:
                    description: Optional. Immutable. In-transit encryption mode of
                      the instance.
                    type: string
                  uid:
                    description: Output only. System assigned, unique identifier for
                      the instance.
                    type: string
                  updateTime:
                    description: Output only. Latest update timestamp of the instance.
                    type: string
                  zoneDistributionConfig:
                    description: Optional. Immutable. Zone distribution configuration
                      of the instance for node allocation.
                    properties:
                      mode:
                        description: Optional. Current zone distribution mode. Defaults
                          to MULTI_ZONE.
                        type: string
                      zone:
                        description: Optional. Defines zone where all resources will
                          be allocated with SINGLE_ZONE mode. Ignored for MULTI_ZONE
                          mode.
                        type: string
                    type: object
                type: object
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
