# 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/stability-level: stable
    cnrm.cloud.google.com/system: "true"
    cnrm.cloud.google.com/tf2crd: "true"
  name: computereservations.compute.cnrm.cloud.google.com
spec:
  group: compute.cnrm.cloud.google.com
  names:
    categories:
    - gcp
    kind: ComputeReservation
    plural: computereservations
    shortNames:
    - gcpcomputereservation
    - gcpcomputereservations
    singular: computereservation
  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: v1beta1
    schema:
      openAPIV3Schema:
        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/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/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            properties:
              description:
                description: Immutable. An optional description of this resource.
                type: string
              resourceID:
                description: Immutable. Optional. The name of the resource. Used for
                  creation and acquisition. When unset, the value of `metadata.name`
                  is used as the default.
                type: string
              specificReservation:
                description: Reservation for instances with specific machine shapes.
                properties:
                  count:
                    description: The number of resources that are allocated.
                    type: integer
                  inUseCount:
                    description: How many instances are in use.
                    type: integer
                  instanceProperties:
                    description: Immutable. The instance properties for the reservation.
                    properties:
                      guestAccelerators:
                        description: Immutable. Guest accelerator type and count.
                        items:
                          properties:
                            acceleratorCount:
                              description: |-
                                Immutable. The number of the guest accelerator cards exposed to
                                this instance.
                              type: integer
                            acceleratorType:
                              description: |-
                                Immutable. The full or partial URL of the accelerator type to
                                attach to this instance. For example:
                                'projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100'

                                If you are creating an instance template, specify only the accelerator name.
                              type: string
                          required:
                          - acceleratorCount
                          - acceleratorType
                          type: object
                        type: array
                      localSsds:
                        description: |-
                          Immutable. The amount of local ssd to reserve with each instance. This
                          reserves disks of type 'local-ssd'.
                        items:
                          properties:
                            diskSizeGb:
                              description: Immutable. The size of the disk in base-2
                                GB.
                              type: integer
                            interface:
                              description: 'Immutable. The disk interface to use for
                                attaching this disk. Default value: "SCSI" Possible
                                values: ["SCSI", "NVME"].'
                              type: string
                          required:
                          - diskSizeGb
                          type: object
                        type: array
                      machineType:
                        description: Immutable. The name of the machine type to reserve.
                        type: string
                      minCpuPlatform:
                        description: |-
                          Immutable. The minimum CPU platform for the reservation. For example,
                          '"Intel Skylake"'. See
                          the CPU platform availability reference](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform#availablezones)
                          for information on available CPU platforms.
                        type: string
                    required:
                    - machineType
                    type: object
                required:
                - count
                - instanceProperties
                type: object
              specificReservationRequired:
                description: |-
                  Immutable. When set to true, only VMs that target this reservation by name can
                  consume this reservation. Otherwise, it can be consumed by VMs with
                  affinity for any reservation. Defaults to false.
                type: boolean
              zone:
                description: Immutable. The zone where the reservation is made.
                type: string
            required:
            - specificReservation
            - zone
            type: object
          status:
            properties:
              commitment:
                description: |-
                  Full or partial URL to a parent commitment. This field displays for
                  reservations that are tied to a commitment.
                type: string
              conditions:
                description: Conditions represent the latest available observation
                  of the resource'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
              creationTimestamp:
                description: Creation timestamp in RFC3339 text format.
                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.
                type: integer
              selfLink:
                type: string
              status:
                description: The status of the reservation.
                type: string
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
