Class: EY::Backup::Backend

Inherits:
Object
  • Object
show all
Extended by:
Logging
Includes:
Logging
Defined in:
lib/ey_backup/backend.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(secret_id, secret_key, region, bucket_name) ⇒ Backend

Returns a new instance of Backend.



9
10
11
12
# File 'lib/ey_backup/backend.rb', line 9

def initialize(secret_id, secret_key, region, bucket_name)
  @bucket_minder = EY::BucketMinder.new(secret_id, secret_key, bucket_name, region)
  @s3            = Fog::Storage.new(:provider => 'AWS', :aws_access_key_id => secret_id, :aws_secret_access_key => secret_key, :region => region)
end

Instance Attribute Details

#bucket_minderObject (readonly)

Returns the value of attribute bucket_minder.



13
14
15
# File 'lib/ey_backup/backend.rb', line 13

def bucket_minder
  @bucket_minder
end

Instance Method Details

#start_upload(filenames, environment_name, database_name) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ey_backup/backend.rb', line 15

def start_upload(filenames, environment_name, database_name)
  filenames.each do |filename|
    begin
      object_name = "#{environment_name}.#{database_name}/#{File.basename(filename)}"
      info "Starting upload: #{filename}"
      @s3.put_object(@bucket_minder.bucket_name, object_name, File.open(filename,'r'))
      info "Successful upload: #{filename}"
    rescue => e
      retries ||= 5
      retries -= 1
      raise e if retries == 0
      warn "retrying upload of #{filename}. Got: #{e.inspect}"
      retry
    end
  end
end