google-cloud-workstations-v1 1.4.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -27,7 +27,7 @@ module Google
27
27
  # VPC network they're attached to.
28
28
  # @!attribute [rw] name
29
29
  # @return [::String]
30
- # Full name of this workstation cluster.
30
+ # Identifier. Full name of this workstation cluster.
31
31
  # @!attribute [rw] display_name
32
32
  # @return [::String]
33
33
  # Optional. Human-readable name for this workstation cluster.
@@ -80,16 +80,47 @@ module Google
80
80
  # @!attribute [rw] private_cluster_config
81
81
  # @return [::Google::Cloud::Workstations::V1::WorkstationCluster::PrivateClusterConfig]
82
82
  # Optional. Configuration for private workstation cluster.
83
+ # @!attribute [rw] domain_config
84
+ # @return [::Google::Cloud::Workstations::V1::WorkstationCluster::DomainConfig]
85
+ # Optional. Configuration options for a custom domain.
83
86
  # @!attribute [r] degraded
84
87
  # @return [::Boolean]
85
88
  # Output only. Whether this workstation cluster is in degraded mode, in which
86
- # case it may require user action to restore full functionality. Details can
87
- # be found in
88
- # {::Google::Cloud::Workstations::V1::WorkstationCluster#conditions conditions}.
89
+ # case it may require user action to restore full functionality. The
90
+ # {::Google::Cloud::Workstations::V1::WorkstationCluster#conditions conditions}
91
+ # field contains detailed information about the status of the cluster.
89
92
  # @!attribute [r] conditions
90
93
  # @return [::Array<::Google::Rpc::Status>]
91
94
  # Output only. Status conditions describing the workstation cluster's current
92
95
  # state.
96
+ # @!attribute [rw] tags
97
+ # @return [::Google::Protobuf::Map{::String => ::String}]
98
+ # Optional. Input only. Immutable. Tag keys/values directly bound to this
99
+ # resource. For example:
100
+ # "123/environment": "production",
101
+ # "123/costCenter": "marketing"
102
+ # @!attribute [rw] gateway_config
103
+ # @return [::Google::Cloud::Workstations::V1::WorkstationCluster::GatewayConfig]
104
+ # Optional. Configuration options for Cluster HTTP Gateway.
105
+ # @!attribute [rw] workstation_authorization_url
106
+ # @return [::String]
107
+ # Optional. Specifies the redirect URL for unauthorized requests received by
108
+ # workstation VMs in this cluster.
109
+ #
110
+ # Redirects to this endpoint will send a base64 encoded `state` query param
111
+ # containing the target workstation name and original request hostname. The
112
+ # endpoint is responsible for retrieving a token using `GenerateAccessToken`
113
+ # and redirecting back to the original hostname with the token.
114
+ # @!attribute [rw] workstation_launch_url
115
+ # @return [::String]
116
+ # Optional. Specifies the launch URL for workstations in this cluster.
117
+ # Requests sent to unstarted workstations will be redirected to this URL.
118
+ #
119
+ # Requests redirected to the launch endpoint will be sent with a
120
+ # `workstation` and `project` query parameter containing the full workstation
121
+ # resource name and project ID, respectively. The launch endpoint is
122
+ # responsible for starting the workstation, polling it until it reaches
123
+ # `STATE_RUNNING`, and then issuing a redirect to the workstation's host URL.
93
124
  class WorkstationCluster
94
125
  include ::Google::Protobuf::MessageExts
95
126
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -108,7 +139,7 @@ module Google
108
139
  # @!attribute [r] service_attachment_uri
109
140
  # @return [::String]
110
141
  # Output only. Service attachment URI for the workstation cluster. The
111
- # service attachemnt is created when private endpoint is enabled. To access
142
+ # service attachment is created when private endpoint is enabled. To access
112
143
  # workstations in the workstation cluster, configure access to the managed
113
144
  # service using [Private Service
114
145
  # Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-services).
@@ -122,6 +153,25 @@ module Google
122
153
  extend ::Google::Protobuf::MessageExts::ClassMethods
123
154
  end
124
155
 
156
+ # Configuration options for a custom domain.
157
+ # @!attribute [rw] domain
158
+ # @return [::String]
159
+ # Immutable. Domain used by Workstations for HTTP ingress.
160
+ class DomainConfig
161
+ include ::Google::Protobuf::MessageExts
162
+ extend ::Google::Protobuf::MessageExts::ClassMethods
163
+ end
164
+
165
+ # Configuration options for Cluster HTTP Gateway.
166
+ # @!attribute [rw] http2_enabled
167
+ # @return [::Boolean]
168
+ # Optional. Whether HTTP/2 is enabled for this workstation cluster.
169
+ # Defaults to false.
170
+ class GatewayConfig
171
+ include ::Google::Protobuf::MessageExts
172
+ extend ::Google::Protobuf::MessageExts::ClassMethods
173
+ end
174
+
125
175
  # @!attribute [rw] key
126
176
  # @return [::String]
127
177
  # @!attribute [rw] value
@@ -139,6 +189,15 @@ module Google
139
189
  include ::Google::Protobuf::MessageExts
140
190
  extend ::Google::Protobuf::MessageExts::ClassMethods
141
191
  end
192
+
193
+ # @!attribute [rw] key
194
+ # @return [::String]
195
+ # @!attribute [rw] value
196
+ # @return [::String]
197
+ class TagsEntry
198
+ include ::Google::Protobuf::MessageExts
199
+ extend ::Google::Protobuf::MessageExts::ClassMethods
200
+ end
142
201
  end
143
202
 
144
203
  # A workstation configuration resource in the Cloud Workstations API.
@@ -152,7 +211,7 @@ module Google
152
211
  # teams or to individual developers.
153
212
  # @!attribute [rw] name
154
213
  # @return [::String]
155
- # Full name of this workstation configuration.
214
+ # Identifier. Full name of this workstation configuration.
156
215
  # @!attribute [rw] display_name
157
216
  # @return [::String]
158
217
  # Optional. Human-readable name for this workstation configuration.
@@ -223,12 +282,32 @@ module Google
223
282
  # Warning: A value of `"0s"` indicates that Cloud Workstations VMs created
224
283
  # with this configuration have no maximum running time. This is strongly
225
284
  # discouraged because you incur costs and will not pick up security updates.
285
+ # @!attribute [rw] max_usable_workstations
286
+ # @return [::Integer]
287
+ # Optional. Maximum number of workstations under this configuration a user
288
+ # can have `workstations.workstation.use` permission on.
289
+ #
290
+ # Only enforced on CreateWorkstation API calls on the user issuing the API
291
+ # request. Can be overridden by:
292
+ #
293
+ # - granting a user
294
+ # workstations.workstationConfigs.exemptMaxUsableWorkstationLimit permission,
295
+ # or
296
+ # - having a user with that permission create a workstation and
297
+ # granting another user `workstations.workstation.use` permission on
298
+ # that workstation.
299
+ #
300
+ # If not specified, defaults to `0`, which indicates unlimited.
226
301
  # @!attribute [rw] host
227
302
  # @return [::Google::Cloud::Workstations::V1::WorkstationConfig::Host]
228
303
  # Optional. Runtime host for the workstation.
229
304
  # @!attribute [rw] persistent_directories
230
305
  # @return [::Array<::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory>]
231
306
  # Optional. Directories to persist across workstation sessions.
307
+ # @!attribute [rw] ephemeral_directories
308
+ # @return [::Array<::Google::Cloud::Workstations::V1::WorkstationConfig::EphemeralDirectory>]
309
+ # Optional. Ephemeral directories which won't persist across workstation
310
+ # sessions.
232
311
  # @!attribute [rw] container
233
312
  # @return [::Google::Cloud::Workstations::V1::WorkstationConfig::Container]
234
313
  # Optional. Container that runs upon startup for each workstation using this
@@ -269,13 +348,51 @@ module Google
269
348
  # Immutable after the workstation configuration is created.
270
349
  # @!attribute [r] degraded
271
350
  # @return [::Boolean]
272
- # Output only. Whether this resource is degraded, in which case it may
273
- # require user action to restore full functionality. See also the
351
+ # Output only. Whether this workstation configuration is in degraded mode, in
352
+ # which case it may require user action to restore full functionality. The
274
353
  # {::Google::Cloud::Workstations::V1::WorkstationConfig#conditions conditions}
275
- # field.
354
+ # field contains detailed information about the status of the configuration.
276
355
  # @!attribute [r] conditions
277
356
  # @return [::Array<::Google::Rpc::Status>]
278
- # Output only. Status conditions describing the current resource state.
357
+ # Output only. Status conditions describing the workstation configuration's
358
+ # current state.
359
+ # @!attribute [rw] enable_audit_agent
360
+ # @return [::Boolean]
361
+ # Optional. Whether to enable Linux `auditd` logging on the workstation. When
362
+ # enabled, a
363
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::Host::GceInstance#service_account service_account}
364
+ # must also be specified that has `roles/logging.logWriter` and
365
+ # `roles/monitoring.metricWriter` on the project. Operating system audit
366
+ # logging is distinct from [Cloud Audit
367
+ # Logs](https://cloud.google.com/workstations/docs/audit-logging) and
368
+ # [Container output
369
+ # logging](https://cloud.google.com/workstations/docs/container-output-logging#overview).
370
+ # Operating system audit logs are available in the
371
+ # [Cloud Logging](https://cloud.google.com/logging/docs) console by querying:
372
+ #
373
+ # resource.type="gce_instance"
374
+ # log_name:"/logs/linux-auditd"
375
+ # @!attribute [rw] disable_tcp_connections
376
+ # @return [::Boolean]
377
+ # Optional. Disables support for plain TCP connections in the workstation.
378
+ # By default the service supports TCP connections through a websocket relay.
379
+ # Setting this option to true disables that relay, which prevents the usage
380
+ # of services that require plain TCP connections, such as SSH.
381
+ # When enabled, all communication must occur over HTTPS or WSS.
382
+ # @!attribute [rw] allowed_ports
383
+ # @return [::Array<::Google::Cloud::Workstations::V1::WorkstationConfig::PortRange>]
384
+ # Optional. A list of
385
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::PortRange PortRange}s
386
+ # specifying single ports or ranges of ports that are externally accessible
387
+ # in the workstation. Allowed ports must be one of 22, 80, or within range
388
+ # 1024-65535. If not specified defaults to ports 22, 80, and ports
389
+ # 1024-65535.
390
+ # @!attribute [rw] grant_workstation_admin_role_on_create
391
+ # @return [::Boolean]
392
+ # Optional. Grant creator of a workstation `roles/workstations.policyAdmin`
393
+ # role along with `roles/workstations.user` role on the workstation created
394
+ # by them. This allows workstation users to share access to either their
395
+ # entire workstation, or individual ports. Defaults to false.
279
396
  class WorkstationConfig
280
397
  include ::Google::Protobuf::MessageExts
281
398
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -300,10 +417,12 @@ module Google
300
417
  # @return [::String]
301
418
  # Optional. The email address of the service account for Cloud
302
419
  # Workstations VMs created with this configuration. When specified, be
303
- # sure that the service account has `logginglogEntries.create` permission
304
- # on the project so it can write logs out to Cloud Logging. If using a
305
- # custom container image, the service account must have permissions to
306
- # pull the specified image.
420
+ # sure that the service account has `logging.logEntries.create` and
421
+ # `monitoring.timeSeries.create` permissions on the project so it can
422
+ # write logs out to Cloud Logging. If using a custom container image, the
423
+ # service account must have [Artifact Registry
424
+ # Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles)
425
+ # permission to pull the specified image.
307
426
  #
308
427
  # If you as the administrator want to be able to `ssh` into the
309
428
  # underlying VM, you need to set this value to a service account
@@ -319,9 +438,8 @@ module Google
319
438
  # @return [::Array<::String>]
320
439
  # Optional. Scopes to grant to the
321
440
  # {::Google::Cloud::Workstations::V1::WorkstationConfig::Host::GceInstance#service_account service_account}.
322
- # Various scopes are automatically added based on feature usage. When
323
- # specified, users of workstations under this configuration must have
324
- # `iam.serviceAccounts.actAs` on the service account.
441
+ # When specified, users of workstations under this configuration must
442
+ # have `iam.serviceAccounts.actAs` on the service account.
325
443
  # @!attribute [rw] tags
326
444
  # @return [::Array<::String>]
327
445
  # Optional. Network tags to add to the Compute Engine VMs backing the
@@ -352,7 +470,9 @@ module Google
352
470
  # @!attribute [rw] enable_nested_virtualization
353
471
  # @return [::Boolean]
354
472
  # Optional. Whether to enable nested virtualization on Cloud Workstations
355
- # VMs created under this workstation configuration.
473
+ # VMs created using this workstation configuration.
474
+ #
475
+ # Defaults to false.
356
476
  #
357
477
  # Nested virtualization lets you run virtual machine (VM) instances
358
478
  # inside your workstation. Before enabling nested virtualization,
@@ -375,16 +495,6 @@ module Google
375
495
  # workstation configurations that specify a
376
496
  # {::Google::Cloud::Workstations::V1::WorkstationConfig::Host::GceInstance#machine_type machine_type}
377
497
  # in the N1 or N2 machine series.
378
- # * **GPUs**: nested virtualization may not be enabled on workstation
379
- # configurations with accelerators.
380
- # * **Operating System**: Because
381
- # [Container-Optimized
382
- # OS](https://cloud.google.com/compute/docs/images/os-details#container-optimized_os_cos)
383
- # does not support nested virtualization, when nested virtualization is
384
- # enabled, the underlying Compute Engine VM instances boot from an
385
- # [Ubuntu
386
- # LTS](https://cloud.google.com/compute/docs/images/os-details#ubuntu_lts)
387
- # image.
388
498
  # @!attribute [rw] shielded_instance_config
389
499
  # @return [::Google::Cloud::Workstations::V1::WorkstationConfig::Host::GceInstance::GceShieldedInstanceConfig]
390
500
  # Optional. A set of Compute Engine Shielded instance options.
@@ -395,6 +505,41 @@ module Google
395
505
  # @return [::Integer]
396
506
  # Optional. The size of the boot disk for the VM in gigabytes (GB).
397
507
  # The minimum boot disk size is `30` GB. Defaults to `50` GB.
508
+ # @!attribute [rw] accelerators
509
+ # @return [::Array<::Google::Cloud::Workstations::V1::WorkstationConfig::Host::GceInstance::Accelerator>]
510
+ # Optional. A list of the type and count of accelerator cards attached to
511
+ # the instance.
512
+ # @!attribute [rw] boost_configs
513
+ # @return [::Array<::Google::Cloud::Workstations::V1::WorkstationConfig::Host::GceInstance::BoostConfig>]
514
+ # Optional. A list of the boost configurations that workstations created
515
+ # using this workstation configuration are allowed to use. If specified,
516
+ # users will have the option to choose from the list of boost configs
517
+ # when starting a workstation.
518
+ # @!attribute [rw] disable_ssh
519
+ # @return [::Boolean]
520
+ # Optional. Whether to disable SSH access to the VM.
521
+ # @!attribute [rw] vm_tags
522
+ # @return [::Google::Protobuf::Map{::String => ::String}]
523
+ # Optional. Resource manager tags to be bound to this instance.
524
+ # Tag keys and values have the same definition as [resource manager
525
+ # tags](https://cloud.google.com/resource-manager/docs/tags/tags-overview).
526
+ # Keys must be in the format `tagKeys/{tag_key_id}`, and
527
+ # values are in the format `tagValues/456`.
528
+ # @!attribute [rw] startup_script_uri
529
+ # @return [::String]
530
+ # Optional. Link to the startup script stored in Cloud Storage. This
531
+ # script will be run on the host workstation VM when the VM is created.
532
+ # The URI must be of the form gs://\\{bucket-name}/\\{object-name}. If
533
+ # specifying a startup script, the service account must have [Permission
534
+ # to access the bucket and script file in Cloud
535
+ # Storage](https://cloud.google.com/storage/docs/access-control/iam-permissions).
536
+ # Otherwise, the script must be publicly accessible.
537
+ # Note that the service regularly updates the OS version of the host VM,
538
+ # and it is the responsibility of the user to ensure the script stays
539
+ # compatible with the OS version.
540
+ # @!attribute [rw] instance_metadata
541
+ # @return [::Google::Protobuf::Map{::String => ::String}]
542
+ # Optional. Custom metadata to apply to Compute Engine instances.
398
543
  class GceInstance
399
544
  include ::Google::Protobuf::MessageExts
400
545
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -422,13 +567,117 @@ module Google
422
567
  include ::Google::Protobuf::MessageExts
423
568
  extend ::Google::Protobuf::MessageExts::ClassMethods
424
569
  end
570
+
571
+ # An accelerator card attached to the instance.
572
+ # @!attribute [rw] type
573
+ # @return [::String]
574
+ # Optional. Type of accelerator resource to attach to the instance, for
575
+ # example,
576
+ # `"nvidia-tesla-p100"`.
577
+ # @!attribute [rw] count
578
+ # @return [::Integer]
579
+ # Optional. Number of accelerator cards exposed to the instance.
580
+ class Accelerator
581
+ include ::Google::Protobuf::MessageExts
582
+ extend ::Google::Protobuf::MessageExts::ClassMethods
583
+ end
584
+
585
+ # A boost configuration is a set of resources that a workstation can use
586
+ # to increase its performance. If you specify a boost configuration, upon
587
+ # startup, workstation users can choose to use a VM provisioned under the
588
+ # boost config by passing the boost config ID in the start request. If
589
+ # the workstation user does not provide a boost config ID in the start
590
+ # request, the system will choose a VM from the pool provisioned under
591
+ # the default config.
592
+ # @!attribute [rw] id
593
+ # @return [::String]
594
+ # Required. The ID to be used for the boost configuration.
595
+ # @!attribute [rw] machine_type
596
+ # @return [::String]
597
+ # Optional. The type of machine that boosted VM instances will use—for
598
+ # example, `e2-standard-4`. For more information about machine types
599
+ # that Cloud Workstations supports, see the list of [available machine
600
+ # types](https://cloud.google.com/workstations/docs/available-machine-types).
601
+ # Defaults to `e2-standard-4`.
602
+ # @!attribute [rw] accelerators
603
+ # @return [::Array<::Google::Cloud::Workstations::V1::WorkstationConfig::Host::GceInstance::Accelerator>]
604
+ # Optional. A list of the type and count of accelerator cards attached
605
+ # to the boost instance. Defaults to `none`.
606
+ # @!attribute [rw] boot_disk_size_gb
607
+ # @return [::Integer]
608
+ # Optional. The size of the boot disk for the VM in gigabytes (GB).
609
+ # The minimum boot disk size is `30` GB. Defaults to `50` GB.
610
+ # @!attribute [rw] enable_nested_virtualization
611
+ # @return [::Boolean]
612
+ # Optional. Whether to enable nested virtualization on boosted Cloud
613
+ # Workstations VMs running using this boost configuration.
614
+ #
615
+ # Defaults to false.
616
+ #
617
+ # Nested virtualization lets you run virtual machine (VM) instances
618
+ # inside your workstation. Before enabling nested virtualization,
619
+ # consider the following important considerations. Cloud Workstations
620
+ # instances are subject to the [same restrictions as Compute Engine
621
+ # instances](https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions):
622
+ #
623
+ # * **Organization policy**: projects, folders, or
624
+ # organizations may be restricted from creating nested VMs if the
625
+ # **Disable VM nested virtualization** constraint is enforced in
626
+ # the organization policy. For more information, see the
627
+ # Compute Engine section,
628
+ # [Checking whether nested virtualization is
629
+ # allowed](https://cloud.google.com/compute/docs/instances/nested-virtualization/managing-constraint#checking_whether_nested_virtualization_is_allowed).
630
+ # * **Performance**: nested VMs might experience a 10% or greater
631
+ # decrease in performance for workloads that are CPU-bound and
632
+ # possibly greater than a 10% decrease for workloads that are
633
+ # input/output bound.
634
+ # * **Machine Type**: nested virtualization can only be enabled on
635
+ # boost configurations that specify a
636
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::Host::GceInstance::BoostConfig#machine_type machine_type}
637
+ # in the N1 or N2 machine series.
638
+ # @!attribute [rw] pool_size
639
+ # @return [::Integer]
640
+ # Optional. The number of boost VMs that the system should keep idle so
641
+ # that workstations can be boosted quickly. Defaults to `0`.
642
+ class BoostConfig
643
+ include ::Google::Protobuf::MessageExts
644
+ extend ::Google::Protobuf::MessageExts::ClassMethods
645
+ end
646
+
647
+ # @!attribute [rw] key
648
+ # @return [::String]
649
+ # @!attribute [rw] value
650
+ # @return [::String]
651
+ class VmTagsEntry
652
+ include ::Google::Protobuf::MessageExts
653
+ extend ::Google::Protobuf::MessageExts::ClassMethods
654
+ end
655
+
656
+ # @!attribute [rw] key
657
+ # @return [::String]
658
+ # @!attribute [rw] value
659
+ # @return [::String]
660
+ class InstanceMetadataEntry
661
+ include ::Google::Protobuf::MessageExts
662
+ extend ::Google::Protobuf::MessageExts::ClassMethods
663
+ end
425
664
  end
426
665
  end
427
666
 
428
- # A directory to persist across workstation sessions.
667
+ # A directory to persist across workstation sessions. Updates to this field
668
+ # will not update existing workstations and will only take effect on new
669
+ # workstations.
429
670
  # @!attribute [rw] gce_pd
430
671
  # @return [::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceRegionalPersistentDisk]
431
672
  # A PersistentDirectory backed by a Compute Engine persistent disk.
673
+ #
674
+ # Note: The following fields are mutually exclusive: `gce_pd`, `gce_hd`. If a field in that set is populated, all other fields in the set will automatically be cleared.
675
+ # @!attribute [rw] gce_hd
676
+ # @return [::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceHyperdiskBalancedHighAvailability]
677
+ # A PersistentDirectory backed by a Compute Engine hyperdisk high
678
+ # availability disk.
679
+ #
680
+ # Note: The following fields are mutually exclusive: `gce_hd`, `gce_pd`. If a field in that set is populated, all other fields in the set will automatically be cleared.
432
681
  # @!attribute [rw] mount_path
433
682
  # @return [::String]
434
683
  # Optional. Location of this directory in the running workstation.
@@ -436,7 +685,7 @@ module Google
436
685
  include ::Google::Protobuf::MessageExts
437
686
  extend ::Google::Protobuf::MessageExts::ClassMethods
438
687
 
439
- # A PersistentDirectory backed by a Compute Engine regional persistent
688
+ # A Persistent Directory backed by a Compute Engine regional persistent
440
689
  # disk. The
441
690
  # {::Google::Cloud::Workstations::V1::WorkstationConfig#persistent_directories persistent_directories}
442
691
  # field is repeated, but it may contain only one entry. It creates a
@@ -458,6 +707,10 @@ module Google
458
707
  # {::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceRegionalPersistentDisk#disk_type disk_type}
459
708
  # must be
460
709
  # `"pd-balanced"` or `"pd-ssd"`.
710
+ # @!attribute [rw] max_size_gb
711
+ # @return [::Integer]
712
+ # Optional. Maximum size in GB to which this persistent directory can be
713
+ # resized. Defaults to unlimited if not set.
461
714
  # @!attribute [rw] fs_type
462
715
  # @return [::String]
463
716
  # Optional. Type of file system that the disk should be formatted with.
@@ -477,12 +730,22 @@ module Google
477
730
  # {::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceRegionalPersistentDisk#size_gb size_gb}
478
731
  # and
479
732
  # {::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceRegionalPersistentDisk#fs_type fs_type}
480
- # must be empty.
733
+ # must be empty. Must be formatted as ext4 file system with no
734
+ # partitions.
481
735
  # @!attribute [rw] reclaim_policy
482
736
  # @return [::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceRegionalPersistentDisk::ReclaimPolicy]
483
737
  # Optional. Whether the persistent disk should be deleted when the
484
738
  # workstation is deleted. Valid values are `DELETE` and `RETAIN`.
485
739
  # Defaults to `DELETE`.
740
+ # @!attribute [rw] archive_timeout
741
+ # @return [::Google::Protobuf::Duration]
742
+ # Optional. Number of seconds to wait after initially creating or
743
+ # subsequently shutting down the workstation before converting its disk
744
+ # into a snapshot. This generally saves costs at the expense of greater
745
+ # startup time on next workstation start, as the service will need to
746
+ # create a disk from the archival snapshot.
747
+ #
748
+ # A value of `"0s"` indicates that the disk will never be archived.
486
749
  class GceRegionalPersistentDisk
487
750
  include ::Google::Protobuf::MessageExts
488
751
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -501,6 +764,126 @@ module Google
501
764
  RETAIN = 2
502
765
  end
503
766
  end
767
+
768
+ # A Persistent Directory backed by a Compute Engine
769
+ # [Hyperdisk Balanced High Availability
770
+ # Disk](https://cloud.google.com/compute/docs/disks/hd-types/hyperdisk-balanced-ha).
771
+ # This is a high-availability block storage solution that offers a balance
772
+ # between performance and cost for most general-purpose workloads.
773
+ # @!attribute [rw] size_gb
774
+ # @return [::Integer]
775
+ # Optional. The GB capacity of a persistent home directory for each
776
+ # workstation created with this configuration. Must be empty if
777
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceHyperdiskBalancedHighAvailability#source_snapshot source_snapshot}
778
+ # is set.
779
+ #
780
+ # Valid values are `10`, `50`, `100`, `200`, `500`, or `1000`.
781
+ # Defaults to `200`.
782
+ # @!attribute [rw] max_size_gb
783
+ # @return [::Integer]
784
+ # Optional. Maximum size in GB to which this persistent directory can be
785
+ # resized. Defaults to unlimited if not set.
786
+ # @!attribute [rw] source_snapshot
787
+ # @return [::String]
788
+ # Optional. Name of the snapshot to use as the source for the disk. If
789
+ # set,
790
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceHyperdiskBalancedHighAvailability#size_gb size_gb}
791
+ # must be empty. Must be formatted as ext4 file system with no
792
+ # partitions.
793
+ # @!attribute [rw] reclaim_policy
794
+ # @return [::Google::Cloud::Workstations::V1::WorkstationConfig::PersistentDirectory::GceHyperdiskBalancedHighAvailability::ReclaimPolicy]
795
+ # Optional. Whether the persistent disk should be deleted when the
796
+ # workstation is deleted. Valid values are `DELETE` and `RETAIN`.
797
+ # Defaults to `DELETE`.
798
+ # @!attribute [rw] archive_timeout
799
+ # @return [::Google::Protobuf::Duration]
800
+ # Optional. Number of seconds to wait after initially creating or
801
+ # subsequently shutting down the workstation before converting its disk
802
+ # into a snapshot. This generally saves costs at the expense of greater
803
+ # startup time on next workstation start, as the service will need to
804
+ # create a disk from the archival snapshot.
805
+ #
806
+ # A value of `"0s"` indicates that the disk will never be archived.
807
+ class GceHyperdiskBalancedHighAvailability
808
+ include ::Google::Protobuf::MessageExts
809
+ extend ::Google::Protobuf::MessageExts::ClassMethods
810
+
811
+ # Value representing what should happen to the disk after the workstation
812
+ # is deleted.
813
+ module ReclaimPolicy
814
+ # Do not use.
815
+ RECLAIM_POLICY_UNSPECIFIED = 0
816
+
817
+ # Delete the persistent disk when deleting the workstation.
818
+ DELETE = 1
819
+
820
+ # Keep the persistent disk when deleting the workstation.
821
+ # An administrator must manually delete the disk.
822
+ RETAIN = 2
823
+ end
824
+ end
825
+ end
826
+
827
+ # An ephemeral directory which won't persist across workstation sessions. It
828
+ # is freshly created on every workstation start operation.
829
+ # @!attribute [rw] gce_pd
830
+ # @return [::Google::Cloud::Workstations::V1::WorkstationConfig::EphemeralDirectory::GcePersistentDisk]
831
+ # An EphemeralDirectory backed by a Compute Engine persistent disk.
832
+ # @!attribute [rw] mount_path
833
+ # @return [::String]
834
+ # Required. Location of this directory in the running workstation.
835
+ class EphemeralDirectory
836
+ include ::Google::Protobuf::MessageExts
837
+ extend ::Google::Protobuf::MessageExts::ClassMethods
838
+
839
+ # An EphemeralDirectory is backed by a Compute Engine persistent disk.
840
+ # @!attribute [rw] disk_type
841
+ # @return [::String]
842
+ # Optional. Type of the disk to use. Defaults to `"pd-standard"`.
843
+ # @!attribute [rw] source_snapshot
844
+ # @return [::String]
845
+ # Optional. Name of the snapshot to use as the source for the disk. Must
846
+ # be empty if
847
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::EphemeralDirectory::GcePersistentDisk#source_image source_image}
848
+ # is set. Must be empty if
849
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::EphemeralDirectory::GcePersistentDisk#read_only read_only}
850
+ # is false. Updating
851
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::EphemeralDirectory::GcePersistentDisk#source_snapshot source_snapshot}
852
+ # will update content in the ephemeral directory after the workstation is
853
+ # restarted.
854
+ #
855
+ # Only file systems supported by Container-Optimized OS (COS)
856
+ # are explicitly supported. For a list of supported file systems, see
857
+ # [the filesystems available in Container-Optimized
858
+ # OS](https://cloud.google.com/container-optimized-os/docs/concepts/supported-filesystems).
859
+ #
860
+ # This field is mutable.
861
+ # @!attribute [rw] source_image
862
+ # @return [::String]
863
+ # Optional. Name of the disk image to use as the source for the disk.
864
+ # Must be empty if
865
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::EphemeralDirectory::GcePersistentDisk#source_snapshot source_snapshot}
866
+ # is set. Updating
867
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::EphemeralDirectory::GcePersistentDisk#source_image source_image}
868
+ # will update content in the ephemeral directory after the workstation is
869
+ # restarted.
870
+ #
871
+ # Only file systems supported by Container-Optimized OS (COS)
872
+ # are explicitly supported. For a list of supported file systems, please
873
+ # refer to the [COS
874
+ # documentation](https://cloud.google.com/container-optimized-os/docs/concepts/supported-filesystems).
875
+ #
876
+ # This field is mutable.
877
+ # @!attribute [rw] read_only
878
+ # @return [::Boolean]
879
+ # Optional. Whether the disk is read only. If true, the disk may be
880
+ # shared by multiple VMs and
881
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::EphemeralDirectory::GcePersistentDisk#source_snapshot source_snapshot}
882
+ # must be set.
883
+ class GcePersistentDisk
884
+ include ::Google::Protobuf::MessageExts
885
+ extend ::Google::Protobuf::MessageExts::ClassMethods
886
+ end
504
887
  end
505
888
 
506
889
  # A Docker container.
@@ -515,7 +898,10 @@ module Google
515
898
  # [custom container
516
899
  # images](https://cloud.google.com/workstations/docs/custom-container-images).
517
900
  # If using a private image, the `host.gceInstance.serviceAccount` field
518
- # must be specified in the workstation configuration and must have
901
+ # must be specified in the workstation configuration.
902
+ # If using a custom container image, the service account must have
903
+ # [Artifact Registry
904
+ # Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles)
519
905
  # permission to pull the specified image. Otherwise, the image must be
520
906
  # publicly accessible.
521
907
  # @!attribute [rw] command
@@ -586,6 +972,27 @@ module Google
586
972
  extend ::Google::Protobuf::MessageExts::ClassMethods
587
973
  end
588
974
 
975
+ # A PortRange defines a range of ports. Both
976
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::PortRange#first first} and
977
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::PortRange#last last} are
978
+ # inclusive.
979
+ # To specify a single port, both
980
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::PortRange#first first} and
981
+ # {::Google::Cloud::Workstations::V1::WorkstationConfig::PortRange#last last}
982
+ # should be the same.
983
+ # @!attribute [rw] first
984
+ # @return [::Integer]
985
+ # Required. Starting port number for the current range of ports.
986
+ # Valid ports are 22, 80, and ports within the range 1024-65535.
987
+ # @!attribute [rw] last
988
+ # @return [::Integer]
989
+ # Required. Ending port number for the current range of ports.
990
+ # Valid ports are 22, 80, and ports within the range 1024-65535.
991
+ class PortRange
992
+ include ::Google::Protobuf::MessageExts
993
+ extend ::Google::Protobuf::MessageExts::ClassMethods
994
+ end
995
+
589
996
  # @!attribute [rw] key
590
997
  # @return [::String]
591
998
  # @!attribute [rw] value
@@ -608,7 +1015,7 @@ module Google
608
1015
  # A single instance of a developer workstation with its own persistent storage.
609
1016
  # @!attribute [rw] name
610
1017
  # @return [::String]
611
- # Full name of this workstation.
1018
+ # Identifier. Full name of this workstation.
612
1019
  # @!attribute [rw] display_name
613
1020
  # @return [::String]
614
1021
  # Optional. Human-readable name for this workstation.
@@ -646,6 +1053,9 @@ module Google
646
1053
  # Optional. Checksum computed by the server. May be sent on update and delete
647
1054
  # requests to make sure that the client has an up-to-date value before
648
1055
  # proceeding.
1056
+ # @!attribute [rw] persistent_directories
1057
+ # @return [::Array<::Google::Cloud::Workstations::V1::Workstation::WorkstationPersistentDirectory>]
1058
+ # Optional. Directories to persist across workstation sessions.
649
1059
  # @!attribute [r] state
650
1060
  # @return [::Google::Cloud::Workstations::V1::Workstation::State]
651
1061
  # Output only. Current state of the workstation.
@@ -656,10 +1066,66 @@ module Google
656
1066
  # workstation as HTTP on port 80. To send traffic to a different port,
657
1067
  # clients may prefix the host with the destination port in the format
658
1068
  # `{port}-{host}`.
1069
+ # @!attribute [rw] env
1070
+ # @return [::Google::Protobuf::Map{::String => ::String}]
1071
+ # Optional. Environment variables passed to the workstation container's
1072
+ # entrypoint.
1073
+ # @!attribute [r] kms_key
1074
+ # @return [::String]
1075
+ # Output only. The name of the Google Cloud KMS encryption key used to
1076
+ # encrypt this workstation. The KMS key can only be configured in the
1077
+ # WorkstationConfig. The expected format is
1078
+ # `projects/*/locations/*/keyRings/*/cryptoKeys/*`.
1079
+ # @!attribute [rw] source_workstation
1080
+ # @return [::String]
1081
+ # Optional. The source workstation from which this workstation's persistent
1082
+ # directories were cloned on creation.
1083
+ # @!attribute [r] runtime_host
1084
+ # @return [::Google::Cloud::Workstations::V1::Workstation::RuntimeHost]
1085
+ # Optional. Output only. Runtime host for the workstation when in
1086
+ # STATE_RUNNING.
659
1087
  class Workstation
660
1088
  include ::Google::Protobuf::MessageExts
661
1089
  extend ::Google::Protobuf::MessageExts::ClassMethods
662
1090
 
1091
+ # A directory to persist across workstation sessions. Updates to this field
1092
+ # will only take effect on this workstation after it is restarted.
1093
+ # @!attribute [rw] mount_path
1094
+ # @return [::String]
1095
+ # Optional. The mount path of the persistent directory.
1096
+ # @!attribute [rw] size_gb
1097
+ # @return [::Integer]
1098
+ # Optional. Size of the persistent directory in GB. If specified in an
1099
+ # update request, this is the desired size of the directory.
1100
+ class WorkstationPersistentDirectory
1101
+ include ::Google::Protobuf::MessageExts
1102
+ extend ::Google::Protobuf::MessageExts::ClassMethods
1103
+ end
1104
+
1105
+ # Runtime host for the workstation.
1106
+ # @!attribute [rw] gce_instance_host
1107
+ # @return [::Google::Cloud::Workstations::V1::Workstation::RuntimeHost::GceInstanceHost]
1108
+ # Specifies a Compute Engine instance as the host.
1109
+ class RuntimeHost
1110
+ include ::Google::Protobuf::MessageExts
1111
+ extend ::Google::Protobuf::MessageExts::ClassMethods
1112
+
1113
+ # The Compute Engine instance host.
1114
+ # @!attribute [r] name
1115
+ # @return [::String]
1116
+ # Optional. Output only. The name of the Compute Engine instance.
1117
+ # @!attribute [r] id
1118
+ # @return [::String]
1119
+ # Optional. Output only. The ID of the Compute Engine instance.
1120
+ # @!attribute [r] zone
1121
+ # @return [::String]
1122
+ # Optional. Output only. The zone of the Compute Engine instance.
1123
+ class GceInstanceHost
1124
+ include ::Google::Protobuf::MessageExts
1125
+ extend ::Google::Protobuf::MessageExts::ClassMethods
1126
+ end
1127
+ end
1128
+
663
1129
  # @!attribute [rw] key
664
1130
  # @return [::String]
665
1131
  # @!attribute [rw] value
@@ -678,6 +1144,15 @@ module Google
678
1144
  extend ::Google::Protobuf::MessageExts::ClassMethods
679
1145
  end
680
1146
 
1147
+ # @!attribute [rw] key
1148
+ # @return [::String]
1149
+ # @!attribute [rw] value
1150
+ # @return [::String]
1151
+ class EnvEntry
1152
+ include ::Google::Protobuf::MessageExts
1153
+ extend ::Google::Protobuf::MessageExts::ClassMethods
1154
+ end
1155
+
681
1156
  # Whether a workstation is running and ready to receive user requests.
682
1157
  module State
683
1158
  # Do not use.
@@ -719,6 +1194,10 @@ module Google
719
1194
  # @return [::String]
720
1195
  # Optional. next_page_token value returned from a previous List request, if
721
1196
  # any.
1197
+ # @!attribute [rw] filter
1198
+ # @return [::String]
1199
+ # Optional. Filter the WorkstationClusters to be listed. Possible filters are
1200
+ # described in https://google.aip.dev/160.
722
1201
  class ListWorkstationClustersRequest
723
1202
  include ::Google::Protobuf::MessageExts
724
1203
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -752,7 +1231,7 @@ module Google
752
1231
  # Required. Workstation cluster to create.
753
1232
  # @!attribute [rw] validate_only
754
1233
  # @return [::Boolean]
755
- # Optional. If set, validate the request and preview the review, but do not
1234
+ # Optional. If set, validate the request and preview the result, but do not
756
1235
  # actually apply it.
757
1236
  class CreateWorkstationClusterRequest
758
1237
  include ::Google::Protobuf::MessageExts
@@ -769,7 +1248,7 @@ module Google
769
1248
  # should be updated.
770
1249
  # @!attribute [rw] validate_only
771
1250
  # @return [::Boolean]
772
- # Optional. If set, validate the request and preview the review, but do not
1251
+ # Optional. If set, validate the request and preview the result, but do not
773
1252
  # actually apply it.
774
1253
  # @!attribute [rw] allow_missing
775
1254
  # @return [::Boolean]
@@ -787,7 +1266,7 @@ module Google
787
1266
  # Required. Name of the workstation cluster to delete.
788
1267
  # @!attribute [rw] validate_only
789
1268
  # @return [::Boolean]
790
- # Optional. If set, validate the request and preview the review, but do not
1269
+ # Optional. If set, validate the request and preview the result, but do not
791
1270
  # apply it.
792
1271
  # @!attribute [rw] etag
793
1272
  # @return [::String]
@@ -823,6 +1302,10 @@ module Google
823
1302
  # @return [::String]
824
1303
  # Optional. next_page_token value returned from a previous List request, if
825
1304
  # any.
1305
+ # @!attribute [rw] filter
1306
+ # @return [::String]
1307
+ # Optional. Filter the WorkstationConfigs to be listed. Possible filters are
1308
+ # described in https://google.aip.dev/160.
826
1309
  class ListWorkstationConfigsRequest
827
1310
  include ::Google::Protobuf::MessageExts
828
1311
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -885,10 +1368,10 @@ module Google
885
1368
  # Required. ID to use for the workstation configuration.
886
1369
  # @!attribute [rw] workstation_config
887
1370
  # @return [::Google::Cloud::Workstations::V1::WorkstationConfig]
888
- # Required. Config to create.
1371
+ # Required. Workstation configuration to create.
889
1372
  # @!attribute [rw] validate_only
890
1373
  # @return [::Boolean]
891
- # Optional. If set, validate the request and preview the review, but do not
1374
+ # Optional. If set, validate the request and preview the result, but do not
892
1375
  # actually apply it.
893
1376
  class CreateWorkstationConfigRequest
894
1377
  include ::Google::Protobuf::MessageExts
@@ -898,14 +1381,14 @@ module Google
898
1381
  # Request message for UpdateWorkstationConfig.
899
1382
  # @!attribute [rw] workstation_config
900
1383
  # @return [::Google::Cloud::Workstations::V1::WorkstationConfig]
901
- # Required. Config to update.
1384
+ # Required. Workstation configuration to update.
902
1385
  # @!attribute [rw] update_mask
903
1386
  # @return [::Google::Protobuf::FieldMask]
904
1387
  # Required. Mask specifying which fields in the workstation configuration
905
1388
  # should be updated.
906
1389
  # @!attribute [rw] validate_only
907
1390
  # @return [::Boolean]
908
- # Optional. If set, validate the request and preview the review, but do not
1391
+ # Optional. If set, validate the request and preview the result, but do not
909
1392
  # actually apply it.
910
1393
  # @!attribute [rw] allow_missing
911
1394
  # @return [::Boolean]
@@ -923,7 +1406,7 @@ module Google
923
1406
  # Required. Name of the workstation configuration to delete.
924
1407
  # @!attribute [rw] validate_only
925
1408
  # @return [::Boolean]
926
- # Optional. If set, validate the request and preview the review, but do not
1409
+ # Optional. If set, validate the request and preview the result, but do not
927
1410
  # actually apply it.
928
1411
  # @!attribute [rw] etag
929
1412
  # @return [::String]
@@ -959,6 +1442,10 @@ module Google
959
1442
  # @return [::String]
960
1443
  # Optional. next_page_token value returned from a previous List request, if
961
1444
  # any.
1445
+ # @!attribute [rw] filter
1446
+ # @return [::String]
1447
+ # Optional. Filter the Workstations to be listed. Possible filters are
1448
+ # described in https://google.aip.dev/160.
962
1449
  class ListWorkstationsRequest
963
1450
  include ::Google::Protobuf::MessageExts
964
1451
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -1021,10 +1508,14 @@ module Google
1021
1508
  # Required. ID to use for the workstation.
1022
1509
  # @!attribute [rw] workstation
1023
1510
  # @return [::Google::Cloud::Workstations::V1::Workstation]
1024
- # Required. Workstation to create.
1511
+ # Required. Workstation to create. If source_workstation is specified, the
1512
+ # user must have `workstations.workstations.use` permission on the source
1513
+ # workstation, and the Cloud Workstations Service Agent for the project where
1514
+ # you are creating the new workstation must have compute.disks.createSnapshot
1515
+ # and compute.snapshots.useReadOnly on the source project.
1025
1516
  # @!attribute [rw] validate_only
1026
1517
  # @return [::Boolean]
1027
- # Optional. If set, validate the request and preview the review, but do not
1518
+ # Optional. If set, validate the request and preview the result, but do not
1028
1519
  # actually apply it.
1029
1520
  class CreateWorkstationRequest
1030
1521
  include ::Google::Protobuf::MessageExts
@@ -1037,17 +1528,16 @@ module Google
1037
1528
  # Required. Workstation to update.
1038
1529
  # @!attribute [rw] update_mask
1039
1530
  # @return [::Google::Protobuf::FieldMask]
1040
- # Required. Mask specifying which fields in the workstation configuration
1041
- # should be updated.
1531
+ # Required. Mask specifying which fields in the workstation should be
1532
+ # updated.
1042
1533
  # @!attribute [rw] validate_only
1043
1534
  # @return [::Boolean]
1044
- # Optional. If set, validate the request and preview the review, but do not
1535
+ # Optional. If set, validate the request and preview the result, but do not
1045
1536
  # actually apply it.
1046
1537
  # @!attribute [rw] allow_missing
1047
1538
  # @return [::Boolean]
1048
- # Optional. If set and the workstation configuration is not found, a new
1049
- # workstation configuration is created. In this situation, update_mask
1050
- # is ignored.
1539
+ # Optional. If set and the workstation is not found, a new workstation is
1540
+ # created. In this situation, update_mask is ignored.
1051
1541
  class UpdateWorkstationRequest
1052
1542
  include ::Google::Protobuf::MessageExts
1053
1543
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -1059,7 +1549,7 @@ module Google
1059
1549
  # Required. Name of the workstation to delete.
1060
1550
  # @!attribute [rw] validate_only
1061
1551
  # @return [::Boolean]
1062
- # Optional. If set, validate the request and preview the review, but do not
1552
+ # Optional. If set, validate the request and preview the result, but do not
1063
1553
  # actually apply it.
1064
1554
  # @!attribute [rw] etag
1065
1555
  # @return [::String]
@@ -1076,12 +1566,16 @@ module Google
1076
1566
  # Required. Name of the workstation to start.
1077
1567
  # @!attribute [rw] validate_only
1078
1568
  # @return [::Boolean]
1079
- # Optional. If set, validate the request and preview the review, but do not
1569
+ # Optional. If set, validate the request and preview the result, but do not
1080
1570
  # actually apply it.
1081
1571
  # @!attribute [rw] etag
1082
1572
  # @return [::String]
1083
1573
  # Optional. If set, the request will be rejected if the latest version of the
1084
1574
  # workstation on the server does not have this ETag.
1575
+ # @!attribute [rw] boost_config
1576
+ # @return [::String]
1577
+ # Optional. If set, the workstation starts using the boost configuration with
1578
+ # the specified ID.
1085
1579
  class StartWorkstationRequest
1086
1580
  include ::Google::Protobuf::MessageExts
1087
1581
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -1093,7 +1587,7 @@ module Google
1093
1587
  # Required. Name of the workstation to stop.
1094
1588
  # @!attribute [rw] validate_only
1095
1589
  # @return [::Boolean]
1096
- # Optional. If set, validate the request and preview the review, but do not
1590
+ # Optional. If set, validate the request and preview the result, but do not
1097
1591
  # actually apply it.
1098
1592
  # @!attribute [rw] etag
1099
1593
  # @return [::String]
@@ -1124,6 +1618,13 @@ module Google
1124
1618
  # @return [::String]
1125
1619
  # Required. Name of the workstation for which the access token should be
1126
1620
  # generated.
1621
+ # @!attribute [rw] port
1622
+ # @return [::Integer]
1623
+ # Optional. Port for which the access token should be generated. If
1624
+ # specified, the generated access token grants access only to the
1625
+ # specified port of the workstation. If specified, values must be within the
1626
+ # range [1 - 65535]. If not specified, the generated access token grants
1627
+ # access to all ports of the workstation.
1127
1628
  class GenerateAccessTokenRequest
1128
1629
  include ::Google::Protobuf::MessageExts
1129
1630
  extend ::Google::Protobuf::MessageExts::ClassMethods