class Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::Client

Client for the DatabaseAdmin service.

Cloud Spanner Database Admin API

The Cloud Spanner Database Admin API can be used to create, drop, and list databases. It also enables updating the schema of pre-existing databases. It can be also used to create, delete and list backups for a database and to restore from an existing backup.

Attributes

database_admin_stub[R]

@private

operations_client[R]

Get the associated client for long-running operations.

@return [::Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::Operations]

Public Class Methods

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

Configure the DatabaseAdmin Client class.

See {::Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::Client::Configuration} for a description of the configuration fields.

@example

# Modify the configuration for all DatabaseAdmin clients
::Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::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/spanner/admin/database/v1/database_admin/client.rb, line 63
def self.configure
  @configure ||= begin
    namespace = ["Google", "Cloud", "Spanner", "Admin", "Database", "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.rpcs.list_databases.timeout = 3600.0
    default_config.rpcs.list_databases.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.create_database.timeout = 3600.0

    default_config.rpcs.get_database.timeout = 3600.0
    default_config.rpcs.get_database.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.update_database_ddl.timeout = 3600.0
    default_config.rpcs.update_database_ddl.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.drop_database.timeout = 3600.0
    default_config.rpcs.drop_database.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.get_database_ddl.timeout = 3600.0
    default_config.rpcs.get_database_ddl.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.set_iam_policy.timeout = 30.0

    default_config.rpcs.get_iam_policy.timeout = 30.0
    default_config.rpcs.get_iam_policy.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.test_iam_permissions.timeout = 30.0

    default_config.rpcs.create_backup.timeout = 3600.0

    default_config.rpcs.get_backup.timeout = 3600.0
    default_config.rpcs.get_backup.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.update_backup.timeout = 3600.0
    default_config.rpcs.update_backup.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.delete_backup.timeout = 3600.0
    default_config.rpcs.delete_backup.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.list_backups.timeout = 3600.0
    default_config.rpcs.list_backups.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.restore_database.timeout = 3600.0

    default_config.rpcs.list_database_operations.timeout = 3600.0
    default_config.rpcs.list_database_operations.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

    default_config.rpcs.list_backup_operations.timeout = 3600.0
    default_config.rpcs.list_backup_operations.retry_policy = {
      initial_delay: 1.0, max_delay: 32.0, multiplier: 1.3, retry_codes: [14, 4]
    }

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

Create a new DatabaseAdmin client object.

@example

# Create a client using the default configuration
client = ::Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::Client.new

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

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 186
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/spanner/admin/database/v1/spanner_database_admin_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

  @database_admin_stub = ::Gapic::ServiceStub.new(
    ::Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::Stub,
    credentials:  credentials,
    endpoint:     @config.endpoint,
    channel_args: @config.channel_args,
    interceptors: @config.interceptors
  )
end

Public Instance Methods

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

Configure the DatabaseAdmin 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::Spanner::Admin::Database::V1::DatabaseAdmin::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/spanner/admin/database/v1/database_admin/client.rb, line 165
def configure
  yield @config if block_given?
  @config
end
create_backup(request, options = nil) { |response, operation| ... } click to toggle source

Starts creating a new Cloud Spanner Backup. The returned backup {::Google::Longrunning::Operation long-running operation} will have a name of the format `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>` and can be used to track creation of the backup. The {::Google::Longrunning::Operation#metadata metadata} field type is {::Google::Cloud::Spanner::Admin::Database::V1::CreateBackupMetadata CreateBackupMetadata}. The {::Google::Longrunning::Operation#response response} field type is {::Google::Cloud::Spanner::Admin::Database::V1::Backup Backup}, if successful. Cancelling the returned operation will stop the creation and delete the backup. There can be only one pending backup creation per database. Backup creation of different databases can run concurrently.

@overload create_backup(request, options = nil)

Pass arguments to `create_backup` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::CreateBackupRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::CreateBackupRequest, ::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 create_backup(parent: nil, backup_id: nil, backup: nil, encryption_config: nil)

Pass arguments to `create_backup` 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]
  Required. The name of the instance in which the backup will be
  created. This must be the same instance that contains the database the
  backup will be created from. The backup will be stored in the
  location(s) specified in the instance configuration of this
  instance. Values are of the form
  `projects/<project>/instances/<instance>`.
@param backup_id [::String]
  Required. The id of the backup to be created. The `backup_id` appended to
  `parent` forms the full backup name of the form
  `projects/<project>/instances/<instance>/backups/<backup_id>`.
@param backup [::Google::Cloud::Spanner::Admin::Database::V1::Backup, ::Hash]
  Required. The backup to create.
@param encryption_config [::Google::Cloud::Spanner::Admin::Database::V1::CreateBackupEncryptionConfig, ::Hash]
  Optional. The encryption configuration used to encrypt the backup. If this field is
  not specified, the backup will use the same
  encryption configuration as the database by default, namely
  {::Google::Cloud::Spanner::Admin::Database::V1::CreateBackupEncryptionConfig#encryption_type encryption_type} =
  `USE_DATABASE_ENCRYPTION`.

@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/spanner/admin/database/v1/database_admin/client.rb, line 1012
def create_backup request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::CreateBackupRequest

  # 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.create_backup.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::Spanner::Admin::Database::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.create_backup.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.create_backup.retry_policy

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

  @database_admin_stub.call_rpc :create_backup, 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
create_database(request, options = nil) { |response, operation| ... } click to toggle source

Creates a new Cloud Spanner database and starts to prepare it for serving. The returned {::Google::Longrunning::Operation long-running operation} will have a name of the format `<database_name>/operations/<operation_id>` and can be used to track preparation of the database. The {::Google::Longrunning::Operation#metadata metadata} field type is {::Google::Cloud::Spanner::Admin::Database::V1::CreateDatabaseMetadata CreateDatabaseMetadata}. The {::Google::Longrunning::Operation#response response} field type is {::Google::Cloud::Spanner::Admin::Database::V1::Database Database}, if successful.

@overload create_database(request, options = nil)

Pass arguments to `create_database` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::CreateDatabaseRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::CreateDatabaseRequest, ::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 create_database(parent: nil, create_statement: nil, extra_statements: nil, encryption_config: nil)

Pass arguments to `create_database` 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]
  Required. The name of the instance that will serve the new database.
  Values are of the form `projects/<project>/instances/<instance>`.
@param create_statement [::String]
  Required. A `CREATE DATABASE` statement, which specifies the ID of the
  new database.  The database ID must conform to the regular expression
  `[a-z][a-z0-9_\-]*[a-z0-9]` and be between 2 and 30 characters in length.
  If the database ID is a reserved word or if it contains a hyphen, the
  database ID must be enclosed in backticks (`` ` ``).
@param extra_statements [::Array<::String>]
  Optional. A list of DDL statements to run inside the newly created
  database. Statements can create tables, indexes, etc. These
  statements execute atomically with the creation of the database:
  if there is an error in any statement, the database is not created.
@param encryption_config [::Google::Cloud::Spanner::Admin::Database::V1::EncryptionConfig, ::Hash]
  Optional. The encryption configuration for the database. If this field is not
  specified, Cloud Spanner will encrypt/decrypt all data at rest using
  Google default encryption.

@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/spanner/admin/database/v1/database_admin/client.rb, line 365
def create_database request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::CreateDatabaseRequest

  # 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.create_database.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::Spanner::Admin::Database::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.create_database.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.create_database.retry_policy

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

  @database_admin_stub.call_rpc :create_database, 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
delete_backup(request, options = nil) { |response, operation| ... } click to toggle source

Deletes a pending or completed {::Google::Cloud::Spanner::Admin::Database::V1::Backup Backup}.

@overload delete_backup(request, options = nil)

Pass arguments to `delete_backup` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::DeleteBackupRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::DeleteBackupRequest, ::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 delete_backup(name: nil)

Pass arguments to `delete_backup` 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]
  Required. Name of the backup to delete.
  Values are of the form
  `projects/<project>/instances/<instance>/backups/<backup>`.

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

@return [::Google::Protobuf::Empty]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 1230
def delete_backup request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::DeleteBackupRequest

  # 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.delete_backup.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::Spanner::Admin::Database::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.delete_backup.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.delete_backup.retry_policy

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

  @database_admin_stub.call_rpc :delete_backup, 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
drop_database(request, options = nil) { |response, operation| ... } click to toggle source

Drops (aka deletes) a Cloud Spanner database. Completed backups for the database will be retained according to their `expire_time`.

@overload drop_database(request, options = nil)

Pass arguments to `drop_database` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::DropDatabaseRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::DropDatabaseRequest, ::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 drop_database(database: nil)

Pass arguments to `drop_database` 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 database [::String]
  Required. The database to be dropped.

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

@return [::Google::Protobuf::Empty]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 602
def drop_database request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::DropDatabaseRequest

  # 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.drop_database.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::Spanner::Admin::Database::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "database" => request.database
  }
  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.drop_database.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.drop_database.retry_policy

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

  @database_admin_stub.call_rpc :drop_database, 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
get_backup(request, options = nil) { |response, operation| ... } click to toggle source

Gets metadata on a pending or completed {::Google::Cloud::Spanner::Admin::Database::V1::Backup Backup}.

@overload get_backup(request, options = nil)

Pass arguments to `get_backup` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::GetBackupRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::GetBackupRequest, ::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_backup(name: nil)

Pass arguments to `get_backup` 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]
  Required. Name of the backup.
  Values are of the form
  `projects/<project>/instances/<instance>/backups/<backup>`.

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Google::Cloud::Spanner::Admin::Database::V1::Backup] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Google::Cloud::Spanner::Admin::Database::V1::Backup]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 1083
def get_backup request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::GetBackupRequest

  # 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_backup.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::Spanner::Admin::Database::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_backup.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.get_backup.retry_policy

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

  @database_admin_stub.call_rpc :get_backup, 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
get_database(request, options = nil) { |response, operation| ... } click to toggle source

Gets the state of a Cloud Spanner database.

@overload get_database(request, options = nil)

Pass arguments to `get_database` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::GetDatabaseRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::GetDatabaseRequest, ::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_database(name: nil)

Pass arguments to `get_database` 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]
  Required. The name of the requested database. Values are of the form
  `projects/<project>/instances/<instance>/databases/<database>`.

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

@return [::Google::Cloud::Spanner::Admin::Database::V1::Database]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 435
def get_database request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::GetDatabaseRequest

  # 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_database.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::Spanner::Admin::Database::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_database.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.get_database.retry_policy

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

  @database_admin_stub.call_rpc :get_database, 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
get_database_ddl(request, options = nil) { |response, operation| ... } click to toggle source

Returns the schema of a Cloud Spanner database as a list of formatted DDL statements. This method does not show pending schema updates, those may be queried using the Operations API.

@overload get_database_ddl(request, options = nil)

Pass arguments to `get_database_ddl` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::GetDatabaseDdlRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::GetDatabaseDdlRequest, ::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_database_ddl(database: nil)

Pass arguments to `get_database_ddl` 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 database [::String]
  Required. The database whose schema we wish to get.
  Values are of the form
  `projects/<project>/instances/<instance>/databases/<database>`

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Google::Cloud::Spanner::Admin::Database::V1::GetDatabaseDdlResponse] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Google::Cloud::Spanner::Admin::Database::V1::GetDatabaseDdlResponse]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 674
def get_database_ddl request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::GetDatabaseDdlRequest

  # 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_database_ddl.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::Spanner::Admin::Database::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "database" => request.database
  }
  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_database_ddl.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.get_database_ddl.retry_policy

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

  @database_admin_stub.call_rpc :get_database_ddl, 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
get_iam_policy(request, options = nil) { |response, operation| ... } click to toggle source

Gets the access control policy for a database or backup resource. Returns an empty policy if a database or backup exists but does not have a policy set.

Authorization requires `spanner.databases.getIamPolicy` permission on {::Google::Iam::V1::GetIamPolicyRequest#resource resource}. For backups, authorization requires `spanner.backups.getIamPolicy` permission on {::Google::Iam::V1::GetIamPolicyRequest#resource resource}.

@overload get_iam_policy(request, options = nil)

Pass arguments to `get_iam_policy` via a request object, either of type
{::Google::Iam::V1::GetIamPolicyRequest} or an equivalent Hash.

@param request [::Google::Iam::V1::GetIamPolicyRequest, ::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_iam_policy(resource: nil, options: nil)

Pass arguments to `get_iam_policy` 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 resource [::String]
  REQUIRED: The resource for which the policy is being requested.
  See the operation documentation for the appropriate value for this field.
@param options [::Google::Iam::V1::GetPolicyOptions, ::Hash]
  OPTIONAL: A `GetPolicyOptions` object for specifying options to
  `GetIamPolicy`. This field is only used by Cloud IAM.

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

@return [::Google::Iam::V1::Policy]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 833
def get_iam_policy request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V1::GetIamPolicyRequest

  # 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_iam_policy.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::Spanner::Admin::Database::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "resource" => request.resource
  }
  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_iam_policy.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.get_iam_policy.retry_policy

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

  @database_admin_stub.call_rpc :get_iam_policy, 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_backup_operations(request, options = nil) { |response, operation| ... } click to toggle source

Lists the backup {::Google::Longrunning::Operation long-running operations} in the given instance. A backup operation has a name of the form `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation>`. The long-running operation {::Google::Longrunning::Operation#metadata metadata} field type `metadata.type_url` describes the type of the metadata. Operations returned include those that have completed/failed/canceled within the last 7 days, and pending operations. Operations returned are ordered by `operation.metadata.value.progress.start_time` in descending order starting from the most recently started operation.

@overload list_backup_operations(request, options = nil)

Pass arguments to `list_backup_operations` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::ListBackupOperationsRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::ListBackupOperationsRequest, ::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_backup_operations(parent: nil, filter: nil, page_size: nil, page_token: nil)

Pass arguments to `list_backup_operations` 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]
  Required. The instance of the backup operations. Values are of
  the form `projects/<project>/instances/<instance>`.
@param filter [::String]
  An expression that filters the list of returned backup operations.

  A filter expression consists of a field name, a
  comparison operator, and a value for filtering.
  The value must be a string, a number, or a boolean. The comparison operator
  must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
  Colon `:` is the contains operator. Filter rules are not case sensitive.

  The following fields in the {::Google::Longrunning::Operation operation}
  are eligible for filtering:

    * `name` - The name of the long-running operation
    * `done` - False if the operation is in progress, else true.
    * `metadata.@type` - the type of metadata. For example, the type string
       for {::Google::Cloud::Spanner::Admin::Database::V1::CreateBackupMetadata CreateBackupMetadata} is
       `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`.
    * `metadata.<field_name>` - any field in metadata.value.
    * `error` - Error associated with the long-running operation.
    * `response.@type` - the type of response.
    * `response.<field_name>` - any field in response.value.

  You can combine multiple expressions by enclosing each expression in
  parentheses. By default, expressions are combined with AND logic, but
  you can specify AND, OR, and NOT logic explicitly.

  Here are a few examples:

    * `done:true` - The operation is complete.
    * `metadata.database:prod` - The database the backup was taken from has
       a name containing the string "prod".
    * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
      `(metadata.name:howl) AND` \
      `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \
      `(error:*)` - Returns operations where:
      * The operation's metadata type is {::Google::Cloud::Spanner::Admin::Database::V1::CreateBackupMetadata CreateBackupMetadata}.
      * The backup name contains the string "howl".
      * The operation started before 2018-03-28T14:50:00Z.
      * The operation resulted in an error.
@param page_size [::Integer]
  Number of operations to be returned in the response. If 0 or
  less, defaults to the server's maximum allowed page size.
@param page_token [::String]
  If non-empty, `page_token` should contain a
  {::Google::Cloud::Spanner::Admin::Database::V1::ListBackupOperationsResponse#next_page_token next_page_token}
  from a previous {::Google::Cloud::Spanner::Admin::Database::V1::ListBackupOperationsResponse ListBackupOperationsResponse} to the
  same `parent` and with the same `filter`.

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

@return [::Gapic::PagedEnumerable<::Gapic::Operation>]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 1702
def list_backup_operations request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::ListBackupOperationsRequest

  # 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_backup_operations.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::Spanner::Admin::Database::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_backup_operations.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.list_backup_operations.retry_policy

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

  @database_admin_stub.call_rpc :list_backup_operations, request, options: options do |response, operation|
    wrap_lro_operation = ->(op_response) { ::Gapic::Operation.new op_response, @operations_client }
    response = ::Gapic::PagedEnumerable.new @database_admin_stub, :list_backup_operations, request, response, operation, options, format_resource: wrap_lro_operation
    yield response, operation if block_given?
    return response
  end
rescue ::GRPC::BadStatus => e
  raise ::Google::Cloud::Error.from_error(e)
end
list_backups(request, options = nil) { |response, operation| ... } click to toggle source

Lists completed and pending backups. Backups returned are ordered by `create_time` in descending order, starting from the most recent `create_time`.

@overload list_backups(request, options = nil)

Pass arguments to `list_backups` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::ListBackupsRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::ListBackupsRequest, ::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_backups(parent: nil, filter: nil, page_size: nil, page_token: nil)

Pass arguments to `list_backups` 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]
  Required. The instance to list backups from.  Values are of the
  form `projects/<project>/instances/<instance>`.
@param filter [::String]
  An expression that filters the list of returned backups.

  A filter expression consists of a field name, a comparison operator, and a
  value for filtering.
  The value must be a string, a number, or a boolean. The comparison operator
  must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
  Colon `:` is the contains operator. Filter rules are not case sensitive.

  The following fields in the {::Google::Cloud::Spanner::Admin::Database::V1::Backup Backup} are eligible for filtering:

    * `name`
    * `database`
    * `state`
    * `create_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
    * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
    * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
    * `size_bytes`

  You can combine multiple expressions by enclosing each expression in
  parentheses. By default, expressions are combined with AND logic, but
  you can specify AND, OR, and NOT logic explicitly.

  Here are a few examples:

    * `name:Howl` - The backup's name contains the string "howl".
    * `database:prod`
           - The database's name contains the string "prod".
    * `state:CREATING` - The backup is pending creation.
    * `state:READY` - The backup is fully created and ready for use.
    * `(name:howl) AND (create_time < \"2018-03-28T14:50:00Z\")`
           - The backup name contains the string "howl" and `create_time`
               of the backup is before 2018-03-28T14:50:00Z.
    * `expire_time < \"2018-03-28T14:50:00Z\"`
           - The backup `expire_time` is before 2018-03-28T14:50:00Z.
    * `size_bytes > 10000000000` - The backup's size is greater than 10GB
@param page_size [::Integer]
  Number of backups to be returned in the response. If 0 or
  less, defaults to the server's maximum allowed page size.
@param page_token [::String]
  If non-empty, `page_token` should contain a
  {::Google::Cloud::Spanner::Admin::Database::V1::ListBackupsResponse#next_page_token next_page_token} from a
  previous {::Google::Cloud::Spanner::Admin::Database::V1::ListBackupsResponse ListBackupsResponse} to the same `parent` and with the same
  `filter`.

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

@return [::Gapic::PagedEnumerable<::Google::Cloud::Spanner::Admin::Database::V1::Backup>]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 1345
def list_backups request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::ListBackupsRequest

  # 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_backups.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::Spanner::Admin::Database::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_backups.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.list_backups.retry_policy

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

  @database_admin_stub.call_rpc :list_backups, request, options: options do |response, operation|
    response = ::Gapic::PagedEnumerable.new @database_admin_stub, :list_backups, 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
list_database_operations(request, options = nil) { |response, operation| ... } click to toggle source

Lists database {::Google::Longrunning::Operation longrunning-operations}. A database operation has a name of the form `projects/<project>/instances/<instance>/databases/<database>/operations/<operation>`. The long-running operation {::Google::Longrunning::Operation#metadata metadata} field type `metadata.type_url` describes the type of the metadata. Operations returned include those that have completed/failed/canceled within the last 7 days, and pending operations.

@overload list_database_operations(request, options = nil)

Pass arguments to `list_database_operations` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::ListDatabaseOperationsRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::ListDatabaseOperationsRequest, ::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_database_operations(parent: nil, filter: nil, page_size: nil, page_token: nil)

Pass arguments to `list_database_operations` 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]
  Required. The instance of the database operations.
  Values are of the form `projects/<project>/instances/<instance>`.
@param filter [::String]
  An expression that filters the list of returned operations.

  A filter expression consists of a field name, a
  comparison operator, and a value for filtering.
  The value must be a string, a number, or a boolean. The comparison operator
  must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
  Colon `:` is the contains operator. Filter rules are not case sensitive.

  The following fields in the {::Google::Longrunning::Operation Operation}
  are eligible for filtering:

    * `name` - The name of the long-running operation
    * `done` - False if the operation is in progress, else true.
    * `metadata.@type` - the type of metadata. For example, the type string
       for {::Google::Cloud::Spanner::Admin::Database::V1::RestoreDatabaseMetadata RestoreDatabaseMetadata} is
       `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`.
    * `metadata.<field_name>` - any field in metadata.value.
    * `error` - Error associated with the long-running operation.
    * `response.@type` - the type of response.
    * `response.<field_name>` - any field in response.value.

  You can combine multiple expressions by enclosing each expression in
  parentheses. By default, expressions are combined with AND logic. However,
  you can specify AND, OR, and NOT logic explicitly.

  Here are a few examples:

    * `done:true` - The operation is complete.
    * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
      `(metadata.source_type:BACKUP) AND` \
      `(metadata.backup_info.backup:backup_howl) AND` \
      `(metadata.name:restored_howl) AND` \
      `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \
      `(error:*)` - Return operations where:
      * The operation's metadata type is {::Google::Cloud::Spanner::Admin::Database::V1::RestoreDatabaseMetadata RestoreDatabaseMetadata}.
      * The database is restored from a backup.
      * The backup name contains "backup_howl".
      * The restored database's name contains "restored_howl".
      * The operation started before 2018-03-28T14:50:00Z.
      * The operation resulted in an error.
@param page_size [::Integer]
  Number of operations to be returned in the response. If 0 or
  less, defaults to the server's maximum allowed page size.
@param page_token [::String]
  If non-empty, `page_token` should contain a
  {::Google::Cloud::Spanner::Admin::Database::V1::ListDatabaseOperationsResponse#next_page_token next_page_token}
  from a previous {::Google::Cloud::Spanner::Admin::Database::V1::ListDatabaseOperationsResponse ListDatabaseOperationsResponse} to the
  same `parent` and with the same `filter`.

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

@return [::Gapic::PagedEnumerable<::Gapic::Operation>]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 1575
def list_database_operations request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::ListDatabaseOperationsRequest

  # 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_database_operations.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::Spanner::Admin::Database::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_database_operations.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.list_database_operations.retry_policy

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

  @database_admin_stub.call_rpc :list_database_operations, request, options: options do |response, operation|
    wrap_lro_operation = ->(op_response) { ::Gapic::Operation.new op_response, @operations_client }
    response = ::Gapic::PagedEnumerable.new @database_admin_stub, :list_database_operations, request, response, operation, options, format_resource: wrap_lro_operation
    yield response, operation if block_given?
    return response
  end
rescue ::GRPC::BadStatus => e
  raise ::Google::Cloud::Error.from_error(e)
end
list_databases(request, options = nil) { |response, operation| ... } click to toggle source

Lists Cloud Spanner databases.

@overload list_databases(request, options = nil)

Pass arguments to `list_databases` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::ListDatabasesRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::ListDatabasesRequest, ::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_databases(parent: nil, page_size: nil, page_token: nil)

Pass arguments to `list_databases` 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]
  Required. The instance whose databases should be listed.
  Values are of the form `projects/<project>/instances/<instance>`.
@param page_size [::Integer]
  Number of databases to be returned in the response. If 0 or less,
  defaults to the server's maximum allowed page size.
@param page_token [::String]
  If non-empty, `page_token` should contain a
  {::Google::Cloud::Spanner::Admin::Database::V1::ListDatabasesResponse#next_page_token next_page_token} from a
  previous {::Google::Cloud::Spanner::Admin::Database::V1::ListDatabasesResponse ListDatabasesResponse}.

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

@return [::Gapic::PagedEnumerable<::Google::Cloud::Spanner::Admin::Database::V1::Database>]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 273
def list_databases request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::ListDatabasesRequest

  # 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_databases.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::Spanner::Admin::Database::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_databases.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.list_databases.retry_policy

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

  @database_admin_stub.call_rpc :list_databases, request, options: options do |response, operation|
    response = ::Gapic::PagedEnumerable.new @database_admin_stub, :list_databases, 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
restore_database(request, options = nil) { |response, operation| ... } click to toggle source

Create a new database by restoring from a completed backup. The new database must be in the same project and in an instance with the same instance configuration as the instance containing the backup. The returned database [long-running operation] has a name of the format `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>`, and can be used to track the progress of the operation, and to cancel it. The {::Google::Longrunning::Operation#metadata metadata} field type is {::Google::Cloud::Spanner::Admin::Database::V1::RestoreDatabaseMetadata RestoreDatabaseMetadata}. The {::Google::Longrunning::Operation#response response} type is {::Google::Cloud::Spanner::Admin::Database::V1::Database Database}, if successful. Cancelling the returned operation will stop the restore and delete the database. There can be only one database being restored into an instance at a time. Once the restore operation completes, a new restore operation can be initiated, without waiting for the optimize operation associated with the first restore to complete.

@overload restore_database(request, options = nil)

Pass arguments to `restore_database` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::RestoreDatabaseRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::RestoreDatabaseRequest, ::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 restore_database(parent: nil, database_id: nil, backup: nil, encryption_config: nil)

Pass arguments to `restore_database` 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]
  Required. The name of the instance in which to create the
  restored database. This instance must be in the same project and
  have the same instance configuration as the instance containing
  the source backup. Values are of the form
  `projects/<project>/instances/<instance>`.
@param database_id [::String]
  Required. The id of the database to create and restore to. This
  database must not already exist. The `database_id` appended to
  `parent` forms the full database name of the form
  `projects/<project>/instances/<instance>/databases/<database_id>`.
@param backup [::String]
  Name of the backup from which to restore.  Values are of the form
  `projects/<project>/instances/<instance>/backups/<backup>`.
@param encryption_config [::Google::Cloud::Spanner::Admin::Database::V1::RestoreDatabaseEncryptionConfig, ::Hash]
  Optional. An encryption configuration describing the encryption type and key
  resources in Cloud KMS used to encrypt/decrypt the database to restore to.
  If this field is not specified, the restored database will use
  the same encryption configuration as the backup by default, namely
  {::Google::Cloud::Spanner::Admin::Database::V1::RestoreDatabaseEncryptionConfig#encryption_type encryption_type} =
  `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.

@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/spanner/admin/database/v1/database_admin/client.rb, line 1449
def restore_database request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::RestoreDatabaseRequest

  # 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.restore_database.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::Spanner::Admin::Database::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.restore_database.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.restore_database.retry_policy

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

  @database_admin_stub.call_rpc :restore_database, 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
set_iam_policy(request, options = nil) { |response, operation| ... } click to toggle source

Sets the access control policy on a database or backup resource. Replaces any existing policy.

Authorization requires `spanner.databases.setIamPolicy` permission on {::Google::Iam::V1::SetIamPolicyRequest#resource resource}. For backups, authorization requires `spanner.backups.setIamPolicy` permission on {::Google::Iam::V1::SetIamPolicyRequest#resource resource}.

@overload set_iam_policy(request, options = nil)

Pass arguments to `set_iam_policy` via a request object, either of type
{::Google::Iam::V1::SetIamPolicyRequest} or an equivalent Hash.

@param request [::Google::Iam::V1::SetIamPolicyRequest, ::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 set_iam_policy(resource: nil, policy: nil)

Pass arguments to `set_iam_policy` 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 resource [::String]
  REQUIRED: The resource for which the policy is being specified.
  See the operation documentation for the appropriate value for this field.
@param policy [::Google::Iam::V1::Policy, ::Hash]
  REQUIRED: The complete policy to be applied to the `resource`. The size of
  the policy is limited to a few 10s of KB. An empty policy is a
  valid policy but certain Cloud Platform services (such as Projects)
  might reject them.

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

@return [::Google::Iam::V1::Policy]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 754
def set_iam_policy request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V1::SetIamPolicyRequest

  # 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.set_iam_policy.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::Spanner::Admin::Database::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "resource" => request.resource
  }
  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.set_iam_policy.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.set_iam_policy.retry_policy

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

  @database_admin_stub.call_rpc :set_iam_policy, 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
test_iam_permissions(request, options = nil) { |response, operation| ... } click to toggle source

Returns permissions that the caller has on the specified database or backup resource.

Attempting this RPC on a non-existent Cloud Spanner database will result in a NOT_FOUND error if the user has `spanner.databases.list` permission on the containing Cloud Spanner instance. Otherwise returns an empty set of permissions. Calling this method on a backup that does not exist will result in a NOT_FOUND error if the user has `spanner.backups.list` permission on the containing instance.

@overload test_iam_permissions(request, options = nil)

Pass arguments to `test_iam_permissions` via a request object, either of type
{::Google::Iam::V1::TestIamPermissionsRequest} or an equivalent Hash.

@param request [::Google::Iam::V1::TestIamPermissionsRequest, ::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 test_iam_permissions(resource: nil, permissions: nil)

Pass arguments to `test_iam_permissions` 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 resource [::String]
  REQUIRED: The resource for which the policy detail is being requested.
  See the operation documentation for the appropriate value for this field.
@param permissions [::Array<::String>]
  The set of permissions to check for the `resource`. Permissions with
  wildcards (such as '*' or 'storage.*') are not allowed. For more
  information see
  [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).

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

@return [::Google::Iam::V1::TestIamPermissionsResponse]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 916
def test_iam_permissions request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V1::TestIamPermissionsRequest

  # 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.test_iam_permissions.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::Spanner::Admin::Database::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "resource" => request.resource
  }
  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.test_iam_permissions.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.test_iam_permissions.retry_policy

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

  @database_admin_stub.call_rpc :test_iam_permissions, 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
update_backup(request, options = nil) { |response, operation| ... } click to toggle source

Updates a pending or completed {::Google::Cloud::Spanner::Admin::Database::V1::Backup Backup}.

@overload update_backup(request, options = nil)

Pass arguments to `update_backup` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::UpdateBackupRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::UpdateBackupRequest, ::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 update_backup(backup: nil, update_mask: nil)

Pass arguments to `update_backup` 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 backup [::Google::Cloud::Spanner::Admin::Database::V1::Backup, ::Hash]
  Required. The backup to update. `backup.name`, and the fields to be updated
  as specified by `update_mask` are required. Other fields are ignored.
  Update is only supported for the following fields:
   * `backup.expire_time`.
@param update_mask [::Google::Protobuf::FieldMask, ::Hash]
  Required. A mask specifying which fields (e.g. `expire_time`) in the
  Backup resource should be updated. This mask is relative to the Backup
  resource, not to the request message. The field mask must always be
  specified; this prevents any future fields from being erased accidentally
  by clients that do not know about them.

@yield [response, operation] Access the result along with the RPC operation @yieldparam response [::Google::Cloud::Spanner::Admin::Database::V1::Backup] @yieldparam operation [::GRPC::ActiveCall::Operation]

@return [::Google::Cloud::Spanner::Admin::Database::V1::Backup]

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

# File lib/google/cloud/spanner/admin/database/v1/database_admin/client.rb, line 1160
def update_backup request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::UpdateBackupRequest

  # 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.update_backup.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::Spanner::Admin::Database::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "backup.name" => request.backup.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.update_backup.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.update_backup.retry_policy

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

  @database_admin_stub.call_rpc :update_backup, 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
update_database_ddl(request, options = nil) { |response, operation| ... } click to toggle source

Updates the schema of a Cloud Spanner database by creating/altering/dropping tables, columns, indexes, etc. The returned {::Google::Longrunning::Operation long-running operation} will have a name of the format `<database_name>/operations/<operation_id>` and can be used to track execution of the schema change(s). The {::Google::Longrunning::Operation#metadata metadata} field type is {::Google::Cloud::Spanner::Admin::Database::V1::UpdateDatabaseDdlMetadata UpdateDatabaseDdlMetadata}. The operation has no response.

@overload update_database_ddl(request, options = nil)

Pass arguments to `update_database_ddl` via a request object, either of type
{::Google::Cloud::Spanner::Admin::Database::V1::UpdateDatabaseDdlRequest} or an equivalent Hash.

@param request [::Google::Cloud::Spanner::Admin::Database::V1::UpdateDatabaseDdlRequest, ::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 update_database_ddl(database: nil, statements: nil, operation_id: nil)

Pass arguments to `update_database_ddl` 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 database [::String]
  Required. The database to update.
@param statements [::Array<::String>]
  Required. DDL statements to be applied to the database.
@param operation_id [::String]
  If empty, the new update request is assigned an
  automatically-generated operation ID. Otherwise, `operation_id`
  is used to construct the name of the resulting
  {::Google::Longrunning::Operation Operation}.

  Specifying an explicit operation ID simplifies determining
  whether the statements were executed in the event that the
  {::Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::Client#update_database_ddl UpdateDatabaseDdl} call is replayed,
  or the return value is otherwise lost: the {::Google::Cloud::Spanner::Admin::Database::V1::UpdateDatabaseDdlRequest#database database} and
  `operation_id` fields can be combined to form the
  {::Google::Longrunning::Operation#name name} of the resulting
  {::Google::Longrunning::Operation longrunning.Operation}: `<database>/operations/<operation_id>`.

  `operation_id` should be unique within the database, and must be
  a valid identifier: `[a-z][a-z0-9_]*`. Note that
  automatically-generated operation IDs always begin with an
  underscore. If the named operation already exists,
  {::Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::Client#update_database_ddl UpdateDatabaseDdl} returns
  `ALREADY_EXISTS`.

@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/spanner/admin/database/v1/database_admin/client.rb, line 531
def update_database_ddl request, options = nil
  raise ::ArgumentError, "request must be provided" if request.nil?

  request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Spanner::Admin::Database::V1::UpdateDatabaseDdlRequest

  # 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.update_database_ddl.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::Spanner::Admin::Database::V1::VERSION
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id

  header_params = {
    "database" => request.database
  }
  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.update_database_ddl.timeout,
                         metadata:     metadata,
                         retry_policy: @config.rpcs.update_database_ddl.retry_policy

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

  @database_admin_stub.call_rpc :update_database_ddl, 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