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: notebookinstances.notebooks.cnrm.cloud.google.com
spec:
  group: notebooks.cnrm.cloud.google.com
  names:
    categories:
    - gcp
    kind: NotebookInstance
    listKind: NotebookInstanceList
    plural: notebookinstances
    shortNames:
    - gcpnotebookinstance
    - gcpnotebookinstances
    singular: notebookinstance
  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: NotebookInstance is the Schema for the NotebookInstance 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: NotebookInstanceSpec defines the desired state of NotebookInstance
            properties:
              acceleratorConfig:
                description: The hardware accelerator used on this instance. If you
                  use accelerators, make sure that your configuration has [enough
                  vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list).
                properties:
                  coreCount:
                    description: Count of cores of this accelerator.
                    format: int64
                    type: integer
                  type:
                    description: Type of this accelerator.
                    type: string
                type: object
              bootDiskSizeGB:
                description: Input only. The size of the boot disk in GB attached
                  to this instance, up to a maximum of 64000 GB (64 TB). The minimum
                  recommended value is 100 GB. If not specified, this defaults to
                  100.
                format: int64
                type: integer
              bootDiskType:
                description: Input only. The type of the boot disk attached to this
                  instance, defaults to standard persistent disk (`PD_STANDARD`).
                type: string
              canIPForward:
                description: Optional. Flag to enable ip forwarding or not, default
                  false/off. https://cloud.google.com/vpc/docs/using-routes#canipforward
                type: boolean
              containerImage:
                description: Use a container image to start the notebook instance.
                properties:
                  repository:
                    description: 'Required. The path to the container image repository.
                      For example: `gcr.io/{project_id}/{image_name}`'
                    type: string
                  tag:
                    description: The tag of the container image. If not specified,
                      this defaults to the latest tag.
                    type: string
                type: object
              customGpuDriverPath:
                description: Specify a custom Cloud Storage path where the GPU driver
                  is stored. If not specified, we'll automatically choose from official
                  GPU drivers.
                type: string
              dataDiskSizeGB:
                description: Input only. The size of the data disk in GB attached
                  to this instance, up to a maximum of 64000 GB (64 TB). You can choose
                  the size of the data disk based on how big your notebooks and data
                  are. If not specified, this defaults to 100.
                format: int64
                type: integer
              dataDiskType:
                description: Input only. The type of the data disk attached to this
                  instance, defaults to standard persistent disk (`PD_STANDARD`).
                type: string
              diskEncryption:
                description: Input only. Disk encryption method used on the boot and
                  data disks, defaults to GMEK.
                type: string
              installGpuDriver:
                description: Whether the end user authorizes Google Cloud to install
                  GPU driver on this instance. If this field is empty or set to false,
                  the GPU driver won't be installed. Only applicable to instances
                  with GPUs.
                type: boolean
              instanceOwners:
                description: |-
                  Input only. The owner of this instance after creation. Format: `alias@example.com`

                   Currently supports one owner only. If not specified, all of the service
                   account users of your VM instance's service account can use
                   the instance.
                items:
                  type: string
                type: array
              kmsKeyRef:
                description: Input only. The KMS key used to encrypt the disks, only
                  applicable if disk_encryption is CMEK. Learn more about [using your
                  own encryption keys](/kms/docs/quickstart).
                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
              labels:
                additionalProperties:
                  type: string
                description: Labels to apply to this instance. These can be later
                  modified by the setLabels method.
                type: object
              machineType:
                description: Required. The [Compute Engine machine type](https://cloud.google.com/compute/docs/machine-types)
                  of this instance.
                type: string
              metadata:
                additionalProperties:
                  type: string
                description: Custom metadata to apply to this instance.
                type: object
              networkRef:
                description: The name of the VPC that this instance is in.
                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
              nicType:
                description: Optional. The type of vNIC to be used on this interface.
                  This may be gVNIC or VirtioNet.
                type: string
              noProxyAccess:
                description: If true, the notebook instance will not register with
                  the proxy.
                type: boolean
              noPublicIP:
                description: If true, no public IP will be assigned to this instance.
                type: boolean
              noRemoveDataDisk:
                description: Input only. If true, the data disk will not be auto deleted
                  when deleting the instance.
                type: boolean
              postStartupScript:
                description: Path to a Bash script that automatically runs after a
                  notebook instance fully boots up. The path must be a URL or Cloud
                  Storage path (`gs://path-to-file/file-name`).
                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
              reservationAffinity:
                description: Optional. The optional reservation affinity. Setting
                  this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)
                  to this notebook instance.
                properties:
                  consumeReservationType:
                    description: Optional. Type of reservation to consume
                    type: string
                  key:
                    description: Optional. Corresponds to the label key of reservation
                      resource.
                    type: string
                  values:
                    description: Optional. Corresponds to the label values of reservation
                      resource.
                    items:
                      type: string
                    type: array
                type: object
              resourceID:
                description: The NotebookInstance name. If not given, the metadata.name
                  will be used.
                type: string
              serviceAccountRef:
                description: |-
                  The service account on this instance, giving access to other Google
                   Cloud services.
                   You can use any service account within the same project, but you
                   must have the service account user permission to use the instance.

                   If not specified, the [Compute Engine default service
                   account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account)
                   is used.
                oneOf:
                - not:
                    required:
                    - external
                  required:
                  - name
                - not:
                    anyOf:
                    - required:
                      - name
                    - required:
                      - namespace
                  required:
                  - external
                properties:
                  external:
                    description: The `email` field of an `IAMServiceAccount` resource.
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                type: object
              serviceAccountScopes:
                description: |-
                  Optional. The URIs of service account scopes to be included in
                   Compute Engine instances.

                   If not specified, the following
                   [scopes](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam)
                   are defined:
                    - https://www.googleapis.com/auth/cloud-platform
                    - https://www.googleapis.com/auth/userinfo.email
                   If not using default scopes, you need at least:
                      https://www.googleapis.com/auth/compute
                items:
                  type: string
                type: array
              shieldedInstanceConfig:
                description: Optional. Shielded VM configuration. [Images using supported
                  Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm).
                properties:
                  enableIntegrityMonitoring:
                    description: |-
                      Defines whether the instance has integrity monitoring enabled.

                       Enables monitoring and attestation of the boot integrity of the instance.
                       The attestation is performed against the integrity policy baseline. This
                       baseline is initially derived from the implicitly trusted boot image when
                       the instance is created. Enabled by default.
                    type: boolean
                  enableSecureBoot:
                    description: |-
                      Defines whether the instance has Secure Boot enabled.

                       Secure Boot helps ensure that the system only runs authentic software by
                       verifying the digital signature of all boot components, and halting the
                       boot process if signature verification fails. Disabled by default.
                    type: boolean
                  enableVTPM:
                    description: Defines whether the instance has the vTPM enabled.
                      Enabled by default.
                    type: boolean
                type: object
              subnetRef:
                description: The name of the subnet that this instance is in.
                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
              tags:
                description: Optional. The Compute Engine tags to add to runtime (see
                  [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).
                items:
                  type: string
                type: array
              upgradeHistory:
                description: The upgrade history of this instance.
                items:
                  properties:
                    action:
                      description: Action. Rolloback or Upgrade.
                      type: string
                    containerImage:
                      description: The container image before this instance upgrade.
                      type: string
                    createTime:
                      description: The time that this instance upgrade history entry
                        is created.
                      type: string
                    framework:
                      description: The framework of this notebook instance.
                      type: string
                    snapshot:
                      description: The snapshot of the boot disk of this notebook
                        instance before upgrade.
                      type: string
                    state:
                      description: The state of this instance upgrade history entry.
                      type: string
                    targetImage:
                      description: 'Target VM Image. Format: `ainotebooks-vm/project/image-name/name`.'
                      type: string
                    targetVersion:
                      description: Target VM Version, like m63.
                      type: string
                    version:
                      description: The version of the notebook instance before this
                        upgrade.
                      type: string
                    vmImage:
                      description: The VM image before this instance upgrade.
                      type: string
                  type: object
                type: array
              vmImage:
                description: Use a Compute Engine VM image to start the notebook instance.
                properties:
                  imageFamily:
                    description: Use this VM image family to find the image; the newest
                      image in this family will be used.
                    type: string
                  imageName:
                    description: Use VM image name to find the image.
                    type: string
                  project:
                    description: 'Required. The name of the Google Cloud project that
                      this VM image belongs to. Format: `{project_id}`'
                    type: string
                type: object
              zone:
                description: Immutable. The location where the notebook instance should
                  reside.
                type: string
            required:
            - projectRef
            - zone
            type: object
          status:
            description: NotebookInstanceStatus defines the config connector machine
              state of NotebookInstance
            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 NotebookInstance 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. Instance creation time.
                    type: string
                  creator:
                    description: Output only. Email address of entity that sent original
                      CreateInstance request.
                    type: string
                  disks:
                    description: Output only. Attached disks to notebook instance.
                    items:
                      properties:
                        autoDelete:
                          description: Indicates whether the disk will be auto-deleted
                            when the instance is deleted (but not when the disk is
                            detached from the instance).
                          type: boolean
                        boot:
                          description: Indicates that this is a boot disk. The virtual
                            machine will use the first partition of the disk for its
                            root filesystem.
                          type: boolean
                        deviceName:
                          description: |-
                            Indicates a unique device name of your choice that is reflected into the
                             `/dev/disk/by-id/google-*` tree of a Linux operating system running
                             within the instance. This name can be used to reference the device for
                             mounting, resizing, and so on, from within the instance.

                             If not specified, the server chooses a default device name to apply to
                             this disk, in the form persistent-disk-x, where x is a number assigned by
                             Google Compute Engine.This field is only applicable for persistent disks.
                          type: string
                        diskSizeGB:
                          description: Indicates the size of the disk in base-2 GB.
                          format: int64
                          type: integer
                        guestOSFeatures:
                          description: Indicates a list of features to enable on the
                            guest operating system. Applicable only for bootable images.
                            Read  Enabling guest operating system features to see
                            a list of available options.
                          items:
                            properties:
                              type:
                                description: |-
                                  The ID of a supported feature. Read  Enabling guest operating system
                                   features to see a list of available options.
                                   Valid values:

                                   * `FEATURE_TYPE_UNSPECIFIED`
                                   * `MULTI_IP_SUBNET`
                                   * `SECURE_BOOT`
                                   * `UEFI_COMPATIBLE`
                                   * `VIRTIO_SCSI_MULTIQUEUE`
                                   * `WINDOWS`
                                type: string
                            type: object
                          type: array
                        index:
                          description: A zero-based index to this disk, where 0 is
                            reserved for the boot disk. If you have many disks attached
                            to an instance, each disk would have a unique index number.
                          format: int64
                          type: integer
                        interface:
                          description: |-
                            Indicates the disk interface to use for attaching this disk, which is
                             either SCSI or NVME. The default is SCSI. Persistent disks must always
                             use SCSI and the request will fail if you attempt to attach a persistent
                             disk in any other format than SCSI. Local SSDs can use either NVME or
                             SCSI. For performance characteristics of SCSI over NVMe, see Local SSD
                             performance.
                             Valid values:

                             * `NVME`
                             * `SCSI`
                          type: string
                        kind:
                          description: Type of the resource. Always compute#attachedDisk
                            for attached disks.
                          type: string
                        licenses:
                          description: A list of publicly visible licenses. Reserved
                            for Google's use. A License represents billing and aggregate
                            usage data for public and marketplace images.
                          items:
                            type: string
                          type: array
                        mode:
                          description: |-
                            The mode in which to attach this disk, either `READ_WRITE` or
                             `READ_ONLY`. If not specified, the default is to attach the disk in
                             `READ_WRITE` mode. Valid values:

                             * `READ_ONLY`
                             * `READ_WRITE`
                          type: string
                        source:
                          description: Indicates a valid partial or full URL to an
                            existing Persistent Disk resource.
                          type: string
                        type:
                          description: |-
                            Indicates the type of the disk, either `SCRATCH` or `PERSISTENT`.
                             Valid values:

                             * `PERSISTENT`
                             * `SCRATCH`
                          type: string
                      type: object
                    type: array
                  name:
                    description: 'Output only. The name of this notebook instance.
                      Format: `projects/{project_id}/locations/{location}/instances/{instance_id}`'
                    type: string
                  proxyURI:
                    description: Output only. The proxy endpoint that is used to access
                      the Jupyter notebook.
                    type: string
                  state:
                    description: Output only. The state of this instance.
                    type: string
                  updateTime:
                    description: Output only. Instance update time.
                    type: string
                type: object
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
