google-apis-datapipelines_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.
- checksums.yaml +7 -0
- data/.yardopts +13 -0
- data/CHANGELOG.md +7 -0
- data/LICENSE.md +202 -0
- data/OVERVIEW.md +96 -0
- data/lib/google/apis/datapipelines_v1/classes.rb +897 -0
- data/lib/google/apis/datapipelines_v1/gem_version.rb +28 -0
- data/lib/google/apis/datapipelines_v1/representations.rb +342 -0
- data/lib/google/apis/datapipelines_v1/service.rb +340 -0
- data/lib/google/apis/datapipelines_v1.rb +36 -0
- data/lib/google-apis-datapipelines_v1.rb +15 -0
- metadata +82 -0
@@ -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
|