class Google::Cloud::Spanner::Backup::Job

# Job

A resource representing the long-running, asynchronous processing of backup creation. The job can be refreshed to retrieve the backup object once the operation has been completed.

See {Google::Cloud::Spanner::Database#create_backup}

@see cloud.google.com/spanner/reference/rpc/google.longrunning#google.longrunning.Operation

Long-running Operation

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

database = spanner.database "my-instance", "my-database"
expire_time = Time.now + 36000
job = database.create_backup "my-backup", expire_time

job.done? #=> false
job.reload! # API call
job.done? #=> true

if job.error?
  status = job.error
else
  backup = job.backup
end

Attributes

grpc[RW]

@private The `Gapic::Operation` gRPC object.

service[RW]

@private The gRPC Service object.

Public Class Methods

from_grpc(grpc, service) click to toggle source

@private New Backup::Job from a `Gapic::Operation` object.

# File lib/google/cloud/spanner/backup/job.rb, line 264
def self.from_grpc grpc, service
  new.tap do |job|
    job.instance_variable_set :@grpc, grpc
    job.instance_variable_set :@service, service
  end
end
new() click to toggle source

@private Creates a new Backup::Job instance.

# File lib/google/cloud/spanner/backup/job.rb, line 65
def initialize
  @grpc = nil
  @service = nil
end

Public Instance Methods

backup() click to toggle source

The backup is the object of the operation.

@return [Backup, nil] The backup, or

`nil` if the operation is not complete.

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

database = spanner.database "my-instance", "my-database"
expire_time = Time.now + 36000
job = database.create_backup "my-backup", expire_time

job.done? #=> false
job.reload!
job.done? #=> true
backup = job.backup
# File lib/google/cloud/spanner/backup/job.rb, line 90
def backup
  return nil unless done?
  return nil unless @grpc.grpc_op.result == :response
  Backup.from_grpc @grpc.results, service
end
cancel() click to toggle source

Cancel the backup job.

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

database = spanner.database "my-instance", "my-database"
expire_time = Time.now + 36000
job = database.create_backup "my-backup", expire_time

job.done? #=> false
job.cancel
# File lib/google/cloud/spanner/backup/job.rb, line 223
def cancel
  @grpc.cancel
end
cancel_time() click to toggle source

The operation canceled time.

@return [Time, nil]

# File lib/google/cloud/spanner/backup/job.rb, line 257
def cancel_time
  return nil unless @grpc.metadata.cancel_time
  Convert.timestamp_to_time @grpc.metadata.cancel_time
end
done?() click to toggle source

Checks if the processing of the backup operation is complete.

@return [boolean] `true` when complete, `false` otherwise.

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

database = spanner.database "my-instance", "my-database"
expire_time = Time.now + 36000
job = database.create_backup "my-backup", expire_time

job.done? #=> false
# File lib/google/cloud/spanner/backup/job.rb, line 112
def done?
  @grpc.done?
end
end_time() click to toggle source

The operation end time.

@return [Time, nil]

# File lib/google/cloud/spanner/backup/job.rb, line 248
def end_time
  return nil unless @grpc.metadata.progress.end_time
  Convert.timestamp_to_time @grpc.metadata.progress.end_time
end
error() click to toggle source

The status if the operation associated with this job produced an error.

@return [Google::Cloud::Spanner::Status, nil] A status object with

the status code and message, or `nil` if no error occurred.

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

database = spanner.database "my-instance", "my-database"
expire_time = Time.now + 36000
job = database.create_backup "my-backup", expire_time

job.error? # true

error = job.error
# File lib/google/cloud/spanner/backup/job.rb, line 156
def error
  return nil unless error?
  Google::Cloud::Spanner::Status.from_grpc @grpc.error
end
error?() click to toggle source

Checks if the processing of the backup operation has errored.

@return [boolean] `true` when errored, `false` otherwise.

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

database = spanner.database "my-instance", "my-database"
expire_time = Time.now + 36000
job = database.create_backup "my-backup", expire_time

job.error? #=> false
# File lib/google/cloud/spanner/backup/job.rb, line 132
def error?
  @grpc.error?
end
progress_percent() click to toggle source

The operation progress in percentage.

@return [Integer]

# File lib/google/cloud/spanner/backup/job.rb, line 231
def progress_percent
  @grpc.metadata.progress.progress_percent
end
refresh!()
Alias for: reload!
reload!() click to toggle source

Reloads the job with current data from the long-running, asynchronous processing of a backup operation.

@return [Google::Cloud::Spanner::Backup::Job] The same job

instance.

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

database = spanner.database "my-instance", "my-database"
expire_time = Time.now + 36000
job = database.create_backup "my-backup", expire_time

job.done? #=> false
job.reload! # API call
job.done? #=> true
# File lib/google/cloud/spanner/backup/job.rb, line 181
def reload!
  @grpc.reload!
  self
end
Also aliased as: refresh!
start_time() click to toggle source

The operation start time.

@return [Time, nil]

# File lib/google/cloud/spanner/backup/job.rb, line 239
def start_time
  return nil unless @grpc.metadata.progress.start_time
  Convert.timestamp_to_time @grpc.metadata.progress.start_time
end
wait_until_done!() click to toggle source

Reloads the job until the operation is complete. The delay between reloads will incrementally increase.

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

database = spanner.database "my-instance", "my-database"
expire_time = Time.now + 36000
job = database.create_backup "my-backup", expire_time

job.done? #=> false
job.wait_until_done!
job.done? #=> true
# File lib/google/cloud/spanner/backup/job.rb, line 204
def wait_until_done!
  @grpc.wait_until_done!
end