class Google::Cloud::ServiceUsage::V1::ServiceUsage::Client

Client for the ServiceUsage service.

Enables services that service consumers want to use on Google Cloud Platform, lists the available or enabled services, or disables services that service consumers no longer use.

See [Service Usage API](cloud.google.com/service-usage/docs/overview)

Attributes

operations_client[R]

Get the associated client for long-running operations.

@return [::Google::Cloud::ServiceUsage::V1::ServiceUsage::Operations]

service_usage_stub[R]

@private

Public Class Methods

configure() { |configure| ... } click to toggle source

Configure the ServiceUsage Client class.

See {::Google::Cloud::ServiceUsage::V1::ServiceUsage::Client::Configuration} for a description of the configuration fields.

@example

# Modify the configuration for all ServiceUsage clients
::Google::Cloud::ServiceUsage::V1::ServiceUsage::Client.configure do |config|
  config.timeout = 10.0
end

@yield [config] Configure the Client client. @yieldparam config [Client::Configuration]

@return [Client::Configuration]

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 58
def self.configure
  @configure ||= begin
    namespace = ["Google", "Cloud", "ServiceUsage", "V1"]
    parent_config = while namespace.any?
                      parent_name = namespace.join "::"
                      parent_const = const_get parent_name
                      break parent_const.configure if parent_const.respond_to? :configure
                      namespace.pop
                    end
    default_config = Client::Configuration.new parent_config

    default_config.timeout = 60.0

    default_config
  end
  yield @configure if block_given?
  @configure
end
new() { |config| ... } click to toggle source

Create a new ServiceUsage client object.

@example

# Create a client using the default configuration
client = ::Google::Cloud::ServiceUsage::V1::ServiceUsage::Client.new

# Create a client using a custom configuration
client = ::Google::Cloud::ServiceUsage::V1::ServiceUsage::Client.new do |config|
  config.timeout = 10.0
end

@yield [config] Configure the ServiceUsage client. @yieldparam config [Client::Configuration]

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 113
def initialize
  # These require statements are intentionally placed here to initialize
  # the gRPC module only when it's required.
  # See https://github.com/googleapis/toolkit/issues/446
  require "gapic/grpc"
  require "google/api/serviceusage/v1/serviceusage_services_pb"

  # Create the configuration object
  @config = Configuration.new Client.configure

  # Yield the configuration if needed
  yield @config if block_given?

  # Create credentials
  credentials = @config.credentials
  # Use self-signed JWT if the endpoint is unchanged from default,
  # but only if the default endpoint does not have a region prefix.
  enable_self_signed_jwt = @config.endpoint == Client.configure.endpoint &&
                           !@config.endpoint.split(".").first.include?("-")
  credentials ||= Credentials.default scope: @config.scope,
                                      enable_self_signed_jwt: enable_self_signed_jwt
  if credentials.is_a?(::String) || credentials.is_a?(::Hash)
    credentials = Credentials.new credentials, scope: @config.scope
  end
  @quota_project_id = @config.quota_project
  @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id

  @operations_client = Operations.new do |config|
    config.credentials = credentials
    config.endpoint = @config.endpoint
  end

  @service_usage_stub = ::Gapic::ServiceStub.new(
    ::Google::Cloud::ServiceUsage::V1::ServiceUsage::Stub,
    credentials:  credentials,
    endpoint:     @config.endpoint,
    channel_args: @config.channel_args,
    interceptors: @config.interceptors
  )
end

Public Instance Methods

batch_enable_services(request, options = nil) { |response, operation| ... } click to toggle source

Enable multiple services on a project. The operation is atomic: if enabling any service fails, then the entire batch fails, and no state changes occur. To enable a single service, use the `EnableService` method instead.

@overload batch_enable_services(request, options = nil)

Pass arguments to `batch_enable_services` via a request object, either of type
{::Google::Cloud::ServiceUsage::V1::BatchEnableServicesRequest} or an equivalent Hash.

@param request [::Google::Cloud::ServiceUsage::V1::BatchEnableServicesRequest, ::Hash]
  A request object representing the call parameters. Required. To specify no
  parameters, or to keep all the default parameter values, pass an empty Hash.
@param options [::Gapic::CallOptions, ::Hash]
  Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.

@overload batch_enable_services(parent: nil, service_ids: nil)

Pass arguments to `batch_enable_services` via keyword arguments. Note that at
least one keyword argument is required. To specify no parameters, or to keep all
the default parameter values, pass an empty Hash as a request object (see above).

@param parent [::String]
  Parent to enable services on.

  An example name would be:
  `projects/123` where `123` is the project number.

  The `BatchEnableServices` method currently only supports projects.
@param service_ids [::Array<::String>]
  The identifiers of the services to enable on the project.

  A valid identifier would be:
  serviceusage.googleapis.com

  Enabling services requires that each service is public or is shared with
  the user enabling the service.

  A single request can enable a maximum of 20 services at a time. If more
  than 20 services are specified, the request will fail, and no state changes
  will occur.

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Gapic::Operation] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Gapic::Operation]

@raise [::Google::Cloud::Error] if the RPC is aborted.

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 545
def batch_enable_services request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::ServiceUsage::V1::BatchEnableServicesRequest

  # Converts hash and nil to an options object
  options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h

  # Customize the options with defaults
  metadata = @config.rpcs.batch_enable_services.metadata.to_h

  # Set x-goog-api-client and x-goog-user-project headers
  metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
    lib_name: @config.lib_name, lib_version: @config.lib_version,
    gapic_version: ::Google::Cloud::ServiceUsage::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "parent" => request.parent
  }
  request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
  metadata[:"x-goog-request-params"] ||= request_params_header

  options.apply_defaults timeout:      @config.rpcs.batch_enable_services.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.batch_enable_services.retry_policy

  options.apply_defaults timeout:      @config.timeout,
                         metadata:     @config.metadata,
                         retry_policy: @config.retry_policy

  @service_usage_stub.call_rpc :batch_enable_services, request, options: options do |response, operation|
    response = ::Gapic::Operation.new response, @operations_client, options: options
    yield response, operation if block_given?
    return response
  end
rescue ::GRPC::BadStatus => e
  raise ::Google::Cloud::Error.from_error(e)
end
batch_get_services(request, options = nil) { |response, operation| ... } click to toggle source

Returns the service configurations and enabled states for a given list of services.

@overload batch_get_services(request, options = nil)

Pass arguments to `batch_get_services` via a request object, either of type
{::Google::Cloud::ServiceUsage::V1::BatchGetServicesRequest} or an equivalent Hash.

@param request [::Google::Cloud::ServiceUsage::V1::BatchGetServicesRequest, ::Hash]
  A request object representing the call parameters. Required. To specify no
  parameters, or to keep all the default parameter values, pass an empty Hash.
@param options [::Gapic::CallOptions, ::Hash]
  Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.

@overload batch_get_services(parent: nil, names: nil)

Pass arguments to `batch_get_services` via keyword arguments. Note that at
least one keyword argument is required. To specify no parameters, or to keep all
the default parameter values, pass an empty Hash as a request object (see above).

@param parent [::String]
  Parent to retrieve services from.
  If this is set, the parent of all of the services specified in `names` must
  match this field. An example name would be: `projects/123` where `123` is
  the project number. The `BatchGetServices` method currently only supports
  projects.
@param names [::Array<::String>]
  Names of the services to retrieve.

  An example name would be:
  `projects/123/services/serviceusage.googleapis.com` where `123` is the
  project number.
  A single request can get a maximum of 30 services at a time.

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Google::Cloud::ServiceUsage::V1::BatchGetServicesResponse] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Google::Cloud::ServiceUsage::V1::BatchGetServicesResponse]

@raise [::Google::Cloud::Error] if the RPC is aborted.

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 626
def batch_get_services request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::ServiceUsage::V1::BatchGetServicesRequest

  # Converts hash and nil to an options object
  options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h

  # Customize the options with defaults
  metadata = @config.rpcs.batch_get_services.metadata.to_h

  # Set x-goog-api-client and x-goog-user-project headers
  metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
    lib_name: @config.lib_name, lib_version: @config.lib_version,
    gapic_version: ::Google::Cloud::ServiceUsage::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "parent" => request.parent
  }
  request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
  metadata[:"x-goog-request-params"] ||= request_params_header

  options.apply_defaults timeout:      @config.rpcs.batch_get_services.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.batch_get_services.retry_policy

  options.apply_defaults timeout:      @config.timeout,
                         metadata:     @config.metadata,
                         retry_policy: @config.retry_policy

  @service_usage_stub.call_rpc :batch_get_services, request, options: options do |response, operation|
    yield response, operation if block_given?
    return response
  end
rescue ::GRPC::BadStatus => e
  raise ::Google::Cloud::Error.from_error(e)
end
configure() { |config| ... } click to toggle source

Configure the ServiceUsage Client instance.

The configuration is set to the derived mode, meaning that values can be changed, but structural changes (adding new fields, etc.) are not allowed. Structural changes should be made on {Client.configure}.

See {::Google::Cloud::ServiceUsage::V1::ServiceUsage::Client::Configuration} for a description of the configuration fields.

@yield [config] Configure the Client client. @yieldparam config [Client::Configuration]

@return [Client::Configuration]

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 92
def configure
  yield @config if block_given?
  @config
end
disable_service(request, options = nil) { |response, operation| ... } click to toggle source

Disable a service so that it can no longer be used with a project. This prevents unintended usage that may cause unexpected billing charges or security leaks.

It is not valid to call the disable method on a service that is not currently enabled. Callers will receive a `FAILED_PRECONDITION` status if the target service is not currently enabled.

@overload disable_service(request, options = nil)

Pass arguments to `disable_service` via a request object, either of type
{::Google::Cloud::ServiceUsage::V1::DisableServiceRequest} or an equivalent Hash.

@param request [::Google::Cloud::ServiceUsage::V1::DisableServiceRequest, ::Hash]
  A request object representing the call parameters. Required. To specify no
  parameters, or to keep all the default parameter values, pass an empty Hash.
@param options [::Gapic::CallOptions, ::Hash]
  Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.

@overload disable_service(name: nil, disable_dependent_services: nil, check_if_service_has_usage: nil)

Pass arguments to `disable_service` via keyword arguments. Note that at
least one keyword argument is required. To specify no parameters, or to keep all
the default parameter values, pass an empty Hash as a request object (see above).

@param name [::String]
  Name of the consumer and service to disable the service on.

  The enable and disable methods currently only support projects.

  An example name would be:
  `projects/123/services/serviceusage.googleapis.com` where `123` is the
  project number.
@param disable_dependent_services [::Boolean]
  Indicates if services that are enabled and which depend on this service
  should also be disabled. If not set, an error will be generated if any
  enabled services depend on the service to be disabled. When set, the
  service, and any enabled services that depend on it, will be disabled
  together.
@param check_if_service_has_usage [::Google::Cloud::ServiceUsage::V1::DisableServiceRequest::CheckIfServiceHasUsage]
  Defines the behavior for checking service usage when disabling a service.

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Gapic::Operation] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Gapic::Operation]

@raise [::Google::Cloud::Error] if the RPC is aborted.

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 291
def disable_service request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::ServiceUsage::V1::DisableServiceRequest

  # Converts hash and nil to an options object
  options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h

  # Customize the options with defaults
  metadata = @config.rpcs.disable_service.metadata.to_h

  # Set x-goog-api-client and x-goog-user-project headers
  metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
    lib_name: @config.lib_name, lib_version: @config.lib_version,
    gapic_version: ::Google::Cloud::ServiceUsage::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "name" => request.name
  }
  request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
  metadata[:"x-goog-request-params"] ||= request_params_header

  options.apply_defaults timeout:      @config.rpcs.disable_service.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.disable_service.retry_policy

  options.apply_defaults timeout:      @config.timeout,
                         metadata:     @config.metadata,
                         retry_policy: @config.retry_policy

  @service_usage_stub.call_rpc :disable_service, request, options: options do |response, operation|
    response = ::Gapic::Operation.new response, @operations_client, options: options
    yield response, operation if block_given?
    return response
  end
rescue ::GRPC::BadStatus => e
  raise ::Google::Cloud::Error.from_error(e)
end
enable_service(request, options = nil) { |response, operation| ... } click to toggle source

Enable a service so that it can be used with a project.

@overload enable_service(request, options = nil)

Pass arguments to `enable_service` via a request object, either of type
{::Google::Cloud::ServiceUsage::V1::EnableServiceRequest} or an equivalent Hash.

@param request [::Google::Cloud::ServiceUsage::V1::EnableServiceRequest, ::Hash]
  A request object representing the call parameters. Required. To specify no
  parameters, or to keep all the default parameter values, pass an empty Hash.
@param options [::Gapic::CallOptions, ::Hash]
  Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.

@overload enable_service(name: nil)

Pass arguments to `enable_service` via keyword arguments. Note that at
least one keyword argument is required. To specify no parameters, or to keep all
the default parameter values, pass an empty Hash as a request object (see above).

@param name [::String]
  Name of the consumer and service to enable the service on.

  The `EnableService` and `DisableService` methods currently only support
  projects.

  Enabling a service requires that the service is public or is shared with
  the user enabling the service.

  An example name would be:
  `projects/123/services/serviceusage.googleapis.com` where `123` is the
  project number.

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Gapic::Operation] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Gapic::Operation]

@raise [::Google::Cloud::Error] if the RPC is aborted.

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 202
def enable_service request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::ServiceUsage::V1::EnableServiceRequest

  # Converts hash and nil to an options object
  options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h

  # Customize the options with defaults
  metadata = @config.rpcs.enable_service.metadata.to_h

  # Set x-goog-api-client and x-goog-user-project headers
  metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
    lib_name: @config.lib_name, lib_version: @config.lib_version,
    gapic_version: ::Google::Cloud::ServiceUsage::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "name" => request.name
  }
  request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
  metadata[:"x-goog-request-params"] ||= request_params_header

  options.apply_defaults timeout:      @config.rpcs.enable_service.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.enable_service.retry_policy

  options.apply_defaults timeout:      @config.timeout,
                         metadata:     @config.metadata,
                         retry_policy: @config.retry_policy

  @service_usage_stub.call_rpc :enable_service, request, options: options do |response, operation|
    response = ::Gapic::Operation.new response, @operations_client, options: options
    yield response, operation if block_given?
    return response
  end
rescue ::GRPC::BadStatus => e
  raise ::Google::Cloud::Error.from_error(e)
end
get_service(request, options = nil) { |response, operation| ... } click to toggle source

Returns the service configuration and enabled state for a given service.

@overload get_service(request, options = nil)

Pass arguments to `get_service` via a request object, either of type
{::Google::Cloud::ServiceUsage::V1::GetServiceRequest} or an equivalent Hash.

@param request [::Google::Cloud::ServiceUsage::V1::GetServiceRequest, ::Hash]
  A request object representing the call parameters. Required. To specify no
  parameters, or to keep all the default parameter values, pass an empty Hash.
@param options [::Gapic::CallOptions, ::Hash]
  Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.

@overload get_service(name: nil)

Pass arguments to `get_service` via keyword arguments. Note that at
least one keyword argument is required. To specify no parameters, or to keep all
the default parameter values, pass an empty Hash as a request object (see above).

@param name [::String]
  Name of the consumer and service to get the `ConsumerState` for.

  An example name would be:
  `projects/123/services/serviceusage.googleapis.com` where `123` is the
  project number.

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Google::Cloud::ServiceUsage::V1::Service] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Google::Cloud::ServiceUsage::V1::Service]

@raise [::Google::Cloud::Error] if the RPC is aborted.

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 364
def get_service request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::ServiceUsage::V1::GetServiceRequest

  # Converts hash and nil to an options object
  options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h

  # Customize the options with defaults
  metadata = @config.rpcs.get_service.metadata.to_h

  # Set x-goog-api-client and x-goog-user-project headers
  metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
    lib_name: @config.lib_name, lib_version: @config.lib_version,
    gapic_version: ::Google::Cloud::ServiceUsage::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "name" => request.name
  }
  request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
  metadata[:"x-goog-request-params"] ||= request_params_header

  options.apply_defaults timeout:      @config.rpcs.get_service.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.get_service.retry_policy

  options.apply_defaults timeout:      @config.timeout,
                         metadata:     @config.metadata,
                         retry_policy: @config.retry_policy

  @service_usage_stub.call_rpc :get_service, request, options: options do |response, operation|
    yield response, operation if block_given?
    return response
  end
rescue ::GRPC::BadStatus => e
  raise ::Google::Cloud::Error.from_error(e)
end
list_services(request, options = nil) { |response, operation| ... } click to toggle source

List all services available to the specified project, and the current state of those services with respect to the project. The list includes all public services, all services for which the calling user has the `servicemanagement.services.bind` permission, and all services that have already been enabled on the project. The list can be filtered to only include services in a specific state, for example to only include services enabled on the project.

WARNING: If you need to query enabled services frequently or across an organization, you should use [Cloud Asset Inventory API](cloud.google.com/asset-inventory/docs/apis), which provides higher throughput and richer filtering capability.

@overload list_services(request, options = nil)

Pass arguments to `list_services` via a request object, either of type
{::Google::Cloud::ServiceUsage::V1::ListServicesRequest} or an equivalent Hash.

@param request [::Google::Cloud::ServiceUsage::V1::ListServicesRequest, ::Hash]
  A request object representing the call parameters. Required. To specify no
  parameters, or to keep all the default parameter values, pass an empty Hash.
@param options [::Gapic::CallOptions, ::Hash]
  Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.

@overload list_services(parent: nil, page_size: nil, page_token: nil, filter: nil)

Pass arguments to `list_services` via keyword arguments. Note that at
least one keyword argument is required. To specify no parameters, or to keep all
the default parameter values, pass an empty Hash as a request object (see above).

@param parent [::String]
  Parent to search for services on.

  An example name would be:
  `projects/123` where `123` is the project number.
@param page_size [::Integer]
  Requested size of the next page of data.
  Requested page size cannot exceed 200.
   If not set, the default page size is 50.
@param page_token [::String]
  Token identifying which result to start with, which is returned by a
  previous list call.
@param filter [::String]
  Only list services that conform to the given filter.
  The allowed filter strings are `state:ENABLED` and `state:DISABLED`.

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Gapic::PagedEnumerable<::Google::Cloud::ServiceUsage::V1::Service>] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Gapic::PagedEnumerable<::Google::Cloud::ServiceUsage::V1::Service>]

@raise [::Google::Cloud::Error] if the RPC is aborted.

# File lib/google/cloud/service_usage/v1/service_usage/client.rb, line 457
def list_services request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::ServiceUsage::V1::ListServicesRequest

  # Converts hash and nil to an options object
  options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h

  # Customize the options with defaults
  metadata = @config.rpcs.list_services.metadata.to_h

  # Set x-goog-api-client and x-goog-user-project headers
  metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
    lib_name: @config.lib_name, lib_version: @config.lib_version,
    gapic_version: ::Google::Cloud::ServiceUsage::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "parent" => request.parent
  }
  request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
  metadata[:"x-goog-request-params"] ||= request_params_header

  options.apply_defaults timeout:      @config.rpcs.list_services.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.list_services.retry_policy

  options.apply_defaults timeout:      @config.timeout,
                         metadata:     @config.metadata,
                         retry_policy: @config.retry_policy

  @service_usage_stub.call_rpc :list_services, request, options: options do |response, operation|
    response = ::Gapic::PagedEnumerable.new @service_usage_stub, :list_services, request, response, operation, options
    yield response, operation if block_given?
    return response
  end
rescue ::GRPC::BadStatus => e
  raise ::Google::Cloud::Error.from_error(e)
end