class Fallout::Backup

Constants

EXPIRES_ON_KEY

Public Class Methods

new(options) click to toggle source
# File lib/fallout/backup.rb, line 7
def initialize(options)
  @volume_id = options[:volume]
  @keep = options[:keep].to_i
  @expires_on = Date.today + @keep
  @volume = verify_volume_or_raise(Aws::EC2::Volume.new(@volume_id))
end

Public Instance Methods

delete_expired_snapshots() click to toggle source
# File lib/fallout/backup.rb, line 14
def delete_expired_snapshots
  snapshots = @volume.snapshots
  snapshots = snapshots.map do |ss|
    begin
      tags_hash = Hash[ss.tags.map{|t| [t.key, t.value]}]
      expires_on = Date.parse(tags_hash[EXPIRES_ON_KEY])
      if expires_on < Date.today
        ss.delete
        ss
      end
    rescue
      next
    end
  end
  snapshots.compact
end
run() click to toggle source
# File lib/fallout/backup.rb, line 31
def run
  description = "Snapshot for volume #{@volume_id}, will be deleted on #{@expires_on}"
  snapshot = @volume.create_snapshot(description: description)
  snapshot.create_tags(tags: [{key: EXPIRES_ON_KEY, value: @expires_on.to_s}])
  [snapshot, @expires_on]
end