google-apis-datapipelines_v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,897 @@
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 DatapipelinesV1
24
+
25
+ # Pipeline job details specific to the Dataflow API. This is encapsulated here
26
+ # to allow for more executors to store their specific details separately.
27
+ class GoogleCloudDatapipelinesV1DataflowJobDetails
28
+ include Google::Apis::Core::Hashable
29
+
30
+ # Output only. The current number of workers used to run the jobs. Only set to a
31
+ # value if the job is still running.
32
+ # Corresponds to the JSON property `currentWorkers`
33
+ # @return [Fixnum]
34
+ attr_accessor :current_workers
35
+
36
+ # Cached version of all the metrics of interest for the job. This value gets
37
+ # stored here when the job is terminated. As long as the job is running, this
38
+ # field is populated from the Dataflow API.
39
+ # Corresponds to the JSON property `resourceInfo`
40
+ # @return [Hash<String,Float>]
41
+ attr_accessor :resource_info
42
+
43
+ # The version of the SDK used to run the job.
44
+ # Corresponds to the JSON property `sdkVersion`
45
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1SdkVersion]
46
+ attr_accessor :sdk_version
47
+
48
+ def initialize(**args)
49
+ update!(**args)
50
+ end
51
+
52
+ # Update properties of this object
53
+ def update!(**args)
54
+ @current_workers = args[:current_workers] if args.key?(:current_workers)
55
+ @resource_info = args[:resource_info] if args.key?(:resource_info)
56
+ @sdk_version = args[:sdk_version] if args.key?(:sdk_version)
57
+ end
58
+ end
59
+
60
+ # The environment values to be set at runtime for a Flex Template.
61
+ class GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironment
62
+ include Google::Apis::Core::Hashable
63
+
64
+ # Additional experiment flags for the job.
65
+ # Corresponds to the JSON property `additionalExperiments`
66
+ # @return [Array<String>]
67
+ attr_accessor :additional_experiments
68
+
69
+ # Additional user labels to be specified for the job. Keys and values must
70
+ # follow the restrictions specified in the [labeling restrictions](https://cloud.
71
+ # google.com/compute/docs/labeling-resources#restrictions). An object containing
72
+ # a list of key/value pairs. Example: `` "name": "wrench", "mass": "1kg", "count"
73
+ # : "3" ``.
74
+ # Corresponds to the JSON property `additionalUserLabels`
75
+ # @return [Hash<String,String>]
76
+ attr_accessor :additional_user_labels
77
+
78
+ # Whether to enable Streaming Engine for the job.
79
+ # Corresponds to the JSON property `enableStreamingEngine`
80
+ # @return [Boolean]
81
+ attr_accessor :enable_streaming_engine
82
+ alias_method :enable_streaming_engine?, :enable_streaming_engine
83
+
84
+ # Set FlexRS goal for the job. https://cloud.google.com/dataflow/docs/guides/
85
+ # flexrs
86
+ # Corresponds to the JSON property `flexrsGoal`
87
+ # @return [String]
88
+ attr_accessor :flexrs_goal
89
+
90
+ # Configuration for VM IPs.
91
+ # Corresponds to the JSON property `ipConfiguration`
92
+ # @return [String]
93
+ attr_accessor :ip_configuration
94
+
95
+ # Name for the Cloud KMS key for the job. Key format is: projects//locations//
96
+ # keyRings//cryptoKeys/
97
+ # Corresponds to the JSON property `kmsKeyName`
98
+ # @return [String]
99
+ attr_accessor :kms_key_name
100
+
101
+ # The machine type to use for the job. Defaults to the value from the template
102
+ # if not specified.
103
+ # Corresponds to the JSON property `machineType`
104
+ # @return [String]
105
+ attr_accessor :machine_type
106
+
107
+ # The maximum number of Compute Engine instances to be made available to your
108
+ # pipeline during execution, from 1 to 1000.
109
+ # Corresponds to the JSON property `maxWorkers`
110
+ # @return [Fixnum]
111
+ attr_accessor :max_workers
112
+
113
+ # Network to which VMs will be assigned. If empty or unspecified, the service
114
+ # will use the network "default".
115
+ # Corresponds to the JSON property `network`
116
+ # @return [String]
117
+ attr_accessor :network
118
+
119
+ # The initial number of Compute Engine instances for the job.
120
+ # Corresponds to the JSON property `numWorkers`
121
+ # @return [Fixnum]
122
+ attr_accessor :num_workers
123
+
124
+ # The email address of the service account to run the job as.
125
+ # Corresponds to the JSON property `serviceAccountEmail`
126
+ # @return [String]
127
+ attr_accessor :service_account_email
128
+
129
+ # Subnetwork to which VMs will be assigned, if desired. You can specify a
130
+ # subnetwork using either a complete URL or an abbreviated path. Expected to be
131
+ # of the form "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/
132
+ # regions/REGION/subnetworks/SUBNETWORK" or "regions/REGION/subnetworks/
133
+ # SUBNETWORK". If the subnetwork is located in a Shared VPC network, you must
134
+ # use the complete URL.
135
+ # Corresponds to the JSON property `subnetwork`
136
+ # @return [String]
137
+ attr_accessor :subnetwork
138
+
139
+ # The Cloud Storage path to use for temporary files. Must be a valid Cloud
140
+ # Storage URL, beginning with `gs://`.
141
+ # Corresponds to the JSON property `tempLocation`
142
+ # @return [String]
143
+ attr_accessor :temp_location
144
+
145
+ # The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/
146
+ # regions-zones) in which worker processing should occur, e.g. "us-west1".
147
+ # Mutually exclusive with worker_zone. If neither worker_region nor worker_zone
148
+ # is specified, defaults to the control plane region.
149
+ # Corresponds to the JSON property `workerRegion`
150
+ # @return [String]
151
+ attr_accessor :worker_region
152
+
153
+ # The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/
154
+ # regions-zones) in which worker processing should occur, e.g. "us-west1-a".
155
+ # Mutually exclusive with worker_region. If neither worker_region nor
156
+ # worker_zone is specified, a zone in the control plane region is chosen based
157
+ # on available capacity. If both `worker_zone` and `zone` are set, `worker_zone`
158
+ # takes precedence.
159
+ # Corresponds to the JSON property `workerZone`
160
+ # @return [String]
161
+ attr_accessor :worker_zone
162
+
163
+ # The Compute Engine [availability zone](https://cloud.google.com/compute/docs/
164
+ # regions-zones/regions-zones) for launching worker instances to run your
165
+ # pipeline. In the future, worker_zone will take precedence.
166
+ # Corresponds to the JSON property `zone`
167
+ # @return [String]
168
+ attr_accessor :zone
169
+
170
+ def initialize(**args)
171
+ update!(**args)
172
+ end
173
+
174
+ # Update properties of this object
175
+ def update!(**args)
176
+ @additional_experiments = args[:additional_experiments] if args.key?(:additional_experiments)
177
+ @additional_user_labels = args[:additional_user_labels] if args.key?(:additional_user_labels)
178
+ @enable_streaming_engine = args[:enable_streaming_engine] if args.key?(:enable_streaming_engine)
179
+ @flexrs_goal = args[:flexrs_goal] if args.key?(:flexrs_goal)
180
+ @ip_configuration = args[:ip_configuration] if args.key?(:ip_configuration)
181
+ @kms_key_name = args[:kms_key_name] if args.key?(:kms_key_name)
182
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
183
+ @max_workers = args[:max_workers] if args.key?(:max_workers)
184
+ @network = args[:network] if args.key?(:network)
185
+ @num_workers = args[:num_workers] if args.key?(:num_workers)
186
+ @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
187
+ @subnetwork = args[:subnetwork] if args.key?(:subnetwork)
188
+ @temp_location = args[:temp_location] if args.key?(:temp_location)
189
+ @worker_region = args[:worker_region] if args.key?(:worker_region)
190
+ @worker_zone = args[:worker_zone] if args.key?(:worker_zone)
191
+ @zone = args[:zone] if args.key?(:zone)
192
+ end
193
+ end
194
+
195
+ # Definition of the job information maintained by the pipeline. Fields in this
196
+ # entity are retrieved from the executor API (e.g. Dataflow API).
197
+ class GoogleCloudDatapipelinesV1Job
198
+ include Google::Apis::Core::Hashable
199
+
200
+ # Output only. The time of job creation.
201
+ # Corresponds to the JSON property `createTime`
202
+ # @return [String]
203
+ attr_accessor :create_time
204
+
205
+ # Pipeline job details specific to the Dataflow API. This is encapsulated here
206
+ # to allow for more executors to store their specific details separately.
207
+ # Corresponds to the JSON property `dataflowJobDetails`
208
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1DataflowJobDetails]
209
+ attr_accessor :dataflow_job_details
210
+
211
+ # Output only. The time of job termination. This is absent if the job is still
212
+ # running.
213
+ # Corresponds to the JSON property `endTime`
214
+ # @return [String]
215
+ attr_accessor :end_time
216
+
217
+ # Output only. The internal ID for the job.
218
+ # Corresponds to the JSON property `id`
219
+ # @return [String]
220
+ attr_accessor :id
221
+
222
+ # Required. The fully qualified resource name for the job.
223
+ # Corresponds to the JSON property `name`
224
+ # @return [String]
225
+ attr_accessor :name
226
+
227
+ # The current state of the job.
228
+ # Corresponds to the JSON property `state`
229
+ # @return [String]
230
+ attr_accessor :state
231
+
232
+ # The `Status` type defines a logical error model that is suitable for different
233
+ # programming environments, including REST APIs and RPC APIs. It is used by [
234
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
235
+ # data: error code, error message, and error details. You can find out more
236
+ # about this error model and how to work with it in the [API Design Guide](https:
237
+ # //cloud.google.com/apis/design/errors).
238
+ # Corresponds to the JSON property `status`
239
+ # @return [Google::Apis::DatapipelinesV1::GoogleRpcStatus]
240
+ attr_accessor :status
241
+
242
+ def initialize(**args)
243
+ update!(**args)
244
+ end
245
+
246
+ # Update properties of this object
247
+ def update!(**args)
248
+ @create_time = args[:create_time] if args.key?(:create_time)
249
+ @dataflow_job_details = args[:dataflow_job_details] if args.key?(:dataflow_job_details)
250
+ @end_time = args[:end_time] if args.key?(:end_time)
251
+ @id = args[:id] if args.key?(:id)
252
+ @name = args[:name] if args.key?(:name)
253
+ @state = args[:state] if args.key?(:state)
254
+ @status = args[:status] if args.key?(:status)
255
+ end
256
+ end
257
+
258
+ # Launch Flex Template parameter.
259
+ class GoogleCloudDatapipelinesV1LaunchFlexTemplateParameter
260
+ include Google::Apis::Core::Hashable
261
+
262
+ # Cloud Storage path to a file with a JSON-serialized ContainerSpec as content.
263
+ # Corresponds to the JSON property `containerSpecGcsPath`
264
+ # @return [String]
265
+ attr_accessor :container_spec_gcs_path
266
+
267
+ # The environment values to be set at runtime for a Flex Template.
268
+ # Corresponds to the JSON property `environment`
269
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironment]
270
+ attr_accessor :environment
271
+
272
+ # Required. The job name to use for the created job. For an update job request,
273
+ # the job name should be the same as the existing running job.
274
+ # Corresponds to the JSON property `jobName`
275
+ # @return [String]
276
+ attr_accessor :job_name
277
+
278
+ # Launch options for this Flex Template job. This is a common set of options
279
+ # across languages and templates. This should not be used to pass job parameters.
280
+ # Corresponds to the JSON property `launchOptions`
281
+ # @return [Hash<String,String>]
282
+ attr_accessor :launch_options
283
+
284
+ # The parameters for the Flex Template. Example: ``"num_workers":"5"``
285
+ # Corresponds to the JSON property `parameters`
286
+ # @return [Hash<String,String>]
287
+ attr_accessor :parameters
288
+
289
+ # Use this to pass transform name mappings for streaming update jobs. Example: ``
290
+ # "oldTransformName":"newTransformName",...``
291
+ # Corresponds to the JSON property `transformNameMappings`
292
+ # @return [Hash<String,String>]
293
+ attr_accessor :transform_name_mappings
294
+
295
+ # Set this to true if you are sending a request to update a running streaming
296
+ # job. When set, the job name should be the same as the running job.
297
+ # Corresponds to the JSON property `update`
298
+ # @return [Boolean]
299
+ attr_accessor :update
300
+ alias_method :update?, :update
301
+
302
+ def initialize(**args)
303
+ update!(**args)
304
+ end
305
+
306
+ # Update properties of this object
307
+ def update!(**args)
308
+ @container_spec_gcs_path = args[:container_spec_gcs_path] if args.key?(:container_spec_gcs_path)
309
+ @environment = args[:environment] if args.key?(:environment)
310
+ @job_name = args[:job_name] if args.key?(:job_name)
311
+ @launch_options = args[:launch_options] if args.key?(:launch_options)
312
+ @parameters = args[:parameters] if args.key?(:parameters)
313
+ @transform_name_mappings = args[:transform_name_mappings] if args.key?(:transform_name_mappings)
314
+ @update = args[:update] if args.key?(:update)
315
+ end
316
+ end
317
+
318
+ # A request to launch a Dataflow job from a Flex Template.
319
+ class GoogleCloudDatapipelinesV1LaunchFlexTemplateRequest
320
+ include Google::Apis::Core::Hashable
321
+
322
+ # Launch Flex Template parameter.
323
+ # Corresponds to the JSON property `launchParameter`
324
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1LaunchFlexTemplateParameter]
325
+ attr_accessor :launch_parameter
326
+
327
+ # Required. The [regional endpoint] (https://cloud.google.com/dataflow/docs/
328
+ # concepts/regional-endpoints) to which to direct the request. For example, `us-
329
+ # central1`, `us-west1`.
330
+ # Corresponds to the JSON property `location`
331
+ # @return [String]
332
+ attr_accessor :location
333
+
334
+ # Required. The ID of the Cloud Platform project that the job belongs to.
335
+ # Corresponds to the JSON property `projectId`
336
+ # @return [String]
337
+ attr_accessor :project_id
338
+
339
+ # If true, the request is validated but not actually executed. Defaults to false.
340
+ # Corresponds to the JSON property `validateOnly`
341
+ # @return [Boolean]
342
+ attr_accessor :validate_only
343
+ alias_method :validate_only?, :validate_only
344
+
345
+ def initialize(**args)
346
+ update!(**args)
347
+ end
348
+
349
+ # Update properties of this object
350
+ def update!(**args)
351
+ @launch_parameter = args[:launch_parameter] if args.key?(:launch_parameter)
352
+ @location = args[:location] if args.key?(:location)
353
+ @project_id = args[:project_id] if args.key?(:project_id)
354
+ @validate_only = args[:validate_only] if args.key?(:validate_only)
355
+ end
356
+ end
357
+
358
+ # Parameters to provide to the template being launched.
359
+ class GoogleCloudDatapipelinesV1LaunchTemplateParameters
360
+ include Google::Apis::Core::Hashable
361
+
362
+ # The environment values to set at runtime.
363
+ # Corresponds to the JSON property `environment`
364
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1RuntimeEnvironment]
365
+ attr_accessor :environment
366
+
367
+ # Required. The job name to use for the created job.
368
+ # Corresponds to the JSON property `jobName`
369
+ # @return [String]
370
+ attr_accessor :job_name
371
+
372
+ # The runtime parameters to pass to the job.
373
+ # Corresponds to the JSON property `parameters`
374
+ # @return [Hash<String,String>]
375
+ attr_accessor :parameters
376
+
377
+ # Map of transform name prefixes of the job to be replaced to the corresponding
378
+ # name prefixes of the new job. Only applicable when updating a pipeline.
379
+ # Corresponds to the JSON property `transformNameMapping`
380
+ # @return [Hash<String,String>]
381
+ attr_accessor :transform_name_mapping
382
+
383
+ # If set, replace the existing pipeline with the name specified by jobName with
384
+ # this pipeline, preserving state.
385
+ # Corresponds to the JSON property `update`
386
+ # @return [Boolean]
387
+ attr_accessor :update
388
+ alias_method :update?, :update
389
+
390
+ def initialize(**args)
391
+ update!(**args)
392
+ end
393
+
394
+ # Update properties of this object
395
+ def update!(**args)
396
+ @environment = args[:environment] if args.key?(:environment)
397
+ @job_name = args[:job_name] if args.key?(:job_name)
398
+ @parameters = args[:parameters] if args.key?(:parameters)
399
+ @transform_name_mapping = args[:transform_name_mapping] if args.key?(:transform_name_mapping)
400
+ @update = args[:update] if args.key?(:update)
401
+ end
402
+ end
403
+
404
+ # A request to launch a template.
405
+ class GoogleCloudDatapipelinesV1LaunchTemplateRequest
406
+ include Google::Apis::Core::Hashable
407
+
408
+ # A Cloud Storage path to the template from which to create the job. Must be a
409
+ # valid Cloud Storage URL, beginning with 'gs://'.
410
+ # Corresponds to the JSON property `gcsPath`
411
+ # @return [String]
412
+ attr_accessor :gcs_path
413
+
414
+ # Parameters to provide to the template being launched.
415
+ # Corresponds to the JSON property `launchParameters`
416
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1LaunchTemplateParameters]
417
+ attr_accessor :launch_parameters
418
+
419
+ # The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/
420
+ # regional-endpoints) to which to direct the request.
421
+ # Corresponds to the JSON property `location`
422
+ # @return [String]
423
+ attr_accessor :location
424
+
425
+ # Required. The ID of the Cloud Platform project that the job belongs to.
426
+ # Corresponds to the JSON property `projectId`
427
+ # @return [String]
428
+ attr_accessor :project_id
429
+
430
+ # If true, the request is validated but not actually executed. Defaults to false.
431
+ # Corresponds to the JSON property `validateOnly`
432
+ # @return [Boolean]
433
+ attr_accessor :validate_only
434
+ alias_method :validate_only?, :validate_only
435
+
436
+ def initialize(**args)
437
+ update!(**args)
438
+ end
439
+
440
+ # Update properties of this object
441
+ def update!(**args)
442
+ @gcs_path = args[:gcs_path] if args.key?(:gcs_path)
443
+ @launch_parameters = args[:launch_parameters] if args.key?(:launch_parameters)
444
+ @location = args[:location] if args.key?(:location)
445
+ @project_id = args[:project_id] if args.key?(:project_id)
446
+ @validate_only = args[:validate_only] if args.key?(:validate_only)
447
+ end
448
+ end
449
+
450
+ # Response message for ListPipelines.
451
+ class GoogleCloudDatapipelinesV1ListPipelinesResponse
452
+ include Google::Apis::Core::Hashable
453
+
454
+ # A token, which can be sent as `page_token` to retrieve the next page. If this
455
+ # field is omitted, there are no subsequent pages.
456
+ # Corresponds to the JSON property `nextPageToken`
457
+ # @return [String]
458
+ attr_accessor :next_page_token
459
+
460
+ # Results that matched the filter criteria and were accessible to the caller.
461
+ # Results are always in descending order of pipeline creation date.
462
+ # Corresponds to the JSON property `pipelines`
463
+ # @return [Array<Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1Pipeline>]
464
+ attr_accessor :pipelines
465
+
466
+ def initialize(**args)
467
+ update!(**args)
468
+ end
469
+
470
+ # Update properties of this object
471
+ def update!(**args)
472
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
473
+ @pipelines = args[:pipelines] if args.key?(:pipelines)
474
+ end
475
+ end
476
+
477
+ # The main pipeline entity and all the needed metadata to launch and manage
478
+ # linked jobs.
479
+ class GoogleCloudDatapipelinesV1Pipeline
480
+ include Google::Apis::Core::Hashable
481
+
482
+ # Output only. Immutable. The timestamp when the pipeline was initially created.
483
+ # Set by the Data Pipelines service.
484
+ # Corresponds to the JSON property `createTime`
485
+ # @return [String]
486
+ attr_accessor :create_time
487
+
488
+ # Required. The display name of the pipeline. It can contain only letters ([A-Za-
489
+ # z]), numbers ([0-9]), hyphens (-), and underscores (_).
490
+ # Corresponds to the JSON property `displayName`
491
+ # @return [String]
492
+ attr_accessor :display_name
493
+
494
+ # Output only. Number of jobs.
495
+ # Corresponds to the JSON property `jobCount`
496
+ # @return [Fixnum]
497
+ attr_accessor :job_count
498
+
499
+ # Output only. Immutable. The timestamp when the pipeline was last modified. Set
500
+ # by the Data Pipelines service.
501
+ # Corresponds to the JSON property `lastUpdateTime`
502
+ # @return [String]
503
+ attr_accessor :last_update_time
504
+
505
+ # The pipeline name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/
506
+ # pipelines/PIPELINE_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers
507
+ # ([0-9]), hyphens (-), colons (:), and periods (.). For more information, see [
508
+ # Identifying projects](https://cloud.google.com/resource-manager/docs/creating-
509
+ # managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID
510
+ # for the pipeline's location. The list of available locations can be obtained
511
+ # by calling ListLocations. Note that the Data Pipelines service is not
512
+ # available in all regions. It depends on Cloud Scheduler, an App Engine
513
+ # application, so it's only available in [App Engine regions](https://cloud.
514
+ # google.com/about/locations#region). * `PIPELINE_ID` is the ID of the pipeline.
515
+ # Must be unique for the selected project and location.
516
+ # Corresponds to the JSON property `name`
517
+ # @return [String]
518
+ attr_accessor :name
519
+
520
+ # Details of the schedule the pipeline runs on.
521
+ # Corresponds to the JSON property `scheduleInfo`
522
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1ScheduleSpec]
523
+ attr_accessor :schedule_info
524
+
525
+ # Optional. A service account email to be used with the Cloud Scheduler job. If
526
+ # not specified, the default compute engine service account will be used.
527
+ # Corresponds to the JSON property `schedulerServiceAccountEmail`
528
+ # @return [String]
529
+ attr_accessor :scheduler_service_account_email
530
+
531
+ # Required. The state of the pipeline. When the pipeline is created, the state
532
+ # is set to 'PIPELINE_STATE_ACTIVE' by default. State changes can be requested
533
+ # by setting the state to stopping, paused, or resuming. State cannot be changed
534
+ # through UpdatePipeline requests.
535
+ # Corresponds to the JSON property `state`
536
+ # @return [String]
537
+ attr_accessor :state
538
+
539
+ # Required. The type of the pipeline. This field affects the scheduling of the
540
+ # pipeline and the type of metrics to show for the pipeline.
541
+ # Corresponds to the JSON property `type`
542
+ # @return [String]
543
+ attr_accessor :type
544
+
545
+ # Workload details for creating the pipeline jobs.
546
+ # Corresponds to the JSON property `workload`
547
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1Workload]
548
+ attr_accessor :workload
549
+
550
+ def initialize(**args)
551
+ update!(**args)
552
+ end
553
+
554
+ # Update properties of this object
555
+ def update!(**args)
556
+ @create_time = args[:create_time] if args.key?(:create_time)
557
+ @display_name = args[:display_name] if args.key?(:display_name)
558
+ @job_count = args[:job_count] if args.key?(:job_count)
559
+ @last_update_time = args[:last_update_time] if args.key?(:last_update_time)
560
+ @name = args[:name] if args.key?(:name)
561
+ @schedule_info = args[:schedule_info] if args.key?(:schedule_info)
562
+ @scheduler_service_account_email = args[:scheduler_service_account_email] if args.key?(:scheduler_service_account_email)
563
+ @state = args[:state] if args.key?(:state)
564
+ @type = args[:type] if args.key?(:type)
565
+ @workload = args[:workload] if args.key?(:workload)
566
+ end
567
+ end
568
+
569
+ # Request message for RunPipeline
570
+ class GoogleCloudDatapipelinesV1RunPipelineRequest
571
+ include Google::Apis::Core::Hashable
572
+
573
+ def initialize(**args)
574
+ update!(**args)
575
+ end
576
+
577
+ # Update properties of this object
578
+ def update!(**args)
579
+ end
580
+ end
581
+
582
+ # Response message for RunPipeline
583
+ class GoogleCloudDatapipelinesV1RunPipelineResponse
584
+ include Google::Apis::Core::Hashable
585
+
586
+ # Definition of the job information maintained by the pipeline. Fields in this
587
+ # entity are retrieved from the executor API (e.g. Dataflow API).
588
+ # Corresponds to the JSON property `job`
589
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1Job]
590
+ attr_accessor :job
591
+
592
+ def initialize(**args)
593
+ update!(**args)
594
+ end
595
+
596
+ # Update properties of this object
597
+ def update!(**args)
598
+ @job = args[:job] if args.key?(:job)
599
+ end
600
+ end
601
+
602
+ # The environment values to set at runtime.
603
+ class GoogleCloudDatapipelinesV1RuntimeEnvironment
604
+ include Google::Apis::Core::Hashable
605
+
606
+ # Additional experiment flags for the job.
607
+ # Corresponds to the JSON property `additionalExperiments`
608
+ # @return [Array<String>]
609
+ attr_accessor :additional_experiments
610
+
611
+ # Additional user labels to be specified for the job. Keys and values should
612
+ # follow the restrictions specified in the [labeling restrictions](https://cloud.
613
+ # google.com/compute/docs/labeling-resources#restrictions) page. An object
614
+ # containing a list of key/value pairs. Example: ` "name": "wrench", "mass": "
615
+ # 1kg", "count": "3" `.
616
+ # Corresponds to the JSON property `additionalUserLabels`
617
+ # @return [Hash<String,String>]
618
+ attr_accessor :additional_user_labels
619
+
620
+ # Whether to bypass the safety checks for the job's temporary directory. Use
621
+ # with caution.
622
+ # Corresponds to the JSON property `bypassTempDirValidation`
623
+ # @return [Boolean]
624
+ attr_accessor :bypass_temp_dir_validation
625
+ alias_method :bypass_temp_dir_validation?, :bypass_temp_dir_validation
626
+
627
+ # Whether to enable Streaming Engine for the job.
628
+ # Corresponds to the JSON property `enableStreamingEngine`
629
+ # @return [Boolean]
630
+ attr_accessor :enable_streaming_engine
631
+ alias_method :enable_streaming_engine?, :enable_streaming_engine
632
+
633
+ # Configuration for VM IPs.
634
+ # Corresponds to the JSON property `ipConfiguration`
635
+ # @return [String]
636
+ attr_accessor :ip_configuration
637
+
638
+ # Name for the Cloud KMS key for the job. The key format is: projects//locations/
639
+ # /keyRings//cryptoKeys/
640
+ # Corresponds to the JSON property `kmsKeyName`
641
+ # @return [String]
642
+ attr_accessor :kms_key_name
643
+
644
+ # The machine type to use for the job. Defaults to the value from the template
645
+ # if not specified.
646
+ # Corresponds to the JSON property `machineType`
647
+ # @return [String]
648
+ attr_accessor :machine_type
649
+
650
+ # The maximum number of Compute Engine instances to be made available to your
651
+ # pipeline during execution, from 1 to 1000.
652
+ # Corresponds to the JSON property `maxWorkers`
653
+ # @return [Fixnum]
654
+ attr_accessor :max_workers
655
+
656
+ # Network to which VMs will be assigned. If empty or unspecified, the service
657
+ # will use the network "default".
658
+ # Corresponds to the JSON property `network`
659
+ # @return [String]
660
+ attr_accessor :network
661
+
662
+ # The initial number of Compute Engine instances for the job.
663
+ # Corresponds to the JSON property `numWorkers`
664
+ # @return [Fixnum]
665
+ attr_accessor :num_workers
666
+
667
+ # The email address of the service account to run the job as.
668
+ # Corresponds to the JSON property `serviceAccountEmail`
669
+ # @return [String]
670
+ attr_accessor :service_account_email
671
+
672
+ # Subnetwork to which VMs will be assigned, if desired. You can specify a
673
+ # subnetwork using either a complete URL or an abbreviated path. Expected to be
674
+ # of the form "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/
675
+ # regions/REGION/subnetworks/SUBNETWORK" or "regions/REGION/subnetworks/
676
+ # SUBNETWORK". If the subnetwork is located in a Shared VPC network, you must
677
+ # use the complete URL.
678
+ # Corresponds to the JSON property `subnetwork`
679
+ # @return [String]
680
+ attr_accessor :subnetwork
681
+
682
+ # The Cloud Storage path to use for temporary files. Must be a valid Cloud
683
+ # Storage URL, beginning with `gs://`.
684
+ # Corresponds to the JSON property `tempLocation`
685
+ # @return [String]
686
+ attr_accessor :temp_location
687
+
688
+ # The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/
689
+ # regions-zones) in which worker processing should occur, e.g. "us-west1".
690
+ # Mutually exclusive with worker_zone. If neither worker_region nor worker_zone
691
+ # is specified, default to the control plane's region.
692
+ # Corresponds to the JSON property `workerRegion`
693
+ # @return [String]
694
+ attr_accessor :worker_region
695
+
696
+ # The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/
697
+ # regions-zones) in which worker processing should occur, e.g. "us-west1-a".
698
+ # Mutually exclusive with worker_region. If neither worker_region nor
699
+ # worker_zone is specified, a zone in the control plane's region is chosen based
700
+ # on available capacity. If both `worker_zone` and `zone` are set, `worker_zone`
701
+ # takes precedence.
702
+ # Corresponds to the JSON property `workerZone`
703
+ # @return [String]
704
+ attr_accessor :worker_zone
705
+
706
+ # The Compute Engine [availability zone](https://cloud.google.com/compute/docs/
707
+ # regions-zones/regions-zones) for launching worker instances to run your
708
+ # pipeline. In the future, worker_zone will take precedence.
709
+ # Corresponds to the JSON property `zone`
710
+ # @return [String]
711
+ attr_accessor :zone
712
+
713
+ def initialize(**args)
714
+ update!(**args)
715
+ end
716
+
717
+ # Update properties of this object
718
+ def update!(**args)
719
+ @additional_experiments = args[:additional_experiments] if args.key?(:additional_experiments)
720
+ @additional_user_labels = args[:additional_user_labels] if args.key?(:additional_user_labels)
721
+ @bypass_temp_dir_validation = args[:bypass_temp_dir_validation] if args.key?(:bypass_temp_dir_validation)
722
+ @enable_streaming_engine = args[:enable_streaming_engine] if args.key?(:enable_streaming_engine)
723
+ @ip_configuration = args[:ip_configuration] if args.key?(:ip_configuration)
724
+ @kms_key_name = args[:kms_key_name] if args.key?(:kms_key_name)
725
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
726
+ @max_workers = args[:max_workers] if args.key?(:max_workers)
727
+ @network = args[:network] if args.key?(:network)
728
+ @num_workers = args[:num_workers] if args.key?(:num_workers)
729
+ @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
730
+ @subnetwork = args[:subnetwork] if args.key?(:subnetwork)
731
+ @temp_location = args[:temp_location] if args.key?(:temp_location)
732
+ @worker_region = args[:worker_region] if args.key?(:worker_region)
733
+ @worker_zone = args[:worker_zone] if args.key?(:worker_zone)
734
+ @zone = args[:zone] if args.key?(:zone)
735
+ end
736
+ end
737
+
738
+ # Details of the schedule the pipeline runs on.
739
+ class GoogleCloudDatapipelinesV1ScheduleSpec
740
+ include Google::Apis::Core::Hashable
741
+
742
+ # Output only. When the next Scheduler job is going to run.
743
+ # Corresponds to the JSON property `nextJobTime`
744
+ # @return [String]
745
+ attr_accessor :next_job_time
746
+
747
+ # Unix-cron format of the schedule. This information is retrieved from the
748
+ # linked Cloud Scheduler.
749
+ # Corresponds to the JSON property `schedule`
750
+ # @return [String]
751
+ attr_accessor :schedule
752
+
753
+ # Timezone ID. This matches the timezone IDs used by the Cloud Scheduler API. If
754
+ # empty, UTC time is assumed.
755
+ # Corresponds to the JSON property `timeZone`
756
+ # @return [String]
757
+ attr_accessor :time_zone
758
+
759
+ def initialize(**args)
760
+ update!(**args)
761
+ end
762
+
763
+ # Update properties of this object
764
+ def update!(**args)
765
+ @next_job_time = args[:next_job_time] if args.key?(:next_job_time)
766
+ @schedule = args[:schedule] if args.key?(:schedule)
767
+ @time_zone = args[:time_zone] if args.key?(:time_zone)
768
+ end
769
+ end
770
+
771
+ # The version of the SDK used to run the job.
772
+ class GoogleCloudDatapipelinesV1SdkVersion
773
+ include Google::Apis::Core::Hashable
774
+
775
+ # The support status for this SDK version.
776
+ # Corresponds to the JSON property `sdkSupportStatus`
777
+ # @return [String]
778
+ attr_accessor :sdk_support_status
779
+
780
+ # The version of the SDK used to run the job.
781
+ # Corresponds to the JSON property `version`
782
+ # @return [String]
783
+ attr_accessor :version
784
+
785
+ # A readable string describing the version of the SDK.
786
+ # Corresponds to the JSON property `versionDisplayName`
787
+ # @return [String]
788
+ attr_accessor :version_display_name
789
+
790
+ def initialize(**args)
791
+ update!(**args)
792
+ end
793
+
794
+ # Update properties of this object
795
+ def update!(**args)
796
+ @sdk_support_status = args[:sdk_support_status] if args.key?(:sdk_support_status)
797
+ @version = args[:version] if args.key?(:version)
798
+ @version_display_name = args[:version_display_name] if args.key?(:version_display_name)
799
+ end
800
+ end
801
+
802
+ # Request message for StopPipeline.
803
+ class GoogleCloudDatapipelinesV1StopPipelineRequest
804
+ include Google::Apis::Core::Hashable
805
+
806
+ def initialize(**args)
807
+ update!(**args)
808
+ end
809
+
810
+ # Update properties of this object
811
+ def update!(**args)
812
+ end
813
+ end
814
+
815
+ # Workload details for creating the pipeline jobs.
816
+ class GoogleCloudDatapipelinesV1Workload
817
+ include Google::Apis::Core::Hashable
818
+
819
+ # A request to launch a Dataflow job from a Flex Template.
820
+ # Corresponds to the JSON property `dataflowFlexTemplateRequest`
821
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1LaunchFlexTemplateRequest]
822
+ attr_accessor :dataflow_flex_template_request
823
+
824
+ # A request to launch a template.
825
+ # Corresponds to the JSON property `dataflowLaunchTemplateRequest`
826
+ # @return [Google::Apis::DatapipelinesV1::GoogleCloudDatapipelinesV1LaunchTemplateRequest]
827
+ attr_accessor :dataflow_launch_template_request
828
+
829
+ def initialize(**args)
830
+ update!(**args)
831
+ end
832
+
833
+ # Update properties of this object
834
+ def update!(**args)
835
+ @dataflow_flex_template_request = args[:dataflow_flex_template_request] if args.key?(:dataflow_flex_template_request)
836
+ @dataflow_launch_template_request = args[:dataflow_launch_template_request] if args.key?(:dataflow_launch_template_request)
837
+ end
838
+ end
839
+
840
+ # A generic empty message that you can re-use to avoid defining duplicated empty
841
+ # messages in your APIs. A typical example is to use it as the request or the
842
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
843
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
844
+ # `Empty` is empty JSON object ````.
845
+ class GoogleProtobufEmpty
846
+ include Google::Apis::Core::Hashable
847
+
848
+ def initialize(**args)
849
+ update!(**args)
850
+ end
851
+
852
+ # Update properties of this object
853
+ def update!(**args)
854
+ end
855
+ end
856
+
857
+ # The `Status` type defines a logical error model that is suitable for different
858
+ # programming environments, including REST APIs and RPC APIs. It is used by [
859
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
860
+ # data: error code, error message, and error details. You can find out more
861
+ # about this error model and how to work with it in the [API Design Guide](https:
862
+ # //cloud.google.com/apis/design/errors).
863
+ class GoogleRpcStatus
864
+ include Google::Apis::Core::Hashable
865
+
866
+ # The status code, which should be an enum value of google.rpc.Code.
867
+ # Corresponds to the JSON property `code`
868
+ # @return [Fixnum]
869
+ attr_accessor :code
870
+
871
+ # A list of messages that carry the error details. There is a common set of
872
+ # message types for APIs to use.
873
+ # Corresponds to the JSON property `details`
874
+ # @return [Array<Hash<String,Object>>]
875
+ attr_accessor :details
876
+
877
+ # A developer-facing error message, which should be in English. Any user-facing
878
+ # error message should be localized and sent in the google.rpc.Status.details
879
+ # field, or localized by the client.
880
+ # Corresponds to the JSON property `message`
881
+ # @return [String]
882
+ attr_accessor :message
883
+
884
+ def initialize(**args)
885
+ update!(**args)
886
+ end
887
+
888
+ # Update properties of this object
889
+ def update!(**args)
890
+ @code = args[:code] if args.key?(:code)
891
+ @details = args[:details] if args.key?(:details)
892
+ @message = args[:message] if args.key?(:message)
893
+ end
894
+ end
895
+ end
896
+ end
897
+ end