class Hookit::Resource::Zfs
Public Class Methods
new(name)
click to toggle source
Calls superclass method
Hookit::Resource::Base::new
# File lib/hookit/resource/zfs.rb, line 16 def initialize(name) snapshot(name) unless snapshot super end
Public Instance Methods
clone!()
click to toggle source
# File lib/hookit/resource/zfs.rb, line 72 def clone! run_command! "zfs clone #{snapshot} #{dataset}" end
destroy!()
click to toggle source
# File lib/hookit/resource/zfs.rb, line 61 def destroy! `zfs list -t snapshot | grep #{snapshot}` if $?.exitstatus == 0 run_command! "zfs destroy #{snapshot}" end end
receive!()
click to toggle source
# File lib/hookit/resource/zfs.rb, line 44 def receive! run_command! "#{source.to_s.strip} | zfs receive -F #{dataset}" end
rollback!()
click to toggle source
# File lib/hookit/resource/zfs.rb, line 68 def rollback! run_command! "zfs rollback -r #{snapshot}" end
run(action)
click to toggle source
# File lib/hookit/resource/zfs.rb, line 21 def run(action) case action when :send send! when :receive receive! when :transmit transmit! when :snapshot snapshot! when :destroy destroy! when :rollback rollback! when :clone clone! end end
run_command!(cmd, expect_code=0)
click to toggle source
# File lib/hookit/resource/zfs.rb, line 88 def run_command!(cmd, expect_code=0) res = `#{cmd}` code = $?.exitstatus if code != expect_code raise Hookit::Error::UnexpectedExit, "#{cmd} failed with exit code '#{code}'" end return validate!(res) end
send!()
click to toggle source
# File lib/hookit/resource/zfs.rb, line 40 def send! run_command! "zfs send #{snapshot} | #{destination}" end
snapshot!()
click to toggle source
# File lib/hookit/resource/zfs.rb, line 56 def snapshot! destroy! run_command! "zfs snapshot #{snapshot}" end
transmit!()
click to toggle source
# File lib/hookit/resource/zfs.rb, line 48 def transmit! if ssh_host run_command! "zfs send #{options} #{snapshot} | ssh -o stricthostkeychecking=no #{ssh_host} zfs receive -F #{dataset}" else run_command! "zfs send #{options} #{snapshot} | zfs receive -F #{dataset}" end end
validate!(res)
click to toggle source
# File lib/hookit/resource/zfs.rb, line 76 def validate!(res) if validator.is_a? Proc if validator.call(res) res else raise "ERROR: execute resource \"#{name}\" failed validation!" end else res end end