Class: Zsnap::FSInfo
- Inherits:
-
Object
- Object
- Zsnap::FSInfo
- Defined in:
- lib/zsnap.rb
Instance Method Summary collapse
- #create?(now_minutes) ⇒ Boolean
- #create_snapshot(now_minutes, prefix) ⇒ Object
-
#initialize(fs_name, values) ⇒ FSInfo
constructor
A new instance of FSInfo.
- #pool ⇒ Object
- #remove_snapshots(now_minutes, prefix) ⇒ Object
- #snapshots(prefix) ⇒ Object
- #snapshots_to_remove(now_minutes, prefix) ⇒ Object
Constructor Details
#initialize(fs_name, values) ⇒ FSInfo
Returns a new instance of FSInfo.
95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/zsnap.rb', line 95 def initialize(fs_name, values) @name = fs_name raise "Filesystem #{fs_name} has no creation rule" unless values['creation_rule'] raise "Filesystem #{fs_name} has no preservation rules" unless values['preservation_rules'] @creation_rule = Rule.new(values['creation_rule']) @preservation_rules = values['preservation_rules'].map do |value| PreservationRule.new(value) end @is_recursive = values['recursive'] ? true : false end |
Instance Method Details
#create?(now_minutes) ⇒ Boolean
107 108 109 |
# File 'lib/zsnap.rb', line 107 def create?(now_minutes) @creation_rule.condition_met?(now_minutes) end |
#create_snapshot(now_minutes, prefix) ⇒ Object
132 133 134 135 136 |
# File 'lib/zsnap.rb', line 132 def create_snapshot(now_minutes, prefix) if create?(now_minutes) create_snapshot_from_info(SnapshotInfo.new(prefix + Time.now.strftime('%Y-%m-%d_%H.%M'), @name, prefix)) end end |
#pool ⇒ Object
138 139 140 141 142 |
# File 'lib/zsnap.rb', line 138 def pool # More or less according to ZFS Component Naming Requirements # http://docs.sun.com/app/docs/doc/819-5461/gbcpt @name[/\A[a-zA-Z_:.-]+/] end |
#remove_snapshots(now_minutes, prefix) ⇒ Object
126 127 128 129 130 |
# File 'lib/zsnap.rb', line 126 def remove_snapshots(now_minutes, prefix) snapshots_to_remove(now_minutes, prefix).each do |snapshot| remove_snapshot(snapshot) end end |
#snapshots(prefix) ⇒ Object
111 112 113 114 115 116 |
# File 'lib/zsnap.rb', line 111 def snapshots(prefix) path = File.join(mount_point, '.zfs', 'snapshot') Dir.open(path).select do |name| name[0, prefix.length] == prefix end.map { |name| SnapshotInfo.new(name, @name, prefix) } end |
#snapshots_to_remove(now_minutes, prefix) ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/zsnap.rb', line 118 def snapshots_to_remove(now_minutes, prefix) snapshots(prefix).reject do |snapshot| @preservation_rules.any? do |rule| rule.condition_met_for_snapshot?(now_minutes, snapshot) end end end |