class Aws::Glacier::Job

Public Class Methods

new(*args) click to toggle source

@overload def initialize(account_id, vault_name, id, options = {})

@param [String] account_id
@param [String] vault_name
@param [String] id
@option options [Client] :client

@overload def initialize(options = {})

@option options [required, String] :account_id
@option options [required, String] :vault_name
@option options [required, String] :id
@option options [Client] :client
# File lib/aws-sdk-glacier/job.rb, line 26
def initialize(*args)
  options = Hash === args.last ? args.pop.dup : {}
  @account_id = extract_account_id(args, options)
  @vault_name = extract_vault_name(args, options)
  @id = extract_id(args, options)
  @data = options.delete(:data)
  @client = options.delete(:client) || Client.new(options)
  @waiter_block_warned = false
end

Public Instance Methods

account_id() click to toggle source

@return [String]

# File lib/aws-sdk-glacier/job.rb, line 39
def account_id
  @account_id
end
action() click to toggle source

The job type. This value is either `ArchiveRetrieval`, `InventoryRetrieval`, or `Select`. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 63
def action
  data[:action]
end
archive_id() click to toggle source

The archive ID requested for a select job or archive retrieval. Otherwise, this field is null. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 70
def archive_id
  data[:archive_id]
end
archive_sha256_tree_hash() click to toggle source

The SHA256 tree hash of the entire archive for an archive retrieval. For inventory retrieval or select jobs, this field is null. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 173
def archive_sha256_tree_hash
  data[:archive_sha256_tree_hash]
end
archive_size_in_bytes() click to toggle source

For an archive retrieval job, this value is the size in bytes of the archive being requested for download. For an inventory retrieval or select job, this value is null. @return [Integer]

# File lib/aws-sdk-glacier/job.rb, line 113
def archive_size_in_bytes
  data[:archive_size_in_bytes]
end
client() click to toggle source

@return [Client]

# File lib/aws-sdk-glacier/job.rb, line 222
def client
  @client
end
completed() click to toggle source

The job status. When a job is completed, you get the job's output using Get Job Output (GET output). @return [Boolean]

# File lib/aws-sdk-glacier/job.rb, line 92
def completed
  data[:completed]
end
completion_date() click to toggle source

The UTC time that the job request completed. While the job is in progress, the value is null. @return [Time]

# File lib/aws-sdk-glacier/job.rb, line 134
def completion_date
  data[:completion_date]
end
creation_date() click to toggle source

The UTC date when the job was created. This value is a string representation of ISO 8601 date format, for example `ā€œ2012-03-20T17:03:43.221Zā€`. @return [Time]

# File lib/aws-sdk-glacier/job.rb, line 85
def creation_date
  data[:creation_date]
end
data() click to toggle source

@return [Types::GlacierJobDescription]

Returns the data for this {Job}. Calls
{Client#describe_job} if {#data_loaded?} is `false`.
# File lib/aws-sdk-glacier/job.rb, line 246
def data
  load unless @data
  @data
end
data_loaded?() click to toggle source

@return [Boolean]

Returns `true` if this resource is loaded.  Accessing attributes or
{#data} on an unloaded resource will trigger a call to {#load}.
# File lib/aws-sdk-glacier/job.rb, line 254
def data_loaded?
  !!@data
end
get_output(options = {}, &block) click to toggle source

@example Request syntax with placeholder values

job.get_output({
  range: "string",
})

@param [Hash] options ({}) @option options [String] :range

The range of bytes to retrieve from the output. For example, if you
want to download the first 1,048,576 bytes, specify the range as
`bytes=0-1048575`. By default, this operation downloads the entire
output.

If the job output is large, then you can use a range to retrieve a
portion of the output. This allows you to download the entire output
in smaller chunks of bytes. For example, suppose you have 1 GB of job
output you want to download and you decide to download 128 MB chunks
of data at a time, which is a total of eight Get Job Output requests.
You use the following process to download the job output:

1.  Download a 128 MB chunk of output by specifying the appropriate
    byte range. Verify that all 128 MB of data was received.

2.  Along with the data, the response includes a SHA256 tree hash of
    the payload. You compute the checksum of the payload on the client
    and compare it with the checksum you received in the response to
    ensure you received all the expected data.

3.  Repeat steps 1 and 2 for all the eight 128 MB chunks of output
    data, each time specifying the appropriate byte range.

4.  After downloading all the parts of the job output, you have a list
    of eight checksum values. Compute the tree hash of these values to
    find the checksum of the entire output. Using the DescribeJob API,
    obtain job information of the job that provided you the output.
    The response includes the checksum of the entire archive stored in
    Amazon S3 Glacier. You compare this value with the checksum you
    computed to ensure you have downloaded the entire archive content
    with no errors.

@return [Types::GetJobOutputOutput]

# File lib/aws-sdk-glacier/job.rb, line 396
def get_output(options = {}, &block)
  options = options.merge(
    account_id: @account_id,
    vault_name: @vault_name,
    job_id: @id
  )
  resp = @client.get_job_output(options, &block)
  resp.data
end
id() click to toggle source

@return [String]

# File lib/aws-sdk-glacier/job.rb, line 49
def id
  @id
end
Also aliased as: job_id
identifiers() click to toggle source

@deprecated @api private

# File lib/aws-sdk-glacier/job.rb, line 419
def identifiers
  {
    account_id: @account_id,
    vault_name: @vault_name,
    id: @id
  }
end
inventory_retrieval_parameters() click to toggle source

Parameters used for range inventory retrieval. @return [Types::InventoryRetrievalJobDescription]

# File lib/aws-sdk-glacier/job.rb, line 197
def inventory_retrieval_parameters
  data[:inventory_retrieval_parameters]
end
inventory_size_in_bytes() click to toggle source

For an inventory retrieval job, this value is the size in bytes of the inventory requested for download. For an archive retrieval or select job, this value is null. @return [Integer]

# File lib/aws-sdk-glacier/job.rb, line 121
def inventory_size_in_bytes
  data[:inventory_size_in_bytes]
end
job_description() click to toggle source

The job description provided when initiating the job. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 56
def job_description
  data[:job_description]
end
job_id()
Alias for: id
job_output_path() click to toggle source

Contains the job output location. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 203
def job_output_path
  data[:job_output_path]
end
load() click to toggle source

Loads, or reloads {#data} for the current {Job}. Returns `self` making it possible to chain methods.

job.reload.data

@return [self]

# File lib/aws-sdk-glacier/job.rb, line 232
def load
  resp = @client.describe_job(
    account_id: @account_id,
    vault_name: @vault_name,
    job_id: @id
  )
  @data = resp.data
  self
end
Also aliased as: reload
output_location() click to toggle source

Contains the location where the data from the select job is stored. @return [Types::OutputLocation]

# File lib/aws-sdk-glacier/job.rb, line 215
def output_location
  data[:output_location]
end
reload()
Alias for: load
retrieval_byte_range() click to toggle source

The retrieved byte range for archive retrieval jobs in the form StartByteValue-EndByteValue. If no range was specified in the archive retrieval, then the whole archive is retrieved. In this case, StartByteValue equals 0 and EndByteValue equals the size of the archive minus 1. For inventory retrieval or select jobs, this field is null. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 184
def retrieval_byte_range
  data[:retrieval_byte_range]
end
select_parameters() click to toggle source

Contains the parameters used for a select. @return [Types::SelectParameters]

# File lib/aws-sdk-glacier/job.rb, line 209
def select_parameters
  data[:select_parameters]
end
sha256_tree_hash() click to toggle source

For an archive retrieval job, this value is the checksum of the archive. Otherwise, this value is null.

The SHA256 tree hash value for the requested range of an archive. If the InitiateJob request for an archive specified a tree-hash aligned range, then this field returns a value.

If the whole archive is retrieved, this value is the same as the ArchiveSHA256TreeHash value.

This field is null for the following:

  • Archive retrieval jobs that specify a range that is not tree-hash aligned

^ ^

  • Archival jobs that specify a range that is equal to the whole archive, when the job status is `InProgress`

^ ^

  • Inventory jobs

  • Select jobs

@return [String]

# File lib/aws-sdk-glacier/job.rb, line 166
def sha256_tree_hash
  data[:sha256_tree_hash]
end
sns_topic() click to toggle source

An Amazon SNS topic that receives notification. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 127
def sns_topic
  data[:sns_topic]
end
status_code() click to toggle source

The status code can be `InProgress`, `Succeeded`, or `Failed`, and indicates the status of the job. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 99
def status_code
  data[:status_code]
end
status_message() click to toggle source

A friendly message that describes the job status. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 105
def status_message
  data[:status_message]
end
tier() click to toggle source

The tier to use for a select or an archive retrieval. Valid values are `Expedited`, `Standard`, or `Bulk`. `Standard` is the default. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 191
def tier
  data[:tier]
end
vault() click to toggle source

@return [Vault]

# File lib/aws-sdk-glacier/job.rb, line 409
def vault
  Vault.new(
    account_id: @account_id,
    name: @vault_name,
    client: @client
  )
end
vault_arn() click to toggle source

The Amazon Resource Name (ARN) of the vault from which an archive retrieval was requested. @return [String]

# File lib/aws-sdk-glacier/job.rb, line 77
def vault_arn
  data[:vault_arn]
end
vault_name() click to toggle source

@return [String]

# File lib/aws-sdk-glacier/job.rb, line 44
def vault_name
  @vault_name
end
wait_until(options = {}, &block) click to toggle source

@deprecated Use [Aws::Glacier::Client] wait_until instead

Waiter polls an API operation until a resource enters a desired state.

@note The waiting operation is performed on a copy. The original resource

remains unchanged.

## Basic Usage

Waiter will polls until it is successful, it fails by entering a terminal state, or until a maximum number of attempts are made.

# polls in a loop until condition is true
resource.wait_until(options) {|resource| condition}

## Example

instance.wait_until(max_attempts:10, delay:5) do |instance|
  instance.state.name == 'running'
end

## Configuration

You can configure the maximum number of polling attempts, and the delay (in seconds) between each polling attempt. The waiting condition is set by passing a block to {#wait_until}:

# poll for ~25 seconds
resource.wait_until(max_attempts:5,delay:5) {|resource|...}

## Callbacks

You can be notified before each polling attempt and before each delay. If you throw `:success` or `:failure` from these callbacks, it will terminate the waiter.

started_at = Time.now
# poll for 1 hour, instead of a number of attempts
proc = Proc.new do |attempts, response|
  throw :failure if Time.now - started_at > 3600
end

  # disable max attempts
instance.wait_until(before_wait:proc, max_attempts:nil) {...}

## Handling Errors

When a waiter is successful, it returns the Resource. When a waiter fails, it raises an error.

begin
  resource.wait_until(...)
rescue Aws::Waiters::Errors::WaiterFailed
  # resource did not enter the desired state in time
end

@yieldparam [Resource] resource to be used in the waiting condition.

@raise [Aws::Waiters::Errors::FailureStateError] Raised when the waiter

terminates because the waiter has entered a state that it will not
transition out of, preventing success.

yet successful.

@raise [Aws::Waiters::Errors::UnexpectedError] Raised when an error is

encountered while polling for a resource that is not expected.

@raise [NotImplementedError] Raised when the resource does not

@option options [Integer] :max_attempts (10) Maximum number of attempts @option options [Integer] :delay (10) Delay between each attempt in seconds @option options [Proc] :before_attempt (nil) Callback invoked before each attempt @option options [Proc] :before_wait (nil) Callback invoked before each wait @return [Resource] if the waiter was successful

# File lib/aws-sdk-glacier/job.rb, line 338
def wait_until(options = {}, &block)
  self_copy = self.dup
  attempts = 0
  options[:max_attempts] = 10 unless options.key?(:max_attempts)
  options[:delay] ||= 10
  options[:poller] = Proc.new do
    attempts += 1
    if block.call(self_copy)
      [:success, self_copy]
    else
      self_copy.reload unless attempts == options[:max_attempts]
      :retry
    end
  end
  Aws::Waiters::Waiter.new(options).wait({})
end

Private Instance Methods

extract_account_id(args, options) click to toggle source
# File lib/aws-sdk-glacier/job.rb, line 430
def extract_account_id(args, options)
  value = args[0] || options.delete(:account_id)
  case value
  when String then value
  when nil then raise ArgumentError, "missing required option :account_id"
  else
    msg = "expected :account_id to be a String, got #{value.class}"
    raise ArgumentError, msg
  end
end
extract_id(args, options) click to toggle source
# File lib/aws-sdk-glacier/job.rb, line 452
def extract_id(args, options)
  value = args[2] || options.delete(:id)
  case value
  when String then value
  when nil then raise ArgumentError, "missing required option :id"
  else
    msg = "expected :id to be a String, got #{value.class}"
    raise ArgumentError, msg
  end
end
extract_vault_name(args, options) click to toggle source
# File lib/aws-sdk-glacier/job.rb, line 441
def extract_vault_name(args, options)
  value = args[1] || options.delete(:vault_name)
  case value
  when String then value
  when nil then raise ArgumentError, "missing required option :vault_name"
  else
    msg = "expected :vault_name to be a String, got #{value.class}"
    raise ArgumentError, msg
  end
end