def test_instantiate_inline_workflow_template(self): # Setup Expected Response expected_response = {} expected_response = empty_pb2.Empty(**expected_response) operation = operations_pb2.Operation( name="operations/test_instantiate_inline_workflow_template", done=True) operation.response.Pack(expected_response) # Mock the API response channel = ChannelStub(responses=[operation]) patch = mock.patch("google.api_core.grpc_helpers.create_channel") with patch as create_channel: create_channel.return_value = channel client = dataproc_v1beta2.WorkflowTemplateServiceClient() # Setup Request parent = client.region_path("[PROJECT]", "[REGION]") template = {} response = client.instantiate_inline_workflow_template( parent, template) result = response.result() assert expected_response == result assert len(channel.requests) == 1 expected_request = workflow_templates_pb2.InstantiateInlineWorkflowTemplateRequest( parent=parent, template=template) actual_request = channel.requests[0][1] assert expected_request == actual_request
def instantiate_inline_workflow_template( self, parent, template, instance_id=None, request_id=None, retry=google.api_core.gapic_v1.method.DEFAULT, timeout=google.api_core.gapic_v1.method.DEFAULT, metadata=None, ): """ Instantiates a template and begins execution. This method is equivalent to executing the sequence ``CreateWorkflowTemplate``, ``InstantiateWorkflowTemplate``, ``DeleteWorkflowTemplate``. The returned Operation can be used to track execution of workflow by polling ``operations.get``. The Operation will complete when entire workflow is finished. The running workflow can be aborted via ``operations.cancel``. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted. The ``Operation.metadata`` will be ``WorkflowMetadata``. On successful completion, ``Operation.response`` will be ``Empty``. Example: >>> from google.cloud import dataproc_v1beta2 >>> >>> client = dataproc_v1beta2.WorkflowTemplateServiceClient() >>> >>> parent = client.region_path('[PROJECT]', '[REGION]') >>> >>> # TODO: Initialize `template`: >>> template = {} >>> >>> response = client.instantiate_inline_workflow_template(parent, template) >>> >>> def callback(operation_future): ... # Handle result. ... result = operation_future.result() >>> >>> response.add_done_callback(callback) >>> >>> # Handle metadata. >>> metadata = response.metadata() Args: parent (str): Required. The "resource name" of the workflow template region, as described in https://cloud.google.com/apis/design/resource\_names of the form ``projects/{project_id}/regions/{region}`` template (Union[dict, ~google.cloud.dataproc_v1beta2.types.WorkflowTemplate]): Required. The workflow template to instantiate. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1beta2.types.WorkflowTemplate` instance_id (str): Deprecated. Please use ``request_id`` field instead. request_id (str): Optional. A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries. It is recommended to always set this value to a `UUID <https://en.wikipedia.org/wiki/Universally_unique_identifier>`__. The tag must contain only letters (a-z, A-Z), numbers (0-9), underscores (\_), and hyphens (-). The maximum length is 40 characters. retry (Optional[google.api_core.retry.Retry]): A retry object used to retry requests. If ``None`` is specified, requests will be retried using a default configuration. timeout (Optional[float]): The amount of time, in seconds, to wait for the request to complete. Note that if ``retry`` is specified, the timeout applies to each individual attempt. metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata that is provided to the method. Returns: A :class:`~google.cloud.dataproc_v1beta2.types._OperationFuture` instance. Raises: google.api_core.exceptions.GoogleAPICallError: If the request failed for any reason. google.api_core.exceptions.RetryError: If the request failed due to a retryable error and retry attempts failed. ValueError: If the parameters are invalid. """ # Wrap the transport method to add retry and timeout logic. if "instantiate_inline_workflow_template" not in self._inner_api_calls: self._inner_api_calls[ "instantiate_inline_workflow_template"] = google.api_core.gapic_v1.method.wrap_method( self.transport.instantiate_inline_workflow_template, default_retry=self. _method_configs["InstantiateInlineWorkflowTemplate"].retry, default_timeout=self._method_configs[ "InstantiateInlineWorkflowTemplate"].timeout, client_info=self._client_info, ) request = workflow_templates_pb2.InstantiateInlineWorkflowTemplateRequest( parent=parent, template=template, instance_id=instance_id, request_id=request_id, ) if metadata is None: metadata = [] metadata = list(metadata) try: routing_header = [("parent", parent)] except AttributeError: pass else: routing_metadata = google.api_core.gapic_v1.routing_header.to_grpc_metadata( routing_header) metadata.append(routing_metadata) operation = self._inner_api_calls[ "instantiate_inline_workflow_template"](request, retry=retry, timeout=timeout, metadata=metadata) return google.api_core.operation.from_gapic( operation, self.transport._operations_client, empty_pb2.Empty, metadata_type=workflow_templates_pb2.WorkflowMetadata, )