mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
59 lines
2.1 KiB
Ruby
59 lines
2.1 KiB
Ruby
module Fog
|
|
module AWS
|
|
class Glacier
|
|
class Job < Fog::Model
|
|
ARCHIVE = 'archive-retrieval'
|
|
INVENTORY = 'inventory-retrieval'
|
|
|
|
identity :id, :aliases => "JobId"
|
|
attribute :action, :aliases => "Action"
|
|
attribute :archive_id, :aliases => "ArchiveId"
|
|
attribute :archive_size, :aliases => "ArchiveSizeInBytes", :type => :integer
|
|
attribute :completed, :aliases => "Completed", :type => :boolean
|
|
attribute :completed_at, :aliases => "CompletionDate", :type => :time
|
|
attribute :created_at, :aliases => "CreationDate", :type => :time
|
|
attribute :inventory_size, :aliases => "InventorySizeInBytes", :type => :integer
|
|
attribute :description, :aliases=> "JobDescription"
|
|
attribute :tree_hash, :aliases=> "SHA256TreeHash"
|
|
attribute :sns_topic, :aliases => "SNSTopic"
|
|
attribute :status_code, :aliases=> "StatusCode"
|
|
attribute :status_message, :aliases=> "StatusMessage"
|
|
attribute :vault_arn, :aliases=> "VaultARN"
|
|
attribute :format
|
|
attribute :type
|
|
|
|
def ready?
|
|
completed
|
|
end
|
|
|
|
def save
|
|
requires :vault, :type
|
|
specification = {'Type' => type, 'ArchiveId' => archive_id, 'Format' => format, 'Description' => description, 'SNSTopic' => sns_topic}.reject{|k,v| v.nil?}
|
|
|
|
data = service.initiate_job(vault.id, specification)
|
|
self.id = data.headers['x-amz-job-id']
|
|
reload
|
|
end
|
|
|
|
def vault
|
|
@vault
|
|
end
|
|
|
|
#pass :range => 1..1234 to only retrieve those bytes
|
|
#pass :io => f to stream the response to that tio
|
|
def get_output(options={})
|
|
if io = options.delete(:io)
|
|
options = options.merge :response_block => lambda {|chunk, remaining_bytes, total_bytes| io.write chunk}
|
|
end
|
|
options['Range'] = options.delete :range
|
|
service.get_job_output(vault.id, id, options)
|
|
end
|
|
|
|
private
|
|
def vault=(new_vault)
|
|
@vault = new_vault
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|