1// Copyright 2023 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.cloud.notebooks.v1; 18 19import "google/api/field_behavior.proto"; 20import "google/api/resource.proto"; 21import "google/cloud/notebooks/v1/environment.proto"; 22import "google/protobuf/timestamp.proto"; 23 24option csharp_namespace = "Google.Cloud.Notebooks.V1"; 25option go_package = "cloud.google.com/go/notebooks/apiv1/notebookspb;notebookspb"; 26option java_multiple_files = true; 27option java_outer_classname = "RuntimeProto"; 28option java_package = "com.google.cloud.notebooks.v1"; 29option php_namespace = "Google\\Cloud\\Notebooks\\V1"; 30option ruby_package = "Google::Cloud::Notebooks::V1"; 31 32// The definition of a Runtime for a managed notebook instance. 33message Runtime { 34 option (google.api.resource) = { 35 type: "notebooks.googleapis.com/Runtime" 36 pattern: "projects/{project}/locations/{location}/runtimes/{runtime}" 37 }; 38 39 // The definition of the states of this runtime. 40 enum State { 41 // State is not specified. 42 STATE_UNSPECIFIED = 0; 43 44 // The compute layer is starting the runtime. It is not ready for use. 45 STARTING = 1; 46 47 // The compute layer is installing required frameworks and registering the 48 // runtime with notebook proxy. It cannot be used. 49 PROVISIONING = 2; 50 51 // The runtime is currently running. It is ready for use. 52 ACTIVE = 3; 53 54 // The control logic is stopping the runtime. It cannot be used. 55 STOPPING = 4; 56 57 // The runtime is stopped. It cannot be used. 58 STOPPED = 5; 59 60 // The runtime is being deleted. It cannot be used. 61 DELETING = 6; 62 63 // The runtime is upgrading. It cannot be used. 64 UPGRADING = 7; 65 66 // The runtime is being created and set up. It is not ready for use. 67 INITIALIZING = 8; 68 } 69 70 // The runtime substate. 71 enum HealthState { 72 // The runtime substate is unknown. 73 HEALTH_STATE_UNSPECIFIED = 0; 74 75 // The runtime is known to be in an healthy state 76 // (for example, critical daemons are running) 77 // Applies to ACTIVE state. 78 HEALTHY = 1; 79 80 // The runtime is known to be in an unhealthy state 81 // (for example, critical daemons are not running) 82 // Applies to ACTIVE state. 83 UNHEALTHY = 2; 84 85 // The runtime has not installed health monitoring agent. 86 // Applies to ACTIVE state. 87 AGENT_NOT_INSTALLED = 3; 88 89 // The runtime health monitoring agent is not running. 90 // Applies to ACTIVE state. 91 AGENT_NOT_RUNNING = 4; 92 } 93 94 // Output only. The resource name of the runtime. 95 // Format: 96 // `projects/{project}/locations/{location}/runtimes/{runtimeId}` 97 string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 98 99 // Type of the runtime; currently only supports Compute Engine VM. 100 oneof runtime_type { 101 // Use a Compute Engine VM image to start the managed notebook instance. 102 VirtualMachine virtual_machine = 2; 103 } 104 105 // Output only. Runtime state. 106 State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; 107 108 // Output only. Runtime health_state. 109 HealthState health_state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; 110 111 // The config settings for accessing runtime. 112 RuntimeAccessConfig access_config = 5; 113 114 // The config settings for software inside the runtime. 115 RuntimeSoftwareConfig software_config = 6; 116 117 // Output only. Contains Runtime daemon metrics such as Service status and JupyterLab 118 // stats. 119 RuntimeMetrics metrics = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; 120 121 // Output only. Runtime creation time. 122 google.protobuf.Timestamp create_time = 20 [(google.api.field_behavior) = OUTPUT_ONLY]; 123 124 // Output only. Runtime update time. 125 google.protobuf.Timestamp update_time = 21 [(google.api.field_behavior) = OUTPUT_ONLY]; 126} 127 128// Definition of the types of hardware accelerators that can be used. 129// Definition of the types of hardware accelerators that can be used. 130// See [Compute Engine 131// AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). 132// Examples: 133// 134// * `nvidia-tesla-k80` 135// * `nvidia-tesla-p100` 136// * `nvidia-tesla-v100` 137// * `nvidia-tesla-p4` 138// * `nvidia-tesla-t4` 139// * `nvidia-tesla-a100` 140message RuntimeAcceleratorConfig { 141 // Type of this accelerator. 142 enum AcceleratorType { 143 // Accelerator type is not specified. 144 ACCELERATOR_TYPE_UNSPECIFIED = 0; 145 146 // Accelerator type is Nvidia Tesla K80. 147 NVIDIA_TESLA_K80 = 1 [deprecated = true]; 148 149 // Accelerator type is Nvidia Tesla P100. 150 NVIDIA_TESLA_P100 = 2; 151 152 // Accelerator type is Nvidia Tesla V100. 153 NVIDIA_TESLA_V100 = 3; 154 155 // Accelerator type is Nvidia Tesla P4. 156 NVIDIA_TESLA_P4 = 4; 157 158 // Accelerator type is Nvidia Tesla T4. 159 NVIDIA_TESLA_T4 = 5; 160 161 // Accelerator type is Nvidia Tesla A100. 162 NVIDIA_TESLA_A100 = 6; 163 164 // (Coming soon) Accelerator type is TPU V2. 165 TPU_V2 = 7; 166 167 // (Coming soon) Accelerator type is TPU V3. 168 TPU_V3 = 8; 169 170 // Accelerator type is NVIDIA Tesla T4 Virtual Workstations. 171 NVIDIA_TESLA_T4_VWS = 9; 172 173 // Accelerator type is NVIDIA Tesla P100 Virtual Workstations. 174 NVIDIA_TESLA_P100_VWS = 10; 175 176 // Accelerator type is NVIDIA Tesla P4 Virtual Workstations. 177 NVIDIA_TESLA_P4_VWS = 11; 178 } 179 180 // Accelerator model. 181 AcceleratorType type = 1; 182 183 // Count of cores of this accelerator. 184 int64 core_count = 2; 185} 186 187// Represents a custom encryption key configuration that can be applied to 188// a resource. This will encrypt all disks in Virtual Machine. 189message EncryptionConfig { 190 // The Cloud KMS resource identifier of the customer-managed encryption key 191 // used to protect a resource, such as a disks. It has the following 192 // format: 193 // `projects/{PROJECT_ID}/locations/{REGION}/keyRings/{KEY_RING_NAME}/cryptoKeys/{KEY_NAME}` 194 string kms_key = 1; 195} 196 197// A Local attached disk resource. 198message LocalDisk { 199 // Optional. A list of features to enable on the guest operating system. 200 // Applicable only for bootable images. 201 // Read [Enabling guest operating system 202 // features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) 203 // to see a list of available options. 204 // Guest OS features for boot disk. 205 message RuntimeGuestOsFeature { 206 // The ID of a supported feature. Read [Enabling guest operating system 207 // features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) 208 // to see a list of available options. 209 // 210 // Valid values: 211 // 212 // * `FEATURE_TYPE_UNSPECIFIED` 213 // * `MULTI_IP_SUBNET` 214 // * `SECURE_BOOT` 215 // * `UEFI_COMPATIBLE` 216 // * `VIRTIO_SCSI_MULTIQUEUE` 217 // * `WINDOWS` 218 string type = 1; 219 } 220 221 // Optional. Output only. Specifies whether the disk will be auto-deleted when the 222 // instance is deleted (but not when the disk is detached from the instance). 223 bool auto_delete = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 224 225 // Optional. Output only. Indicates that this is a boot disk. The virtual machine 226 // will use the first partition of the disk for its root filesystem. 227 bool boot = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; 228 229 // Optional. Output only. Specifies a unique device name 230 // of your choice that is reflected into the 231 // `/dev/disk/by-id/google-*` tree of a Linux operating system running within 232 // the instance. This name can be used to reference the device for mounting, 233 // resizing, and so on, from within the instance. 234 // 235 // If not specified, the server chooses a default device name to apply to this 236 // disk, in the form persistent-disk-x, where x is a number assigned by Google 237 // Compute Engine. This field is only applicable for persistent disks. 238 string device_name = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; 239 240 // Output only. Indicates a list of features to enable on the guest operating system. 241 // Applicable only for bootable images. Read Enabling guest operating 242 // system features to see a list of available options. 243 repeated RuntimeGuestOsFeature guest_os_features = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; 244 245 // Output only. A zero-based index to this disk, where 0 is reserved for the 246 // boot disk. If you have many disks attached to an instance, each disk would 247 // have a unique index number. 248 int32 index = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; 249 250 // Input only. Specifies the parameters for a new disk that will be created 251 // alongside the new instance. Use initialization parameters to create boot 252 // disks or local SSDs attached to the new instance. 253 // 254 // This property is mutually exclusive with the source property; you can only 255 // define one or the other, but not both. 256 LocalDiskInitializeParams initialize_params = 6 [(google.api.field_behavior) = INPUT_ONLY]; 257 258 // Specifies the disk interface to use for attaching this disk, which is 259 // either SCSI or NVME. The default is SCSI. Persistent disks must always use 260 // SCSI and the request will fail if you attempt to attach a persistent disk 261 // in any other format than SCSI. Local SSDs can use either NVME or SCSI. For 262 // performance characteristics of SCSI over NVMe, see Local SSD performance. 263 // Valid values: 264 // 265 // * `NVME` 266 // * `SCSI` 267 string interface = 7; 268 269 // Output only. Type of the resource. Always compute#attachedDisk for attached disks. 270 string kind = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; 271 272 // Output only. Any valid publicly visible licenses. 273 repeated string licenses = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; 274 275 // The mode in which to attach this disk, either `READ_WRITE` or `READ_ONLY`. 276 // If not specified, the default is to attach the disk in `READ_WRITE` mode. 277 // Valid values: 278 // 279 // * `READ_ONLY` 280 // * `READ_WRITE` 281 string mode = 10; 282 283 // Specifies a valid partial or full URL to an existing Persistent Disk 284 // resource. 285 string source = 11; 286 287 // Specifies the type of the disk, either `SCRATCH` or `PERSISTENT`. If not 288 // specified, the default is `PERSISTENT`. 289 // Valid values: 290 // 291 // * `PERSISTENT` 292 // * `SCRATCH` 293 string type = 12; 294} 295 296// Input only. Specifies the parameters for a new disk that will be created 297// alongside the new instance. Use initialization parameters to create boot 298// disks or local SSDs attached to the new runtime. 299// This property is mutually exclusive with the source property; you can only 300// define one or the other, but not both. 301message LocalDiskInitializeParams { 302 // Possible disk types. 303 enum DiskType { 304 // Disk type not set. 305 DISK_TYPE_UNSPECIFIED = 0; 306 307 // Standard persistent disk type. 308 PD_STANDARD = 1; 309 310 // SSD persistent disk type. 311 PD_SSD = 2; 312 313 // Balanced persistent disk type. 314 PD_BALANCED = 3; 315 316 // Extreme persistent disk type. 317 PD_EXTREME = 4; 318 } 319 320 // Optional. Provide this property when creating the disk. 321 string description = 1 [(google.api.field_behavior) = OPTIONAL]; 322 323 // Optional. Specifies the disk name. If not specified, the default is to use the name 324 // of the instance. If the disk with the instance name exists already in the 325 // given zone/region, a new name will be automatically generated. 326 string disk_name = 2 [(google.api.field_behavior) = OPTIONAL]; 327 328 // Optional. Specifies the size of the disk in base-2 GB. If not specified, the disk 329 // will be the same size as the image (usually 10GB). If specified, the size 330 // must be equal to or larger than 10GB. Default 100 GB. 331 int64 disk_size_gb = 3 [(google.api.field_behavior) = OPTIONAL]; 332 333 // Input only. The type of the boot disk attached to this instance, defaults to 334 // standard persistent disk (`PD_STANDARD`). 335 DiskType disk_type = 4 [(google.api.field_behavior) = INPUT_ONLY]; 336 337 // Optional. Labels to apply to this disk. These can be later modified by the 338 // disks.setLabels method. This field is only applicable for persistent disks. 339 map<string, string> labels = 5 [(google.api.field_behavior) = OPTIONAL]; 340} 341 342// Specifies the login configuration for Runtime 343message RuntimeAccessConfig { 344 // Possible ways to access runtime. Authentication mode. 345 // Currently supports: Single User only. 346 enum RuntimeAccessType { 347 // Unspecified access. 348 RUNTIME_ACCESS_TYPE_UNSPECIFIED = 0; 349 350 // Single user login. 351 SINGLE_USER = 1; 352 353 // Service Account mode. 354 // In Service Account mode, Runtime creator will specify a SA that exists 355 // in the consumer project. Using Runtime Service Account field. 356 // Users accessing the Runtime need ActAs (Service Account User) permission. 357 SERVICE_ACCOUNT = 2; 358 } 359 360 // The type of access mode this instance. 361 RuntimeAccessType access_type = 1; 362 363 // The owner of this runtime after creation. Format: `[email protected]` 364 // Currently supports one owner only. 365 string runtime_owner = 2; 366 367 // Output only. The proxy endpoint that is used to access the runtime. 368 string proxy_uri = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; 369} 370 371// Specifies the selection and configuration of software inside the runtime. 372// The properties to set on runtime. 373// Properties keys are specified in `key:value` format, for example: 374// 375// * `idle_shutdown: true` 376// * `idle_shutdown_timeout: 180` 377// * `enable_health_monitoring: true` 378message RuntimeSoftwareConfig { 379 // Behavior for the post startup script. 380 enum PostStartupScriptBehavior { 381 // Unspecified post startup script behavior. Will run only once at creation. 382 POST_STARTUP_SCRIPT_BEHAVIOR_UNSPECIFIED = 0; 383 384 // Runs the post startup script provided during creation at every start. 385 RUN_EVERY_START = 1; 386 387 // Downloads and runs the provided post startup script at every start. 388 DOWNLOAD_AND_RUN_EVERY_START = 2; 389 } 390 391 // Cron expression in UTC timezone, used to schedule instance auto upgrade. 392 // Please follow the [cron format](https://en.wikipedia.org/wiki/Cron). 393 string notebook_upgrade_schedule = 1; 394 395 // Verifies core internal services are running. 396 // Default: True 397 optional bool enable_health_monitoring = 2; 398 399 // Runtime will automatically shutdown after idle_shutdown_time. 400 // Default: True 401 optional bool idle_shutdown = 3; 402 403 // Time in minutes to wait before shutting down runtime. Default: 180 minutes 404 int32 idle_shutdown_timeout = 4; 405 406 // Install Nvidia Driver automatically. 407 // Default: True 408 bool install_gpu_driver = 5; 409 410 // Specify a custom Cloud Storage path where the GPU driver is stored. 411 // If not specified, we'll automatically choose from official GPU drivers. 412 string custom_gpu_driver_path = 6; 413 414 // Path to a Bash script that automatically runs after a notebook instance 415 // fully boots up. The path must be a URL or 416 // Cloud Storage path (`gs://path-to-file/file-name`). 417 string post_startup_script = 7; 418 419 // Optional. Use a list of container images to use as Kernels in the notebook instance. 420 repeated ContainerImage kernels = 8 [(google.api.field_behavior) = OPTIONAL]; 421 422 // Output only. Bool indicating whether an newer image is available in an image family. 423 optional bool upgradeable = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; 424 425 // Behavior for the post startup script. 426 PostStartupScriptBehavior post_startup_script_behavior = 10; 427 428 // Bool indicating whether JupyterLab terminal will be available or not. 429 // Default: False 430 optional bool disable_terminal = 11; 431 432 // Output only. version of boot image such as M100, from release label of the image. 433 optional string version = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; 434} 435 436// Contains runtime daemon metrics, such as OS and kernels and sessions stats. 437message RuntimeMetrics { 438 // Output only. The system metrics. 439 map<string, string> system_metrics = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 440} 441 442// A set of Shielded Instance options. 443// Check [Images using supported Shielded VM 444// features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). 445// Not all combinations are valid. 446message RuntimeShieldedInstanceConfig { 447 // Defines whether the instance has Secure Boot enabled. 448 // 449 // Secure Boot helps ensure that the system only runs authentic software by 450 // verifying the digital signature of all boot components, and halting the 451 // boot process if signature verification fails. Disabled by default. 452 bool enable_secure_boot = 1; 453 454 // Defines whether the instance has the vTPM enabled. Enabled by default. 455 bool enable_vtpm = 2; 456 457 // Defines whether the instance has integrity monitoring enabled. 458 // 459 // Enables monitoring and attestation of the boot integrity of the instance. 460 // The attestation is performed against the integrity policy baseline. This 461 // baseline is initially derived from the implicitly trusted boot image when 462 // the instance is created. Enabled by default. 463 bool enable_integrity_monitoring = 3; 464} 465 466// Runtime using Virtual Machine for computing. 467message VirtualMachine { 468 // Output only. The user-friendly name of the Managed Compute Engine instance. 469 string instance_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 470 471 // Output only. The unique identifier of the Managed Compute Engine instance. 472 string instance_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; 473 474 // Virtual Machine configuration settings. 475 VirtualMachineConfig virtual_machine_config = 3; 476} 477 478// The config settings for virtual machine. 479message VirtualMachineConfig { 480 // The type of vNIC driver. 481 // Default should be UNSPECIFIED_NIC_TYPE. 482 enum NicType { 483 // No type specified. 484 UNSPECIFIED_NIC_TYPE = 0; 485 486 // VIRTIO 487 VIRTIO_NET = 1; 488 489 // GVNIC 490 GVNIC = 2; 491 } 492 493 // Definition of the boot image used by the Runtime. 494 // Used to facilitate runtime upgradeability. 495 message BootImage { 496 497 } 498 499 // Output only. The zone where the virtual machine is located. 500 // If using regional request, the notebooks service will pick a location 501 // in the corresponding runtime region. 502 // On a get request, zone will always be present. Example: 503 // * `us-central1-b` 504 string zone = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 505 506 // Required. The Compute Engine machine type used for runtimes. 507 // Short name is valid. Examples: 508 // * `n1-standard-2` 509 // * `e2-standard-8` 510 string machine_type = 2 [(google.api.field_behavior) = REQUIRED]; 511 512 // Optional. Use a list of container images to use as Kernels in the notebook instance. 513 repeated ContainerImage container_images = 3 [(google.api.field_behavior) = OPTIONAL]; 514 515 // Required. Data disk option configuration settings. 516 LocalDisk data_disk = 4 [(google.api.field_behavior) = REQUIRED]; 517 518 // Optional. Encryption settings for virtual machine data disk. 519 EncryptionConfig encryption_config = 5 [(google.api.field_behavior) = OPTIONAL]; 520 521 // Optional. Shielded VM Instance configuration settings. 522 RuntimeShieldedInstanceConfig shielded_instance_config = 6 [(google.api.field_behavior) = OPTIONAL]; 523 524 // Optional. The Compute Engine accelerator configuration for this runtime. 525 RuntimeAcceleratorConfig accelerator_config = 7 [(google.api.field_behavior) = OPTIONAL]; 526 527 // Optional. The Compute Engine network to be used for machine 528 // communications. Cannot be specified with subnetwork. If neither 529 // `network` nor `subnet` is specified, the "default" network of 530 // the project is used, if it exists. 531 // 532 // A full URL or partial URI. Examples: 533 // 534 // * `https://www.googleapis.com/compute/v1/projects/[project_id]/global/networks/default` 535 // * `projects/[project_id]/global/networks/default` 536 // 537 // Runtimes are managed resources inside Google Infrastructure. 538 // Runtimes support the following network configurations: 539 // 540 // * Google Managed Network (Network & subnet are empty) 541 // * Consumer Project VPC (network & subnet are required). Requires 542 // configuring Private Service Access. 543 // * Shared VPC (network & subnet are required). Requires configuring Private 544 // Service Access. 545 string network = 8 [(google.api.field_behavior) = OPTIONAL]; 546 547 // Optional. The Compute Engine subnetwork to be used for machine 548 // communications. Cannot be specified with network. 549 // 550 // A full URL or partial URI are valid. Examples: 551 // 552 // * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0` 553 // * `projects/[project_id]/regions/us-east1/subnetworks/sub0` 554 string subnet = 9 [(google.api.field_behavior) = OPTIONAL]; 555 556 // Optional. If true, runtime will only have internal IP 557 // addresses. By default, runtimes are not restricted to internal IP 558 // addresses, and will have ephemeral external IP addresses assigned to each 559 // vm. This `internal_ip_only` restriction can only be enabled for 560 // subnetwork enabled networks, and all dependencies must be 561 // configured to be accessible without external IP addresses. 562 bool internal_ip_only = 10 [(google.api.field_behavior) = OPTIONAL]; 563 564 // Optional. The Compute Engine tags to add to runtime (see [Tagging 565 // instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)). 566 repeated string tags = 13 [(google.api.field_behavior) = OPTIONAL]; 567 568 // Output only. The Compute Engine guest attributes. (see 569 // [Project and instance 570 // guest 571 // attributes](https://cloud.google.com/compute/docs/storing-retrieving-metadata#guest_attributes)). 572 map<string, string> guest_attributes = 14 [(google.api.field_behavior) = OUTPUT_ONLY]; 573 574 // Optional. The Compute Engine metadata entries to add to virtual machine. (see 575 // [Project and instance 576 // metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)). 577 map<string, string> metadata = 15 [(google.api.field_behavior) = OPTIONAL]; 578 579 // Optional. The labels to associate with this runtime. 580 // Label **keys** must contain 1 to 63 characters, and must conform to 581 // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). 582 // Label **values** may be empty, but, if present, must contain 1 to 63 583 // characters, and must conform to [RFC 584 // 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be 585 // associated with a cluster. 586 map<string, string> labels = 16 [(google.api.field_behavior) = OPTIONAL]; 587 588 // Optional. The type of vNIC to be used on this interface. This may be gVNIC or 589 // VirtioNet. 590 NicType nic_type = 17 [(google.api.field_behavior) = OPTIONAL]; 591 592 // Optional. Reserved IP Range name is used for VPC Peering. 593 // The subnetwork allocation will use the range *name* if it's assigned. 594 // 595 // Example: managed-notebooks-range-c 596 // 597 // PEERING_RANGE_NAME_3=managed-notebooks-range-c 598 // gcloud compute addresses create $PEERING_RANGE_NAME_3 \ 599 // --global \ 600 // --prefix-length=24 \ 601 // --description="Google Cloud Managed Notebooks Range 24 c" \ 602 // --network=$NETWORK \ 603 // --addresses=192.168.0.0 \ 604 // --purpose=VPC_PEERING 605 // 606 // Field value will be: `managed-notebooks-range-c` 607 string reserved_ip_range = 18 [(google.api.field_behavior) = OPTIONAL]; 608 609 // Optional. Boot image metadata used for runtime upgradeability. 610 BootImage boot_image = 19 [(google.api.field_behavior) = OPTIONAL]; 611} 612