Class: Outback::S3Target

Inherits:
Target show all
Defined in:
lib/outback/s3_target.rb

Instance Attribute Summary

Attributes inherited from Target

#backup_name

Instance Method Summary collapse

Methods inherited from Target

#initialize, #purge!

Methods included from Logging

#logger

Methods included from Configurable

#attr_setter, included

Constructor Details

This class inherits a constructor from Outback::Target

Instance Method Details

#bucketObject



18
19
20
# File 'lib/outback/s3_target.rb', line 18

def bucket
  service.buckets.find(bucket_name)
end

#put(archives) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/outback/s3_target.rb', line 22

def put(archives)
  size = count = 0
  archives.each do |archive|
    object_name = [prefix.to_s, archive.filename.basename.to_s].join('/')
    logger.debug "S3Target: storing #{archive.filename} in s3://#{bucket_name}/#{object_name}"
    object = bucket.objects.build(object_name)
    object.content = archive.open
    object.acl = :private
    object.save
    if object.exists?
      size += archive.size
      count += 1
    else
      logger.error "S3 archive upload failed: #{object_name}"
    end
  end
  logger.info "Uploaded #{count} archives (#{size} bytes) to #{self}"
  count
end

#service(force_reconnect = false) ⇒ Object



13
14
15
16
# File 'lib/outback/s3_target.rb', line 13

def service(force_reconnect = false)
  @service = nil if force_reconnect
  @service ||= S3::Service.new(access_key_id: access_key, secret_access_key: secret_key, use_ssl: true)
end

#to_sObject



5
6
7
# File 'lib/outback/s3_target.rb', line 5

def to_s
  "s3:#{bucket_name}/#{prefix}"
end

#valid?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/outback/s3_target.rb', line 9

def valid?
  bucket_name && access_key && secret_key
end