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
# 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)
end

Instance Attribute Details

#bucket_minderObject (readonly)

Returns the value of attribute bucket_minder.



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

def bucket_minder
  @bucket_minder
end

Instance Method Details

#start_upload(filenames, environment_name, database_name) ⇒ Object



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

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