class Aebus::Config::Volume
Attributes
config[R]
id[R]
Public Class Methods
new(current_time_utc, volume_id, config, default_backups)
click to toggle source
# File lib/config/volume.rb, line 57 def initialize(current_time_utc, volume_id, config, default_backups) @config = config @id = volume_id @backups = default_backups ? default_backups.dup : Hash.new if config && config['backups'] @backups.merge(BackupSchedule.parse_backups_config(current_time_utc,config['backups'])) end end
Public Instance Methods
backups_to_be_run(snapshots,current_time_utc)
click to toggle source
# File lib/config/volume.rb, line 67 def backups_to_be_run(snapshots,current_time_utc) result = Array.new max_delay = 0 @backups.each_pair do |k,v| unless recent_backup?(k, snapshots, v.last_deadline) result << k max_delay = [max_delay, current_time_utc.to_i - v.last_deadline.to_i].max end end [max_delay, result] end
last_backup()
click to toggle source
# File lib/config/volume.rb, line 115 def last_backup @backups.values.map{|backup| backup.last_deadline}.max end
next_backup()
click to toggle source
# File lib/config/volume.rb, line 119 def next_backup @backups.values.map{|backup| backup.next_deadline}.min end
purgeable_snapshot_ids(snapshots)
click to toggle source
# File lib/config/volume.rb, line 95 def purgeable_snapshot_ids(snapshots) return [] unless snapshots removables = snapshots.select{|snapshot| snapshot.aebus_removable_snapshot?} available_backups = @backups.each_with_object({}) { | (k, v) , h | h[k] = v.keep} removables.each do |snapshot| snapshot.aebus_tags.each do |tag| if (available_backups.include? tag) && (available_backups[tag] > 0) then snapshot.keep = true available_backups[tag] -= 1 end end end removables.inject([]) do |acc, snapshot| acc << snapshot.id unless snapshot.keep? acc end end
recent_backup?(label, snapshots, last_deadline)
click to toggle source
# File lib/config/volume.rb, line 82 def recent_backup?(label, snapshots, last_deadline) return false unless snapshots snapshots.each do |snapshot| if snapshot.aebus_tags_include?(label) && (snapshot.start_time > last_deadline) return true end end false end