Class: S3ckup::S3Mananger

Inherits:
Object
  • Object
show all
Defined in:
lib/s3ckup/s3_manager.rb

Constant Summary collapse

MANIFEST_FILE_NAME =
'manifest.yml'

Instance Method Summary collapse

Constructor Details

#initialize(key_id, access_key, logger = Logger.new) ⇒ S3Mananger

Returns a new instance of S3Mananger.



7
8
9
10
# File 'lib/s3ckup/s3_manager.rb', line 7

def initialize(key_id, access_key, logger = Logger.new)
  connect!(key_id, access_key)
  @logger = logger
end

Instance Method Details

#delete(bucket, manifest) ⇒ Object



32
33
34
35
36
37
# File 'lib/s3ckup/s3_manager.rb', line 32

def delete(bucket, manifest)
  manifest.file_list.each do |file_name|
    @logger.info("Deleting remote file: #{file_name}")
    AWS::S3::S3Object.delete file_name, bucket
  end
end

#fetch_manifest(bucket) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/s3ckup/s3_manager.rb', line 12

def fetch_manifest(bucket)
  manifest = AWS::S3::S3Object.find MANIFEST_FILE_NAME, bucket
  Manifest.new(YAML.load(manifest.value))
rescue
  @logger.warn("Failed to fetch remote manifest. Ignoring.")
  Manifest.new({})
end

#update_manifest(bucket, manifest) ⇒ Object



27
28
29
30
# File 'lib/s3ckup/s3_manager.rb', line 27

def update_manifest(bucket, manifest)
  @logger.info("Updating remote manifest")
  AWS::S3::S3Object.store(MANIFEST_FILE_NAME, manifest.to_yaml, bucket)
end

#upload(bucket, manifest) ⇒ Object



20
21
22
23
24
25
# File 'lib/s3ckup/s3_manager.rb', line 20

def upload(bucket, manifest)
  manifest.file_list.each do |file_name|
    @logger.info("Uploading file: #{file_name}")
    AWS::S3::S3Object.store(file_name, open(file_name), bucket)
  end
end