google-api-client 0.9.15 → 0.9.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/generated/google/apis/adexchangebuyer2_v2beta1.rb +35 -0
  3. data/generated/google/apis/adexchangebuyer2_v2beta1/classes.rb +298 -0
  4. data/generated/google/apis/adexchangebuyer2_v2beta1/representations.rb +122 -0
  5. data/generated/google/apis/adexchangebuyer2_v2beta1/service.rb +458 -0
  6. data/generated/google/apis/adexchangebuyer_v1_4.rb +1 -1
  7. data/generated/google/apis/adexchangebuyer_v1_4/classes.rb +82 -3
  8. data/generated/google/apis/adexchangebuyer_v1_4/representations.rb +33 -0
  9. data/generated/google/apis/adexchangebuyer_v1_4/service.rb +38 -0
  10. data/generated/google/apis/admin_directory_v1.rb +1 -1
  11. data/generated/google/apis/admin_directory_v1/classes.rb +80 -0
  12. data/generated/google/apis/admin_directory_v1/representations.rb +23 -0
  13. data/generated/google/apis/admin_directory_v1/service.rb +39 -0
  14. data/generated/google/apis/adsense_v1_4.rb +1 -1
  15. data/generated/google/apis/adsensehost_v4_1.rb +1 -1
  16. data/generated/google/apis/analytics_v3.rb +1 -1
  17. data/generated/google/apis/analytics_v3/classes.rb +11 -5
  18. data/generated/google/apis/analytics_v3/representations.rb +1 -0
  19. data/generated/google/apis/analytics_v3/service.rb +17 -18
  20. data/generated/google/apis/analyticsreporting_v4.rb +1 -1
  21. data/generated/google/apis/androidenterprise_v1.rb +1 -1
  22. data/generated/google/apis/androidenterprise_v1/classes.rb +80 -2
  23. data/generated/google/apis/androidenterprise_v1/representations.rb +30 -0
  24. data/generated/google/apis/androidenterprise_v1/service.rb +55 -6
  25. data/generated/google/apis/androidpublisher_v2.rb +1 -1
  26. data/generated/google/apis/appengine_v1beta5.rb +1 -1
  27. data/generated/google/apis/appengine_v1beta5/classes.rb +1 -1
  28. data/generated/google/apis/appengine_v1beta5/service.rb +36 -0
  29. data/generated/google/apis/appsactivity_v1.rb +1 -1
  30. data/generated/google/apis/bigquery_v2.rb +1 -1
  31. data/generated/google/apis/bigquery_v2/classes.rb +2 -2
  32. data/generated/google/apis/books_v1.rb +1 -1
  33. data/generated/google/apis/books_v1/classes.rb +2 -1
  34. data/generated/google/apis/calendar_v3.rb +1 -1
  35. data/generated/google/apis/classroom_v1.rb +1 -1
  36. data/generated/google/apis/classroom_v1/classes.rb +7 -0
  37. data/generated/google/apis/classroom_v1/representations.rb +1 -0
  38. data/generated/google/apis/classroom_v1/service.rb +25 -15
  39. data/generated/google/apis/cloudbuild_v1.rb +1 -1
  40. data/generated/google/apis/cloudbuild_v1/classes.rb +56 -8
  41. data/generated/google/apis/cloudresourcemanager_v1.rb +1 -1
  42. data/generated/google/apis/cloudresourcemanager_v1/classes.rb +535 -298
  43. data/generated/google/apis/cloudresourcemanager_v1/representations.rb +141 -36
  44. data/generated/google/apis/cloudresourcemanager_v1/service.rb +250 -45
  45. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
  46. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +99 -4
  47. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +44 -0
  48. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +24 -33
  49. data/generated/google/apis/compute_beta.rb +1 -1
  50. data/generated/google/apis/compute_beta/classes.rb +44 -29
  51. data/generated/google/apis/compute_beta/representations.rb +1 -0
  52. data/generated/google/apis/compute_beta/service.rb +123 -25
  53. data/generated/google/apis/compute_v1.rb +1 -1
  54. data/generated/google/apis/compute_v1/classes.rb +43 -20
  55. data/generated/google/apis/compute_v1/representations.rb +3 -0
  56. data/generated/google/apis/compute_v1/service.rb +608 -67
  57. data/generated/google/apis/content_v2.rb +1 -1
  58. data/generated/google/apis/dataflow_v1b3.rb +38 -0
  59. data/generated/google/apis/dataflow_v1b3/classes.rb +4009 -0
  60. data/generated/google/apis/dataflow_v1b3/representations.rb +1718 -0
  61. data/generated/google/apis/dataflow_v1b3/service.rb +515 -0
  62. data/generated/google/apis/datastore_v1.rb +1 -1
  63. data/generated/google/apis/dns_v1.rb +1 -1
  64. data/generated/google/apis/doubleclickbidmanager_v1.rb +1 -1
  65. data/generated/google/apis/doubleclickbidmanager_v1/classes.rb +79 -86
  66. data/generated/google/apis/doubleclickbidmanager_v1/representations.rb +25 -28
  67. data/generated/google/apis/doubleclickbidmanager_v1/service.rb +10 -8
  68. data/generated/google/apis/doubleclicksearch_v2.rb +1 -1
  69. data/generated/google/apis/drive_v2.rb +1 -1
  70. data/generated/google/apis/drive_v2/classes.rb +9 -0
  71. data/generated/google/apis/drive_v2/representations.rb +1 -0
  72. data/generated/google/apis/drive_v2/service.rb +8 -1
  73. data/generated/google/apis/drive_v3.rb +1 -1
  74. data/generated/google/apis/drive_v3/classes.rb +7 -0
  75. data/generated/google/apis/drive_v3/representations.rb +1 -0
  76. data/generated/google/apis/drive_v3/service.rb +8 -1
  77. data/generated/google/apis/genomics_v1.rb +1 -1
  78. data/generated/google/apis/iam_v1.rb +2 -2
  79. data/generated/google/apis/iam_v1/classes.rb +181 -206
  80. data/generated/google/apis/iam_v1/representations.rb +36 -45
  81. data/generated/google/apis/iam_v1/service.rb +101 -67
  82. data/generated/google/apis/identitytoolkit_v3.rb +4 -1
  83. data/generated/google/apis/identitytoolkit_v3/classes.rb +11 -27
  84. data/generated/google/apis/identitytoolkit_v3/representations.rb +2 -16
  85. data/generated/google/apis/language_v1beta1.rb +1 -1
  86. data/generated/google/apis/language_v1beta1/classes.rb +4 -2
  87. data/generated/google/apis/language_v1beta1/service.rb +2 -4
  88. data/generated/google/apis/logging_v2beta1.rb +6 -6
  89. data/generated/google/apis/logging_v2beta1/classes.rb +742 -732
  90. data/generated/google/apis/logging_v2beta1/representations.rb +134 -147
  91. data/generated/google/apis/logging_v2beta1/service.rb +276 -209
  92. data/generated/google/apis/monitoring_v3.rb +1 -1
  93. data/generated/google/apis/monitoring_v3/classes.rb +20 -13
  94. data/generated/google/apis/monitoring_v3/service.rb +1 -1
  95. data/generated/google/apis/oauth2_v2.rb +1 -1
  96. data/generated/google/apis/plus_domains_v1.rb +1 -1
  97. data/generated/google/apis/plus_v1.rb +1 -1
  98. data/generated/google/apis/pubsub_v1.rb +1 -1
  99. data/generated/google/apis/pubsub_v1/classes.rb +10 -9
  100. data/generated/google/apis/pubsub_v1/service.rb +128 -27
  101. data/generated/google/apis/replicapoolupdater_v1beta1.rb +4 -2
  102. data/generated/google/apis/replicapoolupdater_v1beta1/service.rb +3 -1
  103. data/generated/google/apis/sheets_v4.rb +1 -1
  104. data/generated/google/apis/sheets_v4/classes.rb +2 -0
  105. data/generated/google/apis/speech_v1beta1.rb +1 -1
  106. data/generated/google/apis/speech_v1beta1/classes.rb +20 -30
  107. data/generated/google/apis/speech_v1beta1/representations.rb +6 -7
  108. data/generated/google/apis/speech_v1beta1/service.rb +68 -65
  109. data/generated/google/apis/sqladmin_v1beta4.rb +1 -1
  110. data/generated/google/apis/sqladmin_v1beta4/classes.rb +6 -0
  111. data/generated/google/apis/sqladmin_v1beta4/representations.rb +1 -0
  112. data/generated/google/apis/storage_v1.rb +1 -1
  113. data/generated/google/apis/storage_v1/classes.rb +3 -3
  114. data/generated/google/apis/storage_v1/representations.rb +2 -1
  115. data/generated/google/apis/storage_v1/service.rb +5 -2
  116. data/generated/google/apis/vision_v1.rb +1 -1
  117. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  118. data/lib/google/apis/version.rb +1 -1
  119. metadata +10 -2
@@ -26,7 +26,7 @@ module Google
26
26
  # @see https://developers.google.com/shopping-content
27
27
  module ContentV2
28
28
  VERSION = 'V2'
29
- REVISION = '20160905'
29
+ REVISION = '20160928'
30
30
 
31
31
  # Manage your product listings and accounts for Google Shopping
32
32
  AUTH_CONTENT = 'https://www.googleapis.com/auth/content'
@@ -0,0 +1,38 @@
1
+ # Copyright 2015 Google Inc.
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 'google/apis/dataflow_v1b3/service.rb'
16
+ require 'google/apis/dataflow_v1b3/classes.rb'
17
+ require 'google/apis/dataflow_v1b3/representations.rb'
18
+
19
+ module Google
20
+ module Apis
21
+ # Google Dataflow API
22
+ #
23
+ # Develops and executes data processing patterns like ETL, batch computation,
24
+ # and continuous computation.
25
+ #
26
+ # @see https://cloud.google.com/dataflow
27
+ module DataflowV1b3
28
+ VERSION = 'V1b3'
29
+ REVISION = '20161004'
30
+
31
+ # View and manage your data across Google Cloud Platform services
32
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
33
+
34
+ # View your email address
35
+ AUTH_USERINFO_EMAIL = 'https://www.googleapis.com/auth/userinfo.email'
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,4009 @@
1
+ # Copyright 2015 Google Inc.
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 DataflowV1b3
24
+
25
+ # Request to get updated debug configuration for component.
26
+ class GetDebugConfigRequest
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # The worker id, i.e., VM hostname.
30
+ # Corresponds to the JSON property `workerId`
31
+ # @return [String]
32
+ attr_accessor :worker_id
33
+
34
+ # The internal component id for which debug configuration is requested.
35
+ # Corresponds to the JSON property `componentId`
36
+ # @return [String]
37
+ attr_accessor :component_id
38
+
39
+ def initialize(**args)
40
+ update!(**args)
41
+ end
42
+
43
+ # Update properties of this object
44
+ def update!(**args)
45
+ @worker_id = args[:worker_id] if args.key?(:worker_id)
46
+ @component_id = args[:component_id] if args.key?(:component_id)
47
+ end
48
+ end
49
+
50
+ # Response to a get debug configuration request.
51
+ class GetDebugConfigResponse
52
+ include Google::Apis::Core::Hashable
53
+
54
+ # The encoded debug configuration for the requested component.
55
+ # Corresponds to the JSON property `config`
56
+ # @return [String]
57
+ attr_accessor :config
58
+
59
+ def initialize(**args)
60
+ update!(**args)
61
+ end
62
+
63
+ # Update properties of this object
64
+ def update!(**args)
65
+ @config = args[:config] if args.key?(:config)
66
+ end
67
+ end
68
+
69
+ # Request to send encoded debug information.
70
+ class SendDebugCaptureRequest
71
+ include Google::Apis::Core::Hashable
72
+
73
+ # The worker id, i.e., VM hostname.
74
+ # Corresponds to the JSON property `workerId`
75
+ # @return [String]
76
+ attr_accessor :worker_id
77
+
78
+ # The internal component id for which debug information is sent.
79
+ # Corresponds to the JSON property `componentId`
80
+ # @return [String]
81
+ attr_accessor :component_id
82
+
83
+ # The encoded debug information.
84
+ # Corresponds to the JSON property `data`
85
+ # @return [String]
86
+ attr_accessor :data
87
+
88
+ def initialize(**args)
89
+ update!(**args)
90
+ end
91
+
92
+ # Update properties of this object
93
+ def update!(**args)
94
+ @worker_id = args[:worker_id] if args.key?(:worker_id)
95
+ @component_id = args[:component_id] if args.key?(:component_id)
96
+ @data = args[:data] if args.key?(:data)
97
+ end
98
+ end
99
+
100
+ # Response to a send capture request. nothing
101
+ class SendDebugCaptureResponse
102
+ include Google::Apis::Core::Hashable
103
+
104
+ def initialize(**args)
105
+ update!(**args)
106
+ end
107
+
108
+ # Update properties of this object
109
+ def update!(**args)
110
+ end
111
+ end
112
+
113
+ # Defines a job to be run by the Dataflow service.
114
+ class Job
115
+ include Google::Apis::Core::Hashable
116
+
117
+ # The unique ID of this job. This field is set by the Dataflow service when the
118
+ # Job is created, and is immutable for the life of the Job.
119
+ # Corresponds to the JSON property `id`
120
+ # @return [String]
121
+ attr_accessor :id
122
+
123
+ # The project which owns the job.
124
+ # Corresponds to the JSON property `projectId`
125
+ # @return [String]
126
+ attr_accessor :project_id
127
+
128
+ # The user-specified Dataflow job name. Only one Job with a given name may exist
129
+ # in a project at any given time. If a caller attempts to create a Job with the
130
+ # same name as an already-existing Job, the attempt will return the existing Job.
131
+ # The name must match the regular expression [a-z]([-a-z0-9]`0,38`[a-z0-9])?
132
+ # Corresponds to the JSON property `name`
133
+ # @return [String]
134
+ attr_accessor :name
135
+
136
+ # The type of dataflow job.
137
+ # Corresponds to the JSON property `type`
138
+ # @return [String]
139
+ attr_accessor :type
140
+
141
+ # Describes the environment in which a Dataflow Job runs.
142
+ # Corresponds to the JSON property `environment`
143
+ # @return [Google::Apis::DataflowV1b3::Environment]
144
+ attr_accessor :environment
145
+
146
+ # The top-level steps that constitute the entire job.
147
+ # Corresponds to the JSON property `steps`
148
+ # @return [Array<Google::Apis::DataflowV1b3::Step>]
149
+ attr_accessor :steps
150
+
151
+ # The current state of the job. Jobs are created in the JOB_STATE_STOPPED state
152
+ # unless otherwise specified. A job in the JOB_STATE_RUNNING state may
153
+ # asynchronously enter a terminal state. Once a job has reached a terminal state,
154
+ # no further state updates may be made. This field may be mutated by the
155
+ # Dataflow service; callers cannot mutate it.
156
+ # Corresponds to the JSON property `currentState`
157
+ # @return [String]
158
+ attr_accessor :current_state
159
+
160
+ # The timestamp associated with the current state.
161
+ # Corresponds to the JSON property `currentStateTime`
162
+ # @return [String]
163
+ attr_accessor :current_state_time
164
+
165
+ # The job's requested state. UpdateJob may be used to switch between the
166
+ # JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state.
167
+ # UpdateJob may also be used to directly set a job's requested state to
168
+ # JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it
169
+ # has not already reached a terminal state.
170
+ # Corresponds to the JSON property `requestedState`
171
+ # @return [String]
172
+ attr_accessor :requested_state
173
+
174
+ # Additional information about how a Dataflow job will be executed which isn’t
175
+ # contained in the submitted job.
176
+ # Corresponds to the JSON property `executionInfo`
177
+ # @return [Google::Apis::DataflowV1b3::JobExecutionInfo]
178
+ attr_accessor :execution_info
179
+
180
+ # Timestamp when job was initially created. Immutable, set by the Dataflow
181
+ # service.
182
+ # Corresponds to the JSON property `createTime`
183
+ # @return [String]
184
+ attr_accessor :create_time
185
+
186
+ # If this job is an update of an existing job, this field will be the ID of the
187
+ # job it replaced. When sending a CreateJobRequest, you can update a job by
188
+ # specifying it here. The job named here will be stopped, and its intermediate
189
+ # state transferred to this job.
190
+ # Corresponds to the JSON property `replaceJobId`
191
+ # @return [String]
192
+ attr_accessor :replace_job_id
193
+
194
+ # Map of transform name prefixes of the job to be replaced to the corresponding
195
+ # name prefixes of the new job.
196
+ # Corresponds to the JSON property `transformNameMapping`
197
+ # @return [Hash<String,String>]
198
+ attr_accessor :transform_name_mapping
199
+
200
+ # Client's unique identifier of the job, re-used by SDK across retried attempts.
201
+ # If this field is set, the service will ensure its uniqueness. That is, the
202
+ # request to create a job will fail if the service has knowledge of a previously
203
+ # submitted job with the same client's id and job name. The caller may, for
204
+ # example, use this field to ensure idempotence of job creation across retried
205
+ # attempts to create a job. By default, the field is empty and, in that case,
206
+ # the service ignores it.
207
+ # Corresponds to the JSON property `clientRequestId`
208
+ # @return [String]
209
+ attr_accessor :client_request_id
210
+
211
+ # If another job is an update of this job (and thus, this job is in
212
+ # JOB_STATE_UPDATED), this field will contain the ID of that job.
213
+ # Corresponds to the JSON property `replacedByJobId`
214
+ # @return [String]
215
+ attr_accessor :replaced_by_job_id
216
+
217
+ # A set of files the system should be aware of that are used for temporary
218
+ # storage. These temporary files will be removed on job completion. No
219
+ # duplicates are allowed. No file patterns are supported. The supported files
220
+ # are: Google Cloud Storage: storage.googleapis.com/`bucket`/`object` bucket.
221
+ # storage.googleapis.com/`object`
222
+ # Corresponds to the JSON property `tempFiles`
223
+ # @return [Array<String>]
224
+ attr_accessor :temp_files
225
+
226
+ # User-defined labels for this job. The labels map can contain no more than 64
227
+ # entries. Entries of the labels map are UTF8 strings that comply with the
228
+ # following restrictions: * Keys must conform to regexp: \p`Ll`\p`Lo``0,62` *
229
+ # Values must conform to regexp: [\p`Ll`\p`Lo`\p`N`_-]`0,63` * Both keys and
230
+ # values are additionally constrained to be <= 128 bytes in size.
231
+ # Corresponds to the JSON property `labels`
232
+ # @return [Hash<String,String>]
233
+ attr_accessor :labels
234
+
235
+ def initialize(**args)
236
+ update!(**args)
237
+ end
238
+
239
+ # Update properties of this object
240
+ def update!(**args)
241
+ @id = args[:id] if args.key?(:id)
242
+ @project_id = args[:project_id] if args.key?(:project_id)
243
+ @name = args[:name] if args.key?(:name)
244
+ @type = args[:type] if args.key?(:type)
245
+ @environment = args[:environment] if args.key?(:environment)
246
+ @steps = args[:steps] if args.key?(:steps)
247
+ @current_state = args[:current_state] if args.key?(:current_state)
248
+ @current_state_time = args[:current_state_time] if args.key?(:current_state_time)
249
+ @requested_state = args[:requested_state] if args.key?(:requested_state)
250
+ @execution_info = args[:execution_info] if args.key?(:execution_info)
251
+ @create_time = args[:create_time] if args.key?(:create_time)
252
+ @replace_job_id = args[:replace_job_id] if args.key?(:replace_job_id)
253
+ @transform_name_mapping = args[:transform_name_mapping] if args.key?(:transform_name_mapping)
254
+ @client_request_id = args[:client_request_id] if args.key?(:client_request_id)
255
+ @replaced_by_job_id = args[:replaced_by_job_id] if args.key?(:replaced_by_job_id)
256
+ @temp_files = args[:temp_files] if args.key?(:temp_files)
257
+ @labels = args[:labels] if args.key?(:labels)
258
+ end
259
+ end
260
+
261
+ # Describes the environment in which a Dataflow Job runs.
262
+ class Environment
263
+ include Google::Apis::Core::Hashable
264
+
265
+ # The prefix of the resources the system should use for temporary storage. The
266
+ # system will append the suffix "/temp-`JOBNAME` to this resource prefix, where `
267
+ # JOBNAME` is the value of the job_name field. The resulting bucket and object
268
+ # prefix is used as the prefix of the resources used to store temporary data
269
+ # needed during the job execution. NOTE: This will override the value in
270
+ # taskrunner_settings. The supported resource type is: Google Cloud Storage:
271
+ # storage.googleapis.com/`bucket`/`object` bucket.storage.googleapis.com/`object`
272
+ # Corresponds to the JSON property `tempStoragePrefix`
273
+ # @return [String]
274
+ attr_accessor :temp_storage_prefix
275
+
276
+ # The type of cluster manager API to use. If unknown or unspecified, the service
277
+ # will attempt to choose a reasonable default. This should be in the form of the
278
+ # API service name, e.g. "compute.googleapis.com".
279
+ # Corresponds to the JSON property `clusterManagerApiService`
280
+ # @return [String]
281
+ attr_accessor :cluster_manager_api_service
282
+
283
+ # The list of experiments to enable.
284
+ # Corresponds to the JSON property `experiments`
285
+ # @return [Array<String>]
286
+ attr_accessor :experiments
287
+
288
+ # Worker pools. At least one "harness" worker pool must be specified in order
289
+ # for the job to have workers.
290
+ # Corresponds to the JSON property `workerPools`
291
+ # @return [Array<Google::Apis::DataflowV1b3::WorkerPool>]
292
+ attr_accessor :worker_pools
293
+
294
+ # A description of the process that generated the request.
295
+ # Corresponds to the JSON property `userAgent`
296
+ # @return [Hash<String,Object>]
297
+ attr_accessor :user_agent
298
+
299
+ # A structure describing which components and their versions of the service are
300
+ # required in order to run the job.
301
+ # Corresponds to the JSON property `version`
302
+ # @return [Hash<String,Object>]
303
+ attr_accessor :version
304
+
305
+ # The dataset for the current project where various workflow related tables are
306
+ # stored. The supported resource type is: Google BigQuery: bigquery.googleapis.
307
+ # com/`dataset`
308
+ # Corresponds to the JSON property `dataset`
309
+ # @return [String]
310
+ attr_accessor :dataset
311
+
312
+ # The Dataflow SDK pipeline options specified by the user. These options are
313
+ # passed through the service and are used to recreate the SDK pipeline options
314
+ # on the worker in a language agnostic and platform independent way.
315
+ # Corresponds to the JSON property `sdkPipelineOptions`
316
+ # @return [Hash<String,Object>]
317
+ attr_accessor :sdk_pipeline_options
318
+
319
+ # Experimental settings.
320
+ # Corresponds to the JSON property `internalExperiments`
321
+ # @return [Hash<String,Object>]
322
+ attr_accessor :internal_experiments
323
+
324
+ # Identity to run virtual machines as. Defaults to the default account.
325
+ # Corresponds to the JSON property `serviceAccountEmail`
326
+ # @return [String]
327
+ attr_accessor :service_account_email
328
+
329
+ def initialize(**args)
330
+ update!(**args)
331
+ end
332
+
333
+ # Update properties of this object
334
+ def update!(**args)
335
+ @temp_storage_prefix = args[:temp_storage_prefix] if args.key?(:temp_storage_prefix)
336
+ @cluster_manager_api_service = args[:cluster_manager_api_service] if args.key?(:cluster_manager_api_service)
337
+ @experiments = args[:experiments] if args.key?(:experiments)
338
+ @worker_pools = args[:worker_pools] if args.key?(:worker_pools)
339
+ @user_agent = args[:user_agent] if args.key?(:user_agent)
340
+ @version = args[:version] if args.key?(:version)
341
+ @dataset = args[:dataset] if args.key?(:dataset)
342
+ @sdk_pipeline_options = args[:sdk_pipeline_options] if args.key?(:sdk_pipeline_options)
343
+ @internal_experiments = args[:internal_experiments] if args.key?(:internal_experiments)
344
+ @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
345
+ end
346
+ end
347
+
348
+ # Describes one particular pool of Dataflow workers to be instantiated by the
349
+ # Dataflow service in order to perform the computations required by a job. Note
350
+ # that a workflow job may use multiple pools, in order to match the various
351
+ # computational requirements of the various stages of the job.
352
+ class WorkerPool
353
+ include Google::Apis::Core::Hashable
354
+
355
+ # The kind of the worker pool; currently only 'harness' and 'shuffle' are
356
+ # supported.
357
+ # Corresponds to the JSON property `kind`
358
+ # @return [String]
359
+ attr_accessor :kind
360
+
361
+ # Number of Google Compute Engine workers in this pool needed to execute the job.
362
+ # If zero or unspecified, the service will attempt to choose a reasonable
363
+ # default.
364
+ # Corresponds to the JSON property `numWorkers`
365
+ # @return [Fixnum]
366
+ attr_accessor :num_workers
367
+
368
+ # Packages to be installed on workers.
369
+ # Corresponds to the JSON property `packages`
370
+ # @return [Array<Google::Apis::DataflowV1b3::Package>]
371
+ attr_accessor :packages
372
+
373
+ # The default package set to install. This allows the service to select a
374
+ # default set of packages which are useful to worker harnesses written in a
375
+ # particular language.
376
+ # Corresponds to the JSON property `defaultPackageSet`
377
+ # @return [String]
378
+ attr_accessor :default_package_set
379
+
380
+ # Machine type (e.g. "n1-standard-1"). If empty or unspecified, the service will
381
+ # attempt to choose a reasonable default.
382
+ # Corresponds to the JSON property `machineType`
383
+ # @return [String]
384
+ attr_accessor :machine_type
385
+
386
+ # Sets the policy for determining when to turndown worker pool. Allowed values
387
+ # are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER. TEARDOWN_ALWAYS
388
+ # means workers are always torn down regardless of whether the job succeeds.
389
+ # TEARDOWN_ON_SUCCESS means workers are torn down if the job succeeds.
390
+ # TEARDOWN_NEVER means the workers are never torn down. If the workers are not
391
+ # torn down by the service, they will continue to run and use Google Compute
392
+ # Engine VM resources in the user's project until they are explicitly terminated
393
+ # by the user. Because of this, Google recommends using the TEARDOWN_ALWAYS
394
+ # policy except for small, manually supervised test jobs. If unknown or
395
+ # unspecified, the service will attempt to choose a reasonable default.
396
+ # Corresponds to the JSON property `teardownPolicy`
397
+ # @return [String]
398
+ attr_accessor :teardown_policy
399
+
400
+ # Size of root disk for VMs, in GB. If zero or unspecified, the service will
401
+ # attempt to choose a reasonable default.
402
+ # Corresponds to the JSON property `diskSizeGb`
403
+ # @return [Fixnum]
404
+ attr_accessor :disk_size_gb
405
+
406
+ # Type of root disk for VMs. If empty or unspecified, the service will attempt
407
+ # to choose a reasonable default.
408
+ # Corresponds to the JSON property `diskType`
409
+ # @return [String]
410
+ attr_accessor :disk_type
411
+
412
+ # Fully qualified source image for disks.
413
+ # Corresponds to the JSON property `diskSourceImage`
414
+ # @return [String]
415
+ attr_accessor :disk_source_image
416
+
417
+ # Zone to run the worker pools in. If empty or unspecified, the service will
418
+ # attempt to choose a reasonable default.
419
+ # Corresponds to the JSON property `zone`
420
+ # @return [String]
421
+ attr_accessor :zone
422
+
423
+ # Taskrunner configuration settings.
424
+ # Corresponds to the JSON property `taskrunnerSettings`
425
+ # @return [Google::Apis::DataflowV1b3::TaskRunnerSettings]
426
+ attr_accessor :taskrunner_settings
427
+
428
+ # The action to take on host maintenance, as defined by the Google Compute
429
+ # Engine API.
430
+ # Corresponds to the JSON property `onHostMaintenance`
431
+ # @return [String]
432
+ attr_accessor :on_host_maintenance
433
+
434
+ # Data disks that are used by a VM in this workflow.
435
+ # Corresponds to the JSON property `dataDisks`
436
+ # @return [Array<Google::Apis::DataflowV1b3::Disk>]
437
+ attr_accessor :data_disks
438
+
439
+ # Metadata to set on the Google Compute Engine VMs.
440
+ # Corresponds to the JSON property `metadata`
441
+ # @return [Hash<String,String>]
442
+ attr_accessor :metadata
443
+
444
+ # Settings for WorkerPool autoscaling.
445
+ # Corresponds to the JSON property `autoscalingSettings`
446
+ # @return [Google::Apis::DataflowV1b3::AutoscalingSettings]
447
+ attr_accessor :autoscaling_settings
448
+
449
+ # Extra arguments for this worker pool.
450
+ # Corresponds to the JSON property `poolArgs`
451
+ # @return [Hash<String,Object>]
452
+ attr_accessor :pool_args
453
+
454
+ # Network to which VMs will be assigned. If empty or unspecified, the service
455
+ # will use the network "default".
456
+ # Corresponds to the JSON property `network`
457
+ # @return [String]
458
+ attr_accessor :network
459
+
460
+ # Subnetwork to which VMs will be assigned, if desired. Expected to be of the
461
+ # form "regions/REGION/subnetworks/SUBNETWORK".
462
+ # Corresponds to the JSON property `subnetwork`
463
+ # @return [String]
464
+ attr_accessor :subnetwork
465
+
466
+ # Docker container image that executes Dataflow worker harness, residing in
467
+ # Google Container Registry. Required.
468
+ # Corresponds to the JSON property `workerHarnessContainerImage`
469
+ # @return [String]
470
+ attr_accessor :worker_harness_container_image
471
+
472
+ # The number of threads per worker harness. If empty or unspecified, the service
473
+ # will choose a number of threads (according to the number of cores on the
474
+ # selected machine type for batch, or 1 by convention for streaming).
475
+ # Corresponds to the JSON property `numThreadsPerWorker`
476
+ # @return [Fixnum]
477
+ attr_accessor :num_threads_per_worker
478
+
479
+ # Configuration for VM IPs.
480
+ # Corresponds to the JSON property `ipConfiguration`
481
+ # @return [String]
482
+ attr_accessor :ip_configuration
483
+
484
+ def initialize(**args)
485
+ update!(**args)
486
+ end
487
+
488
+ # Update properties of this object
489
+ def update!(**args)
490
+ @kind = args[:kind] if args.key?(:kind)
491
+ @num_workers = args[:num_workers] if args.key?(:num_workers)
492
+ @packages = args[:packages] if args.key?(:packages)
493
+ @default_package_set = args[:default_package_set] if args.key?(:default_package_set)
494
+ @machine_type = args[:machine_type] if args.key?(:machine_type)
495
+ @teardown_policy = args[:teardown_policy] if args.key?(:teardown_policy)
496
+ @disk_size_gb = args[:disk_size_gb] if args.key?(:disk_size_gb)
497
+ @disk_type = args[:disk_type] if args.key?(:disk_type)
498
+ @disk_source_image = args[:disk_source_image] if args.key?(:disk_source_image)
499
+ @zone = args[:zone] if args.key?(:zone)
500
+ @taskrunner_settings = args[:taskrunner_settings] if args.key?(:taskrunner_settings)
501
+ @on_host_maintenance = args[:on_host_maintenance] if args.key?(:on_host_maintenance)
502
+ @data_disks = args[:data_disks] if args.key?(:data_disks)
503
+ @metadata = args[:metadata] if args.key?(:metadata)
504
+ @autoscaling_settings = args[:autoscaling_settings] if args.key?(:autoscaling_settings)
505
+ @pool_args = args[:pool_args] if args.key?(:pool_args)
506
+ @network = args[:network] if args.key?(:network)
507
+ @subnetwork = args[:subnetwork] if args.key?(:subnetwork)
508
+ @worker_harness_container_image = args[:worker_harness_container_image] if args.key?(:worker_harness_container_image)
509
+ @num_threads_per_worker = args[:num_threads_per_worker] if args.key?(:num_threads_per_worker)
510
+ @ip_configuration = args[:ip_configuration] if args.key?(:ip_configuration)
511
+ end
512
+ end
513
+
514
+ # Packages that need to be installed in order for a worker to run the steps of
515
+ # the Dataflow job which will be assigned to its worker pool. This is the
516
+ # mechanism by which the SDK causes code to be loaded onto the workers. For
517
+ # example, the Dataflow Java SDK might use this to install jars containing the
518
+ # user's code and all of the various dependencies (libraries, data files, etc)
519
+ # required in order for that code to run.
520
+ class Package
521
+ include Google::Apis::Core::Hashable
522
+
523
+ # The name of the package.
524
+ # Corresponds to the JSON property `name`
525
+ # @return [String]
526
+ attr_accessor :name
527
+
528
+ # The resource to read the package from. The supported resource type is: Google
529
+ # Cloud Storage: storage.googleapis.com/`bucket` bucket.storage.googleapis.com/
530
+ # Corresponds to the JSON property `location`
531
+ # @return [String]
532
+ attr_accessor :location
533
+
534
+ def initialize(**args)
535
+ update!(**args)
536
+ end
537
+
538
+ # Update properties of this object
539
+ def update!(**args)
540
+ @name = args[:name] if args.key?(:name)
541
+ @location = args[:location] if args.key?(:location)
542
+ end
543
+ end
544
+
545
+ # Taskrunner configuration settings.
546
+ class TaskRunnerSettings
547
+ include Google::Apis::Core::Hashable
548
+
549
+ # The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g.
550
+ # "root".
551
+ # Corresponds to the JSON property `taskUser`
552
+ # @return [String]
553
+ attr_accessor :task_user
554
+
555
+ # The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.
556
+ # g. "wheel".
557
+ # Corresponds to the JSON property `taskGroup`
558
+ # @return [String]
559
+ attr_accessor :task_group
560
+
561
+ # OAuth2 scopes to be requested by the taskrunner in order to access the
562
+ # dataflow API.
563
+ # Corresponds to the JSON property `oauthScopes`
564
+ # @return [Array<String>]
565
+ attr_accessor :oauth_scopes
566
+
567
+ # The base URL for the taskrunner to use when accessing Google Cloud APIs. When
568
+ # workers access Google Cloud APIs, they logically do so via relative URLs. If
569
+ # this field is specified, it supplies the base URL to use for resolving these
570
+ # relative URLs. The normative algorithm used is defined by RFC 1808, "Relative
571
+ # Uniform Resource Locators". If not specified, the default value is "http://www.
572
+ # googleapis.com/"
573
+ # Corresponds to the JSON property `baseUrl`
574
+ # @return [String]
575
+ attr_accessor :base_url
576
+
577
+ # API version of endpoint, e.g. "v1b3"
578
+ # Corresponds to the JSON property `dataflowApiVersion`
579
+ # @return [String]
580
+ attr_accessor :dataflow_api_version
581
+
582
+ # Provides data to pass through to the worker harness.
583
+ # Corresponds to the JSON property `parallelWorkerSettings`
584
+ # @return [Google::Apis::DataflowV1b3::WorkerSettings]
585
+ attr_accessor :parallel_worker_settings
586
+
587
+ # Location on the worker for task-specific subdirectories.
588
+ # Corresponds to the JSON property `baseTaskDir`
589
+ # @return [String]
590
+ attr_accessor :base_task_dir
591
+
592
+ # Do we continue taskrunner if an exception is hit?
593
+ # Corresponds to the JSON property `continueOnException`
594
+ # @return [Boolean]
595
+ attr_accessor :continue_on_exception
596
+ alias_method :continue_on_exception?, :continue_on_exception
597
+
598
+ # Send taskrunner log into to Google Compute Engine VM serial console?
599
+ # Corresponds to the JSON property `logToSerialconsole`
600
+ # @return [Boolean]
601
+ attr_accessor :log_to_serialconsole
602
+ alias_method :log_to_serialconsole?, :log_to_serialconsole
603
+
604
+ # Also send taskrunner log info to stderr?
605
+ # Corresponds to the JSON property `alsologtostderr`
606
+ # @return [Boolean]
607
+ attr_accessor :alsologtostderr
608
+ alias_method :alsologtostderr?, :alsologtostderr
609
+
610
+ # Indicates where to put logs. If this is not specified, the logs will not be
611
+ # uploaded. The supported resource type is: Google Cloud Storage: storage.
612
+ # googleapis.com/`bucket`/`object` bucket.storage.googleapis.com/`object`
613
+ # Corresponds to the JSON property `logUploadLocation`
614
+ # @return [String]
615
+ attr_accessor :log_upload_location
616
+
617
+ # Directory on the VM to store logs.
618
+ # Corresponds to the JSON property `logDir`
619
+ # @return [String]
620
+ attr_accessor :log_dir
621
+
622
+ # The prefix of the resources the taskrunner should use for temporary storage.
623
+ # The supported resource type is: Google Cloud Storage: storage.googleapis.com/`
624
+ # bucket`/`object` bucket.storage.googleapis.com/`object`
625
+ # Corresponds to the JSON property `tempStoragePrefix`
626
+ # @return [String]
627
+ attr_accessor :temp_storage_prefix
628
+
629
+ # Command to launch the worker harness.
630
+ # Corresponds to the JSON property `harnessCommand`
631
+ # @return [String]
632
+ attr_accessor :harness_command
633
+
634
+ # Store the workflow in this file.
635
+ # Corresponds to the JSON property `workflowFileName`
636
+ # @return [String]
637
+ attr_accessor :workflow_file_name
638
+
639
+ # Store preprocessing commands in this file.
640
+ # Corresponds to the JSON property `commandlinesFileName`
641
+ # @return [String]
642
+ attr_accessor :commandlines_file_name
643
+
644
+ # ID string of VM.
645
+ # Corresponds to the JSON property `vmId`
646
+ # @return [String]
647
+ attr_accessor :vm_id
648
+
649
+ # Suggested backend language.
650
+ # Corresponds to the JSON property `languageHint`
651
+ # @return [String]
652
+ attr_accessor :language_hint
653
+
654
+ # Streaming worker main class name.
655
+ # Corresponds to the JSON property `streamingWorkerMainClass`
656
+ # @return [String]
657
+ attr_accessor :streaming_worker_main_class
658
+
659
+ def initialize(**args)
660
+ update!(**args)
661
+ end
662
+
663
+ # Update properties of this object
664
+ def update!(**args)
665
+ @task_user = args[:task_user] if args.key?(:task_user)
666
+ @task_group = args[:task_group] if args.key?(:task_group)
667
+ @oauth_scopes = args[:oauth_scopes] if args.key?(:oauth_scopes)
668
+ @base_url = args[:base_url] if args.key?(:base_url)
669
+ @dataflow_api_version = args[:dataflow_api_version] if args.key?(:dataflow_api_version)
670
+ @parallel_worker_settings = args[:parallel_worker_settings] if args.key?(:parallel_worker_settings)
671
+ @base_task_dir = args[:base_task_dir] if args.key?(:base_task_dir)
672
+ @continue_on_exception = args[:continue_on_exception] if args.key?(:continue_on_exception)
673
+ @log_to_serialconsole = args[:log_to_serialconsole] if args.key?(:log_to_serialconsole)
674
+ @alsologtostderr = args[:alsologtostderr] if args.key?(:alsologtostderr)
675
+ @log_upload_location = args[:log_upload_location] if args.key?(:log_upload_location)
676
+ @log_dir = args[:log_dir] if args.key?(:log_dir)
677
+ @temp_storage_prefix = args[:temp_storage_prefix] if args.key?(:temp_storage_prefix)
678
+ @harness_command = args[:harness_command] if args.key?(:harness_command)
679
+ @workflow_file_name = args[:workflow_file_name] if args.key?(:workflow_file_name)
680
+ @commandlines_file_name = args[:commandlines_file_name] if args.key?(:commandlines_file_name)
681
+ @vm_id = args[:vm_id] if args.key?(:vm_id)
682
+ @language_hint = args[:language_hint] if args.key?(:language_hint)
683
+ @streaming_worker_main_class = args[:streaming_worker_main_class] if args.key?(:streaming_worker_main_class)
684
+ end
685
+ end
686
+
687
+ # Provides data to pass through to the worker harness.
688
+ class WorkerSettings
689
+ include Google::Apis::Core::Hashable
690
+
691
+ # The base URL for accessing Google Cloud APIs. When workers access Google Cloud
692
+ # APIs, they logically do so via relative URLs. If this field is specified, it
693
+ # supplies the base URL to use for resolving these relative URLs. The normative
694
+ # algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators".
695
+ # If not specified, the default value is "http://www.googleapis.com/"
696
+ # Corresponds to the JSON property `baseUrl`
697
+ # @return [String]
698
+ attr_accessor :base_url
699
+
700
+ # Send work progress updates to service.
701
+ # Corresponds to the JSON property `reportingEnabled`
702
+ # @return [Boolean]
703
+ attr_accessor :reporting_enabled
704
+ alias_method :reporting_enabled?, :reporting_enabled
705
+
706
+ # The Dataflow service path relative to the root URL, for example, "dataflow/
707
+ # v1b3/projects".
708
+ # Corresponds to the JSON property `servicePath`
709
+ # @return [String]
710
+ attr_accessor :service_path
711
+
712
+ # The Shuffle service path relative to the root URL, for example, "shuffle/
713
+ # v1beta1".
714
+ # Corresponds to the JSON property `shuffleServicePath`
715
+ # @return [String]
716
+ attr_accessor :shuffle_service_path
717
+
718
+ # ID of the worker running this pipeline.
719
+ # Corresponds to the JSON property `workerId`
720
+ # @return [String]
721
+ attr_accessor :worker_id
722
+
723
+ # The prefix of the resources the system should use for temporary storage. The
724
+ # supported resource type is: Google Cloud Storage: storage.googleapis.com/`
725
+ # bucket`/`object` bucket.storage.googleapis.com/`object`
726
+ # Corresponds to the JSON property `tempStoragePrefix`
727
+ # @return [String]
728
+ attr_accessor :temp_storage_prefix
729
+
730
+ def initialize(**args)
731
+ update!(**args)
732
+ end
733
+
734
+ # Update properties of this object
735
+ def update!(**args)
736
+ @base_url = args[:base_url] if args.key?(:base_url)
737
+ @reporting_enabled = args[:reporting_enabled] if args.key?(:reporting_enabled)
738
+ @service_path = args[:service_path] if args.key?(:service_path)
739
+ @shuffle_service_path = args[:shuffle_service_path] if args.key?(:shuffle_service_path)
740
+ @worker_id = args[:worker_id] if args.key?(:worker_id)
741
+ @temp_storage_prefix = args[:temp_storage_prefix] if args.key?(:temp_storage_prefix)
742
+ end
743
+ end
744
+
745
+ # Describes the data disk used by a workflow job.
746
+ class Disk
747
+ include Google::Apis::Core::Hashable
748
+
749
+ # Size of disk in GB. If zero or unspecified, the service will attempt to choose
750
+ # a reasonable default.
751
+ # Corresponds to the JSON property `sizeGb`
752
+ # @return [Fixnum]
753
+ attr_accessor :size_gb
754
+
755
+ # Disk storage type, as defined by Google Compute Engine. This must be a disk
756
+ # type appropriate to the project and zone in which the workers will run. If
757
+ # unknown or unspecified, the service will attempt to choose a reasonable
758
+ # default. For example, the standard persistent disk type is a resource name
759
+ # typically ending in "pd-standard". If SSD persistent disks are available, the
760
+ # resource name typically ends with "pd-ssd". The actual valid values are
761
+ # defined the Google Compute Engine API, not by the Dataflow API; consult the
762
+ # Google Compute Engine documentation for more information about determining the
763
+ # set of available disk types for a particular project and zone. Google Compute
764
+ # Engine Disk types are local to a particular project in a particular zone, and
765
+ # so the resource name will typically look something like this: compute.
766
+ # googleapis.com/projects/
767
+ # /zones//diskTypes/pd-standard
768
+ # Corresponds to the JSON property `diskType`
769
+ # @return [String]
770
+ attr_accessor :disk_type
771
+
772
+ # Directory in a VM where disk is mounted.
773
+ # Corresponds to the JSON property `mountPoint`
774
+ # @return [String]
775
+ attr_accessor :mount_point
776
+
777
+ def initialize(**args)
778
+ update!(**args)
779
+ end
780
+
781
+ # Update properties of this object
782
+ def update!(**args)
783
+ @size_gb = args[:size_gb] if args.key?(:size_gb)
784
+ @disk_type = args[:disk_type] if args.key?(:disk_type)
785
+ @mount_point = args[:mount_point] if args.key?(:mount_point)
786
+ end
787
+ end
788
+
789
+ # Settings for WorkerPool autoscaling.
790
+ class AutoscalingSettings
791
+ include Google::Apis::Core::Hashable
792
+
793
+ # The algorithm to use for autoscaling.
794
+ # Corresponds to the JSON property `algorithm`
795
+ # @return [String]
796
+ attr_accessor :algorithm
797
+
798
+ # The maximum number of workers to cap scaling at.
799
+ # Corresponds to the JSON property `maxNumWorkers`
800
+ # @return [Fixnum]
801
+ attr_accessor :max_num_workers
802
+
803
+ def initialize(**args)
804
+ update!(**args)
805
+ end
806
+
807
+ # Update properties of this object
808
+ def update!(**args)
809
+ @algorithm = args[:algorithm] if args.key?(:algorithm)
810
+ @max_num_workers = args[:max_num_workers] if args.key?(:max_num_workers)
811
+ end
812
+ end
813
+
814
+ # Defines a particular step within a Dataflow job. A job consists of multiple
815
+ # steps, each of which performs some specific operation as part of the overall
816
+ # job. Data is typically passed from one step to another as part of the job.
817
+ # Here's an example of a sequence of steps which together implement a Map-Reduce
818
+ # job: * Read a collection of data from some source, parsing the collection's
819
+ # elements. * Validate the elements. * Apply a user-defined function to map each
820
+ # element to some value and extract an element-specific key value. * Group
821
+ # elements with the same key into a single element with that key, transforming a
822
+ # multiply-keyed collection into a uniquely-keyed collection. * Write the
823
+ # elements out to some data sink. (Note that the Dataflow service may be used to
824
+ # run many different types of jobs, not just Map-Reduce).
825
+ class Step
826
+ include Google::Apis::Core::Hashable
827
+
828
+ # The kind of step in the dataflow Job.
829
+ # Corresponds to the JSON property `kind`
830
+ # @return [String]
831
+ attr_accessor :kind
832
+
833
+ # Name identifying the step. This must be unique for each step with respect to
834
+ # all other steps in the dataflow Job.
835
+ # Corresponds to the JSON property `name`
836
+ # @return [String]
837
+ attr_accessor :name
838
+
839
+ # Named properties associated with the step. Each kind of predefined step has
840
+ # its own required set of properties.
841
+ # Corresponds to the JSON property `properties`
842
+ # @return [Hash<String,Object>]
843
+ attr_accessor :properties
844
+
845
+ def initialize(**args)
846
+ update!(**args)
847
+ end
848
+
849
+ # Update properties of this object
850
+ def update!(**args)
851
+ @kind = args[:kind] if args.key?(:kind)
852
+ @name = args[:name] if args.key?(:name)
853
+ @properties = args[:properties] if args.key?(:properties)
854
+ end
855
+ end
856
+
857
+ # Additional information about how a Dataflow job will be executed which isn’t
858
+ # contained in the submitted job.
859
+ class JobExecutionInfo
860
+ include Google::Apis::Core::Hashable
861
+
862
+ # A mapping from each stage to the information about that stage.
863
+ # Corresponds to the JSON property `stages`
864
+ # @return [Hash<String,Google::Apis::DataflowV1b3::JobExecutionStageInfo>]
865
+ attr_accessor :stages
866
+
867
+ def initialize(**args)
868
+ update!(**args)
869
+ end
870
+
871
+ # Update properties of this object
872
+ def update!(**args)
873
+ @stages = args[:stages] if args.key?(:stages)
874
+ end
875
+ end
876
+
877
+ # Contains information about how a particular google.dataflow.v1beta3.Step will
878
+ # be executed.
879
+ class JobExecutionStageInfo
880
+ include Google::Apis::Core::Hashable
881
+
882
+ # The steps associated with the execution stage. Note that stages may have
883
+ # several steps, and that a given step might be run by more than one stage.
884
+ # Corresponds to the JSON property `stepName`
885
+ # @return [Array<String>]
886
+ attr_accessor :step_name
887
+
888
+ def initialize(**args)
889
+ update!(**args)
890
+ end
891
+
892
+ # Update properties of this object
893
+ def update!(**args)
894
+ @step_name = args[:step_name] if args.key?(:step_name)
895
+ end
896
+ end
897
+
898
+ # Response to a request to list Dataflow jobs. This may be a partial response,
899
+ # depending on the page size in the ListJobsRequest.
900
+ class ListJobsResponse
901
+ include Google::Apis::Core::Hashable
902
+
903
+ # A subset of the requested job information.
904
+ # Corresponds to the JSON property `jobs`
905
+ # @return [Array<Google::Apis::DataflowV1b3::Job>]
906
+ attr_accessor :jobs
907
+
908
+ # Set if there may be more results than fit in this response.
909
+ # Corresponds to the JSON property `nextPageToken`
910
+ # @return [String]
911
+ attr_accessor :next_page_token
912
+
913
+ def initialize(**args)
914
+ update!(**args)
915
+ end
916
+
917
+ # Update properties of this object
918
+ def update!(**args)
919
+ @jobs = args[:jobs] if args.key?(:jobs)
920
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
921
+ end
922
+ end
923
+
924
+ # Response to a request to list job messages.
925
+ class ListJobMessagesResponse
926
+ include Google::Apis::Core::Hashable
927
+
928
+ # Messages in ascending timestamp order.
929
+ # Corresponds to the JSON property `jobMessages`
930
+ # @return [Array<Google::Apis::DataflowV1b3::JobMessage>]
931
+ attr_accessor :job_messages
932
+
933
+ # The token to obtain the next page of results if there are more.
934
+ # Corresponds to the JSON property `nextPageToken`
935
+ # @return [String]
936
+ attr_accessor :next_page_token
937
+
938
+ def initialize(**args)
939
+ update!(**args)
940
+ end
941
+
942
+ # Update properties of this object
943
+ def update!(**args)
944
+ @job_messages = args[:job_messages] if args.key?(:job_messages)
945
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
946
+ end
947
+ end
948
+
949
+ # A particular message pertaining to a Dataflow job.
950
+ class JobMessage
951
+ include Google::Apis::Core::Hashable
952
+
953
+ # Identifies the message. This is automatically generated by the service; the
954
+ # caller should treat it as an opaque string.
955
+ # Corresponds to the JSON property `id`
956
+ # @return [String]
957
+ attr_accessor :id
958
+
959
+ # The timestamp of the message.
960
+ # Corresponds to the JSON property `time`
961
+ # @return [String]
962
+ attr_accessor :time
963
+
964
+ # The text of the message.
965
+ # Corresponds to the JSON property `messageText`
966
+ # @return [String]
967
+ attr_accessor :message_text
968
+
969
+ # Importance level of the message.
970
+ # Corresponds to the JSON property `messageImportance`
971
+ # @return [String]
972
+ attr_accessor :message_importance
973
+
974
+ def initialize(**args)
975
+ update!(**args)
976
+ end
977
+
978
+ # Update properties of this object
979
+ def update!(**args)
980
+ @id = args[:id] if args.key?(:id)
981
+ @time = args[:time] if args.key?(:time)
982
+ @message_text = args[:message_text] if args.key?(:message_text)
983
+ @message_importance = args[:message_importance] if args.key?(:message_importance)
984
+ end
985
+ end
986
+
987
+ # JobMetrics contains a collection of metrics descibing the detailed progress of
988
+ # a Dataflow job. Metrics correspond to user-defined and system-defined metrics
989
+ # in the job. This resource captures only the most recent values of each metric;
990
+ # time-series data can be queried for them (under the same metric names) from
991
+ # Cloud Monitoring.
992
+ class JobMetrics
993
+ include Google::Apis::Core::Hashable
994
+
995
+ # Timestamp as of which metric values are current.
996
+ # Corresponds to the JSON property `metricTime`
997
+ # @return [String]
998
+ attr_accessor :metric_time
999
+
1000
+ # All metrics for this job.
1001
+ # Corresponds to the JSON property `metrics`
1002
+ # @return [Array<Google::Apis::DataflowV1b3::MetricUpdate>]
1003
+ attr_accessor :metrics
1004
+
1005
+ def initialize(**args)
1006
+ update!(**args)
1007
+ end
1008
+
1009
+ # Update properties of this object
1010
+ def update!(**args)
1011
+ @metric_time = args[:metric_time] if args.key?(:metric_time)
1012
+ @metrics = args[:metrics] if args.key?(:metrics)
1013
+ end
1014
+ end
1015
+
1016
+ # Describes the state of a metric.
1017
+ class MetricUpdate
1018
+ include Google::Apis::Core::Hashable
1019
+
1020
+ # Identifies a metric, by describing the source which generated the metric.
1021
+ # Corresponds to the JSON property `name`
1022
+ # @return [Google::Apis::DataflowV1b3::MetricStructuredName]
1023
+ attr_accessor :name
1024
+
1025
+ # Metric aggregation kind. The possible metric aggregation kinds are "Sum", "Max"
1026
+ # , "Min", "Mean", "Set", "And", and "Or". The specified aggregation kind is
1027
+ # case-insensitive. If omitted, this is not an aggregated value but instead a
1028
+ # single metric sample value.
1029
+ # Corresponds to the JSON property `kind`
1030
+ # @return [String]
1031
+ attr_accessor :kind
1032
+
1033
+ # True if this metric is reported as the total cumulative aggregate value
1034
+ # accumulated since the worker started working on this WorkItem. By default this
1035
+ # is false, indicating that this metric is reported as a delta that is not
1036
+ # associated with any WorkItem.
1037
+ # Corresponds to the JSON property `cumulative`
1038
+ # @return [Boolean]
1039
+ attr_accessor :cumulative
1040
+ alias_method :cumulative?, :cumulative
1041
+
1042
+ # Worker-computed aggregate value for aggregation kinds "Sum", "Max", "Min", "
1043
+ # And", and "Or". The possible value types are Long, Double, and Boolean.
1044
+ # Corresponds to the JSON property `scalar`
1045
+ # @return [Object]
1046
+ attr_accessor :scalar
1047
+
1048
+ # Worker-computed aggregate value for the "Mean" aggregation kind. This holds
1049
+ # the sum of the aggregated values and is used in combination with mean_count
1050
+ # below to obtain the actual mean aggregate value. The only possible value types
1051
+ # are Long and Double.
1052
+ # Corresponds to the JSON property `meanSum`
1053
+ # @return [Object]
1054
+ attr_accessor :mean_sum
1055
+
1056
+ # Worker-computed aggregate value for the "Mean" aggregation kind. This holds
1057
+ # the count of the aggregated values and is used in combination with mean_sum
1058
+ # above to obtain the actual mean aggregate value. The only possible value type
1059
+ # is Long.
1060
+ # Corresponds to the JSON property `meanCount`
1061
+ # @return [Object]
1062
+ attr_accessor :mean_count
1063
+
1064
+ # Worker-computed aggregate value for the "Set" aggregation kind. The only
1065
+ # possible value type is a list of Values whose type can be Long, Double, or
1066
+ # String, according to the metric's type. All Values in the list must be of the
1067
+ # same type.
1068
+ # Corresponds to the JSON property `set`
1069
+ # @return [Object]
1070
+ attr_accessor :set
1071
+
1072
+ # Worker-computed aggregate value for internal use by the Dataflow service.
1073
+ # Corresponds to the JSON property `internal`
1074
+ # @return [Object]
1075
+ attr_accessor :internal
1076
+
1077
+ # Timestamp associated with the metric value. Optional when workers are
1078
+ # reporting work progress; it will be filled in responses from the metrics API.
1079
+ # Corresponds to the JSON property `updateTime`
1080
+ # @return [String]
1081
+ attr_accessor :update_time
1082
+
1083
+ def initialize(**args)
1084
+ update!(**args)
1085
+ end
1086
+
1087
+ # Update properties of this object
1088
+ def update!(**args)
1089
+ @name = args[:name] if args.key?(:name)
1090
+ @kind = args[:kind] if args.key?(:kind)
1091
+ @cumulative = args[:cumulative] if args.key?(:cumulative)
1092
+ @scalar = args[:scalar] if args.key?(:scalar)
1093
+ @mean_sum = args[:mean_sum] if args.key?(:mean_sum)
1094
+ @mean_count = args[:mean_count] if args.key?(:mean_count)
1095
+ @set = args[:set] if args.key?(:set)
1096
+ @internal = args[:internal] if args.key?(:internal)
1097
+ @update_time = args[:update_time] if args.key?(:update_time)
1098
+ end
1099
+ end
1100
+
1101
+ # Identifies a metric, by describing the source which generated the metric.
1102
+ class MetricStructuredName
1103
+ include Google::Apis::Core::Hashable
1104
+
1105
+ # Origin (namespace) of metric name. May be blank for user-define metrics; will
1106
+ # be "dataflow" for metrics defined by the Dataflow service or SDK.
1107
+ # Corresponds to the JSON property `origin`
1108
+ # @return [String]
1109
+ attr_accessor :origin
1110
+
1111
+ # Worker-defined metric name.
1112
+ # Corresponds to the JSON property `name`
1113
+ # @return [String]
1114
+ attr_accessor :name
1115
+
1116
+ # Zero or more labeled fields which identify the part of the job this metric is
1117
+ # associated with, such as the name of a step or collection. For example, built-
1118
+ # in counters associated with steps will have context['step'] = . Counters
1119
+ # associated with PCollections in the SDK will have context['pcollection'] =
1120
+ # .
1121
+ # Corresponds to the JSON property `context`
1122
+ # @return [Hash<String,String>]
1123
+ attr_accessor :context
1124
+
1125
+ def initialize(**args)
1126
+ update!(**args)
1127
+ end
1128
+
1129
+ # Update properties of this object
1130
+ def update!(**args)
1131
+ @origin = args[:origin] if args.key?(:origin)
1132
+ @name = args[:name] if args.key?(:name)
1133
+ @context = args[:context] if args.key?(:context)
1134
+ end
1135
+ end
1136
+
1137
+ # Request to create a Dataflow job.
1138
+ class CreateJobFromTemplateRequest
1139
+ include Google::Apis::Core::Hashable
1140
+
1141
+ # A path to the serialized JSON representation of the job.
1142
+ # Corresponds to the JSON property `gcsPath`
1143
+ # @return [String]
1144
+ attr_accessor :gcs_path
1145
+
1146
+ # Dynamic parameterization of the job's runtime environment.
1147
+ # Corresponds to the JSON property `parameters`
1148
+ # @return [Hash<String,String>]
1149
+ attr_accessor :parameters
1150
+
1151
+ def initialize(**args)
1152
+ update!(**args)
1153
+ end
1154
+
1155
+ # Update properties of this object
1156
+ def update!(**args)
1157
+ @gcs_path = args[:gcs_path] if args.key?(:gcs_path)
1158
+ @parameters = args[:parameters] if args.key?(:parameters)
1159
+ end
1160
+ end
1161
+
1162
+ # Request to report the status of WorkItems.
1163
+ class ReportWorkItemStatusRequest
1164
+ include Google::Apis::Core::Hashable
1165
+
1166
+ # The ID of the worker reporting the WorkItem status. If this does not match the
1167
+ # ID of the worker which the Dataflow service believes currently has the lease
1168
+ # on the WorkItem, the report will be dropped (with an error response).
1169
+ # Corresponds to the JSON property `workerId`
1170
+ # @return [String]
1171
+ attr_accessor :worker_id
1172
+
1173
+ # The order is unimportant, except that the order of the WorkItemServiceState
1174
+ # messages in the ReportWorkItemStatusResponse corresponds to the order of
1175
+ # WorkItemStatus messages here.
1176
+ # Corresponds to the JSON property `workItemStatuses`
1177
+ # @return [Array<Google::Apis::DataflowV1b3::WorkItemStatus>]
1178
+ attr_accessor :work_item_statuses
1179
+
1180
+ # The current timestamp at the worker.
1181
+ # Corresponds to the JSON property `currentWorkerTime`
1182
+ # @return [String]
1183
+ attr_accessor :current_worker_time
1184
+
1185
+ def initialize(**args)
1186
+ update!(**args)
1187
+ end
1188
+
1189
+ # Update properties of this object
1190
+ def update!(**args)
1191
+ @worker_id = args[:worker_id] if args.key?(:worker_id)
1192
+ @work_item_statuses = args[:work_item_statuses] if args.key?(:work_item_statuses)
1193
+ @current_worker_time = args[:current_worker_time] if args.key?(:current_worker_time)
1194
+ end
1195
+ end
1196
+
1197
+ # Conveys a worker's progress through the work described by a WorkItem.
1198
+ class WorkItemStatus
1199
+ include Google::Apis::Core::Hashable
1200
+
1201
+ # Identifies the WorkItem.
1202
+ # Corresponds to the JSON property `workItemId`
1203
+ # @return [String]
1204
+ attr_accessor :work_item_id
1205
+
1206
+ # The report index. When a WorkItem is leased, the lease will contain an initial
1207
+ # report index. When a WorkItem's status is reported to the system, the report
1208
+ # should be sent with that report index, and the response will contain the index
1209
+ # the worker should use for the next report. Reports received with unexpected
1210
+ # index values will be rejected by the service. In order to preserve idempotency,
1211
+ # the worker should not alter the contents of a report, even if the worker must
1212
+ # submit the same report multiple times before getting back a response. The
1213
+ # worker should not submit a subsequent report until the response for the
1214
+ # previous report had been received from the service.
1215
+ # Corresponds to the JSON property `reportIndex`
1216
+ # @return [String]
1217
+ attr_accessor :report_index
1218
+
1219
+ # Amount of time the worker requests for its lease.
1220
+ # Corresponds to the JSON property `requestedLeaseDuration`
1221
+ # @return [String]
1222
+ attr_accessor :requested_lease_duration
1223
+
1224
+ # True if the WorkItem was completed (successfully or unsuccessfully).
1225
+ # Corresponds to the JSON property `completed`
1226
+ # @return [Boolean]
1227
+ attr_accessor :completed
1228
+ alias_method :completed?, :completed
1229
+
1230
+ # Specifies errors which occurred during processing. If errors are provided, and
1231
+ # completed = true, then the WorkItem is considered to have failed.
1232
+ # Corresponds to the JSON property `errors`
1233
+ # @return [Array<Google::Apis::DataflowV1b3::Status>]
1234
+ attr_accessor :errors
1235
+
1236
+ # Worker output counters for this WorkItem.
1237
+ # Corresponds to the JSON property `counterUpdates`
1238
+ # @return [Array<Google::Apis::DataflowV1b3::CounterUpdate>]
1239
+ attr_accessor :counter_updates
1240
+
1241
+ # DEPRECATED in favor of counter_updates.
1242
+ # Corresponds to the JSON property `metricUpdates`
1243
+ # @return [Array<Google::Apis::DataflowV1b3::MetricUpdate>]
1244
+ attr_accessor :metric_updates
1245
+
1246
+ # A progress measurement of a WorkItem by a worker.
1247
+ # Corresponds to the JSON property `reportedProgress`
1248
+ # @return [Google::Apis::DataflowV1b3::ApproximateReportedProgress]
1249
+ attr_accessor :reported_progress
1250
+
1251
+ # Position defines a position within a collection of data. The value can be
1252
+ # either the end position, a key (used with ordered collections), a byte offset,
1253
+ # or a record index.
1254
+ # Corresponds to the JSON property `stopPosition`
1255
+ # @return [Google::Apis::DataflowV1b3::Position]
1256
+ attr_accessor :stop_position
1257
+
1258
+ # When a task splits using WorkItemStatus.dynamic_source_split, this message
1259
+ # describes the two parts of the split relative to the description of the
1260
+ # current task's input.
1261
+ # Corresponds to the JSON property `dynamicSourceSplit`
1262
+ # @return [Google::Apis::DataflowV1b3::DynamicSourceSplit]
1263
+ attr_accessor :dynamic_source_split
1264
+
1265
+ # The result of a SourceOperationRequest, specified in
1266
+ # ReportWorkItemStatusRequest.source_operation when the work item is completed.
1267
+ # Corresponds to the JSON property `sourceOperationResponse`
1268
+ # @return [Google::Apis::DataflowV1b3::SourceOperationResponse]
1269
+ attr_accessor :source_operation_response
1270
+
1271
+ # DEPRECATED in favor of DynamicSourceSplit.
1272
+ # Corresponds to the JSON property `sourceFork`
1273
+ # @return [Google::Apis::DataflowV1b3::SourceFork]
1274
+ attr_accessor :source_fork
1275
+
1276
+ # Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest.
1277
+ # Corresponds to the JSON property `progress`
1278
+ # @return [Google::Apis::DataflowV1b3::ApproximateProgress]
1279
+ attr_accessor :progress
1280
+
1281
+ def initialize(**args)
1282
+ update!(**args)
1283
+ end
1284
+
1285
+ # Update properties of this object
1286
+ def update!(**args)
1287
+ @work_item_id = args[:work_item_id] if args.key?(:work_item_id)
1288
+ @report_index = args[:report_index] if args.key?(:report_index)
1289
+ @requested_lease_duration = args[:requested_lease_duration] if args.key?(:requested_lease_duration)
1290
+ @completed = args[:completed] if args.key?(:completed)
1291
+ @errors = args[:errors] if args.key?(:errors)
1292
+ @counter_updates = args[:counter_updates] if args.key?(:counter_updates)
1293
+ @metric_updates = args[:metric_updates] if args.key?(:metric_updates)
1294
+ @reported_progress = args[:reported_progress] if args.key?(:reported_progress)
1295
+ @stop_position = args[:stop_position] if args.key?(:stop_position)
1296
+ @dynamic_source_split = args[:dynamic_source_split] if args.key?(:dynamic_source_split)
1297
+ @source_operation_response = args[:source_operation_response] if args.key?(:source_operation_response)
1298
+ @source_fork = args[:source_fork] if args.key?(:source_fork)
1299
+ @progress = args[:progress] if args.key?(:progress)
1300
+ end
1301
+ end
1302
+
1303
+ # The `Status` type defines a logical error model that is suitable for different
1304
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1305
+ # gRPC](https://github.com/grpc). The error model is designed to be: - Simple to
1306
+ # use and understand for most users - Flexible enough to meet unexpected needs #
1307
+ # Overview The `Status` message contains three pieces of data: error code, error
1308
+ # message, and error details. The error code should be an enum value of google.
1309
+ # rpc.Code, but it may accept additional error codes if needed. The error
1310
+ # message should be a developer-facing English message that helps developers *
1311
+ # understand* and *resolve* the error. If a localized user-facing error message
1312
+ # is needed, put the localized message in the error details or localize it in
1313
+ # the client. The optional error details may contain arbitrary information about
1314
+ # the error. There is a predefined set of error detail types in the package `
1315
+ # google.rpc` which can be used for common error conditions. # Language mapping
1316
+ # The `Status` message is the logical representation of the error model, but it
1317
+ # is not necessarily the actual wire format. When the `Status` message is
1318
+ # exposed in different client libraries and different wire protocols, it can be
1319
+ # mapped differently. For example, it will likely be mapped to some exceptions
1320
+ # in Java, but more likely mapped to some error codes in C. # Other uses The
1321
+ # error model and the `Status` message can be used in a variety of environments,
1322
+ # either with or without APIs, to provide a consistent developer experience
1323
+ # across different environments. Example uses of this error model include: -
1324
+ # Partial errors. If a service needs to return partial errors to the client, it
1325
+ # may embed the `Status` in the normal response to indicate the partial errors. -
1326
+ # Workflow errors. A typical workflow has multiple steps. Each step may have a `
1327
+ # Status` message for error reporting purpose. - Batch operations. If a client
1328
+ # uses batch request and batch response, the `Status` message should be used
1329
+ # directly inside batch response, one for each error sub-response. -
1330
+ # Asynchronous operations. If an API call embeds asynchronous operation results
1331
+ # in its response, the status of those operations should be represented directly
1332
+ # using the `Status` message. - Logging. If some API errors are stored in logs,
1333
+ # the message `Status` could be used directly after any stripping needed for
1334
+ # security/privacy reasons.
1335
+ class Status
1336
+ include Google::Apis::Core::Hashable
1337
+
1338
+ # The status code, which should be an enum value of google.rpc.Code.
1339
+ # Corresponds to the JSON property `code`
1340
+ # @return [Fixnum]
1341
+ attr_accessor :code
1342
+
1343
+ # A developer-facing error message, which should be in English. Any user-facing
1344
+ # error message should be localized and sent in the google.rpc.Status.details
1345
+ # field, or localized by the client.
1346
+ # Corresponds to the JSON property `message`
1347
+ # @return [String]
1348
+ attr_accessor :message
1349
+
1350
+ # A list of messages that carry the error details. There will be a common set of
1351
+ # message types for APIs to use.
1352
+ # Corresponds to the JSON property `details`
1353
+ # @return [Array<Hash<String,Object>>]
1354
+ attr_accessor :details
1355
+
1356
+ def initialize(**args)
1357
+ update!(**args)
1358
+ end
1359
+
1360
+ # Update properties of this object
1361
+ def update!(**args)
1362
+ @code = args[:code] if args.key?(:code)
1363
+ @message = args[:message] if args.key?(:message)
1364
+ @details = args[:details] if args.key?(:details)
1365
+ end
1366
+ end
1367
+
1368
+ # An update to a Counter sent from a worker.
1369
+ class CounterUpdate
1370
+ include Google::Apis::Core::Hashable
1371
+
1372
+ # Basic metadata about a counter.
1373
+ # Corresponds to the JSON property `nameAndKind`
1374
+ # @return [Google::Apis::DataflowV1b3::NameAndKind]
1375
+ attr_accessor :name_and_kind
1376
+
1377
+ # The service-generated short identifier for this counter. The short_id -> (name,
1378
+ # metadata) mapping is constant for the lifetime of a job.
1379
+ # Corresponds to the JSON property `shortId`
1380
+ # @return [String]
1381
+ attr_accessor :short_id
1382
+
1383
+ # A single message which encapsulates structured name and metadata for a given
1384
+ # counter.
1385
+ # Corresponds to the JSON property `structuredNameAndMetadata`
1386
+ # @return [Google::Apis::DataflowV1b3::CounterStructuredNameAndMetadata]
1387
+ attr_accessor :structured_name_and_metadata
1388
+
1389
+ # True if this counter is reported as the total cumulative aggregate value
1390
+ # accumulated since the worker started working on this WorkItem. By default this
1391
+ # is false, indicating that this counter is reported as a delta.
1392
+ # Corresponds to the JSON property `cumulative`
1393
+ # @return [Boolean]
1394
+ attr_accessor :cumulative
1395
+ alias_method :cumulative?, :cumulative
1396
+
1397
+ # A representation of an int64, n, that is immune to precision loss when encoded
1398
+ # in JSON.
1399
+ # Corresponds to the JSON property `integer`
1400
+ # @return [Google::Apis::DataflowV1b3::SplitInt64]
1401
+ attr_accessor :integer
1402
+
1403
+ # Floating point value for Sum, Max, Min.
1404
+ # Corresponds to the JSON property `floatingPoint`
1405
+ # @return [Float]
1406
+ attr_accessor :floating_point
1407
+
1408
+ # Boolean value for And, Or.
1409
+ # Corresponds to the JSON property `boolean`
1410
+ # @return [Boolean]
1411
+ attr_accessor :boolean
1412
+ alias_method :boolean?, :boolean
1413
+
1414
+ # A representation of an integer mean metric contribution.
1415
+ # Corresponds to the JSON property `integerMean`
1416
+ # @return [Google::Apis::DataflowV1b3::IntegerMean]
1417
+ attr_accessor :integer_mean
1418
+
1419
+ # A representation of a floating point mean metric contribution.
1420
+ # Corresponds to the JSON property `floatingPointMean`
1421
+ # @return [Google::Apis::DataflowV1b3::FloatingPointMean]
1422
+ attr_accessor :floating_point_mean
1423
+
1424
+ # A metric value representing a list of integers.
1425
+ # Corresponds to the JSON property `integerList`
1426
+ # @return [Google::Apis::DataflowV1b3::IntegerList]
1427
+ attr_accessor :integer_list
1428
+
1429
+ # A metric value representing a list of floating point numbers.
1430
+ # Corresponds to the JSON property `floatingPointList`
1431
+ # @return [Google::Apis::DataflowV1b3::FloatingPointList]
1432
+ attr_accessor :floating_point_list
1433
+
1434
+ # A metric value representing a list of strings.
1435
+ # Corresponds to the JSON property `stringList`
1436
+ # @return [Google::Apis::DataflowV1b3::StringList]
1437
+ attr_accessor :string_list
1438
+
1439
+ # Value for internally-defined counters used by the Dataflow service.
1440
+ # Corresponds to the JSON property `internal`
1441
+ # @return [Object]
1442
+ attr_accessor :internal
1443
+
1444
+ def initialize(**args)
1445
+ update!(**args)
1446
+ end
1447
+
1448
+ # Update properties of this object
1449
+ def update!(**args)
1450
+ @name_and_kind = args[:name_and_kind] if args.key?(:name_and_kind)
1451
+ @short_id = args[:short_id] if args.key?(:short_id)
1452
+ @structured_name_and_metadata = args[:structured_name_and_metadata] if args.key?(:structured_name_and_metadata)
1453
+ @cumulative = args[:cumulative] if args.key?(:cumulative)
1454
+ @integer = args[:integer] if args.key?(:integer)
1455
+ @floating_point = args[:floating_point] if args.key?(:floating_point)
1456
+ @boolean = args[:boolean] if args.key?(:boolean)
1457
+ @integer_mean = args[:integer_mean] if args.key?(:integer_mean)
1458
+ @floating_point_mean = args[:floating_point_mean] if args.key?(:floating_point_mean)
1459
+ @integer_list = args[:integer_list] if args.key?(:integer_list)
1460
+ @floating_point_list = args[:floating_point_list] if args.key?(:floating_point_list)
1461
+ @string_list = args[:string_list] if args.key?(:string_list)
1462
+ @internal = args[:internal] if args.key?(:internal)
1463
+ end
1464
+ end
1465
+
1466
+ # Basic metadata about a counter.
1467
+ class NameAndKind
1468
+ include Google::Apis::Core::Hashable
1469
+
1470
+ # Name of the counter.
1471
+ # Corresponds to the JSON property `name`
1472
+ # @return [String]
1473
+ attr_accessor :name
1474
+
1475
+ # Counter aggregation kind.
1476
+ # Corresponds to the JSON property `kind`
1477
+ # @return [String]
1478
+ attr_accessor :kind
1479
+
1480
+ def initialize(**args)
1481
+ update!(**args)
1482
+ end
1483
+
1484
+ # Update properties of this object
1485
+ def update!(**args)
1486
+ @name = args[:name] if args.key?(:name)
1487
+ @kind = args[:kind] if args.key?(:kind)
1488
+ end
1489
+ end
1490
+
1491
+ # A single message which encapsulates structured name and metadata for a given
1492
+ # counter.
1493
+ class CounterStructuredNameAndMetadata
1494
+ include Google::Apis::Core::Hashable
1495
+
1496
+ # Identifies a counter within a per-job namespace. Counters whose structured
1497
+ # names are the same get merged into a single value for the job.
1498
+ # Corresponds to the JSON property `name`
1499
+ # @return [Google::Apis::DataflowV1b3::CounterStructuredName]
1500
+ attr_accessor :name
1501
+
1502
+ # CounterMetadata includes all static non-name non-value counter attributes.
1503
+ # Corresponds to the JSON property `metadata`
1504
+ # @return [Google::Apis::DataflowV1b3::CounterMetadata]
1505
+ attr_accessor :metadata
1506
+
1507
+ def initialize(**args)
1508
+ update!(**args)
1509
+ end
1510
+
1511
+ # Update properties of this object
1512
+ def update!(**args)
1513
+ @name = args[:name] if args.key?(:name)
1514
+ @metadata = args[:metadata] if args.key?(:metadata)
1515
+ end
1516
+ end
1517
+
1518
+ # Identifies a counter within a per-job namespace. Counters whose structured
1519
+ # names are the same get merged into a single value for the job.
1520
+ class CounterStructuredName
1521
+ include Google::Apis::Core::Hashable
1522
+
1523
+ # Counter name. Not necessarily globally-unique, but unique within the context
1524
+ # of the other fields. Required.
1525
+ # Corresponds to the JSON property `name`
1526
+ # @return [String]
1527
+ attr_accessor :name
1528
+
1529
+ # One of the standard Origins defined above.
1530
+ # Corresponds to the JSON property `standardOrigin`
1531
+ # @return [String]
1532
+ attr_accessor :standard_origin
1533
+
1534
+ # A string containing the origin of the counter.
1535
+ # Corresponds to the JSON property `otherOrigin`
1536
+ # @return [String]
1537
+ attr_accessor :other_origin
1538
+
1539
+ # System generated name of the original step in the user's graph, before
1540
+ # optimization.
1541
+ # Corresponds to the JSON property `originalStepName`
1542
+ # @return [String]
1543
+ attr_accessor :original_step_name
1544
+
1545
+ # Name of the optimized step being executed by the workers.
1546
+ # Corresponds to the JSON property `componentStepName`
1547
+ # @return [String]
1548
+ attr_accessor :component_step_name
1549
+
1550
+ # Name of the stage. An execution step contains multiple component steps.
1551
+ # Corresponds to the JSON property `executionStepName`
1552
+ # @return [String]
1553
+ attr_accessor :execution_step_name
1554
+
1555
+ # ID of a particular worker.
1556
+ # Corresponds to the JSON property `workerId`
1557
+ # @return [String]
1558
+ attr_accessor :worker_id
1559
+
1560
+ # Portion of this counter, either key or value.
1561
+ # Corresponds to the JSON property `portion`
1562
+ # @return [String]
1563
+ attr_accessor :portion
1564
+
1565
+ def initialize(**args)
1566
+ update!(**args)
1567
+ end
1568
+
1569
+ # Update properties of this object
1570
+ def update!(**args)
1571
+ @name = args[:name] if args.key?(:name)
1572
+ @standard_origin = args[:standard_origin] if args.key?(:standard_origin)
1573
+ @other_origin = args[:other_origin] if args.key?(:other_origin)
1574
+ @original_step_name = args[:original_step_name] if args.key?(:original_step_name)
1575
+ @component_step_name = args[:component_step_name] if args.key?(:component_step_name)
1576
+ @execution_step_name = args[:execution_step_name] if args.key?(:execution_step_name)
1577
+ @worker_id = args[:worker_id] if args.key?(:worker_id)
1578
+ @portion = args[:portion] if args.key?(:portion)
1579
+ end
1580
+ end
1581
+
1582
+ # CounterMetadata includes all static non-name non-value counter attributes.
1583
+ class CounterMetadata
1584
+ include Google::Apis::Core::Hashable
1585
+
1586
+ # Counter aggregation kind.
1587
+ # Corresponds to the JSON property `kind`
1588
+ # @return [String]
1589
+ attr_accessor :kind
1590
+
1591
+ # Human-readable description of the counter semantics.
1592
+ # Corresponds to the JSON property `description`
1593
+ # @return [String]
1594
+ attr_accessor :description
1595
+
1596
+ # System defined Units, see above enum.
1597
+ # Corresponds to the JSON property `standardUnits`
1598
+ # @return [String]
1599
+ attr_accessor :standard_units
1600
+
1601
+ # A string referring to the unit type.
1602
+ # Corresponds to the JSON property `otherUnits`
1603
+ # @return [String]
1604
+ attr_accessor :other_units
1605
+
1606
+ def initialize(**args)
1607
+ update!(**args)
1608
+ end
1609
+
1610
+ # Update properties of this object
1611
+ def update!(**args)
1612
+ @kind = args[:kind] if args.key?(:kind)
1613
+ @description = args[:description] if args.key?(:description)
1614
+ @standard_units = args[:standard_units] if args.key?(:standard_units)
1615
+ @other_units = args[:other_units] if args.key?(:other_units)
1616
+ end
1617
+ end
1618
+
1619
+ # A representation of an int64, n, that is immune to precision loss when encoded
1620
+ # in JSON.
1621
+ class SplitInt64
1622
+ include Google::Apis::Core::Hashable
1623
+
1624
+ # The low order bits: n & 0xffffffff.
1625
+ # Corresponds to the JSON property `lowBits`
1626
+ # @return [Fixnum]
1627
+ attr_accessor :low_bits
1628
+
1629
+ # The high order bits, including the sign: n >> 32.
1630
+ # Corresponds to the JSON property `highBits`
1631
+ # @return [Fixnum]
1632
+ attr_accessor :high_bits
1633
+
1634
+ def initialize(**args)
1635
+ update!(**args)
1636
+ end
1637
+
1638
+ # Update properties of this object
1639
+ def update!(**args)
1640
+ @low_bits = args[:low_bits] if args.key?(:low_bits)
1641
+ @high_bits = args[:high_bits] if args.key?(:high_bits)
1642
+ end
1643
+ end
1644
+
1645
+ # A representation of an integer mean metric contribution.
1646
+ class IntegerMean
1647
+ include Google::Apis::Core::Hashable
1648
+
1649
+ # A representation of an int64, n, that is immune to precision loss when encoded
1650
+ # in JSON.
1651
+ # Corresponds to the JSON property `sum`
1652
+ # @return [Google::Apis::DataflowV1b3::SplitInt64]
1653
+ attr_accessor :sum
1654
+
1655
+ # A representation of an int64, n, that is immune to precision loss when encoded
1656
+ # in JSON.
1657
+ # Corresponds to the JSON property `count`
1658
+ # @return [Google::Apis::DataflowV1b3::SplitInt64]
1659
+ attr_accessor :count
1660
+
1661
+ def initialize(**args)
1662
+ update!(**args)
1663
+ end
1664
+
1665
+ # Update properties of this object
1666
+ def update!(**args)
1667
+ @sum = args[:sum] if args.key?(:sum)
1668
+ @count = args[:count] if args.key?(:count)
1669
+ end
1670
+ end
1671
+
1672
+ # A representation of a floating point mean metric contribution.
1673
+ class FloatingPointMean
1674
+ include Google::Apis::Core::Hashable
1675
+
1676
+ # The sum of all values being aggregated.
1677
+ # Corresponds to the JSON property `sum`
1678
+ # @return [Float]
1679
+ attr_accessor :sum
1680
+
1681
+ # A representation of an int64, n, that is immune to precision loss when encoded
1682
+ # in JSON.
1683
+ # Corresponds to the JSON property `count`
1684
+ # @return [Google::Apis::DataflowV1b3::SplitInt64]
1685
+ attr_accessor :count
1686
+
1687
+ def initialize(**args)
1688
+ update!(**args)
1689
+ end
1690
+
1691
+ # Update properties of this object
1692
+ def update!(**args)
1693
+ @sum = args[:sum] if args.key?(:sum)
1694
+ @count = args[:count] if args.key?(:count)
1695
+ end
1696
+ end
1697
+
1698
+ # A metric value representing a list of integers.
1699
+ class IntegerList
1700
+ include Google::Apis::Core::Hashable
1701
+
1702
+ # Elements of the list.
1703
+ # Corresponds to the JSON property `elements`
1704
+ # @return [Array<Google::Apis::DataflowV1b3::SplitInt64>]
1705
+ attr_accessor :elements
1706
+
1707
+ def initialize(**args)
1708
+ update!(**args)
1709
+ end
1710
+
1711
+ # Update properties of this object
1712
+ def update!(**args)
1713
+ @elements = args[:elements] if args.key?(:elements)
1714
+ end
1715
+ end
1716
+
1717
+ # A metric value representing a list of floating point numbers.
1718
+ class FloatingPointList
1719
+ include Google::Apis::Core::Hashable
1720
+
1721
+ # Elements of the list.
1722
+ # Corresponds to the JSON property `elements`
1723
+ # @return [Array<Float>]
1724
+ attr_accessor :elements
1725
+
1726
+ def initialize(**args)
1727
+ update!(**args)
1728
+ end
1729
+
1730
+ # Update properties of this object
1731
+ def update!(**args)
1732
+ @elements = args[:elements] if args.key?(:elements)
1733
+ end
1734
+ end
1735
+
1736
+ # A metric value representing a list of strings.
1737
+ class StringList
1738
+ include Google::Apis::Core::Hashable
1739
+
1740
+ # Elements of the list.
1741
+ # Corresponds to the JSON property `elements`
1742
+ # @return [Array<String>]
1743
+ attr_accessor :elements
1744
+
1745
+ def initialize(**args)
1746
+ update!(**args)
1747
+ end
1748
+
1749
+ # Update properties of this object
1750
+ def update!(**args)
1751
+ @elements = args[:elements] if args.key?(:elements)
1752
+ end
1753
+ end
1754
+
1755
+ # A progress measurement of a WorkItem by a worker.
1756
+ class ApproximateReportedProgress
1757
+ include Google::Apis::Core::Hashable
1758
+
1759
+ # Position defines a position within a collection of data. The value can be
1760
+ # either the end position, a key (used with ordered collections), a byte offset,
1761
+ # or a record index.
1762
+ # Corresponds to the JSON property `position`
1763
+ # @return [Google::Apis::DataflowV1b3::Position]
1764
+ attr_accessor :position
1765
+
1766
+ # Completion as fraction of the input consumed, from 0.0 (beginning, nothing
1767
+ # consumed), to 1.0 (end of the input, entire input consumed).
1768
+ # Corresponds to the JSON property `fractionConsumed`
1769
+ # @return [Float]
1770
+ attr_accessor :fraction_consumed
1771
+
1772
+ # Represents the level of parallelism in a WorkItem's input, reported by the
1773
+ # worker.
1774
+ # Corresponds to the JSON property `remainingParallelism`
1775
+ # @return [Google::Apis::DataflowV1b3::ReportedParallelism]
1776
+ attr_accessor :remaining_parallelism
1777
+
1778
+ # Represents the level of parallelism in a WorkItem's input, reported by the
1779
+ # worker.
1780
+ # Corresponds to the JSON property `consumedParallelism`
1781
+ # @return [Google::Apis::DataflowV1b3::ReportedParallelism]
1782
+ attr_accessor :consumed_parallelism
1783
+
1784
+ def initialize(**args)
1785
+ update!(**args)
1786
+ end
1787
+
1788
+ # Update properties of this object
1789
+ def update!(**args)
1790
+ @position = args[:position] if args.key?(:position)
1791
+ @fraction_consumed = args[:fraction_consumed] if args.key?(:fraction_consumed)
1792
+ @remaining_parallelism = args[:remaining_parallelism] if args.key?(:remaining_parallelism)
1793
+ @consumed_parallelism = args[:consumed_parallelism] if args.key?(:consumed_parallelism)
1794
+ end
1795
+ end
1796
+
1797
+ # Position defines a position within a collection of data. The value can be
1798
+ # either the end position, a key (used with ordered collections), a byte offset,
1799
+ # or a record index.
1800
+ class Position
1801
+ include Google::Apis::Core::Hashable
1802
+
1803
+ # Position is past all other positions. Also useful for the end position of an
1804
+ # unbounded range.
1805
+ # Corresponds to the JSON property `end`
1806
+ # @return [Boolean]
1807
+ attr_accessor :end
1808
+ alias_method :end?, :end
1809
+
1810
+ # Position is a string key, ordered lexicographically.
1811
+ # Corresponds to the JSON property `key`
1812
+ # @return [String]
1813
+ attr_accessor :key
1814
+
1815
+ # Position is a byte offset.
1816
+ # Corresponds to the JSON property `byteOffset`
1817
+ # @return [String]
1818
+ attr_accessor :byte_offset
1819
+
1820
+ # Position is a record index.
1821
+ # Corresponds to the JSON property `recordIndex`
1822
+ # @return [String]
1823
+ attr_accessor :record_index
1824
+
1825
+ # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
1826
+ # Corresponds to the JSON property `shufflePosition`
1827
+ # @return [String]
1828
+ attr_accessor :shuffle_position
1829
+
1830
+ # A position that encapsulates an inner position and an index for the inner
1831
+ # position. A ConcatPosition can be used by a reader of a source that
1832
+ # encapsulates a set of other sources.
1833
+ # Corresponds to the JSON property `concatPosition`
1834
+ # @return [Google::Apis::DataflowV1b3::ConcatPosition]
1835
+ attr_accessor :concat_position
1836
+
1837
+ def initialize(**args)
1838
+ update!(**args)
1839
+ end
1840
+
1841
+ # Update properties of this object
1842
+ def update!(**args)
1843
+ @end = args[:end] if args.key?(:end)
1844
+ @key = args[:key] if args.key?(:key)
1845
+ @byte_offset = args[:byte_offset] if args.key?(:byte_offset)
1846
+ @record_index = args[:record_index] if args.key?(:record_index)
1847
+ @shuffle_position = args[:shuffle_position] if args.key?(:shuffle_position)
1848
+ @concat_position = args[:concat_position] if args.key?(:concat_position)
1849
+ end
1850
+ end
1851
+
1852
+ # A position that encapsulates an inner position and an index for the inner
1853
+ # position. A ConcatPosition can be used by a reader of a source that
1854
+ # encapsulates a set of other sources.
1855
+ class ConcatPosition
1856
+ include Google::Apis::Core::Hashable
1857
+
1858
+ # Index of the inner source.
1859
+ # Corresponds to the JSON property `index`
1860
+ # @return [Fixnum]
1861
+ attr_accessor :index
1862
+
1863
+ # Position defines a position within a collection of data. The value can be
1864
+ # either the end position, a key (used with ordered collections), a byte offset,
1865
+ # or a record index.
1866
+ # Corresponds to the JSON property `position`
1867
+ # @return [Google::Apis::DataflowV1b3::Position]
1868
+ attr_accessor :position
1869
+
1870
+ def initialize(**args)
1871
+ update!(**args)
1872
+ end
1873
+
1874
+ # Update properties of this object
1875
+ def update!(**args)
1876
+ @index = args[:index] if args.key?(:index)
1877
+ @position = args[:position] if args.key?(:position)
1878
+ end
1879
+ end
1880
+
1881
+ # Represents the level of parallelism in a WorkItem's input, reported by the
1882
+ # worker.
1883
+ class ReportedParallelism
1884
+ include Google::Apis::Core::Hashable
1885
+
1886
+ # Specifies whether the parallelism is infinite. If true, "value" is ignored.
1887
+ # Infinite parallelism means the service will assume that the work item can
1888
+ # always be split into more non-empty work items by dynamic splitting. This is a
1889
+ # work-around for lack of support for infinity by the current JSON-based Java
1890
+ # RPC stack.
1891
+ # Corresponds to the JSON property `isInfinite`
1892
+ # @return [Boolean]
1893
+ attr_accessor :is_infinite
1894
+ alias_method :is_infinite?, :is_infinite
1895
+
1896
+ # Specifies the level of parallelism in case it is finite.
1897
+ # Corresponds to the JSON property `value`
1898
+ # @return [Float]
1899
+ attr_accessor :value
1900
+
1901
+ def initialize(**args)
1902
+ update!(**args)
1903
+ end
1904
+
1905
+ # Update properties of this object
1906
+ def update!(**args)
1907
+ @is_infinite = args[:is_infinite] if args.key?(:is_infinite)
1908
+ @value = args[:value] if args.key?(:value)
1909
+ end
1910
+ end
1911
+
1912
+ # When a task splits using WorkItemStatus.dynamic_source_split, this message
1913
+ # describes the two parts of the split relative to the description of the
1914
+ # current task's input.
1915
+ class DynamicSourceSplit
1916
+ include Google::Apis::Core::Hashable
1917
+
1918
+ # Specification of one of the bundles produced as a result of splitting a Source
1919
+ # (e.g. when executing a SourceSplitRequest, or when splitting an active task
1920
+ # using WorkItemStatus.dynamic_source_split), relative to the source being split.
1921
+ # Corresponds to the JSON property `primary`
1922
+ # @return [Google::Apis::DataflowV1b3::DerivedSource]
1923
+ attr_accessor :primary
1924
+
1925
+ # Specification of one of the bundles produced as a result of splitting a Source
1926
+ # (e.g. when executing a SourceSplitRequest, or when splitting an active task
1927
+ # using WorkItemStatus.dynamic_source_split), relative to the source being split.
1928
+ # Corresponds to the JSON property `residual`
1929
+ # @return [Google::Apis::DataflowV1b3::DerivedSource]
1930
+ attr_accessor :residual
1931
+
1932
+ def initialize(**args)
1933
+ update!(**args)
1934
+ end
1935
+
1936
+ # Update properties of this object
1937
+ def update!(**args)
1938
+ @primary = args[:primary] if args.key?(:primary)
1939
+ @residual = args[:residual] if args.key?(:residual)
1940
+ end
1941
+ end
1942
+
1943
+ # Specification of one of the bundles produced as a result of splitting a Source
1944
+ # (e.g. when executing a SourceSplitRequest, or when splitting an active task
1945
+ # using WorkItemStatus.dynamic_source_split), relative to the source being split.
1946
+ class DerivedSource
1947
+ include Google::Apis::Core::Hashable
1948
+
1949
+ # A source that records can be read and decoded from.
1950
+ # Corresponds to the JSON property `source`
1951
+ # @return [Google::Apis::DataflowV1b3::Source]
1952
+ attr_accessor :source
1953
+
1954
+ # What source to base the produced source on (if any).
1955
+ # Corresponds to the JSON property `derivationMode`
1956
+ # @return [String]
1957
+ attr_accessor :derivation_mode
1958
+
1959
+ def initialize(**args)
1960
+ update!(**args)
1961
+ end
1962
+
1963
+ # Update properties of this object
1964
+ def update!(**args)
1965
+ @source = args[:source] if args.key?(:source)
1966
+ @derivation_mode = args[:derivation_mode] if args.key?(:derivation_mode)
1967
+ end
1968
+ end
1969
+
1970
+ # A source that records can be read and decoded from.
1971
+ class Source
1972
+ include Google::Apis::Core::Hashable
1973
+
1974
+ # The source to read from, plus its parameters.
1975
+ # Corresponds to the JSON property `spec`
1976
+ # @return [Hash<String,Object>]
1977
+ attr_accessor :spec
1978
+
1979
+ # The codec to use to decode data read from the source.
1980
+ # Corresponds to the JSON property `codec`
1981
+ # @return [Hash<String,Object>]
1982
+ attr_accessor :codec
1983
+
1984
+ # While splitting, sources may specify the produced bundles as differences
1985
+ # against another source, in order to save backend-side memory and allow bigger
1986
+ # jobs. For details, see SourceSplitRequest. To support this use case, the full
1987
+ # set of parameters of the source is logically obtained by taking the latest
1988
+ # explicitly specified value of each parameter in the order: base_specs (later
1989
+ # items win), spec (overrides anything in base_specs).
1990
+ # Corresponds to the JSON property `baseSpecs`
1991
+ # @return [Array<Hash<String,Object>>]
1992
+ attr_accessor :base_specs
1993
+
1994
+ # Metadata about a Source useful for automatically optimizing and tuning the
1995
+ # pipeline, etc.
1996
+ # Corresponds to the JSON property `metadata`
1997
+ # @return [Google::Apis::DataflowV1b3::SourceMetadata]
1998
+ attr_accessor :metadata
1999
+
2000
+ # Setting this value to true hints to the framework that the source doesn't need
2001
+ # splitting, and using SourceSplitRequest on it would yield
2002
+ # SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true
2003
+ # when splitting a single file into a set of byte ranges of appropriate size,
2004
+ # and set this to false when splitting a filepattern into individual files.
2005
+ # However, for efficiency, a file splitter may decide to produce file subranges
2006
+ # directly from the filepattern to avoid a splitting round-trip. See
2007
+ # SourceSplitRequest for an overview of the splitting process. This field is
2008
+ # meaningful only in the Source objects populated by the user (e.g. when filling
2009
+ # in a DerivedSource). Source objects supplied by the framework to the user don'
2010
+ # t have this field populated.
2011
+ # Corresponds to the JSON property `doesNotNeedSplitting`
2012
+ # @return [Boolean]
2013
+ attr_accessor :does_not_need_splitting
2014
+ alias_method :does_not_need_splitting?, :does_not_need_splitting
2015
+
2016
+ def initialize(**args)
2017
+ update!(**args)
2018
+ end
2019
+
2020
+ # Update properties of this object
2021
+ def update!(**args)
2022
+ @spec = args[:spec] if args.key?(:spec)
2023
+ @codec = args[:codec] if args.key?(:codec)
2024
+ @base_specs = args[:base_specs] if args.key?(:base_specs)
2025
+ @metadata = args[:metadata] if args.key?(:metadata)
2026
+ @does_not_need_splitting = args[:does_not_need_splitting] if args.key?(:does_not_need_splitting)
2027
+ end
2028
+ end
2029
+
2030
+ # Metadata about a Source useful for automatically optimizing and tuning the
2031
+ # pipeline, etc.
2032
+ class SourceMetadata
2033
+ include Google::Apis::Core::Hashable
2034
+
2035
+ # Whether this source is known to produce key/value pairs with the (encoded)
2036
+ # keys in lexicographically sorted order.
2037
+ # Corresponds to the JSON property `producesSortedKeys`
2038
+ # @return [Boolean]
2039
+ attr_accessor :produces_sorted_keys
2040
+ alias_method :produces_sorted_keys?, :produces_sorted_keys
2041
+
2042
+ # Specifies that the size of this source is known to be infinite (this is a
2043
+ # streaming source).
2044
+ # Corresponds to the JSON property `infinite`
2045
+ # @return [Boolean]
2046
+ attr_accessor :infinite
2047
+ alias_method :infinite?, :infinite
2048
+
2049
+ # An estimate of the total size (in bytes) of the data that would be read from
2050
+ # this source. This estimate is in terms of external storage size, before any
2051
+ # decompression or other processing done by the reader.
2052
+ # Corresponds to the JSON property `estimatedSizeBytes`
2053
+ # @return [String]
2054
+ attr_accessor :estimated_size_bytes
2055
+
2056
+ def initialize(**args)
2057
+ update!(**args)
2058
+ end
2059
+
2060
+ # Update properties of this object
2061
+ def update!(**args)
2062
+ @produces_sorted_keys = args[:produces_sorted_keys] if args.key?(:produces_sorted_keys)
2063
+ @infinite = args[:infinite] if args.key?(:infinite)
2064
+ @estimated_size_bytes = args[:estimated_size_bytes] if args.key?(:estimated_size_bytes)
2065
+ end
2066
+ end
2067
+
2068
+ # The result of a SourceOperationRequest, specified in
2069
+ # ReportWorkItemStatusRequest.source_operation when the work item is completed.
2070
+ class SourceOperationResponse
2071
+ include Google::Apis::Core::Hashable
2072
+
2073
+ # The response to a SourceSplitRequest.
2074
+ # Corresponds to the JSON property `split`
2075
+ # @return [Google::Apis::DataflowV1b3::SourceSplitResponse]
2076
+ attr_accessor :split
2077
+
2078
+ # The result of a SourceGetMetadataOperation.
2079
+ # Corresponds to the JSON property `getMetadata`
2080
+ # @return [Google::Apis::DataflowV1b3::SourceGetMetadataResponse]
2081
+ attr_accessor :get_metadata
2082
+
2083
+ def initialize(**args)
2084
+ update!(**args)
2085
+ end
2086
+
2087
+ # Update properties of this object
2088
+ def update!(**args)
2089
+ @split = args[:split] if args.key?(:split)
2090
+ @get_metadata = args[:get_metadata] if args.key?(:get_metadata)
2091
+ end
2092
+ end
2093
+
2094
+ # The response to a SourceSplitRequest.
2095
+ class SourceSplitResponse
2096
+ include Google::Apis::Core::Hashable
2097
+
2098
+ # Indicates whether splitting happened and produced a list of bundles. If this
2099
+ # is USE_CURRENT_SOURCE_AS_IS, the current source should be processed "as is"
2100
+ # without splitting. "bundles" is ignored in this case. If this is
2101
+ # SPLITTING_HAPPENED, then "bundles" contains a list of bundles into which the
2102
+ # source was split.
2103
+ # Corresponds to the JSON property `outcome`
2104
+ # @return [String]
2105
+ attr_accessor :outcome
2106
+
2107
+ # If outcome is SPLITTING_HAPPENED, then this is a list of bundles into which
2108
+ # the source was split. Otherwise this field is ignored. This list can be empty,
2109
+ # which means the source represents an empty input.
2110
+ # Corresponds to the JSON property `bundles`
2111
+ # @return [Array<Google::Apis::DataflowV1b3::DerivedSource>]
2112
+ attr_accessor :bundles
2113
+
2114
+ # DEPRECATED in favor of bundles.
2115
+ # Corresponds to the JSON property `shards`
2116
+ # @return [Array<Google::Apis::DataflowV1b3::SourceSplitShard>]
2117
+ attr_accessor :shards
2118
+
2119
+ def initialize(**args)
2120
+ update!(**args)
2121
+ end
2122
+
2123
+ # Update properties of this object
2124
+ def update!(**args)
2125
+ @outcome = args[:outcome] if args.key?(:outcome)
2126
+ @bundles = args[:bundles] if args.key?(:bundles)
2127
+ @shards = args[:shards] if args.key?(:shards)
2128
+ end
2129
+ end
2130
+
2131
+ # DEPRECATED in favor of DerivedSource.
2132
+ class SourceSplitShard
2133
+ include Google::Apis::Core::Hashable
2134
+
2135
+ # A source that records can be read and decoded from.
2136
+ # Corresponds to the JSON property `source`
2137
+ # @return [Google::Apis::DataflowV1b3::Source]
2138
+ attr_accessor :source
2139
+
2140
+ # DEPRECATED
2141
+ # Corresponds to the JSON property `derivationMode`
2142
+ # @return [String]
2143
+ attr_accessor :derivation_mode
2144
+
2145
+ def initialize(**args)
2146
+ update!(**args)
2147
+ end
2148
+
2149
+ # Update properties of this object
2150
+ def update!(**args)
2151
+ @source = args[:source] if args.key?(:source)
2152
+ @derivation_mode = args[:derivation_mode] if args.key?(:derivation_mode)
2153
+ end
2154
+ end
2155
+
2156
+ # The result of a SourceGetMetadataOperation.
2157
+ class SourceGetMetadataResponse
2158
+ include Google::Apis::Core::Hashable
2159
+
2160
+ # Metadata about a Source useful for automatically optimizing and tuning the
2161
+ # pipeline, etc.
2162
+ # Corresponds to the JSON property `metadata`
2163
+ # @return [Google::Apis::DataflowV1b3::SourceMetadata]
2164
+ attr_accessor :metadata
2165
+
2166
+ def initialize(**args)
2167
+ update!(**args)
2168
+ end
2169
+
2170
+ # Update properties of this object
2171
+ def update!(**args)
2172
+ @metadata = args[:metadata] if args.key?(:metadata)
2173
+ end
2174
+ end
2175
+
2176
+ # DEPRECATED in favor of DynamicSourceSplit.
2177
+ class SourceFork
2178
+ include Google::Apis::Core::Hashable
2179
+
2180
+ # DEPRECATED in favor of DerivedSource.
2181
+ # Corresponds to the JSON property `primary`
2182
+ # @return [Google::Apis::DataflowV1b3::SourceSplitShard]
2183
+ attr_accessor :primary
2184
+
2185
+ # DEPRECATED in favor of DerivedSource.
2186
+ # Corresponds to the JSON property `residual`
2187
+ # @return [Google::Apis::DataflowV1b3::SourceSplitShard]
2188
+ attr_accessor :residual
2189
+
2190
+ # Specification of one of the bundles produced as a result of splitting a Source
2191
+ # (e.g. when executing a SourceSplitRequest, or when splitting an active task
2192
+ # using WorkItemStatus.dynamic_source_split), relative to the source being split.
2193
+ # Corresponds to the JSON property `primarySource`
2194
+ # @return [Google::Apis::DataflowV1b3::DerivedSource]
2195
+ attr_accessor :primary_source
2196
+
2197
+ # Specification of one of the bundles produced as a result of splitting a Source
2198
+ # (e.g. when executing a SourceSplitRequest, or when splitting an active task
2199
+ # using WorkItemStatus.dynamic_source_split), relative to the source being split.
2200
+ # Corresponds to the JSON property `residualSource`
2201
+ # @return [Google::Apis::DataflowV1b3::DerivedSource]
2202
+ attr_accessor :residual_source
2203
+
2204
+ def initialize(**args)
2205
+ update!(**args)
2206
+ end
2207
+
2208
+ # Update properties of this object
2209
+ def update!(**args)
2210
+ @primary = args[:primary] if args.key?(:primary)
2211
+ @residual = args[:residual] if args.key?(:residual)
2212
+ @primary_source = args[:primary_source] if args.key?(:primary_source)
2213
+ @residual_source = args[:residual_source] if args.key?(:residual_source)
2214
+ end
2215
+ end
2216
+
2217
+ # Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest.
2218
+ class ApproximateProgress
2219
+ include Google::Apis::Core::Hashable
2220
+
2221
+ # Position defines a position within a collection of data. The value can be
2222
+ # either the end position, a key (used with ordered collections), a byte offset,
2223
+ # or a record index.
2224
+ # Corresponds to the JSON property `position`
2225
+ # @return [Google::Apis::DataflowV1b3::Position]
2226
+ attr_accessor :position
2227
+
2228
+ # Obsolete.
2229
+ # Corresponds to the JSON property `percentComplete`
2230
+ # @return [Float]
2231
+ attr_accessor :percent_complete
2232
+
2233
+ # Obsolete.
2234
+ # Corresponds to the JSON property `remainingTime`
2235
+ # @return [String]
2236
+ attr_accessor :remaining_time
2237
+
2238
+ def initialize(**args)
2239
+ update!(**args)
2240
+ end
2241
+
2242
+ # Update properties of this object
2243
+ def update!(**args)
2244
+ @position = args[:position] if args.key?(:position)
2245
+ @percent_complete = args[:percent_complete] if args.key?(:percent_complete)
2246
+ @remaining_time = args[:remaining_time] if args.key?(:remaining_time)
2247
+ end
2248
+ end
2249
+
2250
+ # Response from a request to report the status of WorkItems.
2251
+ class ReportWorkItemStatusResponse
2252
+ include Google::Apis::Core::Hashable
2253
+
2254
+ # A set of messages indicating the service-side state for each WorkItem whose
2255
+ # status was reported, in the same order as the WorkItemStatus messages in the
2256
+ # ReportWorkItemStatusRequest which resulting in this response.
2257
+ # Corresponds to the JSON property `workItemServiceStates`
2258
+ # @return [Array<Google::Apis::DataflowV1b3::WorkItemServiceState>]
2259
+ attr_accessor :work_item_service_states
2260
+
2261
+ def initialize(**args)
2262
+ update!(**args)
2263
+ end
2264
+
2265
+ # Update properties of this object
2266
+ def update!(**args)
2267
+ @work_item_service_states = args[:work_item_service_states] if args.key?(:work_item_service_states)
2268
+ end
2269
+ end
2270
+
2271
+ # The Dataflow service's idea of the current state of a WorkItem being processed
2272
+ # by a worker.
2273
+ class WorkItemServiceState
2274
+ include Google::Apis::Core::Hashable
2275
+
2276
+ # A suggestion by the service to the worker to dynamically split the WorkItem.
2277
+ # Corresponds to the JSON property `splitRequest`
2278
+ # @return [Google::Apis::DataflowV1b3::ApproximateSplitRequest]
2279
+ attr_accessor :split_request
2280
+
2281
+ # Time at which the current lease will expire.
2282
+ # Corresponds to the JSON property `leaseExpireTime`
2283
+ # @return [String]
2284
+ attr_accessor :lease_expire_time
2285
+
2286
+ # New recommended reporting interval.
2287
+ # Corresponds to the JSON property `reportStatusInterval`
2288
+ # @return [String]
2289
+ attr_accessor :report_status_interval
2290
+
2291
+ # Other data returned by the service, specific to the particular worker harness.
2292
+ # Corresponds to the JSON property `harnessData`
2293
+ # @return [Hash<String,Object>]
2294
+ attr_accessor :harness_data
2295
+
2296
+ # The index value to use for the next report sent by the worker. Note: If the
2297
+ # report call fails for whatever reason, the worker should reuse this index for
2298
+ # subsequent report attempts.
2299
+ # Corresponds to the JSON property `nextReportIndex`
2300
+ # @return [String]
2301
+ attr_accessor :next_report_index
2302
+
2303
+ # The short ids that workers should use in subsequent metric updates. Workers
2304
+ # should strive to use short ids whenever possible, but it is ok to request the
2305
+ # short_id again if a worker lost track of it (e.g. if the worker is recovering
2306
+ # from a crash). NOTE: it is possible that the response may have short ids for a
2307
+ # subset of the metrics.
2308
+ # Corresponds to the JSON property `metricShortId`
2309
+ # @return [Array<Google::Apis::DataflowV1b3::MetricShortId>]
2310
+ attr_accessor :metric_short_id
2311
+
2312
+ # Position defines a position within a collection of data. The value can be
2313
+ # either the end position, a key (used with ordered collections), a byte offset,
2314
+ # or a record index.
2315
+ # Corresponds to the JSON property `suggestedStopPosition`
2316
+ # @return [Google::Apis::DataflowV1b3::Position]
2317
+ attr_accessor :suggested_stop_position
2318
+
2319
+ # Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest.
2320
+ # Corresponds to the JSON property `suggestedStopPoint`
2321
+ # @return [Google::Apis::DataflowV1b3::ApproximateProgress]
2322
+ attr_accessor :suggested_stop_point
2323
+
2324
+ def initialize(**args)
2325
+ update!(**args)
2326
+ end
2327
+
2328
+ # Update properties of this object
2329
+ def update!(**args)
2330
+ @split_request = args[:split_request] if args.key?(:split_request)
2331
+ @lease_expire_time = args[:lease_expire_time] if args.key?(:lease_expire_time)
2332
+ @report_status_interval = args[:report_status_interval] if args.key?(:report_status_interval)
2333
+ @harness_data = args[:harness_data] if args.key?(:harness_data)
2334
+ @next_report_index = args[:next_report_index] if args.key?(:next_report_index)
2335
+ @metric_short_id = args[:metric_short_id] if args.key?(:metric_short_id)
2336
+ @suggested_stop_position = args[:suggested_stop_position] if args.key?(:suggested_stop_position)
2337
+ @suggested_stop_point = args[:suggested_stop_point] if args.key?(:suggested_stop_point)
2338
+ end
2339
+ end
2340
+
2341
+ # A suggestion by the service to the worker to dynamically split the WorkItem.
2342
+ class ApproximateSplitRequest
2343
+ include Google::Apis::Core::Hashable
2344
+
2345
+ # Position defines a position within a collection of data. The value can be
2346
+ # either the end position, a key (used with ordered collections), a byte offset,
2347
+ # or a record index.
2348
+ # Corresponds to the JSON property `position`
2349
+ # @return [Google::Apis::DataflowV1b3::Position]
2350
+ attr_accessor :position
2351
+
2352
+ # A fraction at which to split the work item, from 0.0 (beginning of the input)
2353
+ # to 1.0 (end of the input).
2354
+ # Corresponds to the JSON property `fractionConsumed`
2355
+ # @return [Float]
2356
+ attr_accessor :fraction_consumed
2357
+
2358
+ def initialize(**args)
2359
+ update!(**args)
2360
+ end
2361
+
2362
+ # Update properties of this object
2363
+ def update!(**args)
2364
+ @position = args[:position] if args.key?(:position)
2365
+ @fraction_consumed = args[:fraction_consumed] if args.key?(:fraction_consumed)
2366
+ end
2367
+ end
2368
+
2369
+ # The metric short id is returned to the user alongside an offset into
2370
+ # ReportWorkItemStatusRequest
2371
+ class MetricShortId
2372
+ include Google::Apis::Core::Hashable
2373
+
2374
+ # The index of the corresponding metric in the ReportWorkItemStatusRequest.
2375
+ # Required.
2376
+ # Corresponds to the JSON property `metricIndex`
2377
+ # @return [Fixnum]
2378
+ attr_accessor :metric_index
2379
+
2380
+ # The service-generated short identifier for the metric.
2381
+ # Corresponds to the JSON property `shortId`
2382
+ # @return [String]
2383
+ attr_accessor :short_id
2384
+
2385
+ def initialize(**args)
2386
+ update!(**args)
2387
+ end
2388
+
2389
+ # Update properties of this object
2390
+ def update!(**args)
2391
+ @metric_index = args[:metric_index] if args.key?(:metric_index)
2392
+ @short_id = args[:short_id] if args.key?(:short_id)
2393
+ end
2394
+ end
2395
+
2396
+ # Request to lease WorkItems.
2397
+ class LeaseWorkItemRequest
2398
+ include Google::Apis::Core::Hashable
2399
+
2400
+ # Filter for WorkItem type.
2401
+ # Corresponds to the JSON property `workItemTypes`
2402
+ # @return [Array<String>]
2403
+ attr_accessor :work_item_types
2404
+
2405
+ # Worker capabilities. WorkItems might be limited to workers with specific
2406
+ # capabilities.
2407
+ # Corresponds to the JSON property `workerCapabilities`
2408
+ # @return [Array<String>]
2409
+ attr_accessor :worker_capabilities
2410
+
2411
+ # The initial lease period.
2412
+ # Corresponds to the JSON property `requestedLeaseDuration`
2413
+ # @return [String]
2414
+ attr_accessor :requested_lease_duration
2415
+
2416
+ # The current timestamp at the worker.
2417
+ # Corresponds to the JSON property `currentWorkerTime`
2418
+ # @return [String]
2419
+ attr_accessor :current_worker_time
2420
+
2421
+ # Identifies the worker leasing work -- typically the ID of the virtual machine
2422
+ # running the worker.
2423
+ # Corresponds to the JSON property `workerId`
2424
+ # @return [String]
2425
+ attr_accessor :worker_id
2426
+
2427
+ def initialize(**args)
2428
+ update!(**args)
2429
+ end
2430
+
2431
+ # Update properties of this object
2432
+ def update!(**args)
2433
+ @work_item_types = args[:work_item_types] if args.key?(:work_item_types)
2434
+ @worker_capabilities = args[:worker_capabilities] if args.key?(:worker_capabilities)
2435
+ @requested_lease_duration = args[:requested_lease_duration] if args.key?(:requested_lease_duration)
2436
+ @current_worker_time = args[:current_worker_time] if args.key?(:current_worker_time)
2437
+ @worker_id = args[:worker_id] if args.key?(:worker_id)
2438
+ end
2439
+ end
2440
+
2441
+ # Response to a request to lease WorkItems.
2442
+ class LeaseWorkItemResponse
2443
+ include Google::Apis::Core::Hashable
2444
+
2445
+ # A list of the leased WorkItems.
2446
+ # Corresponds to the JSON property `workItems`
2447
+ # @return [Array<Google::Apis::DataflowV1b3::WorkItem>]
2448
+ attr_accessor :work_items
2449
+
2450
+ def initialize(**args)
2451
+ update!(**args)
2452
+ end
2453
+
2454
+ # Update properties of this object
2455
+ def update!(**args)
2456
+ @work_items = args[:work_items] if args.key?(:work_items)
2457
+ end
2458
+ end
2459
+
2460
+ # WorkItem represents basic information about a WorkItem to be executed in the
2461
+ # cloud.
2462
+ class WorkItem
2463
+ include Google::Apis::Core::Hashable
2464
+
2465
+ # Identifies this WorkItem.
2466
+ # Corresponds to the JSON property `id`
2467
+ # @return [String]
2468
+ attr_accessor :id
2469
+
2470
+ # Identifies the cloud project this WorkItem belongs to.
2471
+ # Corresponds to the JSON property `projectId`
2472
+ # @return [String]
2473
+ attr_accessor :project_id
2474
+
2475
+ # Identifies the workflow job this WorkItem belongs to.
2476
+ # Corresponds to the JSON property `jobId`
2477
+ # @return [String]
2478
+ attr_accessor :job_id
2479
+
2480
+ # Any required packages that need to be fetched in order to execute this
2481
+ # WorkItem.
2482
+ # Corresponds to the JSON property `packages`
2483
+ # @return [Array<Google::Apis::DataflowV1b3::Package>]
2484
+ attr_accessor :packages
2485
+
2486
+ # MapTask consists of an ordered set of instructions, each of which describes
2487
+ # one particular low-level operation for the worker to perform in order to
2488
+ # accomplish the MapTask's WorkItem. Each instruction must appear in the list
2489
+ # before any instructions which depends on its output.
2490
+ # Corresponds to the JSON property `mapTask`
2491
+ # @return [Google::Apis::DataflowV1b3::MapTask]
2492
+ attr_accessor :map_task
2493
+
2494
+ # Describes a particular function to invoke.
2495
+ # Corresponds to the JSON property `seqMapTask`
2496
+ # @return [Google::Apis::DataflowV1b3::SeqMapTask]
2497
+ attr_accessor :seq_map_task
2498
+
2499
+ # A task which consists of a shell command for the worker to execute.
2500
+ # Corresponds to the JSON property `shellTask`
2501
+ # @return [Google::Apis::DataflowV1b3::ShellTask]
2502
+ attr_accessor :shell_task
2503
+
2504
+ # A task which initializes part of a streaming Dataflow job.
2505
+ # Corresponds to the JSON property `streamingSetupTask`
2506
+ # @return [Google::Apis::DataflowV1b3::StreamingSetupTask]
2507
+ attr_accessor :streaming_setup_task
2508
+
2509
+ # A work item that represents the different operations that can be performed on
2510
+ # a user-defined Source specification.
2511
+ # Corresponds to the JSON property `sourceOperationTask`
2512
+ # @return [Google::Apis::DataflowV1b3::SourceOperationRequest]
2513
+ attr_accessor :source_operation_task
2514
+
2515
+ # A task which describes what action should be performed for the specified
2516
+ # streaming computation ranges.
2517
+ # Corresponds to the JSON property `streamingComputationTask`
2518
+ # @return [Google::Apis::DataflowV1b3::StreamingComputationTask]
2519
+ attr_accessor :streaming_computation_task
2520
+
2521
+ # A task that carries configuration information for streaming computations.
2522
+ # Corresponds to the JSON property `streamingConfigTask`
2523
+ # @return [Google::Apis::DataflowV1b3::StreamingConfigTask]
2524
+ attr_accessor :streaming_config_task
2525
+
2526
+ # Recommended reporting interval.
2527
+ # Corresponds to the JSON property `reportStatusInterval`
2528
+ # @return [String]
2529
+ attr_accessor :report_status_interval
2530
+
2531
+ # Time when the lease on this Work will expire.
2532
+ # Corresponds to the JSON property `leaseExpireTime`
2533
+ # @return [String]
2534
+ attr_accessor :lease_expire_time
2535
+
2536
+ # Work item-specific configuration as an opaque blob.
2537
+ # Corresponds to the JSON property `configuration`
2538
+ # @return [String]
2539
+ attr_accessor :configuration
2540
+
2541
+ # The initial index to use when reporting the status of the WorkItem.
2542
+ # Corresponds to the JSON property `initialReportIndex`
2543
+ # @return [String]
2544
+ attr_accessor :initial_report_index
2545
+
2546
+ def initialize(**args)
2547
+ update!(**args)
2548
+ end
2549
+
2550
+ # Update properties of this object
2551
+ def update!(**args)
2552
+ @id = args[:id] if args.key?(:id)
2553
+ @project_id = args[:project_id] if args.key?(:project_id)
2554
+ @job_id = args[:job_id] if args.key?(:job_id)
2555
+ @packages = args[:packages] if args.key?(:packages)
2556
+ @map_task = args[:map_task] if args.key?(:map_task)
2557
+ @seq_map_task = args[:seq_map_task] if args.key?(:seq_map_task)
2558
+ @shell_task = args[:shell_task] if args.key?(:shell_task)
2559
+ @streaming_setup_task = args[:streaming_setup_task] if args.key?(:streaming_setup_task)
2560
+ @source_operation_task = args[:source_operation_task] if args.key?(:source_operation_task)
2561
+ @streaming_computation_task = args[:streaming_computation_task] if args.key?(:streaming_computation_task)
2562
+ @streaming_config_task = args[:streaming_config_task] if args.key?(:streaming_config_task)
2563
+ @report_status_interval = args[:report_status_interval] if args.key?(:report_status_interval)
2564
+ @lease_expire_time = args[:lease_expire_time] if args.key?(:lease_expire_time)
2565
+ @configuration = args[:configuration] if args.key?(:configuration)
2566
+ @initial_report_index = args[:initial_report_index] if args.key?(:initial_report_index)
2567
+ end
2568
+ end
2569
+
2570
+ # MapTask consists of an ordered set of instructions, each of which describes
2571
+ # one particular low-level operation for the worker to perform in order to
2572
+ # accomplish the MapTask's WorkItem. Each instruction must appear in the list
2573
+ # before any instructions which depends on its output.
2574
+ class MapTask
2575
+ include Google::Apis::Core::Hashable
2576
+
2577
+ # The instructions in the MapTask.
2578
+ # Corresponds to the JSON property `instructions`
2579
+ # @return [Array<Google::Apis::DataflowV1b3::ParallelInstruction>]
2580
+ attr_accessor :instructions
2581
+
2582
+ # System-defined name of this MapTask. Unique across the workflow.
2583
+ # Corresponds to the JSON property `systemName`
2584
+ # @return [String]
2585
+ attr_accessor :system_name
2586
+
2587
+ # System-defined name of the stage containing this MapTask. Unique across the
2588
+ # workflow.
2589
+ # Corresponds to the JSON property `stageName`
2590
+ # @return [String]
2591
+ attr_accessor :stage_name
2592
+
2593
+ def initialize(**args)
2594
+ update!(**args)
2595
+ end
2596
+
2597
+ # Update properties of this object
2598
+ def update!(**args)
2599
+ @instructions = args[:instructions] if args.key?(:instructions)
2600
+ @system_name = args[:system_name] if args.key?(:system_name)
2601
+ @stage_name = args[:stage_name] if args.key?(:stage_name)
2602
+ end
2603
+ end
2604
+
2605
+ # Describes a particular operation comprising a MapTask.
2606
+ class ParallelInstruction
2607
+ include Google::Apis::Core::Hashable
2608
+
2609
+ # System-defined name of this operation. Unique across the workflow.
2610
+ # Corresponds to the JSON property `systemName`
2611
+ # @return [String]
2612
+ attr_accessor :system_name
2613
+
2614
+ # User-provided name of this operation.
2615
+ # Corresponds to the JSON property `name`
2616
+ # @return [String]
2617
+ attr_accessor :name
2618
+
2619
+ # System-defined name for the operation in the original workflow graph.
2620
+ # Corresponds to the JSON property `originalName`
2621
+ # @return [String]
2622
+ attr_accessor :original_name
2623
+
2624
+ # An instruction that reads records. Takes no inputs, produces one output.
2625
+ # Corresponds to the JSON property `read`
2626
+ # @return [Google::Apis::DataflowV1b3::ReadInstruction]
2627
+ attr_accessor :read
2628
+
2629
+ # An instruction that writes records. Takes one input, produces no outputs.
2630
+ # Corresponds to the JSON property `write`
2631
+ # @return [Google::Apis::DataflowV1b3::WriteInstruction]
2632
+ attr_accessor :write
2633
+
2634
+ # An instruction that does a ParDo operation. Takes one main input and zero or
2635
+ # more side inputs, and produces zero or more outputs. Runs user code.
2636
+ # Corresponds to the JSON property `parDo`
2637
+ # @return [Google::Apis::DataflowV1b3::ParDoInstruction]
2638
+ attr_accessor :par_do
2639
+
2640
+ # An instruction that does a partial group-by-key. One input and one output.
2641
+ # Corresponds to the JSON property `partialGroupByKey`
2642
+ # @return [Google::Apis::DataflowV1b3::PartialGroupByKeyInstruction]
2643
+ attr_accessor :partial_group_by_key
2644
+
2645
+ # An instruction that copies its inputs (zero or more) to its (single) output.
2646
+ # Corresponds to the JSON property `flatten`
2647
+ # @return [Google::Apis::DataflowV1b3::FlattenInstruction]
2648
+ attr_accessor :flatten
2649
+
2650
+ # Describes the outputs of the instruction.
2651
+ # Corresponds to the JSON property `outputs`
2652
+ # @return [Array<Google::Apis::DataflowV1b3::InstructionOutput>]
2653
+ attr_accessor :outputs
2654
+
2655
+ def initialize(**args)
2656
+ update!(**args)
2657
+ end
2658
+
2659
+ # Update properties of this object
2660
+ def update!(**args)
2661
+ @system_name = args[:system_name] if args.key?(:system_name)
2662
+ @name = args[:name] if args.key?(:name)
2663
+ @original_name = args[:original_name] if args.key?(:original_name)
2664
+ @read = args[:read] if args.key?(:read)
2665
+ @write = args[:write] if args.key?(:write)
2666
+ @par_do = args[:par_do] if args.key?(:par_do)
2667
+ @partial_group_by_key = args[:partial_group_by_key] if args.key?(:partial_group_by_key)
2668
+ @flatten = args[:flatten] if args.key?(:flatten)
2669
+ @outputs = args[:outputs] if args.key?(:outputs)
2670
+ end
2671
+ end
2672
+
2673
+ # An instruction that reads records. Takes no inputs, produces one output.
2674
+ class ReadInstruction
2675
+ include Google::Apis::Core::Hashable
2676
+
2677
+ # A source that records can be read and decoded from.
2678
+ # Corresponds to the JSON property `source`
2679
+ # @return [Google::Apis::DataflowV1b3::Source]
2680
+ attr_accessor :source
2681
+
2682
+ def initialize(**args)
2683
+ update!(**args)
2684
+ end
2685
+
2686
+ # Update properties of this object
2687
+ def update!(**args)
2688
+ @source = args[:source] if args.key?(:source)
2689
+ end
2690
+ end
2691
+
2692
+ # An instruction that writes records. Takes one input, produces no outputs.
2693
+ class WriteInstruction
2694
+ include Google::Apis::Core::Hashable
2695
+
2696
+ # An input of an instruction, as a reference to an output of a producer
2697
+ # instruction.
2698
+ # Corresponds to the JSON property `input`
2699
+ # @return [Google::Apis::DataflowV1b3::InstructionInput]
2700
+ attr_accessor :input
2701
+
2702
+ # A sink that records can be encoded and written to.
2703
+ # Corresponds to the JSON property `sink`
2704
+ # @return [Google::Apis::DataflowV1b3::Sink]
2705
+ attr_accessor :sink
2706
+
2707
+ def initialize(**args)
2708
+ update!(**args)
2709
+ end
2710
+
2711
+ # Update properties of this object
2712
+ def update!(**args)
2713
+ @input = args[:input] if args.key?(:input)
2714
+ @sink = args[:sink] if args.key?(:sink)
2715
+ end
2716
+ end
2717
+
2718
+ # An input of an instruction, as a reference to an output of a producer
2719
+ # instruction.
2720
+ class InstructionInput
2721
+ include Google::Apis::Core::Hashable
2722
+
2723
+ # The index (origin zero) of the parallel instruction that produces the output
2724
+ # to be consumed by this input. This index is relative to the list of
2725
+ # instructions in this input's instruction's containing MapTask.
2726
+ # Corresponds to the JSON property `producerInstructionIndex`
2727
+ # @return [Fixnum]
2728
+ attr_accessor :producer_instruction_index
2729
+
2730
+ # The output index (origin zero) within the producer.
2731
+ # Corresponds to the JSON property `outputNum`
2732
+ # @return [Fixnum]
2733
+ attr_accessor :output_num
2734
+
2735
+ def initialize(**args)
2736
+ update!(**args)
2737
+ end
2738
+
2739
+ # Update properties of this object
2740
+ def update!(**args)
2741
+ @producer_instruction_index = args[:producer_instruction_index] if args.key?(:producer_instruction_index)
2742
+ @output_num = args[:output_num] if args.key?(:output_num)
2743
+ end
2744
+ end
2745
+
2746
+ # A sink that records can be encoded and written to.
2747
+ class Sink
2748
+ include Google::Apis::Core::Hashable
2749
+
2750
+ # The sink to write to, plus its parameters.
2751
+ # Corresponds to the JSON property `spec`
2752
+ # @return [Hash<String,Object>]
2753
+ attr_accessor :spec
2754
+
2755
+ # The codec to use to encode data written to the sink.
2756
+ # Corresponds to the JSON property `codec`
2757
+ # @return [Hash<String,Object>]
2758
+ attr_accessor :codec
2759
+
2760
+ def initialize(**args)
2761
+ update!(**args)
2762
+ end
2763
+
2764
+ # Update properties of this object
2765
+ def update!(**args)
2766
+ @spec = args[:spec] if args.key?(:spec)
2767
+ @codec = args[:codec] if args.key?(:codec)
2768
+ end
2769
+ end
2770
+
2771
+ # An instruction that does a ParDo operation. Takes one main input and zero or
2772
+ # more side inputs, and produces zero or more outputs. Runs user code.
2773
+ class ParDoInstruction
2774
+ include Google::Apis::Core::Hashable
2775
+
2776
+ # An input of an instruction, as a reference to an output of a producer
2777
+ # instruction.
2778
+ # Corresponds to the JSON property `input`
2779
+ # @return [Google::Apis::DataflowV1b3::InstructionInput]
2780
+ attr_accessor :input
2781
+
2782
+ # Zero or more side inputs.
2783
+ # Corresponds to the JSON property `sideInputs`
2784
+ # @return [Array<Google::Apis::DataflowV1b3::SideInputInfo>]
2785
+ attr_accessor :side_inputs
2786
+
2787
+ # The user function to invoke.
2788
+ # Corresponds to the JSON property `userFn`
2789
+ # @return [Hash<String,Object>]
2790
+ attr_accessor :user_fn
2791
+
2792
+ # The number of outputs.
2793
+ # Corresponds to the JSON property `numOutputs`
2794
+ # @return [Fixnum]
2795
+ attr_accessor :num_outputs
2796
+
2797
+ # Information about each of the outputs, if user_fn is a MultiDoFn.
2798
+ # Corresponds to the JSON property `multiOutputInfos`
2799
+ # @return [Array<Google::Apis::DataflowV1b3::MultiOutputInfo>]
2800
+ attr_accessor :multi_output_infos
2801
+
2802
+ def initialize(**args)
2803
+ update!(**args)
2804
+ end
2805
+
2806
+ # Update properties of this object
2807
+ def update!(**args)
2808
+ @input = args[:input] if args.key?(:input)
2809
+ @side_inputs = args[:side_inputs] if args.key?(:side_inputs)
2810
+ @user_fn = args[:user_fn] if args.key?(:user_fn)
2811
+ @num_outputs = args[:num_outputs] if args.key?(:num_outputs)
2812
+ @multi_output_infos = args[:multi_output_infos] if args.key?(:multi_output_infos)
2813
+ end
2814
+ end
2815
+
2816
+ # Information about a side input of a DoFn or an input of a SeqDoFn.
2817
+ class SideInputInfo
2818
+ include Google::Apis::Core::Hashable
2819
+
2820
+ # The source(s) to read element(s) from to get the value of this side input. If
2821
+ # more than one source, then the elements are taken from the sources, in the
2822
+ # specified order if order matters. At least one source is required.
2823
+ # Corresponds to the JSON property `sources`
2824
+ # @return [Array<Google::Apis::DataflowV1b3::Source>]
2825
+ attr_accessor :sources
2826
+
2827
+ # How to interpret the source element(s) as a side input value.
2828
+ # Corresponds to the JSON property `kind`
2829
+ # @return [Hash<String,Object>]
2830
+ attr_accessor :kind
2831
+
2832
+ # The id of the tag the user code will access this side input by; this should
2833
+ # correspond to the tag of some MultiOutputInfo.
2834
+ # Corresponds to the JSON property `tag`
2835
+ # @return [String]
2836
+ attr_accessor :tag
2837
+
2838
+ def initialize(**args)
2839
+ update!(**args)
2840
+ end
2841
+
2842
+ # Update properties of this object
2843
+ def update!(**args)
2844
+ @sources = args[:sources] if args.key?(:sources)
2845
+ @kind = args[:kind] if args.key?(:kind)
2846
+ @tag = args[:tag] if args.key?(:tag)
2847
+ end
2848
+ end
2849
+
2850
+ # Information about an output of a multi-output DoFn.
2851
+ class MultiOutputInfo
2852
+ include Google::Apis::Core::Hashable
2853
+
2854
+ # The id of the tag the user code will emit to this output by; this should
2855
+ # correspond to the tag of some SideInputInfo.
2856
+ # Corresponds to the JSON property `tag`
2857
+ # @return [String]
2858
+ attr_accessor :tag
2859
+
2860
+ def initialize(**args)
2861
+ update!(**args)
2862
+ end
2863
+
2864
+ # Update properties of this object
2865
+ def update!(**args)
2866
+ @tag = args[:tag] if args.key?(:tag)
2867
+ end
2868
+ end
2869
+
2870
+ # An instruction that does a partial group-by-key. One input and one output.
2871
+ class PartialGroupByKeyInstruction
2872
+ include Google::Apis::Core::Hashable
2873
+
2874
+ # An input of an instruction, as a reference to an output of a producer
2875
+ # instruction.
2876
+ # Corresponds to the JSON property `input`
2877
+ # @return [Google::Apis::DataflowV1b3::InstructionInput]
2878
+ attr_accessor :input
2879
+
2880
+ # The codec to use for interpreting an element in the input PTable.
2881
+ # Corresponds to the JSON property `inputElementCodec`
2882
+ # @return [Hash<String,Object>]
2883
+ attr_accessor :input_element_codec
2884
+
2885
+ # The value combining function to invoke.
2886
+ # Corresponds to the JSON property `valueCombiningFn`
2887
+ # @return [Hash<String,Object>]
2888
+ attr_accessor :value_combining_fn
2889
+
2890
+ # Zero or more side inputs.
2891
+ # Corresponds to the JSON property `sideInputs`
2892
+ # @return [Array<Google::Apis::DataflowV1b3::SideInputInfo>]
2893
+ attr_accessor :side_inputs
2894
+
2895
+ # If this instruction includes a combining function, this is the name of the
2896
+ # CombineValues instruction lifted into this instruction.
2897
+ # Corresponds to the JSON property `originalCombineValuesStepName`
2898
+ # @return [String]
2899
+ attr_accessor :original_combine_values_step_name
2900
+
2901
+ # If this instruction includes a combining function this is the name of the
2902
+ # intermediate store between the GBK and the CombineValues.
2903
+ # Corresponds to the JSON property `originalCombineValuesInputStoreName`
2904
+ # @return [String]
2905
+ attr_accessor :original_combine_values_input_store_name
2906
+
2907
+ def initialize(**args)
2908
+ update!(**args)
2909
+ end
2910
+
2911
+ # Update properties of this object
2912
+ def update!(**args)
2913
+ @input = args[:input] if args.key?(:input)
2914
+ @input_element_codec = args[:input_element_codec] if args.key?(:input_element_codec)
2915
+ @value_combining_fn = args[:value_combining_fn] if args.key?(:value_combining_fn)
2916
+ @side_inputs = args[:side_inputs] if args.key?(:side_inputs)
2917
+ @original_combine_values_step_name = args[:original_combine_values_step_name] if args.key?(:original_combine_values_step_name)
2918
+ @original_combine_values_input_store_name = args[:original_combine_values_input_store_name] if args.key?(:original_combine_values_input_store_name)
2919
+ end
2920
+ end
2921
+
2922
+ # An instruction that copies its inputs (zero or more) to its (single) output.
2923
+ class FlattenInstruction
2924
+ include Google::Apis::Core::Hashable
2925
+
2926
+ # Describes the inputs to the flatten instruction.
2927
+ # Corresponds to the JSON property `inputs`
2928
+ # @return [Array<Google::Apis::DataflowV1b3::InstructionInput>]
2929
+ attr_accessor :inputs
2930
+
2931
+ def initialize(**args)
2932
+ update!(**args)
2933
+ end
2934
+
2935
+ # Update properties of this object
2936
+ def update!(**args)
2937
+ @inputs = args[:inputs] if args.key?(:inputs)
2938
+ end
2939
+ end
2940
+
2941
+ # An output of an instruction.
2942
+ class InstructionOutput
2943
+ include Google::Apis::Core::Hashable
2944
+
2945
+ # The user-provided name of this output.
2946
+ # Corresponds to the JSON property `name`
2947
+ # @return [String]
2948
+ attr_accessor :name
2949
+
2950
+ # System-defined name of this output. Unique across the workflow.
2951
+ # Corresponds to the JSON property `systemName`
2952
+ # @return [String]
2953
+ attr_accessor :system_name
2954
+
2955
+ # System-defined name for this output in the original workflow graph. Outputs
2956
+ # that do not contribute to an original instruction do not set this.
2957
+ # Corresponds to the JSON property `originalName`
2958
+ # @return [String]
2959
+ attr_accessor :original_name
2960
+
2961
+ # The codec to use to encode data being written via this output.
2962
+ # Corresponds to the JSON property `codec`
2963
+ # @return [Hash<String,Object>]
2964
+ attr_accessor :codec
2965
+
2966
+ # For system-generated byte and mean byte metrics, certain instructions should
2967
+ # only report the key size.
2968
+ # Corresponds to the JSON property `onlyCountKeyBytes`
2969
+ # @return [Boolean]
2970
+ attr_accessor :only_count_key_bytes
2971
+ alias_method :only_count_key_bytes?, :only_count_key_bytes
2972
+
2973
+ # For system-generated byte and mean byte metrics, certain instructions should
2974
+ # only report the value size.
2975
+ # Corresponds to the JSON property `onlyCountValueBytes`
2976
+ # @return [Boolean]
2977
+ attr_accessor :only_count_value_bytes
2978
+ alias_method :only_count_value_bytes?, :only_count_value_bytes
2979
+
2980
+ def initialize(**args)
2981
+ update!(**args)
2982
+ end
2983
+
2984
+ # Update properties of this object
2985
+ def update!(**args)
2986
+ @name = args[:name] if args.key?(:name)
2987
+ @system_name = args[:system_name] if args.key?(:system_name)
2988
+ @original_name = args[:original_name] if args.key?(:original_name)
2989
+ @codec = args[:codec] if args.key?(:codec)
2990
+ @only_count_key_bytes = args[:only_count_key_bytes] if args.key?(:only_count_key_bytes)
2991
+ @only_count_value_bytes = args[:only_count_value_bytes] if args.key?(:only_count_value_bytes)
2992
+ end
2993
+ end
2994
+
2995
+ # Describes a particular function to invoke.
2996
+ class SeqMapTask
2997
+ include Google::Apis::Core::Hashable
2998
+
2999
+ # Information about each of the inputs.
3000
+ # Corresponds to the JSON property `inputs`
3001
+ # @return [Array<Google::Apis::DataflowV1b3::SideInputInfo>]
3002
+ attr_accessor :inputs
3003
+
3004
+ # The user function to invoke.
3005
+ # Corresponds to the JSON property `userFn`
3006
+ # @return [Hash<String,Object>]
3007
+ attr_accessor :user_fn
3008
+
3009
+ # Information about each of the outputs.
3010
+ # Corresponds to the JSON property `outputInfos`
3011
+ # @return [Array<Google::Apis::DataflowV1b3::SeqMapTaskOutputInfo>]
3012
+ attr_accessor :output_infos
3013
+
3014
+ # The user-provided name of the SeqDo operation.
3015
+ # Corresponds to the JSON property `name`
3016
+ # @return [String]
3017
+ attr_accessor :name
3018
+
3019
+ # System-defined name of the SeqDo operation. Unique across the workflow.
3020
+ # Corresponds to the JSON property `systemName`
3021
+ # @return [String]
3022
+ attr_accessor :system_name
3023
+
3024
+ # System-defined name of the stage containing the SeqDo operation. Unique across
3025
+ # the workflow.
3026
+ # Corresponds to the JSON property `stageName`
3027
+ # @return [String]
3028
+ attr_accessor :stage_name
3029
+
3030
+ def initialize(**args)
3031
+ update!(**args)
3032
+ end
3033
+
3034
+ # Update properties of this object
3035
+ def update!(**args)
3036
+ @inputs = args[:inputs] if args.key?(:inputs)
3037
+ @user_fn = args[:user_fn] if args.key?(:user_fn)
3038
+ @output_infos = args[:output_infos] if args.key?(:output_infos)
3039
+ @name = args[:name] if args.key?(:name)
3040
+ @system_name = args[:system_name] if args.key?(:system_name)
3041
+ @stage_name = args[:stage_name] if args.key?(:stage_name)
3042
+ end
3043
+ end
3044
+
3045
+ # Information about an output of a SeqMapTask.
3046
+ class SeqMapTaskOutputInfo
3047
+ include Google::Apis::Core::Hashable
3048
+
3049
+ # The id of the TupleTag the user code will tag the output value by.
3050
+ # Corresponds to the JSON property `tag`
3051
+ # @return [String]
3052
+ attr_accessor :tag
3053
+
3054
+ # A sink that records can be encoded and written to.
3055
+ # Corresponds to the JSON property `sink`
3056
+ # @return [Google::Apis::DataflowV1b3::Sink]
3057
+ attr_accessor :sink
3058
+
3059
+ def initialize(**args)
3060
+ update!(**args)
3061
+ end
3062
+
3063
+ # Update properties of this object
3064
+ def update!(**args)
3065
+ @tag = args[:tag] if args.key?(:tag)
3066
+ @sink = args[:sink] if args.key?(:sink)
3067
+ end
3068
+ end
3069
+
3070
+ # A task which consists of a shell command for the worker to execute.
3071
+ class ShellTask
3072
+ include Google::Apis::Core::Hashable
3073
+
3074
+ # The shell command to run.
3075
+ # Corresponds to the JSON property `command`
3076
+ # @return [String]
3077
+ attr_accessor :command
3078
+
3079
+ # Exit code for the task.
3080
+ # Corresponds to the JSON property `exitCode`
3081
+ # @return [Fixnum]
3082
+ attr_accessor :exit_code
3083
+
3084
+ def initialize(**args)
3085
+ update!(**args)
3086
+ end
3087
+
3088
+ # Update properties of this object
3089
+ def update!(**args)
3090
+ @command = args[:command] if args.key?(:command)
3091
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
3092
+ end
3093
+ end
3094
+
3095
+ # A task which initializes part of a streaming Dataflow job.
3096
+ class StreamingSetupTask
3097
+ include Google::Apis::Core::Hashable
3098
+
3099
+ # The TCP port on which the worker should listen for messages from other
3100
+ # streaming computation workers.
3101
+ # Corresponds to the JSON property `receiveWorkPort`
3102
+ # @return [Fixnum]
3103
+ attr_accessor :receive_work_port
3104
+
3105
+ # The TCP port used by the worker to communicate with the Dataflow worker
3106
+ # harness.
3107
+ # Corresponds to the JSON property `workerHarnessPort`
3108
+ # @return [Fixnum]
3109
+ attr_accessor :worker_harness_port
3110
+
3111
+ # Global topology of the streaming Dataflow job, including all computations and
3112
+ # their sharded locations.
3113
+ # Corresponds to the JSON property `streamingComputationTopology`
3114
+ # @return [Google::Apis::DataflowV1b3::TopologyConfig]
3115
+ attr_accessor :streaming_computation_topology
3116
+
3117
+ # The user has requested drain.
3118
+ # Corresponds to the JSON property `drain`
3119
+ # @return [Boolean]
3120
+ attr_accessor :drain
3121
+ alias_method :drain?, :drain
3122
+
3123
+ def initialize(**args)
3124
+ update!(**args)
3125
+ end
3126
+
3127
+ # Update properties of this object
3128
+ def update!(**args)
3129
+ @receive_work_port = args[:receive_work_port] if args.key?(:receive_work_port)
3130
+ @worker_harness_port = args[:worker_harness_port] if args.key?(:worker_harness_port)
3131
+ @streaming_computation_topology = args[:streaming_computation_topology] if args.key?(:streaming_computation_topology)
3132
+ @drain = args[:drain] if args.key?(:drain)
3133
+ end
3134
+ end
3135
+
3136
+ # Global topology of the streaming Dataflow job, including all computations and
3137
+ # their sharded locations.
3138
+ class TopologyConfig
3139
+ include Google::Apis::Core::Hashable
3140
+
3141
+ # The computations associated with a streaming Dataflow job.
3142
+ # Corresponds to the JSON property `computations`
3143
+ # @return [Array<Google::Apis::DataflowV1b3::ComputationTopology>]
3144
+ attr_accessor :computations
3145
+
3146
+ # The disks assigned to a streaming Dataflow job.
3147
+ # Corresponds to the JSON property `dataDiskAssignments`
3148
+ # @return [Array<Google::Apis::DataflowV1b3::DataDiskAssignment>]
3149
+ attr_accessor :data_disk_assignments
3150
+
3151
+ # Maps user stage names to stable computation names.
3152
+ # Corresponds to the JSON property `userStageToComputationNameMap`
3153
+ # @return [Hash<String,String>]
3154
+ attr_accessor :user_stage_to_computation_name_map
3155
+
3156
+ # The size (in bits) of keys that will be assigned to source messages.
3157
+ # Corresponds to the JSON property `forwardingKeyBits`
3158
+ # @return [Fixnum]
3159
+ attr_accessor :forwarding_key_bits
3160
+
3161
+ # Version number for persistent state.
3162
+ # Corresponds to the JSON property `persistentStateVersion`
3163
+ # @return [Fixnum]
3164
+ attr_accessor :persistent_state_version
3165
+
3166
+ def initialize(**args)
3167
+ update!(**args)
3168
+ end
3169
+
3170
+ # Update properties of this object
3171
+ def update!(**args)
3172
+ @computations = args[:computations] if args.key?(:computations)
3173
+ @data_disk_assignments = args[:data_disk_assignments] if args.key?(:data_disk_assignments)
3174
+ @user_stage_to_computation_name_map = args[:user_stage_to_computation_name_map] if args.key?(:user_stage_to_computation_name_map)
3175
+ @forwarding_key_bits = args[:forwarding_key_bits] if args.key?(:forwarding_key_bits)
3176
+ @persistent_state_version = args[:persistent_state_version] if args.key?(:persistent_state_version)
3177
+ end
3178
+ end
3179
+
3180
+ # All configuration data for a particular Computation.
3181
+ class ComputationTopology
3182
+ include Google::Apis::Core::Hashable
3183
+
3184
+ # The system stage name.
3185
+ # Corresponds to the JSON property `systemStageName`
3186
+ # @return [String]
3187
+ attr_accessor :system_stage_name
3188
+
3189
+ # The ID of the computation.
3190
+ # Corresponds to the JSON property `computationId`
3191
+ # @return [String]
3192
+ attr_accessor :computation_id
3193
+
3194
+ # The user stage name.
3195
+ # Corresponds to the JSON property `userStageName`
3196
+ # @return [String]
3197
+ attr_accessor :user_stage_name
3198
+
3199
+ # The key ranges processed by the computation.
3200
+ # Corresponds to the JSON property `keyRanges`
3201
+ # @return [Array<Google::Apis::DataflowV1b3::KeyRangeLocation>]
3202
+ attr_accessor :key_ranges
3203
+
3204
+ # The inputs to the computation.
3205
+ # Corresponds to the JSON property `inputs`
3206
+ # @return [Array<Google::Apis::DataflowV1b3::StreamLocation>]
3207
+ attr_accessor :inputs
3208
+
3209
+ # The outputs from the computation.
3210
+ # Corresponds to the JSON property `outputs`
3211
+ # @return [Array<Google::Apis::DataflowV1b3::StreamLocation>]
3212
+ attr_accessor :outputs
3213
+
3214
+ # The state family values.
3215
+ # Corresponds to the JSON property `stateFamilies`
3216
+ # @return [Array<Google::Apis::DataflowV1b3::StateFamilyConfig>]
3217
+ attr_accessor :state_families
3218
+
3219
+ def initialize(**args)
3220
+ update!(**args)
3221
+ end
3222
+
3223
+ # Update properties of this object
3224
+ def update!(**args)
3225
+ @system_stage_name = args[:system_stage_name] if args.key?(:system_stage_name)
3226
+ @computation_id = args[:computation_id] if args.key?(:computation_id)
3227
+ @user_stage_name = args[:user_stage_name] if args.key?(:user_stage_name)
3228
+ @key_ranges = args[:key_ranges] if args.key?(:key_ranges)
3229
+ @inputs = args[:inputs] if args.key?(:inputs)
3230
+ @outputs = args[:outputs] if args.key?(:outputs)
3231
+ @state_families = args[:state_families] if args.key?(:state_families)
3232
+ end
3233
+ end
3234
+
3235
+ # Location information for a specific key-range of a sharded computation.
3236
+ # Currently we only support UTF-8 character splits to simplify encoding into
3237
+ # JSON.
3238
+ class KeyRangeLocation
3239
+ include Google::Apis::Core::Hashable
3240
+
3241
+ # The start (inclusive) of the key range.
3242
+ # Corresponds to the JSON property `start`
3243
+ # @return [String]
3244
+ attr_accessor :start
3245
+
3246
+ # The end (exclusive) of the key range.
3247
+ # Corresponds to the JSON property `end`
3248
+ # @return [String]
3249
+ attr_accessor :end
3250
+
3251
+ # The physical location of this range assignment to be used for streaming
3252
+ # computation cross-worker message delivery.
3253
+ # Corresponds to the JSON property `deliveryEndpoint`
3254
+ # @return [String]
3255
+ attr_accessor :delivery_endpoint
3256
+
3257
+ # The location of the persistent state for this range, as a persistent directory
3258
+ # in the worker local filesystem.
3259
+ # Corresponds to the JSON property `persistentDirectory`
3260
+ # @return [String]
3261
+ attr_accessor :persistent_directory
3262
+
3263
+ # The name of the data disk where data for this range is stored. This name is
3264
+ # local to the Google Cloud Platform project and uniquely identifies the disk
3265
+ # within that project, for example "myproject-1014-104817-4c2-harness-0-disk-1".
3266
+ # Corresponds to the JSON property `dataDisk`
3267
+ # @return [String]
3268
+ attr_accessor :data_disk
3269
+
3270
+ def initialize(**args)
3271
+ update!(**args)
3272
+ end
3273
+
3274
+ # Update properties of this object
3275
+ def update!(**args)
3276
+ @start = args[:start] if args.key?(:start)
3277
+ @end = args[:end] if args.key?(:end)
3278
+ @delivery_endpoint = args[:delivery_endpoint] if args.key?(:delivery_endpoint)
3279
+ @persistent_directory = args[:persistent_directory] if args.key?(:persistent_directory)
3280
+ @data_disk = args[:data_disk] if args.key?(:data_disk)
3281
+ end
3282
+ end
3283
+
3284
+ # Describes a stream of data, either as input to be processed or as output of a
3285
+ # streaming Dataflow job.
3286
+ class StreamLocation
3287
+ include Google::Apis::Core::Hashable
3288
+
3289
+ # Identifies the location of a streaming computation stage, for stage-to-stage
3290
+ # communication.
3291
+ # Corresponds to the JSON property `streamingStageLocation`
3292
+ # @return [Google::Apis::DataflowV1b3::StreamingStageLocation]
3293
+ attr_accessor :streaming_stage_location
3294
+
3295
+ # Identifies a pubsub location to use for transferring data into or out of a
3296
+ # streaming Dataflow job.
3297
+ # Corresponds to the JSON property `pubsubLocation`
3298
+ # @return [Google::Apis::DataflowV1b3::PubsubLocation]
3299
+ attr_accessor :pubsub_location
3300
+
3301
+ # Identifies the location of a streaming side input.
3302
+ # Corresponds to the JSON property `sideInputLocation`
3303
+ # @return [Google::Apis::DataflowV1b3::StreamingSideInputLocation]
3304
+ attr_accessor :side_input_location
3305
+
3306
+ # Identifies the location of a custom souce.
3307
+ # Corresponds to the JSON property `customSourceLocation`
3308
+ # @return [Google::Apis::DataflowV1b3::CustomSourceLocation]
3309
+ attr_accessor :custom_source_location
3310
+
3311
+ def initialize(**args)
3312
+ update!(**args)
3313
+ end
3314
+
3315
+ # Update properties of this object
3316
+ def update!(**args)
3317
+ @streaming_stage_location = args[:streaming_stage_location] if args.key?(:streaming_stage_location)
3318
+ @pubsub_location = args[:pubsub_location] if args.key?(:pubsub_location)
3319
+ @side_input_location = args[:side_input_location] if args.key?(:side_input_location)
3320
+ @custom_source_location = args[:custom_source_location] if args.key?(:custom_source_location)
3321
+ end
3322
+ end
3323
+
3324
+ # Identifies the location of a streaming computation stage, for stage-to-stage
3325
+ # communication.
3326
+ class StreamingStageLocation
3327
+ include Google::Apis::Core::Hashable
3328
+
3329
+ # Identifies the particular stream within the streaming Dataflow job.
3330
+ # Corresponds to the JSON property `streamId`
3331
+ # @return [String]
3332
+ attr_accessor :stream_id
3333
+
3334
+ def initialize(**args)
3335
+ update!(**args)
3336
+ end
3337
+
3338
+ # Update properties of this object
3339
+ def update!(**args)
3340
+ @stream_id = args[:stream_id] if args.key?(:stream_id)
3341
+ end
3342
+ end
3343
+
3344
+ # Identifies a pubsub location to use for transferring data into or out of a
3345
+ # streaming Dataflow job.
3346
+ class PubsubLocation
3347
+ include Google::Apis::Core::Hashable
3348
+
3349
+ # A pubsub topic, in the form of "pubsub.googleapis.com/topics/
3350
+ # /"
3351
+ # Corresponds to the JSON property `topic`
3352
+ # @return [String]
3353
+ attr_accessor :topic
3354
+
3355
+ # A pubsub subscription, in the form of "pubsub.googleapis.com/subscriptions/
3356
+ # /"
3357
+ # Corresponds to the JSON property `subscription`
3358
+ # @return [String]
3359
+ attr_accessor :subscription
3360
+
3361
+ # If set, contains a pubsub label from which to extract record timestamps. If
3362
+ # left empty, record timestamps will be generated upon arrival.
3363
+ # Corresponds to the JSON property `timestampLabel`
3364
+ # @return [String]
3365
+ attr_accessor :timestamp_label
3366
+
3367
+ # If set, contains a pubsub label from which to extract record ids. If left
3368
+ # empty, record deduplication will be strictly best effort.
3369
+ # Corresponds to the JSON property `idLabel`
3370
+ # @return [String]
3371
+ attr_accessor :id_label
3372
+
3373
+ # Indicates whether the pipeline allows late-arriving data.
3374
+ # Corresponds to the JSON property `dropLateData`
3375
+ # @return [Boolean]
3376
+ attr_accessor :drop_late_data
3377
+ alias_method :drop_late_data?, :drop_late_data
3378
+
3379
+ # If set, specifies the pubsub subscription that will be used for tracking
3380
+ # custom time timestamps for watermark estimation.
3381
+ # Corresponds to the JSON property `trackingSubscription`
3382
+ # @return [String]
3383
+ attr_accessor :tracking_subscription
3384
+
3385
+ def initialize(**args)
3386
+ update!(**args)
3387
+ end
3388
+
3389
+ # Update properties of this object
3390
+ def update!(**args)
3391
+ @topic = args[:topic] if args.key?(:topic)
3392
+ @subscription = args[:subscription] if args.key?(:subscription)
3393
+ @timestamp_label = args[:timestamp_label] if args.key?(:timestamp_label)
3394
+ @id_label = args[:id_label] if args.key?(:id_label)
3395
+ @drop_late_data = args[:drop_late_data] if args.key?(:drop_late_data)
3396
+ @tracking_subscription = args[:tracking_subscription] if args.key?(:tracking_subscription)
3397
+ end
3398
+ end
3399
+
3400
+ # Identifies the location of a streaming side input.
3401
+ class StreamingSideInputLocation
3402
+ include Google::Apis::Core::Hashable
3403
+
3404
+ # Identifies the particular side input within the streaming Dataflow job.
3405
+ # Corresponds to the JSON property `tag`
3406
+ # @return [String]
3407
+ attr_accessor :tag
3408
+
3409
+ # Identifies the state family where this side input is stored.
3410
+ # Corresponds to the JSON property `stateFamily`
3411
+ # @return [String]
3412
+ attr_accessor :state_family
3413
+
3414
+ def initialize(**args)
3415
+ update!(**args)
3416
+ end
3417
+
3418
+ # Update properties of this object
3419
+ def update!(**args)
3420
+ @tag = args[:tag] if args.key?(:tag)
3421
+ @state_family = args[:state_family] if args.key?(:state_family)
3422
+ end
3423
+ end
3424
+
3425
+ # Identifies the location of a custom souce.
3426
+ class CustomSourceLocation
3427
+ include Google::Apis::Core::Hashable
3428
+
3429
+ # Whether this source is stateful.
3430
+ # Corresponds to the JSON property `stateful`
3431
+ # @return [Boolean]
3432
+ attr_accessor :stateful
3433
+ alias_method :stateful?, :stateful
3434
+
3435
+ def initialize(**args)
3436
+ update!(**args)
3437
+ end
3438
+
3439
+ # Update properties of this object
3440
+ def update!(**args)
3441
+ @stateful = args[:stateful] if args.key?(:stateful)
3442
+ end
3443
+ end
3444
+
3445
+ # State family configuration.
3446
+ class StateFamilyConfig
3447
+ include Google::Apis::Core::Hashable
3448
+
3449
+ # The state family value.
3450
+ # Corresponds to the JSON property `stateFamily`
3451
+ # @return [String]
3452
+ attr_accessor :state_family
3453
+
3454
+ # If true, this family corresponds to a read operation.
3455
+ # Corresponds to the JSON property `isRead`
3456
+ # @return [Boolean]
3457
+ attr_accessor :is_read
3458
+ alias_method :is_read?, :is_read
3459
+
3460
+ def initialize(**args)
3461
+ update!(**args)
3462
+ end
3463
+
3464
+ # Update properties of this object
3465
+ def update!(**args)
3466
+ @state_family = args[:state_family] if args.key?(:state_family)
3467
+ @is_read = args[:is_read] if args.key?(:is_read)
3468
+ end
3469
+ end
3470
+
3471
+ # Data disk assignment for a given VM instance.
3472
+ class DataDiskAssignment
3473
+ include Google::Apis::Core::Hashable
3474
+
3475
+ # VM instance name the data disks mounted to, for example "myproject-1014-104817-
3476
+ # 4c2-harness-0".
3477
+ # Corresponds to the JSON property `vmInstance`
3478
+ # @return [String]
3479
+ attr_accessor :vm_instance
3480
+
3481
+ # Mounted data disks. The order is important a data disk's 0-based index in this
3482
+ # list defines which persistent directory the disk is mounted to, for example
3483
+ # the list of ` "myproject-1014-104817-4c2-harness-0-disk-0" `, ` "myproject-
3484
+ # 1014-104817-4c2-harness-0-disk-1" `.
3485
+ # Corresponds to the JSON property `dataDisks`
3486
+ # @return [Array<String>]
3487
+ attr_accessor :data_disks
3488
+
3489
+ def initialize(**args)
3490
+ update!(**args)
3491
+ end
3492
+
3493
+ # Update properties of this object
3494
+ def update!(**args)
3495
+ @vm_instance = args[:vm_instance] if args.key?(:vm_instance)
3496
+ @data_disks = args[:data_disks] if args.key?(:data_disks)
3497
+ end
3498
+ end
3499
+
3500
+ # A work item that represents the different operations that can be performed on
3501
+ # a user-defined Source specification.
3502
+ class SourceOperationRequest
3503
+ include Google::Apis::Core::Hashable
3504
+
3505
+ # Represents the operation to split a high-level Source specification into
3506
+ # bundles (parts for parallel processing). At a high level, splitting of a
3507
+ # source into bundles happens as follows: SourceSplitRequest is applied to the
3508
+ # source. If it returns SOURCE_SPLIT_OUTCOME_USE_CURRENT, no further splitting
3509
+ # happens and the source is used "as is". Otherwise, splitting is applied
3510
+ # recursively to each produced DerivedSource. As an optimization, for any Source,
3511
+ # if its does_not_need_splitting is true, the framework assumes that splitting
3512
+ # this source would return SOURCE_SPLIT_OUTCOME_USE_CURRENT, and doesn't
3513
+ # initiate a SourceSplitRequest. This applies both to the initial source being
3514
+ # split and to bundles produced from it.
3515
+ # Corresponds to the JSON property `split`
3516
+ # @return [Google::Apis::DataflowV1b3::SourceSplitRequest]
3517
+ attr_accessor :split
3518
+
3519
+ # A request to compute the SourceMetadata of a Source.
3520
+ # Corresponds to the JSON property `getMetadata`
3521
+ # @return [Google::Apis::DataflowV1b3::SourceGetMetadataRequest]
3522
+ attr_accessor :get_metadata
3523
+
3524
+ def initialize(**args)
3525
+ update!(**args)
3526
+ end
3527
+
3528
+ # Update properties of this object
3529
+ def update!(**args)
3530
+ @split = args[:split] if args.key?(:split)
3531
+ @get_metadata = args[:get_metadata] if args.key?(:get_metadata)
3532
+ end
3533
+ end
3534
+
3535
+ # Represents the operation to split a high-level Source specification into
3536
+ # bundles (parts for parallel processing). At a high level, splitting of a
3537
+ # source into bundles happens as follows: SourceSplitRequest is applied to the
3538
+ # source. If it returns SOURCE_SPLIT_OUTCOME_USE_CURRENT, no further splitting
3539
+ # happens and the source is used "as is". Otherwise, splitting is applied
3540
+ # recursively to each produced DerivedSource. As an optimization, for any Source,
3541
+ # if its does_not_need_splitting is true, the framework assumes that splitting
3542
+ # this source would return SOURCE_SPLIT_OUTCOME_USE_CURRENT, and doesn't
3543
+ # initiate a SourceSplitRequest. This applies both to the initial source being
3544
+ # split and to bundles produced from it.
3545
+ class SourceSplitRequest
3546
+ include Google::Apis::Core::Hashable
3547
+
3548
+ # A source that records can be read and decoded from.
3549
+ # Corresponds to the JSON property `source`
3550
+ # @return [Google::Apis::DataflowV1b3::Source]
3551
+ attr_accessor :source
3552
+
3553
+ # Hints for splitting a Source into bundles (parts for parallel processing)
3554
+ # using SourceSplitRequest.
3555
+ # Corresponds to the JSON property `options`
3556
+ # @return [Google::Apis::DataflowV1b3::SourceSplitOptions]
3557
+ attr_accessor :options
3558
+
3559
+ def initialize(**args)
3560
+ update!(**args)
3561
+ end
3562
+
3563
+ # Update properties of this object
3564
+ def update!(**args)
3565
+ @source = args[:source] if args.key?(:source)
3566
+ @options = args[:options] if args.key?(:options)
3567
+ end
3568
+ end
3569
+
3570
+ # Hints for splitting a Source into bundles (parts for parallel processing)
3571
+ # using SourceSplitRequest.
3572
+ class SourceSplitOptions
3573
+ include Google::Apis::Core::Hashable
3574
+
3575
+ # The source should be split into a set of bundles where the estimated size of
3576
+ # each is approximately this many bytes.
3577
+ # Corresponds to the JSON property `desiredBundleSizeBytes`
3578
+ # @return [String]
3579
+ attr_accessor :desired_bundle_size_bytes
3580
+
3581
+ # DEPRECATED in favor of desired_bundle_size_bytes.
3582
+ # Corresponds to the JSON property `desiredShardSizeBytes`
3583
+ # @return [String]
3584
+ attr_accessor :desired_shard_size_bytes
3585
+
3586
+ def initialize(**args)
3587
+ update!(**args)
3588
+ end
3589
+
3590
+ # Update properties of this object
3591
+ def update!(**args)
3592
+ @desired_bundle_size_bytes = args[:desired_bundle_size_bytes] if args.key?(:desired_bundle_size_bytes)
3593
+ @desired_shard_size_bytes = args[:desired_shard_size_bytes] if args.key?(:desired_shard_size_bytes)
3594
+ end
3595
+ end
3596
+
3597
+ # A request to compute the SourceMetadata of a Source.
3598
+ class SourceGetMetadataRequest
3599
+ include Google::Apis::Core::Hashable
3600
+
3601
+ # A source that records can be read and decoded from.
3602
+ # Corresponds to the JSON property `source`
3603
+ # @return [Google::Apis::DataflowV1b3::Source]
3604
+ attr_accessor :source
3605
+
3606
+ def initialize(**args)
3607
+ update!(**args)
3608
+ end
3609
+
3610
+ # Update properties of this object
3611
+ def update!(**args)
3612
+ @source = args[:source] if args.key?(:source)
3613
+ end
3614
+ end
3615
+
3616
+ # A task which describes what action should be performed for the specified
3617
+ # streaming computation ranges.
3618
+ class StreamingComputationTask
3619
+ include Google::Apis::Core::Hashable
3620
+
3621
+ # A type of streaming computation task.
3622
+ # Corresponds to the JSON property `taskType`
3623
+ # @return [String]
3624
+ attr_accessor :task_type
3625
+
3626
+ # Describes the set of data disks this task should apply to.
3627
+ # Corresponds to the JSON property `dataDisks`
3628
+ # @return [Array<Google::Apis::DataflowV1b3::MountedDataDisk>]
3629
+ attr_accessor :data_disks
3630
+
3631
+ # Contains ranges of a streaming computation this task should apply to.
3632
+ # Corresponds to the JSON property `computationRanges`
3633
+ # @return [Array<Google::Apis::DataflowV1b3::StreamingComputationRanges>]
3634
+ attr_accessor :computation_ranges
3635
+
3636
+ def initialize(**args)
3637
+ update!(**args)
3638
+ end
3639
+
3640
+ # Update properties of this object
3641
+ def update!(**args)
3642
+ @task_type = args[:task_type] if args.key?(:task_type)
3643
+ @data_disks = args[:data_disks] if args.key?(:data_disks)
3644
+ @computation_ranges = args[:computation_ranges] if args.key?(:computation_ranges)
3645
+ end
3646
+ end
3647
+
3648
+ # Describes mounted data disk.
3649
+ class MountedDataDisk
3650
+ include Google::Apis::Core::Hashable
3651
+
3652
+ # The name of the data disk. This name is local to the Google Cloud Platform
3653
+ # project and uniquely identifies the disk within that project, for example "
3654
+ # myproject-1014-104817-4c2-harness-0-disk-1".
3655
+ # Corresponds to the JSON property `dataDisk`
3656
+ # @return [String]
3657
+ attr_accessor :data_disk
3658
+
3659
+ def initialize(**args)
3660
+ update!(**args)
3661
+ end
3662
+
3663
+ # Update properties of this object
3664
+ def update!(**args)
3665
+ @data_disk = args[:data_disk] if args.key?(:data_disk)
3666
+ end
3667
+ end
3668
+
3669
+ # Describes full or partial data disk assignment information of the computation
3670
+ # ranges.
3671
+ class StreamingComputationRanges
3672
+ include Google::Apis::Core::Hashable
3673
+
3674
+ # The ID of the computation.
3675
+ # Corresponds to the JSON property `computationId`
3676
+ # @return [String]
3677
+ attr_accessor :computation_id
3678
+
3679
+ # Data disk assignments for ranges from this computation.
3680
+ # Corresponds to the JSON property `rangeAssignments`
3681
+ # @return [Array<Google::Apis::DataflowV1b3::KeyRangeDataDiskAssignment>]
3682
+ attr_accessor :range_assignments
3683
+
3684
+ def initialize(**args)
3685
+ update!(**args)
3686
+ end
3687
+
3688
+ # Update properties of this object
3689
+ def update!(**args)
3690
+ @computation_id = args[:computation_id] if args.key?(:computation_id)
3691
+ @range_assignments = args[:range_assignments] if args.key?(:range_assignments)
3692
+ end
3693
+ end
3694
+
3695
+ # Data disk assignment information for a specific key-range of a sharded
3696
+ # computation. Currently we only support UTF-8 character splits to simplify
3697
+ # encoding into JSON.
3698
+ class KeyRangeDataDiskAssignment
3699
+ include Google::Apis::Core::Hashable
3700
+
3701
+ # The start (inclusive) of the key range.
3702
+ # Corresponds to the JSON property `start`
3703
+ # @return [String]
3704
+ attr_accessor :start
3705
+
3706
+ # The end (exclusive) of the key range.
3707
+ # Corresponds to the JSON property `end`
3708
+ # @return [String]
3709
+ attr_accessor :end
3710
+
3711
+ # The name of the data disk where data for this range is stored. This name is
3712
+ # local to the Google Cloud Platform project and uniquely identifies the disk
3713
+ # within that project, for example "myproject-1014-104817-4c2-harness-0-disk-1".
3714
+ # Corresponds to the JSON property `dataDisk`
3715
+ # @return [String]
3716
+ attr_accessor :data_disk
3717
+
3718
+ def initialize(**args)
3719
+ update!(**args)
3720
+ end
3721
+
3722
+ # Update properties of this object
3723
+ def update!(**args)
3724
+ @start = args[:start] if args.key?(:start)
3725
+ @end = args[:end] if args.key?(:end)
3726
+ @data_disk = args[:data_disk] if args.key?(:data_disk)
3727
+ end
3728
+ end
3729
+
3730
+ # A task that carries configuration information for streaming computations.
3731
+ class StreamingConfigTask
3732
+ include Google::Apis::Core::Hashable
3733
+
3734
+ # Set of computation configuration information.
3735
+ # Corresponds to the JSON property `streamingComputationConfigs`
3736
+ # @return [Array<Google::Apis::DataflowV1b3::StreamingComputationConfig>]
3737
+ attr_accessor :streaming_computation_configs
3738
+
3739
+ # Map from user step names to state families.
3740
+ # Corresponds to the JSON property `userStepToStateFamilyNameMap`
3741
+ # @return [Hash<String,String>]
3742
+ attr_accessor :user_step_to_state_family_name_map
3743
+
3744
+ def initialize(**args)
3745
+ update!(**args)
3746
+ end
3747
+
3748
+ # Update properties of this object
3749
+ def update!(**args)
3750
+ @streaming_computation_configs = args[:streaming_computation_configs] if args.key?(:streaming_computation_configs)
3751
+ @user_step_to_state_family_name_map = args[:user_step_to_state_family_name_map] if args.key?(:user_step_to_state_family_name_map)
3752
+ end
3753
+ end
3754
+
3755
+ # Configuration information for a single streaming computation.
3756
+ class StreamingComputationConfig
3757
+ include Google::Apis::Core::Hashable
3758
+
3759
+ # Unique identifier for this computation.
3760
+ # Corresponds to the JSON property `computationId`
3761
+ # @return [String]
3762
+ attr_accessor :computation_id
3763
+
3764
+ # System defined name for this computation.
3765
+ # Corresponds to the JSON property `systemName`
3766
+ # @return [String]
3767
+ attr_accessor :system_name
3768
+
3769
+ # Stage name of this computation.
3770
+ # Corresponds to the JSON property `stageName`
3771
+ # @return [String]
3772
+ attr_accessor :stage_name
3773
+
3774
+ # Instructions that comprise the computation.
3775
+ # Corresponds to the JSON property `instructions`
3776
+ # @return [Array<Google::Apis::DataflowV1b3::ParallelInstruction>]
3777
+ attr_accessor :instructions
3778
+
3779
+ def initialize(**args)
3780
+ update!(**args)
3781
+ end
3782
+
3783
+ # Update properties of this object
3784
+ def update!(**args)
3785
+ @computation_id = args[:computation_id] if args.key?(:computation_id)
3786
+ @system_name = args[:system_name] if args.key?(:system_name)
3787
+ @stage_name = args[:stage_name] if args.key?(:stage_name)
3788
+ @instructions = args[:instructions] if args.key?(:instructions)
3789
+ end
3790
+ end
3791
+
3792
+ # A request for sending worker messages to the service.
3793
+ class SendWorkerMessagesRequest
3794
+ include Google::Apis::Core::Hashable
3795
+
3796
+ # The WorkerMessages to send.
3797
+ # Corresponds to the JSON property `workerMessages`
3798
+ # @return [Array<Google::Apis::DataflowV1b3::WorkerMessage>]
3799
+ attr_accessor :worker_messages
3800
+
3801
+ def initialize(**args)
3802
+ update!(**args)
3803
+ end
3804
+
3805
+ # Update properties of this object
3806
+ def update!(**args)
3807
+ @worker_messages = args[:worker_messages] if args.key?(:worker_messages)
3808
+ end
3809
+ end
3810
+
3811
+ # WorkerMessage provides information to the backend about a worker.
3812
+ class WorkerMessage
3813
+ include Google::Apis::Core::Hashable
3814
+
3815
+ # Labels are used to group WorkerMessages. For example, a worker_message about a
3816
+ # particular container might have the labels: ` "JOB_ID": "2015-04-22", "
3817
+ # WORKER_ID": "wordcount-vm-2015…" "CONTAINER_TYPE": "worker", "CONTAINER_ID": "
3818
+ # ac1234def"` Label tags typically correspond to Label enum values. However, for
3819
+ # ease of development other strings can be used as tags. LABEL_UNSPECIFIED
3820
+ # should not be used here.
3821
+ # Corresponds to the JSON property `labels`
3822
+ # @return [Hash<String,String>]
3823
+ attr_accessor :labels
3824
+
3825
+ # The timestamp of the worker_message.
3826
+ # Corresponds to the JSON property `time`
3827
+ # @return [String]
3828
+ attr_accessor :time
3829
+
3830
+ # WorkerHealthReport contains information about the health of a worker. The VM
3831
+ # should be identified by the labels attached to the WorkerMessage that this
3832
+ # health ping belongs to.
3833
+ # Corresponds to the JSON property `workerHealthReport`
3834
+ # @return [Google::Apis::DataflowV1b3::WorkerHealthReport]
3835
+ attr_accessor :worker_health_report
3836
+
3837
+ # A message code is used to report status and error messages to the service. The
3838
+ # message codes are intended to be machine readable. The service will take care
3839
+ # of translating these into user understandable messages if necessary. Example
3840
+ # use cases: 1. Worker processes reporting successful startup. 2. Worker
3841
+ # processes reporting specific errors (e.g. package staging failure).
3842
+ # Corresponds to the JSON property `workerMessageCode`
3843
+ # @return [Google::Apis::DataflowV1b3::WorkerMessageCode]
3844
+ attr_accessor :worker_message_code
3845
+
3846
+ def initialize(**args)
3847
+ update!(**args)
3848
+ end
3849
+
3850
+ # Update properties of this object
3851
+ def update!(**args)
3852
+ @labels = args[:labels] if args.key?(:labels)
3853
+ @time = args[:time] if args.key?(:time)
3854
+ @worker_health_report = args[:worker_health_report] if args.key?(:worker_health_report)
3855
+ @worker_message_code = args[:worker_message_code] if args.key?(:worker_message_code)
3856
+ end
3857
+ end
3858
+
3859
+ # WorkerHealthReport contains information about the health of a worker. The VM
3860
+ # should be identified by the labels attached to the WorkerMessage that this
3861
+ # health ping belongs to.
3862
+ class WorkerHealthReport
3863
+ include Google::Apis::Core::Hashable
3864
+
3865
+ # Whether the VM is healthy.
3866
+ # Corresponds to the JSON property `vmIsHealthy`
3867
+ # @return [Boolean]
3868
+ attr_accessor :vm_is_healthy
3869
+ alias_method :vm_is_healthy?, :vm_is_healthy
3870
+
3871
+ # The time the VM was booted.
3872
+ # Corresponds to the JSON property `vmStartupTime`
3873
+ # @return [String]
3874
+ attr_accessor :vm_startup_time
3875
+
3876
+ # The interval at which the worker is sending health reports. The default value
3877
+ # of 0 should be interpreted as the field is not being explicitly set by the
3878
+ # worker.
3879
+ # Corresponds to the JSON property `reportInterval`
3880
+ # @return [String]
3881
+ attr_accessor :report_interval
3882
+
3883
+ # The pods running on the worker. See: http://kubernetes.io/v1.1/docs/api-
3884
+ # reference/v1/definitions.html#_v1_pod This field is used by the worker to send
3885
+ # the status of the indvidual containers running on each worker.
3886
+ # Corresponds to the JSON property `pods`
3887
+ # @return [Array<Hash<String,Object>>]
3888
+ attr_accessor :pods
3889
+
3890
+ def initialize(**args)
3891
+ update!(**args)
3892
+ end
3893
+
3894
+ # Update properties of this object
3895
+ def update!(**args)
3896
+ @vm_is_healthy = args[:vm_is_healthy] if args.key?(:vm_is_healthy)
3897
+ @vm_startup_time = args[:vm_startup_time] if args.key?(:vm_startup_time)
3898
+ @report_interval = args[:report_interval] if args.key?(:report_interval)
3899
+ @pods = args[:pods] if args.key?(:pods)
3900
+ end
3901
+ end
3902
+
3903
+ # A message code is used to report status and error messages to the service. The
3904
+ # message codes are intended to be machine readable. The service will take care
3905
+ # of translating these into user understandable messages if necessary. Example
3906
+ # use cases: 1. Worker processes reporting successful startup. 2. Worker
3907
+ # processes reporting specific errors (e.g. package staging failure).
3908
+ class WorkerMessageCode
3909
+ include Google::Apis::Core::Hashable
3910
+
3911
+ # The code is a string intended for consumption by a machine that identifies the
3912
+ # type of message being sent. Examples: 1. "HARNESS_STARTED" might be used to
3913
+ # indicate the worker harness has started. 2. "GCS_DOWNLOAD_ERROR" might be used
3914
+ # to indicate an error downloading a GCS file as part of the boot process of one
3915
+ # of the worker containers. This is a string and not an enum to make it easy to
3916
+ # add new codes without waiting for an API change.
3917
+ # Corresponds to the JSON property `code`
3918
+ # @return [String]
3919
+ attr_accessor :code
3920
+
3921
+ # Parameters contains specific information about the code. This is a struct to
3922
+ # allow parameters of different types. Examples: 1. For a "HARNESS_STARTED"
3923
+ # message parameters might provide the name of the worker and additional data
3924
+ # like timing information. 2. For a "GCS_DOWNLOAD_ERROR" parameters might
3925
+ # contain fields listing the GCS objects being downloaded and fields containing
3926
+ # errors. In general complex data structures should be avoided. If a worker
3927
+ # needs to send a specific and complicated data structure then please consider
3928
+ # defining a new proto and adding it to the data oneof in WorkerMessageResponse.
3929
+ # Conventions: Parameters should only be used for information that isn't
3930
+ # typically passed as a label. hostname and other worker identifiers should
3931
+ # almost always be passed as labels since they will be included on most messages.
3932
+ # Corresponds to the JSON property `parameters`
3933
+ # @return [Hash<String,Object>]
3934
+ attr_accessor :parameters
3935
+
3936
+ def initialize(**args)
3937
+ update!(**args)
3938
+ end
3939
+
3940
+ # Update properties of this object
3941
+ def update!(**args)
3942
+ @code = args[:code] if args.key?(:code)
3943
+ @parameters = args[:parameters] if args.key?(:parameters)
3944
+ end
3945
+ end
3946
+
3947
+ # The response to the worker messages.
3948
+ class SendWorkerMessagesResponse
3949
+ include Google::Apis::Core::Hashable
3950
+
3951
+ # The servers response to the worker messages.
3952
+ # Corresponds to the JSON property `workerMessageResponses`
3953
+ # @return [Array<Google::Apis::DataflowV1b3::WorkerMessageResponse>]
3954
+ attr_accessor :worker_message_responses
3955
+
3956
+ def initialize(**args)
3957
+ update!(**args)
3958
+ end
3959
+
3960
+ # Update properties of this object
3961
+ def update!(**args)
3962
+ @worker_message_responses = args[:worker_message_responses] if args.key?(:worker_message_responses)
3963
+ end
3964
+ end
3965
+
3966
+ # A worker_message response allows the server to pass information to the sender.
3967
+ class WorkerMessageResponse
3968
+ include Google::Apis::Core::Hashable
3969
+
3970
+ # WorkerHealthReportResponse contains information returned to the worker in
3971
+ # response to a health ping.
3972
+ # Corresponds to the JSON property `workerHealthReportResponse`
3973
+ # @return [Google::Apis::DataflowV1b3::WorkerHealthReportResponse]
3974
+ attr_accessor :worker_health_report_response
3975
+
3976
+ def initialize(**args)
3977
+ update!(**args)
3978
+ end
3979
+
3980
+ # Update properties of this object
3981
+ def update!(**args)
3982
+ @worker_health_report_response = args[:worker_health_report_response] if args.key?(:worker_health_report_response)
3983
+ end
3984
+ end
3985
+
3986
+ # WorkerHealthReportResponse contains information returned to the worker in
3987
+ # response to a health ping.
3988
+ class WorkerHealthReportResponse
3989
+ include Google::Apis::Core::Hashable
3990
+
3991
+ # A positive value indicates the worker should change its reporting interval to
3992
+ # the specified value. The default value of zero means no change in report rate
3993
+ # is requested by the server.
3994
+ # Corresponds to the JSON property `reportInterval`
3995
+ # @return [String]
3996
+ attr_accessor :report_interval
3997
+
3998
+ def initialize(**args)
3999
+ update!(**args)
4000
+ end
4001
+
4002
+ # Update properties of this object
4003
+ def update!(**args)
4004
+ @report_interval = args[:report_interval] if args.key?(:report_interval)
4005
+ end
4006
+ end
4007
+ end
4008
+ end
4009
+ end