google-cloud-dataproc-v1beta2 0.2.4 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +64 -0
  3. data/lib/google/cloud/dataproc/v1beta2.rb +3 -0
  4. data/lib/google/cloud/dataproc/v1beta2/autoscaling_policies_services_pb.rb +5 -5
  5. data/lib/google/cloud/dataproc/v1beta2/autoscaling_policy_service/client.rb +9 -3
  6. data/lib/google/cloud/dataproc/v1beta2/cluster_controller.rb +1 -0
  7. data/lib/google/cloud/dataproc/v1beta2/cluster_controller/client.rb +26 -15
  8. data/lib/google/cloud/dataproc/v1beta2/cluster_controller/operations.rb +90 -5
  9. data/lib/google/cloud/dataproc/v1beta2/cluster_controller/paths.rb +52 -0
  10. data/lib/google/cloud/dataproc/v1beta2/clusters_pb.rb +8 -0
  11. data/lib/google/cloud/dataproc/v1beta2/clusters_services_pb.rb +6 -6
  12. data/lib/google/cloud/dataproc/v1beta2/job_controller/client.rb +9 -3
  13. data/lib/google/cloud/dataproc/v1beta2/job_controller/operations.rb +90 -5
  14. data/lib/google/cloud/dataproc/v1beta2/jobs_services_pb.rb +7 -7
  15. data/lib/google/cloud/dataproc/v1beta2/shared_pb.rb +1 -2
  16. data/lib/google/cloud/dataproc/v1beta2/version.rb +1 -1
  17. data/lib/google/cloud/dataproc/v1beta2/workflow_template_service/client.rb +11 -4
  18. data/lib/google/cloud/dataproc/v1beta2/workflow_template_service/operations.rb +90 -5
  19. data/lib/google/cloud/dataproc/v1beta2/workflow_template_service/paths.rb +19 -0
  20. data/lib/google/cloud/dataproc/v1beta2/workflow_templates_pb.rb +5 -0
  21. data/lib/google/cloud/dataproc/v1beta2/workflow_templates_services_pb.rb +9 -8
  22. data/proto_docs/google/api/field_behavior.rb +6 -0
  23. data/proto_docs/google/api/resource.rb +50 -14
  24. data/proto_docs/google/cloud/dataproc/v1beta2/autoscaling_policies.rb +13 -7
  25. data/proto_docs/google/cloud/dataproc/v1beta2/clusters.rb +64 -21
  26. data/proto_docs/google/cloud/dataproc/v1beta2/jobs.rb +14 -13
  27. data/proto_docs/google/cloud/dataproc/v1beta2/shared.rb +3 -6
  28. data/proto_docs/google/cloud/dataproc/v1beta2/workflow_templates.rb +42 -8
  29. data/proto_docs/google/longrunning/operations.rb +17 -3
  30. data/proto_docs/google/protobuf/any.rb +5 -2
  31. data/proto_docs/google/protobuf/timestamp.rb +10 -1
  32. metadata +8 -4
@@ -37,19 +37,19 @@ module Google
37
37
  # Creates a cluster in a project. The returned
38
38
  # [Operation.metadata][google.longrunning.Operation.metadata] will be
39
39
  # [ClusterOperationMetadata](https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#clusteroperationmetadata).
40
- rpc :CreateCluster, Google::Cloud::Dataproc::V1beta2::CreateClusterRequest, Google::Longrunning::Operation
40
+ rpc :CreateCluster, ::Google::Cloud::Dataproc::V1beta2::CreateClusterRequest, ::Google::Longrunning::Operation
41
41
  # Updates a cluster in a project. The returned
42
42
  # [Operation.metadata][google.longrunning.Operation.metadata] will be
43
43
  # [ClusterOperationMetadata](https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#clusteroperationmetadata).
44
- rpc :UpdateCluster, Google::Cloud::Dataproc::V1beta2::UpdateClusterRequest, Google::Longrunning::Operation
44
+ rpc :UpdateCluster, ::Google::Cloud::Dataproc::V1beta2::UpdateClusterRequest, ::Google::Longrunning::Operation
45
45
  # Deletes a cluster in a project. The returned
46
46
  # [Operation.metadata][google.longrunning.Operation.metadata] will be
47
47
  # [ClusterOperationMetadata](https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#clusteroperationmetadata).
48
- rpc :DeleteCluster, Google::Cloud::Dataproc::V1beta2::DeleteClusterRequest, Google::Longrunning::Operation
48
+ rpc :DeleteCluster, ::Google::Cloud::Dataproc::V1beta2::DeleteClusterRequest, ::Google::Longrunning::Operation
49
49
  # Gets the resource representation for a cluster in a project.
50
- rpc :GetCluster, Google::Cloud::Dataproc::V1beta2::GetClusterRequest, Google::Cloud::Dataproc::V1beta2::Cluster
50
+ rpc :GetCluster, ::Google::Cloud::Dataproc::V1beta2::GetClusterRequest, ::Google::Cloud::Dataproc::V1beta2::Cluster
51
51
  # Lists all regions/{region}/clusters in a project alphabetically.
52
- rpc :ListClusters, Google::Cloud::Dataproc::V1beta2::ListClustersRequest, Google::Cloud::Dataproc::V1beta2::ListClustersResponse
52
+ rpc :ListClusters, ::Google::Cloud::Dataproc::V1beta2::ListClustersRequest, ::Google::Cloud::Dataproc::V1beta2::ListClustersResponse
53
53
  # Gets cluster diagnostic information. The returned
54
54
  # [Operation.metadata][google.longrunning.Operation.metadata] will be
55
55
  # [ClusterOperationMetadata](https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#clusteroperationmetadata).
@@ -57,7 +57,7 @@ module Google
57
57
  # [Operation.response][google.longrunning.Operation.response]
58
58
  # contains
59
59
  # [Empty][google.protobuf.Empty].
60
- rpc :DiagnoseCluster, Google::Cloud::Dataproc::V1beta2::DiagnoseClusterRequest, Google::Longrunning::Operation
60
+ rpc :DiagnoseCluster, ::Google::Cloud::Dataproc::V1beta2::DiagnoseClusterRequest, ::Google::Longrunning::Operation
61
61
  end
62
62
 
63
63
  Stub = Service.rpc_stub_class
@@ -180,7 +180,13 @@ module Google
180
180
 
181
181
  # Create credentials
182
182
  credentials = @config.credentials
183
- credentials ||= Credentials.default scope: @config.scope
183
+ # Use self-signed JWT if the scope and endpoint are unchanged from default,
184
+ # but only if the default endpoint does not have a region prefix.
185
+ enable_self_signed_jwt = @config.scope == Client.configure.scope &&
186
+ @config.endpoint == Client.configure.endpoint &&
187
+ !@config.endpoint.split(".").first.include?("-")
188
+ credentials ||= Credentials.default scope: @config.scope,
189
+ enable_self_signed_jwt: enable_self_signed_jwt
184
190
  if credentials.is_a?(String) || credentials.is_a?(Hash)
185
191
  credentials = Credentials.new credentials, scope: @config.scope
186
192
  end
@@ -869,7 +875,7 @@ module Google
869
875
 
870
876
  config_attr :endpoint, "dataproc.googleapis.com", ::String
871
877
  config_attr :credentials, nil do |value|
872
- allowed = [::String, ::Hash, ::Proc, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
878
+ allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
873
879
  allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
874
880
  allowed.any? { |klass| klass === value }
875
881
  end
@@ -909,7 +915,7 @@ module Google
909
915
  # Each configuration object is of type `Gapic::Config::Method` and includes
910
916
  # the following configuration fields:
911
917
  #
912
- # * `timeout` (*type:* `Numeric`) - The call timeout in milliseconds
918
+ # * `timeout` (*type:* `Numeric`) - The call timeout in seconds
913
919
  # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional gRPC headers
914
920
  # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields
915
921
  # include the following keys:
@@ -103,8 +103,13 @@ module Google
103
103
  # Lists operations that match the specified filter in the request. If the
104
104
  # server doesn't support this method, it returns `UNIMPLEMENTED`.
105
105
  #
106
- # NOTE: the `name` binding below allows API services to override the binding
107
- # to use different resource name schemes, such as `users/*/operations`.
106
+ # NOTE: the `name` binding allows API services to override the binding
107
+ # to use different resource name schemes, such as `users/*/operations`. To
108
+ # override the binding, API services can add a binding such as
109
+ # `"/v1/{name=users/*}/operations"` to their service configuration.
110
+ # For backwards compatibility, the default name includes the operations
111
+ # collection id, however overriding users must ensure the name binding
112
+ # is the parent resource, without the operations collection id.
108
113
  #
109
114
  # @overload list_operations(request, options = nil)
110
115
  # Pass arguments to `list_operations` via a request object, either of type
@@ -122,7 +127,7 @@ module Google
122
127
  # the default parameter values, pass an empty Hash as a request object (see above).
123
128
  #
124
129
  # @param name [::String]
125
- # The name of the operation collection.
130
+ # The name of the operation's parent resource.
126
131
  # @param filter [::String]
127
132
  # The standard list filter.
128
133
  # @param page_size [::Integer]
@@ -390,6 +395,79 @@ module Google
390
395
  raise ::Google::Cloud::Error.from_error(e)
391
396
  end
392
397
 
398
+ ##
399
+ # Waits for the specified long-running operation until it is done or reaches
400
+ # at most a specified timeout, returning the latest state. If the operation
401
+ # is already done, the latest state is immediately returned. If the timeout
402
+ # specified is greater than the default HTTP/RPC timeout, the HTTP/RPC
403
+ # timeout is used. If the server does not support this method, it returns
404
+ # `google.rpc.Code.UNIMPLEMENTED`.
405
+ # Note that this method is on a best-effort basis. It may return the latest
406
+ # state before the specified timeout (including immediately), meaning even an
407
+ # immediate response is no guarantee that the operation is done.
408
+ #
409
+ # @overload wait_operation(request, options = nil)
410
+ # Pass arguments to `wait_operation` via a request object, either of type
411
+ # {::Google::Longrunning::WaitOperationRequest} or an equivalent Hash.
412
+ #
413
+ # @param request [::Google::Longrunning::WaitOperationRequest, ::Hash]
414
+ # A request object representing the call parameters. Required. To specify no
415
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
416
+ # @param options [::Gapic::CallOptions, ::Hash]
417
+ # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
418
+ #
419
+ # @overload wait_operation(name: nil, timeout: nil)
420
+ # Pass arguments to `wait_operation` via keyword arguments. Note that at
421
+ # least one keyword argument is required. To specify no parameters, or to keep all
422
+ # the default parameter values, pass an empty Hash as a request object (see above).
423
+ #
424
+ # @param name [::String]
425
+ # The name of the operation resource to wait on.
426
+ # @param timeout [::Google::Protobuf::Duration, ::Hash]
427
+ # The maximum duration to wait before timing out. If left blank, the wait
428
+ # will be at most the time permitted by the underlying HTTP/RPC protocol.
429
+ # If RPC context deadline is also specified, the shorter one will be used.
430
+ #
431
+ # @yield [response, operation] Access the result along with the RPC operation
432
+ # @yieldparam response [::Gapic::Operation]
433
+ # @yieldparam operation [::GRPC::ActiveCall::Operation]
434
+ #
435
+ # @return [::Gapic::Operation]
436
+ #
437
+ # @raise [::Google::Cloud::Error] if the RPC is aborted.
438
+ #
439
+ def wait_operation request, options = nil
440
+ raise ::ArgumentError, "request must be provided" if request.nil?
441
+
442
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::WaitOperationRequest
443
+
444
+ # Converts hash and nil to an options object
445
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
446
+
447
+ # Customize the options with defaults
448
+ metadata = @config.rpcs.wait_operation.metadata.to_h
449
+
450
+ # Set x-goog-api-client and x-goog-user-project headers
451
+ metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
452
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
453
+ gapic_version: ::Google::Cloud::Dataproc::V1beta2::VERSION
454
+ metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
455
+
456
+ options.apply_defaults timeout: @config.rpcs.wait_operation.timeout,
457
+ metadata: metadata,
458
+ retry_policy: @config.rpcs.wait_operation.retry_policy
459
+ options.apply_defaults metadata: @config.metadata,
460
+ retry_policy: @config.retry_policy
461
+
462
+ @operations_stub.call_rpc :wait_operation, request, options: options do |response, operation|
463
+ response = ::Gapic::Operation.new response, @operations_client, options: options
464
+ yield response, operation if block_given?
465
+ return response
466
+ end
467
+ rescue ::GRPC::BadStatus => e
468
+ raise ::Google::Cloud::Error.from_error(e)
469
+ end
470
+
393
471
  ##
394
472
  # Configuration class for the Operations API.
395
473
  #
@@ -475,7 +553,7 @@ module Google
475
553
 
476
554
  config_attr :endpoint, "dataproc.googleapis.com", ::String
477
555
  config_attr :credentials, nil do |value|
478
- allowed = [::String, ::Hash, ::Proc, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
556
+ allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
479
557
  allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
480
558
  allowed.any? { |klass| klass === value }
481
559
  end
@@ -515,7 +593,7 @@ module Google
515
593
  # Each configuration object is of type `Gapic::Config::Method` and includes
516
594
  # the following configuration fields:
517
595
  #
518
- # * `timeout` (*type:* `Numeric`) - The call timeout in milliseconds
596
+ # * `timeout` (*type:* `Numeric`) - The call timeout in seconds
519
597
  # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional gRPC headers
520
598
  # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields
521
599
  # include the following keys:
@@ -546,6 +624,11 @@ module Google
546
624
  # @return [::Gapic::Config::Method]
547
625
  #
548
626
  attr_reader :cancel_operation
627
+ ##
628
+ # RPC-specific configuration for `wait_operation`
629
+ # @return [::Gapic::Config::Method]
630
+ #
631
+ attr_reader :wait_operation
549
632
 
550
633
  # @private
551
634
  def initialize parent_rpcs = nil
@@ -557,6 +640,8 @@ module Google
557
640
  @delete_operation = ::Gapic::Config::Method.new delete_operation_config
558
641
  cancel_operation_config = parent_rpcs&.cancel_operation if parent_rpcs&.respond_to? :cancel_operation
559
642
  @cancel_operation = ::Gapic::Config::Method.new cancel_operation_config
643
+ wait_operation_config = parent_rpcs&.wait_operation if parent_rpcs&.respond_to? :wait_operation
644
+ @wait_operation = ::Gapic::Config::Method.new wait_operation_config
560
645
 
561
646
  yield self if block_given?
562
647
  end
@@ -34,24 +34,24 @@ module Google
34
34
  self.service_name = 'google.cloud.dataproc.v1beta2.JobController'
35
35
 
36
36
  # Submits a job to a cluster.
37
- rpc :SubmitJob, Google::Cloud::Dataproc::V1beta2::SubmitJobRequest, Google::Cloud::Dataproc::V1beta2::Job
37
+ rpc :SubmitJob, ::Google::Cloud::Dataproc::V1beta2::SubmitJobRequest, ::Google::Cloud::Dataproc::V1beta2::Job
38
38
  # Submits job to a cluster.
39
- rpc :SubmitJobAsOperation, Google::Cloud::Dataproc::V1beta2::SubmitJobRequest, Google::Longrunning::Operation
39
+ rpc :SubmitJobAsOperation, ::Google::Cloud::Dataproc::V1beta2::SubmitJobRequest, ::Google::Longrunning::Operation
40
40
  # Gets the resource representation for a job in a project.
41
- rpc :GetJob, Google::Cloud::Dataproc::V1beta2::GetJobRequest, Google::Cloud::Dataproc::V1beta2::Job
41
+ rpc :GetJob, ::Google::Cloud::Dataproc::V1beta2::GetJobRequest, ::Google::Cloud::Dataproc::V1beta2::Job
42
42
  # Lists regions/{region}/jobs in a project.
43
- rpc :ListJobs, Google::Cloud::Dataproc::V1beta2::ListJobsRequest, Google::Cloud::Dataproc::V1beta2::ListJobsResponse
43
+ rpc :ListJobs, ::Google::Cloud::Dataproc::V1beta2::ListJobsRequest, ::Google::Cloud::Dataproc::V1beta2::ListJobsResponse
44
44
  # Updates a job in a project.
45
- rpc :UpdateJob, Google::Cloud::Dataproc::V1beta2::UpdateJobRequest, Google::Cloud::Dataproc::V1beta2::Job
45
+ rpc :UpdateJob, ::Google::Cloud::Dataproc::V1beta2::UpdateJobRequest, ::Google::Cloud::Dataproc::V1beta2::Job
46
46
  # Starts a job cancellation request. To access the job resource
47
47
  # after cancellation, call
48
48
  # [regions/{region}/jobs.list](https://cloud.google.com/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/list)
49
49
  # or
50
50
  # [regions/{region}/jobs.get](https://cloud.google.com/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/get).
51
- rpc :CancelJob, Google::Cloud::Dataproc::V1beta2::CancelJobRequest, Google::Cloud::Dataproc::V1beta2::Job
51
+ rpc :CancelJob, ::Google::Cloud::Dataproc::V1beta2::CancelJobRequest, ::Google::Cloud::Dataproc::V1beta2::Job
52
52
  # Deletes the job from the project. If the job is active, the delete fails,
53
53
  # and the response returns `FAILED_PRECONDITION`.
54
- rpc :DeleteJob, Google::Cloud::Dataproc::V1beta2::DeleteJobRequest, Google::Protobuf::Empty
54
+ rpc :DeleteJob, ::Google::Cloud::Dataproc::V1beta2::DeleteJobRequest, ::Google::Protobuf::Empty
55
55
  end
56
56
 
57
57
  Stub = Service.rpc_stub_class
@@ -9,9 +9,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
9
9
  add_enum "google.cloud.dataproc.v1beta2.Component" do
10
10
  value :COMPONENT_UNSPECIFIED, 0
11
11
  value :ANACONDA, 5
12
- value :DOCKER, 13
13
12
  value :DRUID, 9
14
- value :FLINK, 14
13
+ value :HBASE, 11
15
14
  value :HIVE_WEBHCAT, 3
16
15
  value :JUPYTER, 1
17
16
  value :KERBEROS, 7
@@ -21,7 +21,7 @@ module Google
21
21
  module Cloud
22
22
  module Dataproc
23
23
  module V1beta2
24
- VERSION = "0.2.4"
24
+ VERSION = "0.5.0"
25
25
  end
26
26
  end
27
27
  end
@@ -183,7 +183,13 @@ module Google
183
183
 
184
184
  # Create credentials
185
185
  credentials = @config.credentials
186
- credentials ||= Credentials.default scope: @config.scope
186
+ # Use self-signed JWT if the scope and endpoint are unchanged from default,
187
+ # but only if the default endpoint does not have a region prefix.
188
+ enable_self_signed_jwt = @config.scope == Client.configure.scope &&
189
+ @config.endpoint == Client.configure.endpoint &&
190
+ !@config.endpoint.split(".").first.include?("-")
191
+ credentials ||= Credentials.default scope: @config.scope,
192
+ enable_self_signed_jwt: enable_self_signed_jwt
187
193
  if credentials.is_a?(String) || credentials.is_a?(Hash)
188
194
  credentials = Credentials.new credentials, scope: @config.scope
189
195
  end
@@ -494,7 +500,8 @@ module Google
494
500
  # Instantiates a template and begins execution.
495
501
  #
496
502
  # This method is equivalent to executing the sequence
497
- # {::Google::Cloud::Dataproc::V1beta2::WorkflowTemplateService::Client#create_workflow_template CreateWorkflowTemplate}, {::Google::Cloud::Dataproc::V1beta2::WorkflowTemplateService::Client#instantiate_workflow_template InstantiateWorkflowTemplate},
503
+ # {::Google::Cloud::Dataproc::V1beta2::WorkflowTemplateService::Client#create_workflow_template CreateWorkflowTemplate},
504
+ # {::Google::Cloud::Dataproc::V1beta2::WorkflowTemplateService::Client#instantiate_workflow_template InstantiateWorkflowTemplate},
498
505
  # {::Google::Cloud::Dataproc::V1beta2::WorkflowTemplateService::Client#delete_workflow_template DeleteWorkflowTemplate}.
499
506
  #
500
507
  # The returned Operation can be used to track execution of
@@ -917,7 +924,7 @@ module Google
917
924
 
918
925
  config_attr :endpoint, "dataproc.googleapis.com", ::String
919
926
  config_attr :credentials, nil do |value|
920
- allowed = [::String, ::Hash, ::Proc, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
927
+ allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
921
928
  allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
922
929
  allowed.any? { |klass| klass === value }
923
930
  end
@@ -957,7 +964,7 @@ module Google
957
964
  # Each configuration object is of type `Gapic::Config::Method` and includes
958
965
  # the following configuration fields:
959
966
  #
960
- # * `timeout` (*type:* `Numeric`) - The call timeout in milliseconds
967
+ # * `timeout` (*type:* `Numeric`) - The call timeout in seconds
961
968
  # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional gRPC headers
962
969
  # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields
963
970
  # include the following keys:
@@ -103,8 +103,13 @@ module Google
103
103
  # Lists operations that match the specified filter in the request. If the
104
104
  # server doesn't support this method, it returns `UNIMPLEMENTED`.
105
105
  #
106
- # NOTE: the `name` binding below allows API services to override the binding
107
- # to use different resource name schemes, such as `users/*/operations`.
106
+ # NOTE: the `name` binding allows API services to override the binding
107
+ # to use different resource name schemes, such as `users/*/operations`. To
108
+ # override the binding, API services can add a binding such as
109
+ # `"/v1/{name=users/*}/operations"` to their service configuration.
110
+ # For backwards compatibility, the default name includes the operations
111
+ # collection id, however overriding users must ensure the name binding
112
+ # is the parent resource, without the operations collection id.
108
113
  #
109
114
  # @overload list_operations(request, options = nil)
110
115
  # Pass arguments to `list_operations` via a request object, either of type
@@ -122,7 +127,7 @@ module Google
122
127
  # the default parameter values, pass an empty Hash as a request object (see above).
123
128
  #
124
129
  # @param name [::String]
125
- # The name of the operation collection.
130
+ # The name of the operation's parent resource.
126
131
  # @param filter [::String]
127
132
  # The standard list filter.
128
133
  # @param page_size [::Integer]
@@ -390,6 +395,79 @@ module Google
390
395
  raise ::Google::Cloud::Error.from_error(e)
391
396
  end
392
397
 
398
+ ##
399
+ # Waits for the specified long-running operation until it is done or reaches
400
+ # at most a specified timeout, returning the latest state. If the operation
401
+ # is already done, the latest state is immediately returned. If the timeout
402
+ # specified is greater than the default HTTP/RPC timeout, the HTTP/RPC
403
+ # timeout is used. If the server does not support this method, it returns
404
+ # `google.rpc.Code.UNIMPLEMENTED`.
405
+ # Note that this method is on a best-effort basis. It may return the latest
406
+ # state before the specified timeout (including immediately), meaning even an
407
+ # immediate response is no guarantee that the operation is done.
408
+ #
409
+ # @overload wait_operation(request, options = nil)
410
+ # Pass arguments to `wait_operation` via a request object, either of type
411
+ # {::Google::Longrunning::WaitOperationRequest} or an equivalent Hash.
412
+ #
413
+ # @param request [::Google::Longrunning::WaitOperationRequest, ::Hash]
414
+ # A request object representing the call parameters. Required. To specify no
415
+ # parameters, or to keep all the default parameter values, pass an empty Hash.
416
+ # @param options [::Gapic::CallOptions, ::Hash]
417
+ # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
418
+ #
419
+ # @overload wait_operation(name: nil, timeout: nil)
420
+ # Pass arguments to `wait_operation` via keyword arguments. Note that at
421
+ # least one keyword argument is required. To specify no parameters, or to keep all
422
+ # the default parameter values, pass an empty Hash as a request object (see above).
423
+ #
424
+ # @param name [::String]
425
+ # The name of the operation resource to wait on.
426
+ # @param timeout [::Google::Protobuf::Duration, ::Hash]
427
+ # The maximum duration to wait before timing out. If left blank, the wait
428
+ # will be at most the time permitted by the underlying HTTP/RPC protocol.
429
+ # If RPC context deadline is also specified, the shorter one will be used.
430
+ #
431
+ # @yield [response, operation] Access the result along with the RPC operation
432
+ # @yieldparam response [::Gapic::Operation]
433
+ # @yieldparam operation [::GRPC::ActiveCall::Operation]
434
+ #
435
+ # @return [::Gapic::Operation]
436
+ #
437
+ # @raise [::Google::Cloud::Error] if the RPC is aborted.
438
+ #
439
+ def wait_operation request, options = nil
440
+ raise ::ArgumentError, "request must be provided" if request.nil?
441
+
442
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::WaitOperationRequest
443
+
444
+ # Converts hash and nil to an options object
445
+ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
446
+
447
+ # Customize the options with defaults
448
+ metadata = @config.rpcs.wait_operation.metadata.to_h
449
+
450
+ # Set x-goog-api-client and x-goog-user-project headers
451
+ metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
452
+ lib_name: @config.lib_name, lib_version: @config.lib_version,
453
+ gapic_version: ::Google::Cloud::Dataproc::V1beta2::VERSION
454
+ metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
455
+
456
+ options.apply_defaults timeout: @config.rpcs.wait_operation.timeout,
457
+ metadata: metadata,
458
+ retry_policy: @config.rpcs.wait_operation.retry_policy
459
+ options.apply_defaults metadata: @config.metadata,
460
+ retry_policy: @config.retry_policy
461
+
462
+ @operations_stub.call_rpc :wait_operation, request, options: options do |response, operation|
463
+ response = ::Gapic::Operation.new response, @operations_client, options: options
464
+ yield response, operation if block_given?
465
+ return response
466
+ end
467
+ rescue ::GRPC::BadStatus => e
468
+ raise ::Google::Cloud::Error.from_error(e)
469
+ end
470
+
393
471
  ##
394
472
  # Configuration class for the Operations API.
395
473
  #
@@ -475,7 +553,7 @@ module Google
475
553
 
476
554
  config_attr :endpoint, "dataproc.googleapis.com", ::String
477
555
  config_attr :credentials, nil do |value|
478
- allowed = [::String, ::Hash, ::Proc, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
556
+ allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
479
557
  allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
480
558
  allowed.any? { |klass| klass === value }
481
559
  end
@@ -515,7 +593,7 @@ module Google
515
593
  # Each configuration object is of type `Gapic::Config::Method` and includes
516
594
  # the following configuration fields:
517
595
  #
518
- # * `timeout` (*type:* `Numeric`) - The call timeout in milliseconds
596
+ # * `timeout` (*type:* `Numeric`) - The call timeout in seconds
519
597
  # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional gRPC headers
520
598
  # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields
521
599
  # include the following keys:
@@ -546,6 +624,11 @@ module Google
546
624
  # @return [::Gapic::Config::Method]
547
625
  #
548
626
  attr_reader :cancel_operation
627
+ ##
628
+ # RPC-specific configuration for `wait_operation`
629
+ # @return [::Gapic::Config::Method]
630
+ #
631
+ attr_reader :wait_operation
549
632
 
550
633
  # @private
551
634
  def initialize parent_rpcs = nil
@@ -557,6 +640,8 @@ module Google
557
640
  @delete_operation = ::Gapic::Config::Method.new delete_operation_config
558
641
  cancel_operation_config = parent_rpcs&.cancel_operation if parent_rpcs&.respond_to? :cancel_operation
559
642
  @cancel_operation = ::Gapic::Config::Method.new cancel_operation_config
643
+ wait_operation_config = parent_rpcs&.wait_operation if parent_rpcs&.respond_to? :wait_operation
644
+ @wait_operation = ::Gapic::Config::Method.new wait_operation_config
560
645
 
561
646
  yield self if block_given?
562
647
  end
@@ -24,6 +24,25 @@ module Google
24
24
  module WorkflowTemplateService
25
25
  # Path helper methods for the WorkflowTemplateService API.
26
26
  module Paths
27
+ ##
28
+ # Create a fully-qualified Cluster resource string.
29
+ #
30
+ # The resource will be in the following format:
31
+ #
32
+ # `projects/{project}/locations/{location}/clusters/{cluster}`
33
+ #
34
+ # @param project [String]
35
+ # @param location [String]
36
+ # @param cluster [String]
37
+ #
38
+ # @return [::String]
39
+ def cluster_path project:, location:, cluster:
40
+ raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/"
41
+ raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
42
+
43
+ "projects/#{project}/locations/#{location}/clusters/#{cluster}"
44
+ end
45
+
27
46
  ##
28
47
  # Create a fully-qualified Location resource string.
29
48
  #