google-apis-hypercomputecluster_v1 0.1.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.
@@ -0,0 +1,1571 @@
1
+ # Copyright 2020 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
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module HypercomputeclusterV1
24
+
25
+ # A [Persistent disk](https://cloud.google.com/compute/docs/disks) used as the
26
+ # boot disk for a Compute Engine VM instance.
27
+ class BootDisk
28
+ include Google::Apis::Core::Hashable
29
+
30
+ # Required. Immutable. Size of the disk in gigabytes. Must be at least 10GB.
31
+ # Corresponds to the JSON property `sizeGb`
32
+ # @return [Fixnum]
33
+ attr_accessor :size_gb
34
+
35
+ # Required. Immutable. [Persistent disk type](https://cloud.google.com/compute/
36
+ # docs/disks#disk-types), in the format `projects/`project`/zones/`zone`/
37
+ # diskTypes/`disk_type``.
38
+ # Corresponds to the JSON property `type`
39
+ # @return [String]
40
+ attr_accessor :type
41
+
42
+ def initialize(**args)
43
+ update!(**args)
44
+ end
45
+
46
+ # Update properties of this object
47
+ def update!(**args)
48
+ @size_gb = args[:size_gb] if args.key?(:size_gb)
49
+ @type = args[:type] if args.key?(:type)
50
+ end
51
+ end
52
+
53
+ # A reference to a [Google Cloud Storage](https://cloud.google.com/storage)
54
+ # bucket.
55
+ class BucketReference
56
+ include Google::Apis::Core::Hashable
57
+
58
+ # Output only. Name of the bucket.
59
+ # Corresponds to the JSON property `bucket`
60
+ # @return [String]
61
+ attr_accessor :bucket
62
+
63
+ def initialize(**args)
64
+ update!(**args)
65
+ end
66
+
67
+ # Update properties of this object
68
+ def update!(**args)
69
+ @bucket = args[:bucket] if args.key?(:bucket)
70
+ end
71
+ end
72
+
73
+ # The request message for Operations.CancelOperation.
74
+ class CancelOperationRequest
75
+ include Google::Apis::Core::Hashable
76
+
77
+ def initialize(**args)
78
+ update!(**args)
79
+ end
80
+
81
+ # Update properties of this object
82
+ def update!(**args)
83
+ end
84
+ end
85
+
86
+ # A collection of virtual machines and connected resources forming a high-
87
+ # performance computing cluster capable of running large-scale, tightly coupled
88
+ # workloads. A cluster combines a set a compute resources that perform
89
+ # computations, storage resources that contain inputs and store outputs, an
90
+ # orchestrator that is responsible for assigning jobs to compute resources, and
91
+ # network resources that connect everything together.
92
+ class Cluster
93
+ include Google::Apis::Core::Hashable
94
+
95
+ # Optional. Compute resources available to the cluster. Keys specify the ID of
96
+ # the compute resource by which it can be referenced elsewhere, and must conform
97
+ # to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case,
98
+ # alphanumeric, and at most 63 characters).
99
+ # Corresponds to the JSON property `computeResources`
100
+ # @return [Hash<String,Google::Apis::HypercomputeclusterV1::ComputeResource>]
101
+ attr_accessor :compute_resources
102
+
103
+ # Output only. Time that the cluster was originally created.
104
+ # Corresponds to the JSON property `createTime`
105
+ # @return [String]
106
+ attr_accessor :create_time
107
+
108
+ # Optional. User-provided description of the cluster.
109
+ # Corresponds to the JSON property `description`
110
+ # @return [String]
111
+ attr_accessor :description
112
+
113
+ # Optional. [Labels](https://cloud.google.com/compute/docs/labeling-resources)
114
+ # applied to the cluster. Labels can be used to organize clusters and to filter
115
+ # them in queries.
116
+ # Corresponds to the JSON property `labels`
117
+ # @return [Hash<String,String>]
118
+ attr_accessor :labels
119
+
120
+ # Identifier. [Relative resource name](https://google.aip.dev/122) of the
121
+ # cluster, in the format `projects/`project`/locations/`location`/clusters/`
122
+ # cluster``.
123
+ # Corresponds to the JSON property `name`
124
+ # @return [String]
125
+ attr_accessor :name
126
+
127
+ # Optional. Network resources available to the cluster. Must contain at most one
128
+ # value. Keys specify the ID of the network resource by which it can be
129
+ # referenced elsewhere, and must conform to [RFC-1034](https://datatracker.ietf.
130
+ # org/doc/html/rfc1034) (lower-case, alphanumeric, and at most 63 characters).
131
+ # Corresponds to the JSON property `networkResources`
132
+ # @return [Hash<String,Google::Apis::HypercomputeclusterV1::NetworkResource>]
133
+ attr_accessor :network_resources
134
+
135
+ # The component responsible for scheduling and running workloads on the cluster
136
+ # as well as providing the user interface for interacting with the cluster at
137
+ # runtime.
138
+ # Corresponds to the JSON property `orchestrator`
139
+ # @return [Google::Apis::HypercomputeclusterV1::Orchestrator]
140
+ attr_accessor :orchestrator
141
+
142
+ # Output only. Indicates whether changes to the cluster are currently in flight.
143
+ # If this is `true`, then the current state might not match the cluster's
144
+ # intended state.
145
+ # Corresponds to the JSON property `reconciling`
146
+ # @return [Boolean]
147
+ attr_accessor :reconciling
148
+ alias_method :reconciling?, :reconciling
149
+
150
+ # Optional. Storage resources available to the cluster. Keys specify the ID of
151
+ # the storage resource by which it can be referenced elsewhere, and must conform
152
+ # to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case,
153
+ # alphanumeric, and at most 63 characters).
154
+ # Corresponds to the JSON property `storageResources`
155
+ # @return [Hash<String,Google::Apis::HypercomputeclusterV1::StorageResource>]
156
+ attr_accessor :storage_resources
157
+
158
+ # Output only. Time that the cluster was most recently updated.
159
+ # Corresponds to the JSON property `updateTime`
160
+ # @return [String]
161
+ attr_accessor :update_time
162
+
163
+ def initialize(**args)
164
+ update!(**args)
165
+ end
166
+
167
+ # Update properties of this object
168
+ def update!(**args)
169
+ @compute_resources = args[:compute_resources] if args.key?(:compute_resources)
170
+ @create_time = args[:create_time] if args.key?(:create_time)
171
+ @description = args[:description] if args.key?(:description)
172
+ @labels = args[:labels] if args.key?(:labels)
173
+ @name = args[:name] if args.key?(:name)
174
+ @network_resources = args[:network_resources] if args.key?(:network_resources)
175
+ @orchestrator = args[:orchestrator] if args.key?(:orchestrator)
176
+ @reconciling = args[:reconciling] if args.key?(:reconciling)
177
+ @storage_resources = args[:storage_resources] if args.key?(:storage_resources)
178
+ @update_time = args[:update_time] if args.key?(:update_time)
179
+ end
180
+ end
181
+
182
+ # Details about a Compute Engine [instance](https://cloud.google.com/compute/
183
+ # docs/instances).
184
+ class ComputeInstance
185
+ include Google::Apis::Core::Hashable
186
+
187
+ # Output only. Name of the VM instance, in the format `projects/`project`/zones/`
188
+ # zone`/instances/`instance``.
189
+ # Corresponds to the JSON property `instance`
190
+ # @return [String]
191
+ attr_accessor :instance
192
+
193
+ def initialize(**args)
194
+ update!(**args)
195
+ end
196
+
197
+ # Update properties of this object
198
+ def update!(**args)
199
+ @instance = args[:instance] if args.key?(:instance)
200
+ end
201
+ end
202
+
203
+ # When set in a SlurmNodeSet, indicates that the nodeset should be backed by
204
+ # Compute Engine VM instances.
205
+ class ComputeInstanceSlurmNodeSet
206
+ include Google::Apis::Core::Hashable
207
+
208
+ # A [Persistent disk](https://cloud.google.com/compute/docs/disks) used as the
209
+ # boot disk for a Compute Engine VM instance.
210
+ # Corresponds to the JSON property `bootDisk`
211
+ # @return [Google::Apis::HypercomputeclusterV1::BootDisk]
212
+ attr_accessor :boot_disk
213
+
214
+ # Optional. [Labels](https://cloud.google.com/compute/docs/labeling-resources)
215
+ # that should be applied to each VM instance in the nodeset.
216
+ # Corresponds to the JSON property `labels`
217
+ # @return [Hash<String,String>]
218
+ attr_accessor :labels
219
+
220
+ # Optional. [Startup script](https://cloud.google.com/compute/docs/instances/
221
+ # startup-scripts/linux) to be run on each VM instance in the nodeset. Max 256KB.
222
+ # Corresponds to the JSON property `startupScript`
223
+ # @return [String]
224
+ attr_accessor :startup_script
225
+
226
+ def initialize(**args)
227
+ update!(**args)
228
+ end
229
+
230
+ # Update properties of this object
231
+ def update!(**args)
232
+ @boot_disk = args[:boot_disk] if args.key?(:boot_disk)
233
+ @labels = args[:labels] if args.key?(:labels)
234
+ @startup_script = args[:startup_script] if args.key?(:startup_script)
235
+ end
236
+ end
237
+
238
+ # A resource defining how virtual machines and accelerators should be
239
+ # provisioned for the cluster.
240
+ class ComputeResource
241
+ include Google::Apis::Core::Hashable
242
+
243
+ # Describes how a compute resource should be created at runtime.
244
+ # Corresponds to the JSON property `config`
245
+ # @return [Google::Apis::HypercomputeclusterV1::ComputeResourceConfig]
246
+ attr_accessor :config
247
+
248
+ def initialize(**args)
249
+ update!(**args)
250
+ end
251
+
252
+ # Update properties of this object
253
+ def update!(**args)
254
+ @config = args[:config] if args.key?(:config)
255
+ end
256
+ end
257
+
258
+ # Describes how a compute resource should be created at runtime.
259
+ class ComputeResourceConfig
260
+ include Google::Apis::Core::Hashable
261
+
262
+ # When set in a ComputeResourceConfig, indicates that VM instances should be
263
+ # created using [Flex Start](https://cloud.google.com/compute/docs/instances/
264
+ # provisioning-models).
265
+ # Corresponds to the JSON property `newFlexStartInstances`
266
+ # @return [Google::Apis::HypercomputeclusterV1::NewFlexStartInstancesConfig]
267
+ attr_accessor :new_flex_start_instances
268
+
269
+ # When set in a ComputeResourceConfig, indicates that on-demand (i.e., using the
270
+ # standard provisioning model) VM instances should be created.
271
+ # Corresponds to the JSON property `newOnDemandInstances`
272
+ # @return [Google::Apis::HypercomputeclusterV1::NewOnDemandInstancesConfig]
273
+ attr_accessor :new_on_demand_instances
274
+
275
+ # When set in a ComputeResourceConfig, indicates that VM instances should be
276
+ # created from a [reservation](https://cloud.google.com/compute/docs/instances/
277
+ # reservations-overview).
278
+ # Corresponds to the JSON property `newReservedInstances`
279
+ # @return [Google::Apis::HypercomputeclusterV1::NewReservedInstancesConfig]
280
+ attr_accessor :new_reserved_instances
281
+
282
+ # When set in a ComputeResourceConfig, indicates that [spot VM](https://cloud.
283
+ # google.com/compute/docs/instances/spot) instances should be created.
284
+ # Corresponds to the JSON property `newSpotInstances`
285
+ # @return [Google::Apis::HypercomputeclusterV1::NewSpotInstancesConfig]
286
+ attr_accessor :new_spot_instances
287
+
288
+ def initialize(**args)
289
+ update!(**args)
290
+ end
291
+
292
+ # Update properties of this object
293
+ def update!(**args)
294
+ @new_flex_start_instances = args[:new_flex_start_instances] if args.key?(:new_flex_start_instances)
295
+ @new_on_demand_instances = args[:new_on_demand_instances] if args.key?(:new_on_demand_instances)
296
+ @new_reserved_instances = args[:new_reserved_instances] if args.key?(:new_reserved_instances)
297
+ @new_spot_instances = args[:new_spot_instances] if args.key?(:new_spot_instances)
298
+ end
299
+ end
300
+
301
+ # A generic empty message that you can re-use to avoid defining duplicated empty
302
+ # messages in your APIs. A typical example is to use it as the request or the
303
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
304
+ # protobuf.Empty) returns (google.protobuf.Empty); `
305
+ class Empty
306
+ include Google::Apis::Core::Hashable
307
+
308
+ def initialize(**args)
309
+ update!(**args)
310
+ end
311
+
312
+ # Update properties of this object
313
+ def update!(**args)
314
+ end
315
+ end
316
+
317
+ # When set in a StorageResourceConfig, indicates that an existing [Google Cloud
318
+ # Storage](https://cloud.google.com/storage) bucket should be imported.
319
+ class ExistingBucketConfig
320
+ include Google::Apis::Core::Hashable
321
+
322
+ # Required. Immutable. Name of the Cloud Storage bucket to import.
323
+ # Corresponds to the JSON property `bucket`
324
+ # @return [String]
325
+ attr_accessor :bucket
326
+
327
+ def initialize(**args)
328
+ update!(**args)
329
+ end
330
+
331
+ # Update properties of this object
332
+ def update!(**args)
333
+ @bucket = args[:bucket] if args.key?(:bucket)
334
+ end
335
+ end
336
+
337
+ # When set in a StorageResourceConfig, indicates that an existing [Filestore](
338
+ # https://cloud.google.com/filestore) instance should be imported.
339
+ class ExistingFilestoreConfig
340
+ include Google::Apis::Core::Hashable
341
+
342
+ # Required. Immutable. Name of the Filestore instance to import, in the format `
343
+ # projects/`project`/locations/`location`/instances/`instance``
344
+ # Corresponds to the JSON property `filestore`
345
+ # @return [String]
346
+ attr_accessor :filestore
347
+
348
+ def initialize(**args)
349
+ update!(**args)
350
+ end
351
+
352
+ # Update properties of this object
353
+ def update!(**args)
354
+ @filestore = args[:filestore] if args.key?(:filestore)
355
+ end
356
+ end
357
+
358
+ # When set in a StorageResourceConfig, indicates that an existing [Managed
359
+ # Lustre](https://cloud.google.com/products/managed-lustre) instance should be
360
+ # imported.
361
+ class ExistingLustreConfig
362
+ include Google::Apis::Core::Hashable
363
+
364
+ # Required. Immutable. Name of the Managed Lustre instance to import, in the
365
+ # format `projects/`project`/locations/`location`/instances/`instance``
366
+ # Corresponds to the JSON property `lustre`
367
+ # @return [String]
368
+ attr_accessor :lustre
369
+
370
+ def initialize(**args)
371
+ update!(**args)
372
+ end
373
+
374
+ # Update properties of this object
375
+ def update!(**args)
376
+ @lustre = args[:lustre] if args.key?(:lustre)
377
+ end
378
+ end
379
+
380
+ # When set in a NetworkResourceConfig, indicates that an existing network should
381
+ # be imported.
382
+ class ExistingNetworkConfig
383
+ include Google::Apis::Core::Hashable
384
+
385
+ # Required. Immutable. Name of the network to import, in the format `projects/`
386
+ # project`/global/networks/`network``.
387
+ # Corresponds to the JSON property `network`
388
+ # @return [String]
389
+ attr_accessor :network
390
+
391
+ # Required. Immutable. Particular subnetwork to use, in the format `projects/`
392
+ # project`/regions/`region`/subnetworks/`subnetwork``.
393
+ # Corresponds to the JSON property `subnetwork`
394
+ # @return [String]
395
+ attr_accessor :subnetwork
396
+
397
+ def initialize(**args)
398
+ update!(**args)
399
+ end
400
+
401
+ # Update properties of this object
402
+ def update!(**args)
403
+ @network = args[:network] if args.key?(:network)
404
+ @subnetwork = args[:subnetwork] if args.key?(:subnetwork)
405
+ end
406
+ end
407
+
408
+ # Message describing filestore configuration
409
+ class FileShareConfig
410
+ include Google::Apis::Core::Hashable
411
+
412
+ # Required. Size of the filestore in GB. Must be between 1024 and 102400, and
413
+ # must meet scalability requirements described at https://cloud.google.com/
414
+ # filestore/docs/service-tiers.
415
+ # Corresponds to the JSON property `capacityGb`
416
+ # @return [Fixnum]
417
+ attr_accessor :capacity_gb
418
+
419
+ # Required. Filestore share location
420
+ # Corresponds to the JSON property `fileShare`
421
+ # @return [String]
422
+ attr_accessor :file_share
423
+
424
+ def initialize(**args)
425
+ update!(**args)
426
+ end
427
+
428
+ # Update properties of this object
429
+ def update!(**args)
430
+ @capacity_gb = args[:capacity_gb] if args.key?(:capacity_gb)
431
+ @file_share = args[:file_share] if args.key?(:file_share)
432
+ end
433
+ end
434
+
435
+ # A reference to a [Filestore](https://cloud.google.com/filestore) instance.
436
+ class FilestoreReference
437
+ include Google::Apis::Core::Hashable
438
+
439
+ # Output only. Name of the Filestore instance, in the format `projects/`project`/
440
+ # locations/`location`/instances/`instance``
441
+ # Corresponds to the JSON property `filestore`
442
+ # @return [String]
443
+ attr_accessor :filestore
444
+
445
+ def initialize(**args)
446
+ update!(**args)
447
+ end
448
+
449
+ # Update properties of this object
450
+ def update!(**args)
451
+ @filestore = args[:filestore] if args.key?(:filestore)
452
+ end
453
+ end
454
+
455
+ # Message describing Google Cloud Storage autoclass configuration
456
+ class GcsAutoclassConfig
457
+ include Google::Apis::Core::Hashable
458
+
459
+ # Required. Enables Auto-class feature.
460
+ # Corresponds to the JSON property `enabled`
461
+ # @return [Boolean]
462
+ attr_accessor :enabled
463
+ alias_method :enabled?, :enabled
464
+
465
+ # Optional. Terminal storage class of the autoclass bucket
466
+ # Corresponds to the JSON property `terminalStorageClass`
467
+ # @return [String]
468
+ attr_accessor :terminal_storage_class
469
+
470
+ def initialize(**args)
471
+ update!(**args)
472
+ end
473
+
474
+ # Update properties of this object
475
+ def update!(**args)
476
+ @enabled = args[:enabled] if args.key?(:enabled)
477
+ @terminal_storage_class = args[:terminal_storage_class] if args.key?(:terminal_storage_class)
478
+ end
479
+ end
480
+
481
+ # Message describing Google Cloud Storage hierarchical namespace configuration
482
+ class GcsHierarchicalNamespaceConfig
483
+ include Google::Apis::Core::Hashable
484
+
485
+ # Required. Enables hierarchical namespace setup for the bucket.
486
+ # Corresponds to the JSON property `enabled`
487
+ # @return [Boolean]
488
+ attr_accessor :enabled
489
+ alias_method :enabled?, :enabled
490
+
491
+ def initialize(**args)
492
+ update!(**args)
493
+ end
494
+
495
+ # Update properties of this object
496
+ def update!(**args)
497
+ @enabled = args[:enabled] if args.key?(:enabled)
498
+ end
499
+ end
500
+
501
+ # Response message for ListClusters.
502
+ class ListClustersResponse
503
+ include Google::Apis::Core::Hashable
504
+
505
+ # Clusters in the specified location.
506
+ # Corresponds to the JSON property `clusters`
507
+ # @return [Array<Google::Apis::HypercomputeclusterV1::Cluster>]
508
+ attr_accessor :clusters
509
+
510
+ # A token that can be sent as `page_token` to retrieve the next page. If this
511
+ # field is absent, there are no subsequent pages.
512
+ # Corresponds to the JSON property `nextPageToken`
513
+ # @return [String]
514
+ attr_accessor :next_page_token
515
+
516
+ # Locations that could not be reached.
517
+ # Corresponds to the JSON property `unreachable`
518
+ # @return [Array<String>]
519
+ attr_accessor :unreachable
520
+
521
+ def initialize(**args)
522
+ update!(**args)
523
+ end
524
+
525
+ # Update properties of this object
526
+ def update!(**args)
527
+ @clusters = args[:clusters] if args.key?(:clusters)
528
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
529
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
530
+ end
531
+ end
532
+
533
+ # The response message for Locations.ListLocations.
534
+ class ListLocationsResponse
535
+ include Google::Apis::Core::Hashable
536
+
537
+ # A list of locations that matches the specified filter in the request.
538
+ # Corresponds to the JSON property `locations`
539
+ # @return [Array<Google::Apis::HypercomputeclusterV1::Location>]
540
+ attr_accessor :locations
541
+
542
+ # The standard List next-page token.
543
+ # Corresponds to the JSON property `nextPageToken`
544
+ # @return [String]
545
+ attr_accessor :next_page_token
546
+
547
+ def initialize(**args)
548
+ update!(**args)
549
+ end
550
+
551
+ # Update properties of this object
552
+ def update!(**args)
553
+ @locations = args[:locations] if args.key?(:locations)
554
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
555
+ end
556
+ end
557
+
558
+ # The response message for Operations.ListOperations.
559
+ class ListOperationsResponse
560
+ include Google::Apis::Core::Hashable
561
+
562
+ # The standard List next-page token.
563
+ # Corresponds to the JSON property `nextPageToken`
564
+ # @return [String]
565
+ attr_accessor :next_page_token
566
+
567
+ # A list of operations that matches the specified filter in the request.
568
+ # Corresponds to the JSON property `operations`
569
+ # @return [Array<Google::Apis::HypercomputeclusterV1::Operation>]
570
+ attr_accessor :operations
571
+
572
+ # Unordered list. Unreachable resources. Populated when the request sets `
573
+ # ListOperationsRequest.return_partial_success` and reads across collections.
574
+ # For example, when attempting to list all resources across all supported
575
+ # locations.
576
+ # Corresponds to the JSON property `unreachable`
577
+ # @return [Array<String>]
578
+ attr_accessor :unreachable
579
+
580
+ def initialize(**args)
581
+ update!(**args)
582
+ end
583
+
584
+ # Update properties of this object
585
+ def update!(**args)
586
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
587
+ @operations = args[:operations] if args.key?(:operations)
588
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
589
+ end
590
+ end
591
+
592
+ # A resource that represents a Google Cloud location.
593
+ class Location
594
+ include Google::Apis::Core::Hashable
595
+
596
+ # The friendly name for this location, typically a nearby city name. For example,
597
+ # "Tokyo".
598
+ # Corresponds to the JSON property `displayName`
599
+ # @return [String]
600
+ attr_accessor :display_name
601
+
602
+ # Cross-service attributes for the location. For example `"cloud.googleapis.com/
603
+ # region": "us-east1"`
604
+ # Corresponds to the JSON property `labels`
605
+ # @return [Hash<String,String>]
606
+ attr_accessor :labels
607
+
608
+ # The canonical id for this location. For example: `"us-east1"`.
609
+ # Corresponds to the JSON property `locationId`
610
+ # @return [String]
611
+ attr_accessor :location_id
612
+
613
+ # Service-specific metadata. For example the available capacity at the given
614
+ # location.
615
+ # Corresponds to the JSON property `metadata`
616
+ # @return [Hash<String,Object>]
617
+ attr_accessor :metadata
618
+
619
+ # Resource name for the location, which may vary between implementations. For
620
+ # example: `"projects/example-project/locations/us-east1"`
621
+ # Corresponds to the JSON property `name`
622
+ # @return [String]
623
+ attr_accessor :name
624
+
625
+ def initialize(**args)
626
+ update!(**args)
627
+ end
628
+
629
+ # Update properties of this object
630
+ def update!(**args)
631
+ @display_name = args[:display_name] if args.key?(:display_name)
632
+ @labels = args[:labels] if args.key?(:labels)
633
+ @location_id = args[:location_id] if args.key?(:location_id)
634
+ @metadata = args[:metadata] if args.key?(:metadata)
635
+ @name = args[:name] if args.key?(:name)
636
+ end
637
+ end
638
+
639
+ # A reference to a [Managed Lustre](https://cloud.google.com/products/managed-
640
+ # lustre) instance.
641
+ class LustreReference
642
+ include Google::Apis::Core::Hashable
643
+
644
+ # Output only. Name of the Managed Lustre instance, in the format `projects/`
645
+ # project`/locations/`location`/instances/`instance``
646
+ # Corresponds to the JSON property `lustre`
647
+ # @return [String]
648
+ attr_accessor :lustre
649
+
650
+ def initialize(**args)
651
+ update!(**args)
652
+ end
653
+
654
+ # Update properties of this object
655
+ def update!(**args)
656
+ @lustre = args[:lustre] if args.key?(:lustre)
657
+ end
658
+ end
659
+
660
+ # A reference to a [VPC network](https://cloud.google.com/vpc/docs/vpc) in
661
+ # Google Compute Engine.
662
+ class NetworkReference
663
+ include Google::Apis::Core::Hashable
664
+
665
+ # Output only. Name of the network, in the format `projects/`project`/global/
666
+ # networks/`network``.
667
+ # Corresponds to the JSON property `network`
668
+ # @return [String]
669
+ attr_accessor :network
670
+
671
+ # Output only. Name of the particular subnetwork being used by the cluster, in
672
+ # the format `projects/`project`/regions/`region`/subnetworks/`subnetwork``.
673
+ # Corresponds to the JSON property `subnetwork`
674
+ # @return [String]
675
+ attr_accessor :subnetwork
676
+
677
+ def initialize(**args)
678
+ update!(**args)
679
+ end
680
+
681
+ # Update properties of this object
682
+ def update!(**args)
683
+ @network = args[:network] if args.key?(:network)
684
+ @subnetwork = args[:subnetwork] if args.key?(:subnetwork)
685
+ end
686
+ end
687
+
688
+ # A resource representing a network that connects the various components of a
689
+ # cluster together.
690
+ class NetworkResource
691
+ include Google::Apis::Core::Hashable
692
+
693
+ # Describes how a network resource should be initialized. Each network resource
694
+ # can either be imported from an existing Google Cloud resource or initialized
695
+ # when the cluster is created.
696
+ # Corresponds to the JSON property `config`
697
+ # @return [Google::Apis::HypercomputeclusterV1::NetworkResourceConfig]
698
+ attr_accessor :config
699
+
700
+ # A reference to a [VPC network](https://cloud.google.com/vpc/docs/vpc) in
701
+ # Google Compute Engine.
702
+ # Corresponds to the JSON property `network`
703
+ # @return [Google::Apis::HypercomputeclusterV1::NetworkReference]
704
+ attr_accessor :network
705
+
706
+ def initialize(**args)
707
+ update!(**args)
708
+ end
709
+
710
+ # Update properties of this object
711
+ def update!(**args)
712
+ @config = args[:config] if args.key?(:config)
713
+ @network = args[:network] if args.key?(:network)
714
+ end
715
+ end
716
+
717
+ # Describes how a network resource should be initialized. Each network resource
718
+ # can either be imported from an existing Google Cloud resource or initialized
719
+ # when the cluster is created.
720
+ class NetworkResourceConfig
721
+ include Google::Apis::Core::Hashable
722
+
723
+ # When set in a NetworkResourceConfig, indicates that an existing network should
724
+ # be imported.
725
+ # Corresponds to the JSON property `existingNetwork`
726
+ # @return [Google::Apis::HypercomputeclusterV1::ExistingNetworkConfig]
727
+ attr_accessor :existing_network
728
+
729
+ # When set in a NetworkResourceConfig, indicates that a new network should be
730
+ # created.
731
+ # Corresponds to the JSON property `newNetwork`
732
+ # @return [Google::Apis::HypercomputeclusterV1::NewNetworkConfig]
733
+ attr_accessor :new_network
734
+
735
+ def initialize(**args)
736
+ update!(**args)
737
+ end
738
+
739
+ # Update properties of this object
740
+ def update!(**args)
741
+ @existing_network = args[:existing_network] if args.key?(:existing_network)
742
+ @new_network = args[:new_network] if args.key?(:new_network)
743
+ end
744
+ end
745
+
746
+ # When set in a StorageResourceConfig, indicates that a new [Google Cloud
747
+ # Storage](https://cloud.google.com/storage) bucket should be created.
748
+ class NewBucketConfig
749
+ include Google::Apis::Core::Hashable
750
+
751
+ # Message describing Google Cloud Storage autoclass configuration
752
+ # Corresponds to the JSON property `autoclass`
753
+ # @return [Google::Apis::HypercomputeclusterV1::GcsAutoclassConfig]
754
+ attr_accessor :autoclass
755
+
756
+ # Required. Immutable. Name of the Cloud Storage bucket to create.
757
+ # Corresponds to the JSON property `bucket`
758
+ # @return [String]
759
+ attr_accessor :bucket
760
+
761
+ # Message describing Google Cloud Storage hierarchical namespace configuration
762
+ # Corresponds to the JSON property `hierarchicalNamespace`
763
+ # @return [Google::Apis::HypercomputeclusterV1::GcsHierarchicalNamespaceConfig]
764
+ attr_accessor :hierarchical_namespace
765
+
766
+ # Optional. Immutable. If set, uses the provided storage class as the bucket's
767
+ # default storage class.
768
+ # Corresponds to the JSON property `storageClass`
769
+ # @return [String]
770
+ attr_accessor :storage_class
771
+
772
+ def initialize(**args)
773
+ update!(**args)
774
+ end
775
+
776
+ # Update properties of this object
777
+ def update!(**args)
778
+ @autoclass = args[:autoclass] if args.key?(:autoclass)
779
+ @bucket = args[:bucket] if args.key?(:bucket)
780
+ @hierarchical_namespace = args[:hierarchical_namespace] if args.key?(:hierarchical_namespace)
781
+ @storage_class = args[:storage_class] if args.key?(:storage_class)
782
+ end
783
+ end
784
+
785
+ # When set in a StorageResourceConfig, indicates that a new [Filestore](https://
786
+ # cloud.google.com/filestore) instance should be created.
787
+ class NewFilestoreConfig
788
+ include Google::Apis::Core::Hashable
789
+
790
+ # Optional. Immutable. Description of the instance. Maximum of 2048 characters.
791
+ # Corresponds to the JSON property `description`
792
+ # @return [String]
793
+ attr_accessor :description
794
+
795
+ # Required. Immutable. File system shares on the instance. Exactly one file
796
+ # share must be specified.
797
+ # Corresponds to the JSON property `fileShares`
798
+ # @return [Array<Google::Apis::HypercomputeclusterV1::FileShareConfig>]
799
+ attr_accessor :file_shares
800
+
801
+ # Required. Immutable. Name of the Filestore instance to create, in the format `
802
+ # projects/`project`/locations/`location`/instances/`instance``
803
+ # Corresponds to the JSON property `filestore`
804
+ # @return [String]
805
+ attr_accessor :filestore
806
+
807
+ # Optional. Immutable. Access protocol to use for all file shares in the
808
+ # instance. Defaults to NFS V3 if not set.
809
+ # Corresponds to the JSON property `protocol`
810
+ # @return [String]
811
+ attr_accessor :protocol
812
+
813
+ # Required. Immutable. Service tier to use for the instance.
814
+ # Corresponds to the JSON property `tier`
815
+ # @return [String]
816
+ attr_accessor :tier
817
+
818
+ def initialize(**args)
819
+ update!(**args)
820
+ end
821
+
822
+ # Update properties of this object
823
+ def update!(**args)
824
+ @description = args[:description] if args.key?(:description)
825
+ @file_shares = args[:file_shares] if args.key?(:file_shares)
826
+ @filestore = args[:filestore] if args.key?(:filestore)
827
+ @protocol = args[:protocol] if args.key?(:protocol)
828
+ @tier = args[:tier] if args.key?(:tier)
829
+ end
830
+ end
831
+
832
+ # When set in a ComputeResourceConfig, indicates that VM instances should be
833
+ # created using [Flex Start](https://cloud.google.com/compute/docs/instances/
834
+ # provisioning-models).
835
+ class NewFlexStartInstancesConfig
836
+ include Google::Apis::Core::Hashable
837
+
838
+ # Required. Immutable. Name of the Compute Engine [machine type](https://cloud.
839
+ # google.com/compute/docs/machine-resource) to use, e.g. `n2-standard-2`.
840
+ # Corresponds to the JSON property `machineType`
841
+ # @return [String]
842
+ attr_accessor :machine_type
843
+
844
+ # Required. Immutable. Specifies the time limit for created instances. Instances
845
+ # will be terminated at the end of this duration.
846
+ # Corresponds to the JSON property `maxDuration`
847
+ # @return [String]
848
+ attr_accessor :max_duration
849
+
850
+ # Required. Immutable. Name of the zone in which VM instances should run, e.g., `
851
+ # us-central1-a`. Must be in the same region as the cluster, and must match the
852
+ # zone of any other resources specified in the cluster.
853
+ # Corresponds to the JSON property `zone`
854
+ # @return [String]
855
+ attr_accessor :zone
856
+
857
+ def initialize(**args)
858
+ update!(**args)
859
+ end
860
+
861
+ # Update properties of this object
862
+ def update!(**args)
863
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
864
+ @max_duration = args[:max_duration] if args.key?(:max_duration)
865
+ @zone = args[:zone] if args.key?(:zone)
866
+ end
867
+ end
868
+
869
+ # When set in a StorageResourceConfig, indicates that a new [Managed Lustre](
870
+ # https://cloud.google.com/products/managed-lustre) instance should be created.
871
+ class NewLustreConfig
872
+ include Google::Apis::Core::Hashable
873
+
874
+ # Required. Immutable. Storage capacity of the instance in gibibytes (GiB).
875
+ # Allowed values are between 18000 and 7632000.
876
+ # Corresponds to the JSON property `capacityGb`
877
+ # @return [Fixnum]
878
+ attr_accessor :capacity_gb
879
+
880
+ # Optional. Immutable. Description of the Managed Lustre instance. Maximum of
881
+ # 2048 characters.
882
+ # Corresponds to the JSON property `description`
883
+ # @return [String]
884
+ attr_accessor :description
885
+
886
+ # Required. Immutable. Filesystem name for this instance. This name is used by
887
+ # client-side tools, including when mounting the instance. Must be 8 characters
888
+ # or less and can only contain letters and numbers.
889
+ # Corresponds to the JSON property `filesystem`
890
+ # @return [String]
891
+ attr_accessor :filesystem
892
+
893
+ # Required. Immutable. Name of the Managed Lustre instance to create, in the
894
+ # format `projects/`project`/locations/`location`/instances/`instance``
895
+ # Corresponds to the JSON property `lustre`
896
+ # @return [String]
897
+ attr_accessor :lustre
898
+
899
+ def initialize(**args)
900
+ update!(**args)
901
+ end
902
+
903
+ # Update properties of this object
904
+ def update!(**args)
905
+ @capacity_gb = args[:capacity_gb] if args.key?(:capacity_gb)
906
+ @description = args[:description] if args.key?(:description)
907
+ @filesystem = args[:filesystem] if args.key?(:filesystem)
908
+ @lustre = args[:lustre] if args.key?(:lustre)
909
+ end
910
+ end
911
+
912
+ # When set in a NetworkResourceConfig, indicates that a new network should be
913
+ # created.
914
+ class NewNetworkConfig
915
+ include Google::Apis::Core::Hashable
916
+
917
+ # Optional. Immutable. Description of the network. Maximum of 2048 characters.
918
+ # Corresponds to the JSON property `description`
919
+ # @return [String]
920
+ attr_accessor :description
921
+
922
+ # Required. Immutable. Name of the network to create, in the format `projects/`
923
+ # project`/global/networks/`network``.
924
+ # Corresponds to the JSON property `network`
925
+ # @return [String]
926
+ attr_accessor :network
927
+
928
+ def initialize(**args)
929
+ update!(**args)
930
+ end
931
+
932
+ # Update properties of this object
933
+ def update!(**args)
934
+ @description = args[:description] if args.key?(:description)
935
+ @network = args[:network] if args.key?(:network)
936
+ end
937
+ end
938
+
939
+ # When set in a ComputeResourceConfig, indicates that on-demand (i.e., using the
940
+ # standard provisioning model) VM instances should be created.
941
+ class NewOnDemandInstancesConfig
942
+ include Google::Apis::Core::Hashable
943
+
944
+ # Required. Immutable. Name of the Compute Engine [machine type](https://cloud.
945
+ # google.com/compute/docs/machine-resource) to use, e.g. `n2-standard-2`.
946
+ # Corresponds to the JSON property `machineType`
947
+ # @return [String]
948
+ attr_accessor :machine_type
949
+
950
+ # Required. Immutable. Name of the zone in which VM instances should run, e.g., `
951
+ # us-central1-a`. Must be in the same region as the cluster, and must match the
952
+ # zone of any other resources specified in the cluster.
953
+ # Corresponds to the JSON property `zone`
954
+ # @return [String]
955
+ attr_accessor :zone
956
+
957
+ def initialize(**args)
958
+ update!(**args)
959
+ end
960
+
961
+ # Update properties of this object
962
+ def update!(**args)
963
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
964
+ @zone = args[:zone] if args.key?(:zone)
965
+ end
966
+ end
967
+
968
+ # When set in a ComputeResourceConfig, indicates that VM instances should be
969
+ # created from a [reservation](https://cloud.google.com/compute/docs/instances/
970
+ # reservations-overview).
971
+ class NewReservedInstancesConfig
972
+ include Google::Apis::Core::Hashable
973
+
974
+ # Optional. Immutable. Name of the reservation from which VM instances should be
975
+ # created, in the format `projects/`project`/zones/`zone`/reservations/`
976
+ # reservation``.
977
+ # Corresponds to the JSON property `reservation`
978
+ # @return [String]
979
+ attr_accessor :reservation
980
+
981
+ def initialize(**args)
982
+ update!(**args)
983
+ end
984
+
985
+ # Update properties of this object
986
+ def update!(**args)
987
+ @reservation = args[:reservation] if args.key?(:reservation)
988
+ end
989
+ end
990
+
991
+ # When set in a ComputeResourceConfig, indicates that [spot VM](https://cloud.
992
+ # google.com/compute/docs/instances/spot) instances should be created.
993
+ class NewSpotInstancesConfig
994
+ include Google::Apis::Core::Hashable
995
+
996
+ # Required. Immutable. Name of the Compute Engine [machine type](https://cloud.
997
+ # google.com/compute/docs/machine-resource) to use, e.g. `n2-standard-2`.
998
+ # Corresponds to the JSON property `machineType`
999
+ # @return [String]
1000
+ attr_accessor :machine_type
1001
+
1002
+ # Optional. Specifies the termination action of the instance
1003
+ # Corresponds to the JSON property `terminationAction`
1004
+ # @return [String]
1005
+ attr_accessor :termination_action
1006
+
1007
+ # Required. Immutable. Name of the zone in which VM instances should run, e.g., `
1008
+ # us-central1-a`. Must be in the same region as the cluster, and must match the
1009
+ # zone of any other resources specified in the cluster.
1010
+ # Corresponds to the JSON property `zone`
1011
+ # @return [String]
1012
+ attr_accessor :zone
1013
+
1014
+ def initialize(**args)
1015
+ update!(**args)
1016
+ end
1017
+
1018
+ # Update properties of this object
1019
+ def update!(**args)
1020
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
1021
+ @termination_action = args[:termination_action] if args.key?(:termination_action)
1022
+ @zone = args[:zone] if args.key?(:zone)
1023
+ end
1024
+ end
1025
+
1026
+ # This resource represents a long-running operation that is the result of a
1027
+ # network API call.
1028
+ class Operation
1029
+ include Google::Apis::Core::Hashable
1030
+
1031
+ # If the value is `false`, it means the operation is still in progress. If `true`
1032
+ # , the operation is completed, and either `error` or `response` is available.
1033
+ # Corresponds to the JSON property `done`
1034
+ # @return [Boolean]
1035
+ attr_accessor :done
1036
+ alias_method :done?, :done
1037
+
1038
+ # The `Status` type defines a logical error model that is suitable for different
1039
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1040
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1041
+ # data: error code, error message, and error details. You can find out more
1042
+ # about this error model and how to work with it in the [API Design Guide](https:
1043
+ # //cloud.google.com/apis/design/errors).
1044
+ # Corresponds to the JSON property `error`
1045
+ # @return [Google::Apis::HypercomputeclusterV1::Status]
1046
+ attr_accessor :error
1047
+
1048
+ # Service-specific metadata associated with the operation. It typically contains
1049
+ # progress information and common metadata such as create time. Some services
1050
+ # might not provide such metadata. Any method that returns a long-running
1051
+ # operation should document the metadata type, if any.
1052
+ # Corresponds to the JSON property `metadata`
1053
+ # @return [Hash<String,Object>]
1054
+ attr_accessor :metadata
1055
+
1056
+ # The server-assigned name, which is only unique within the same service that
1057
+ # originally returns it. If you use the default HTTP mapping, the `name` should
1058
+ # be a resource name ending with `operations/`unique_id``.
1059
+ # Corresponds to the JSON property `name`
1060
+ # @return [String]
1061
+ attr_accessor :name
1062
+
1063
+ # The normal, successful response of the operation. If the original method
1064
+ # returns no data on success, such as `Delete`, the response is `google.protobuf.
1065
+ # Empty`. If the original method is standard `Get`/`Create`/`Update`, the
1066
+ # response should be the resource. For other methods, the response should have
1067
+ # the type `XxxResponse`, where `Xxx` is the original method name. For example,
1068
+ # if the original method name is `TakeSnapshot()`, the inferred response type is
1069
+ # `TakeSnapshotResponse`.
1070
+ # Corresponds to the JSON property `response`
1071
+ # @return [Hash<String,Object>]
1072
+ attr_accessor :response
1073
+
1074
+ def initialize(**args)
1075
+ update!(**args)
1076
+ end
1077
+
1078
+ # Update properties of this object
1079
+ def update!(**args)
1080
+ @done = args[:done] if args.key?(:done)
1081
+ @error = args[:error] if args.key?(:error)
1082
+ @metadata = args[:metadata] if args.key?(:metadata)
1083
+ @name = args[:name] if args.key?(:name)
1084
+ @response = args[:response] if args.key?(:response)
1085
+ end
1086
+ end
1087
+
1088
+ # Represents the metadata of the long-running operation.
1089
+ class OperationMetadata
1090
+ include Google::Apis::Core::Hashable
1091
+
1092
+ # Output only. API version used to start the operation.
1093
+ # Corresponds to the JSON property `apiVersion`
1094
+ # @return [String]
1095
+ attr_accessor :api_version
1096
+
1097
+ # Output only. The time the operation was created.
1098
+ # Corresponds to the JSON property `createTime`
1099
+ # @return [String]
1100
+ attr_accessor :create_time
1101
+
1102
+ # Output only. The time the operation finished running.
1103
+ # Corresponds to the JSON property `endTime`
1104
+ # @return [String]
1105
+ attr_accessor :end_time
1106
+
1107
+ # Output only. Identifies whether the user has requested cancellation of the
1108
+ # operation. Operations that have been cancelled successfully have google.
1109
+ # longrunning.Operation.error value with a google.rpc.Status.code of `1`,
1110
+ # corresponding to `Code.CANCELLED`.
1111
+ # Corresponds to the JSON property `requestedCancellation`
1112
+ # @return [Boolean]
1113
+ attr_accessor :requested_cancellation
1114
+ alias_method :requested_cancellation?, :requested_cancellation
1115
+
1116
+ # Output only. Server-defined resource path for the target of the operation.
1117
+ # Corresponds to the JSON property `target`
1118
+ # @return [String]
1119
+ attr_accessor :target
1120
+
1121
+ # Output only. Name of the verb executed by the operation.
1122
+ # Corresponds to the JSON property `verb`
1123
+ # @return [String]
1124
+ attr_accessor :verb
1125
+
1126
+ def initialize(**args)
1127
+ update!(**args)
1128
+ end
1129
+
1130
+ # Update properties of this object
1131
+ def update!(**args)
1132
+ @api_version = args[:api_version] if args.key?(:api_version)
1133
+ @create_time = args[:create_time] if args.key?(:create_time)
1134
+ @end_time = args[:end_time] if args.key?(:end_time)
1135
+ @requested_cancellation = args[:requested_cancellation] if args.key?(:requested_cancellation)
1136
+ @target = args[:target] if args.key?(:target)
1137
+ @verb = args[:verb] if args.key?(:verb)
1138
+ end
1139
+ end
1140
+
1141
+ # The component responsible for scheduling and running workloads on the cluster
1142
+ # as well as providing the user interface for interacting with the cluster at
1143
+ # runtime.
1144
+ class Orchestrator
1145
+ include Google::Apis::Core::Hashable
1146
+
1147
+ # When set in Orchestrator, indicates that the cluster should use [Slurm](https:/
1148
+ # /slurm.schedmd.com/) as the orchestrator.
1149
+ # Corresponds to the JSON property `slurm`
1150
+ # @return [Google::Apis::HypercomputeclusterV1::SlurmOrchestrator]
1151
+ attr_accessor :slurm
1152
+
1153
+ def initialize(**args)
1154
+ update!(**args)
1155
+ end
1156
+
1157
+ # Update properties of this object
1158
+ def update!(**args)
1159
+ @slurm = args[:slurm] if args.key?(:slurm)
1160
+ end
1161
+ end
1162
+
1163
+ # Configuration for Slurm [login nodes](https://slurm.schedmd.com/
1164
+ # quickstart_admin.html#login) in the cluster. Login nodes are Compute Engine VM
1165
+ # instances that allow users to access the cluster over SSH.
1166
+ class SlurmLoginNodes
1167
+ include Google::Apis::Core::Hashable
1168
+
1169
+ # A [Persistent disk](https://cloud.google.com/compute/docs/disks) used as the
1170
+ # boot disk for a Compute Engine VM instance.
1171
+ # Corresponds to the JSON property `bootDisk`
1172
+ # @return [Google::Apis::HypercomputeclusterV1::BootDisk]
1173
+ attr_accessor :boot_disk
1174
+
1175
+ # Required. Number of login node instances to create.
1176
+ # Corresponds to the JSON property `count`
1177
+ # @return [Fixnum]
1178
+ attr_accessor :count
1179
+
1180
+ # Optional. Whether [OS Login](https://cloud.google.com/compute/docs/oslogin)
1181
+ # should be enabled on login node instances.
1182
+ # Corresponds to the JSON property `enableOsLogin`
1183
+ # @return [Boolean]
1184
+ attr_accessor :enable_os_login
1185
+ alias_method :enable_os_login?, :enable_os_login
1186
+
1187
+ # Optional. Whether login node instances should be assigned [external IP
1188
+ # addresses](https://cloud.google.com/compute/docs/ip-addresses#
1189
+ # externaladdresses).
1190
+ # Corresponds to the JSON property `enablePublicIps`
1191
+ # @return [Boolean]
1192
+ attr_accessor :enable_public_ips
1193
+ alias_method :enable_public_ips?, :enable_public_ips
1194
+
1195
+ # Output only. Information about the login node instances that were created in
1196
+ # Compute Engine.
1197
+ # Corresponds to the JSON property `instances`
1198
+ # @return [Array<Google::Apis::HypercomputeclusterV1::ComputeInstance>]
1199
+ attr_accessor :instances
1200
+
1201
+ # Optional. [Labels](https://cloud.google.com/compute/docs/labeling-resources)
1202
+ # that should be applied to each login node instance.
1203
+ # Corresponds to the JSON property `labels`
1204
+ # @return [Hash<String,String>]
1205
+ attr_accessor :labels
1206
+
1207
+ # Required. Name of the Compute Engine [machine type](https://cloud.google.com/
1208
+ # compute/docs/machine-resource) to use for login nodes, e.g. `n2-standard-2`.
1209
+ # Corresponds to the JSON property `machineType`
1210
+ # @return [String]
1211
+ attr_accessor :machine_type
1212
+
1213
+ # Optional. [Startup script](https://cloud.google.com/compute/docs/instances/
1214
+ # startup-scripts/linux) to be run on each login node instance. Max 256KB. The
1215
+ # script must complete within the system-defined default timeout of 5 minutes.
1216
+ # For tasks that require more time, consider running them in the background
1217
+ # using methods such as `&` or `nohup`.
1218
+ # Corresponds to the JSON property `startupScript`
1219
+ # @return [String]
1220
+ attr_accessor :startup_script
1221
+
1222
+ # Optional. How storage resources should be mounted on each login node.
1223
+ # Corresponds to the JSON property `storageConfigs`
1224
+ # @return [Array<Google::Apis::HypercomputeclusterV1::StorageConfig>]
1225
+ attr_accessor :storage_configs
1226
+
1227
+ # Required. Name of the zone in which login nodes should run, e.g., `us-central1-
1228
+ # a`. Must be in the same region as the cluster, and must match the zone of any
1229
+ # other resources specified in the cluster.
1230
+ # Corresponds to the JSON property `zone`
1231
+ # @return [String]
1232
+ attr_accessor :zone
1233
+
1234
+ def initialize(**args)
1235
+ update!(**args)
1236
+ end
1237
+
1238
+ # Update properties of this object
1239
+ def update!(**args)
1240
+ @boot_disk = args[:boot_disk] if args.key?(:boot_disk)
1241
+ @count = args[:count] if args.key?(:count)
1242
+ @enable_os_login = args[:enable_os_login] if args.key?(:enable_os_login)
1243
+ @enable_public_ips = args[:enable_public_ips] if args.key?(:enable_public_ips)
1244
+ @instances = args[:instances] if args.key?(:instances)
1245
+ @labels = args[:labels] if args.key?(:labels)
1246
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
1247
+ @startup_script = args[:startup_script] if args.key?(:startup_script)
1248
+ @storage_configs = args[:storage_configs] if args.key?(:storage_configs)
1249
+ @zone = args[:zone] if args.key?(:zone)
1250
+ end
1251
+ end
1252
+
1253
+ # Configuration for Slurm nodesets in the cluster. Nodesets are groups of
1254
+ # compute nodes used by Slurm that are responsible for running workloads
1255
+ # submitted to the cluster.
1256
+ class SlurmNodeSet
1257
+ include Google::Apis::Core::Hashable
1258
+
1259
+ # Optional. ID of the compute resource on which this nodeset will run. Must
1260
+ # match a key in the cluster's [compute_resources](Cluster.compute_resources).
1261
+ # Corresponds to the JSON property `computeId`
1262
+ # @return [String]
1263
+ attr_accessor :compute_id
1264
+
1265
+ # When set in a SlurmNodeSet, indicates that the nodeset should be backed by
1266
+ # Compute Engine VM instances.
1267
+ # Corresponds to the JSON property `computeInstance`
1268
+ # @return [Google::Apis::HypercomputeclusterV1::ComputeInstanceSlurmNodeSet]
1269
+ attr_accessor :compute_instance
1270
+
1271
+ # Required. Identifier for the nodeset, which allows it to be referenced by
1272
+ # partitions. Must conform to [RFC-1034](https://datatracker.ietf.org/doc/html/
1273
+ # rfc1034) (lower-case, alphanumeric, and at most 63 characters).
1274
+ # Corresponds to the JSON property `id`
1275
+ # @return [String]
1276
+ attr_accessor :id
1277
+
1278
+ # Optional. Controls how many additional nodes a cluster can bring online to
1279
+ # handle workloads. Set this value to enable dynamic node creation and limit the
1280
+ # number of additional nodes the cluster can bring online. Leave empty if you do
1281
+ # not want the cluster to create nodes dynamically, and instead rely only on
1282
+ # static nodes.
1283
+ # Corresponds to the JSON property `maxDynamicNodeCount`
1284
+ # @return [Fixnum]
1285
+ attr_accessor :max_dynamic_node_count
1286
+
1287
+ # Optional. Number of nodes to be statically created for this nodeset. The
1288
+ # cluster will attempt to ensure that at least this many nodes exist at all
1289
+ # times.
1290
+ # Corresponds to the JSON property `staticNodeCount`
1291
+ # @return [Fixnum]
1292
+ attr_accessor :static_node_count
1293
+
1294
+ # Optional. How storage resources should be mounted on each compute node.
1295
+ # Corresponds to the JSON property `storageConfigs`
1296
+ # @return [Array<Google::Apis::HypercomputeclusterV1::StorageConfig>]
1297
+ attr_accessor :storage_configs
1298
+
1299
+ def initialize(**args)
1300
+ update!(**args)
1301
+ end
1302
+
1303
+ # Update properties of this object
1304
+ def update!(**args)
1305
+ @compute_id = args[:compute_id] if args.key?(:compute_id)
1306
+ @compute_instance = args[:compute_instance] if args.key?(:compute_instance)
1307
+ @id = args[:id] if args.key?(:id)
1308
+ @max_dynamic_node_count = args[:max_dynamic_node_count] if args.key?(:max_dynamic_node_count)
1309
+ @static_node_count = args[:static_node_count] if args.key?(:static_node_count)
1310
+ @storage_configs = args[:storage_configs] if args.key?(:storage_configs)
1311
+ end
1312
+ end
1313
+
1314
+ # When set in Orchestrator, indicates that the cluster should use [Slurm](https:/
1315
+ # /slurm.schedmd.com/) as the orchestrator.
1316
+ class SlurmOrchestrator
1317
+ include Google::Apis::Core::Hashable
1318
+
1319
+ # Optional. Default partition to use for submitted jobs that do not explicitly
1320
+ # specify a partition. Required if and only if there is more than one partition,
1321
+ # in which case it must match the id of one of the partitions.
1322
+ # Corresponds to the JSON property `defaultPartition`
1323
+ # @return [String]
1324
+ attr_accessor :default_partition
1325
+
1326
+ # Optional. Slurm [epilog scripts](https://slurm.schedmd.com/prolog_epilog.html),
1327
+ # which will be executed by compute nodes whenever a node finishes running a
1328
+ # job. Values must not be empty.
1329
+ # Corresponds to the JSON property `epilogBashScripts`
1330
+ # @return [Array<String>]
1331
+ attr_accessor :epilog_bash_scripts
1332
+
1333
+ # Configuration for Slurm [login nodes](https://slurm.schedmd.com/
1334
+ # quickstart_admin.html#login) in the cluster. Login nodes are Compute Engine VM
1335
+ # instances that allow users to access the cluster over SSH.
1336
+ # Corresponds to the JSON property `loginNodes`
1337
+ # @return [Google::Apis::HypercomputeclusterV1::SlurmLoginNodes]
1338
+ attr_accessor :login_nodes
1339
+
1340
+ # Required. Configuration of Slurm nodesets, which define groups of compute
1341
+ # resources that can be used by Slurm. At least one compute node is required.
1342
+ # Corresponds to the JSON property `nodeSets`
1343
+ # @return [Array<Google::Apis::HypercomputeclusterV1::SlurmNodeSet>]
1344
+ attr_accessor :node_sets
1345
+
1346
+ # Required. Configuration of Slurm partitions, which group one or more nodesets.
1347
+ # Acts as a queue against which jobs can be submitted. At least one partition is
1348
+ # required.
1349
+ # Corresponds to the JSON property `partitions`
1350
+ # @return [Array<Google::Apis::HypercomputeclusterV1::SlurmPartition>]
1351
+ attr_accessor :partitions
1352
+
1353
+ # Optional. Slurm [prolog scripts](https://slurm.schedmd.com/prolog_epilog.html),
1354
+ # which will be executed by compute nodes before a node begins running a new
1355
+ # job. Values must not be empty.
1356
+ # Corresponds to the JSON property `prologBashScripts`
1357
+ # @return [Array<String>]
1358
+ attr_accessor :prolog_bash_scripts
1359
+
1360
+ def initialize(**args)
1361
+ update!(**args)
1362
+ end
1363
+
1364
+ # Update properties of this object
1365
+ def update!(**args)
1366
+ @default_partition = args[:default_partition] if args.key?(:default_partition)
1367
+ @epilog_bash_scripts = args[:epilog_bash_scripts] if args.key?(:epilog_bash_scripts)
1368
+ @login_nodes = args[:login_nodes] if args.key?(:login_nodes)
1369
+ @node_sets = args[:node_sets] if args.key?(:node_sets)
1370
+ @partitions = args[:partitions] if args.key?(:partitions)
1371
+ @prolog_bash_scripts = args[:prolog_bash_scripts] if args.key?(:prolog_bash_scripts)
1372
+ end
1373
+ end
1374
+
1375
+ # Configuration for Slurm partitions in the cluster. Partitions are groups of
1376
+ # nodesets, and are how clients specify where their workloads should be run.
1377
+ class SlurmPartition
1378
+ include Google::Apis::Core::Hashable
1379
+
1380
+ # Required. ID of the partition, which is how users will identify it. Must
1381
+ # conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-
1382
+ # case, alphanumeric, and at most 63 characters).
1383
+ # Corresponds to the JSON property `id`
1384
+ # @return [String]
1385
+ attr_accessor :id
1386
+
1387
+ # Required. IDs of the nodesets that make up this partition. Values must match
1388
+ # SlurmNodeSet.id.
1389
+ # Corresponds to the JSON property `nodeSetIds`
1390
+ # @return [Array<String>]
1391
+ attr_accessor :node_set_ids
1392
+
1393
+ def initialize(**args)
1394
+ update!(**args)
1395
+ end
1396
+
1397
+ # Update properties of this object
1398
+ def update!(**args)
1399
+ @id = args[:id] if args.key?(:id)
1400
+ @node_set_ids = args[:node_set_ids] if args.key?(:node_set_ids)
1401
+ end
1402
+ end
1403
+
1404
+ # The `Status` type defines a logical error model that is suitable for different
1405
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1406
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1407
+ # data: error code, error message, and error details. You can find out more
1408
+ # about this error model and how to work with it in the [API Design Guide](https:
1409
+ # //cloud.google.com/apis/design/errors).
1410
+ class Status
1411
+ include Google::Apis::Core::Hashable
1412
+
1413
+ # The status code, which should be an enum value of google.rpc.Code.
1414
+ # Corresponds to the JSON property `code`
1415
+ # @return [Fixnum]
1416
+ attr_accessor :code
1417
+
1418
+ # A list of messages that carry the error details. There is a common set of
1419
+ # message types for APIs to use.
1420
+ # Corresponds to the JSON property `details`
1421
+ # @return [Array<Hash<String,Object>>]
1422
+ attr_accessor :details
1423
+
1424
+ # A developer-facing error message, which should be in English. Any user-facing
1425
+ # error message should be localized and sent in the google.rpc.Status.details
1426
+ # field, or localized by the client.
1427
+ # Corresponds to the JSON property `message`
1428
+ # @return [String]
1429
+ attr_accessor :message
1430
+
1431
+ def initialize(**args)
1432
+ update!(**args)
1433
+ end
1434
+
1435
+ # Update properties of this object
1436
+ def update!(**args)
1437
+ @code = args[:code] if args.key?(:code)
1438
+ @details = args[:details] if args.key?(:details)
1439
+ @message = args[:message] if args.key?(:message)
1440
+ end
1441
+ end
1442
+
1443
+ # Description of how a storage resource should be mounted on a VM instance.
1444
+ class StorageConfig
1445
+ include Google::Apis::Core::Hashable
1446
+
1447
+ # Required. ID of the storage resource to mount, which must match a key in the
1448
+ # cluster's [storage_resources](Cluster.storage_resources).
1449
+ # Corresponds to the JSON property `id`
1450
+ # @return [String]
1451
+ attr_accessor :id
1452
+
1453
+ # Required. A directory inside the VM instance's file system where the storage
1454
+ # resource should be mounted (e.g., `/mnt/share`).
1455
+ # Corresponds to the JSON property `localMount`
1456
+ # @return [String]
1457
+ attr_accessor :local_mount
1458
+
1459
+ def initialize(**args)
1460
+ update!(**args)
1461
+ end
1462
+
1463
+ # Update properties of this object
1464
+ def update!(**args)
1465
+ @id = args[:id] if args.key?(:id)
1466
+ @local_mount = args[:local_mount] if args.key?(:local_mount)
1467
+ end
1468
+ end
1469
+
1470
+ # A resource representing a form of persistent storage that is accessible to
1471
+ # compute resources in the cluster.
1472
+ class StorageResource
1473
+ include Google::Apis::Core::Hashable
1474
+
1475
+ # A reference to a [Google Cloud Storage](https://cloud.google.com/storage)
1476
+ # bucket.
1477
+ # Corresponds to the JSON property `bucket`
1478
+ # @return [Google::Apis::HypercomputeclusterV1::BucketReference]
1479
+ attr_accessor :bucket
1480
+
1481
+ # Describes how a storage resource should be initialized. Each storage resource
1482
+ # can either be imported from an existing Google Cloud resource or initialized
1483
+ # when the cluster is created.
1484
+ # Corresponds to the JSON property `config`
1485
+ # @return [Google::Apis::HypercomputeclusterV1::StorageResourceConfig]
1486
+ attr_accessor :config
1487
+
1488
+ # A reference to a [Filestore](https://cloud.google.com/filestore) instance.
1489
+ # Corresponds to the JSON property `filestore`
1490
+ # @return [Google::Apis::HypercomputeclusterV1::FilestoreReference]
1491
+ attr_accessor :filestore
1492
+
1493
+ # A reference to a [Managed Lustre](https://cloud.google.com/products/managed-
1494
+ # lustre) instance.
1495
+ # Corresponds to the JSON property `lustre`
1496
+ # @return [Google::Apis::HypercomputeclusterV1::LustreReference]
1497
+ attr_accessor :lustre
1498
+
1499
+ def initialize(**args)
1500
+ update!(**args)
1501
+ end
1502
+
1503
+ # Update properties of this object
1504
+ def update!(**args)
1505
+ @bucket = args[:bucket] if args.key?(:bucket)
1506
+ @config = args[:config] if args.key?(:config)
1507
+ @filestore = args[:filestore] if args.key?(:filestore)
1508
+ @lustre = args[:lustre] if args.key?(:lustre)
1509
+ end
1510
+ end
1511
+
1512
+ # Describes how a storage resource should be initialized. Each storage resource
1513
+ # can either be imported from an existing Google Cloud resource or initialized
1514
+ # when the cluster is created.
1515
+ class StorageResourceConfig
1516
+ include Google::Apis::Core::Hashable
1517
+
1518
+ # When set in a StorageResourceConfig, indicates that an existing [Google Cloud
1519
+ # Storage](https://cloud.google.com/storage) bucket should be imported.
1520
+ # Corresponds to the JSON property `existingBucket`
1521
+ # @return [Google::Apis::HypercomputeclusterV1::ExistingBucketConfig]
1522
+ attr_accessor :existing_bucket
1523
+
1524
+ # When set in a StorageResourceConfig, indicates that an existing [Filestore](
1525
+ # https://cloud.google.com/filestore) instance should be imported.
1526
+ # Corresponds to the JSON property `existingFilestore`
1527
+ # @return [Google::Apis::HypercomputeclusterV1::ExistingFilestoreConfig]
1528
+ attr_accessor :existing_filestore
1529
+
1530
+ # When set in a StorageResourceConfig, indicates that an existing [Managed
1531
+ # Lustre](https://cloud.google.com/products/managed-lustre) instance should be
1532
+ # imported.
1533
+ # Corresponds to the JSON property `existingLustre`
1534
+ # @return [Google::Apis::HypercomputeclusterV1::ExistingLustreConfig]
1535
+ attr_accessor :existing_lustre
1536
+
1537
+ # When set in a StorageResourceConfig, indicates that a new [Google Cloud
1538
+ # Storage](https://cloud.google.com/storage) bucket should be created.
1539
+ # Corresponds to the JSON property `newBucket`
1540
+ # @return [Google::Apis::HypercomputeclusterV1::NewBucketConfig]
1541
+ attr_accessor :new_bucket
1542
+
1543
+ # When set in a StorageResourceConfig, indicates that a new [Filestore](https://
1544
+ # cloud.google.com/filestore) instance should be created.
1545
+ # Corresponds to the JSON property `newFilestore`
1546
+ # @return [Google::Apis::HypercomputeclusterV1::NewFilestoreConfig]
1547
+ attr_accessor :new_filestore
1548
+
1549
+ # When set in a StorageResourceConfig, indicates that a new [Managed Lustre](
1550
+ # https://cloud.google.com/products/managed-lustre) instance should be created.
1551
+ # Corresponds to the JSON property `newLustre`
1552
+ # @return [Google::Apis::HypercomputeclusterV1::NewLustreConfig]
1553
+ attr_accessor :new_lustre
1554
+
1555
+ def initialize(**args)
1556
+ update!(**args)
1557
+ end
1558
+
1559
+ # Update properties of this object
1560
+ def update!(**args)
1561
+ @existing_bucket = args[:existing_bucket] if args.key?(:existing_bucket)
1562
+ @existing_filestore = args[:existing_filestore] if args.key?(:existing_filestore)
1563
+ @existing_lustre = args[:existing_lustre] if args.key?(:existing_lustre)
1564
+ @new_bucket = args[:new_bucket] if args.key?(:new_bucket)
1565
+ @new_filestore = args[:new_filestore] if args.key?(:new_filestore)
1566
+ @new_lustre = args[:new_lustre] if args.key?(:new_lustre)
1567
+ end
1568
+ end
1569
+ end
1570
+ end
1571
+ end