zfs_mgmt 0.3.9 → 0.3.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 01dce6574812e84d56d1a59b01e100eab3f8d20cbf424e2536e057ec67a54012
4
- data.tar.gz: 142d2188e242cd55b94c3f5c9375dfa1900ddff8ee608a41d8698d7bcc9bf948
3
+ metadata.gz: a54ed2e0ad255f69367aaeb25fd0dddcc8346cec0fd8be02561e4ea1210510f2
4
+ data.tar.gz: 1d31c311f63835c3f7a2b6e771b06628f1901b62130e9ec5d0255ff987fb89bc
5
5
  SHA512:
6
- metadata.gz: 3297d3fb276a460c9b3478316615c34b93ce6a9116d56657e53855327cc0764ddf57cb2c53273bbe72c14624edf1631836378b50ad4b3f62b2fb2a6a21d49970
7
- data.tar.gz: a50bb0e812584aa1b1af794cb729182a5d9d6805e1318c4115462d6718dd2b517c5bd40267c9586cbb5f5ac966bfb742c084576cc3bf6cf9bc4443dd29f3c910
6
+ metadata.gz: c0534143034e6edb6ce1161bacd86765cf9a151812d1849f3570c983691dfdf8d03f5d0aeefb070fa144fa0fa6838711b855e07180a7c70cd14f3f00d561d562
7
+ data.tar.gz: dbf53bcfe6223106f080393621d58ef538a2cf9fe9ae9e7f338b2cbe4e5d88d5bca2fcf44f3c6e8ffb76050ce2d0cfc75fa12638b8d19aae759b9b507fab3a65
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zfs_mgmt (0.3.9)
4
+ zfs_mgmt (0.3.10)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/bin/zfsmgr CHANGED
@@ -5,10 +5,15 @@ require "zfs_mgmt/zfs_mgr"
5
5
  require "zfs_mgmt/zfs_mgr/restic"
6
6
 
7
7
  class ZfsMgr < Thor
8
+ class_option :zfs_binary, :type => :string, :default => 'zfs',
9
+ :desc => 'zfs binary'
10
+ class_option :zpool_binary, :type => :string, :default => 'zpool',
11
+ :desc => 'zfs binary'
8
12
  desc "zfsget [ZFS]", "execute zfs get for the given properties and types and parse the output into a nested hash"
9
13
  method_option :properties, :type => :array, :default => ['name'], :desc => "List of properties passed to zfs get"
10
14
  method_option :types, :type => :array, :default => ['filesystem','volume'], enum: ['filesystem','volume','snapshot'], :desc => "list of types"
11
15
  def zfsget(zfs)
16
+ ZfsMgmt.global_options = options
12
17
  pp ZfsMgmt.zfsget(properties: options[:properties],
13
18
  types: options[:types],
14
19
  zfs: zfs)
data/lib/zfs_mgmt.rb CHANGED
@@ -38,6 +38,9 @@ $properties_xlate = {
38
38
  }
39
39
 
40
40
  module ZfsMgmt
41
+ class << self
42
+ attr_accessor :global_options
43
+ end
41
44
  def self.custom_properties()
42
45
  return [
43
46
  'policy',
@@ -67,7 +70,7 @@ module ZfsMgmt
67
70
  end
68
71
 
69
72
  def self.zfs_holds(snapshot)
70
- com = ['zfs', 'holds', '-H', snapshot]
73
+ com = [global_options['zfs_binary'], 'holds', '-H', snapshot]
71
74
  $logger.debug("#{com.join(' ')}")
72
75
  out = %x(#{com.join(' ')})
73
76
  unless $?.success?
@@ -83,7 +86,7 @@ module ZfsMgmt
83
86
  end
84
87
 
85
88
  def self.zfs_hold(hold,snapshot)
86
- com = ['zfs', 'hold', hold, snapshot]
89
+ com = [global_options['zfs_binary'], 'hold', hold, snapshot]
87
90
  $logger.debug("#{com.join(' ')}")
88
91
  system(com.join(' '))
89
92
  unless $?.success?
@@ -94,7 +97,7 @@ module ZfsMgmt
94
97
  end
95
98
 
96
99
  def self.zfs_release(hold,snapshot)
97
- com = ['zfs', 'release', hold, snapshot]
100
+ com = [@global_options['zfs_binary'], 'release', hold, snapshot]
98
101
  $logger.debug("#{com.join(' ')}")
99
102
  system(com.join(' '))
100
103
  unless $?.success?
@@ -106,7 +109,8 @@ module ZfsMgmt
106
109
 
107
110
  def self.zfsget(properties: ['name'],types: ['filesystem','volume'],zfs: '')
108
111
  results={}
109
- com = ['zfs', 'get', '-Hp', properties.join(','), '-t', types.join(','), zfs]
112
+ com = [ZfsMgmt.global_options[:zfs_binary], 'get', '-Hp', properties.join(','), '-t', types.join(','), zfs]
113
+ $logger.debug(com.join(' '))
110
114
  so,se,status = Open3.capture3(com.join(' '))
111
115
  if status.signaled?
112
116
  $logger.error("process was signalled \"#{com.join(' ')}\", termsig #{status.termsig}")
@@ -371,7 +375,7 @@ module ZfsMgmt
371
375
 
372
376
  prefix = ( props.has_key?('zfsmgmt:snap_prefix') ? props['zfsmgmt:snap_prefix'] : 'zfsmgmt' )
373
377
  ts = ( props.has_key?('zfsmgmt:snap_timestamp') ? props['zfsmgmt:snap_timestamp'] : '%FT%T%z' )
374
- com = ['zfs','snapshot']
378
+ com = [global_options['zfs_binary'],'snapshot']
375
379
  if props['zfsmgmt:snapshot'] == 'recursive' and props['zfsmgmt:snapshot@source'] == 'local'
376
380
  com.push('-r')
377
381
  end
@@ -107,7 +107,7 @@ module ZfsMgmt::Restic
107
107
  "zfsmgmt:snapshot=#{last_zfs_snapshot}",
108
108
  "zfsmgmt:zfs=#{zfs}",
109
109
  "zfsmgmt:level=#{level}" ]
110
- com = [ options[:zfs_binary], 'send', '-L', '-w', '-h', '-p' ]
110
+ com = [ ZfsMgmt.global_options['zfs_binary'], 'send', '-L', '-w', '-h', '-p' ]
111
111
  if level > 0
112
112
  if options[:intermediary]
113
113
  com.push('-I')
@@ -1,3 +1,3 @@
1
1
  module ZfsMgmt
2
- VERSION = "0.3.9"
2
+ VERSION = "0.3.10"
3
3
  end
@@ -6,6 +6,7 @@ class ZfsMgmt::ZfsMgr::List < Thor
6
6
  desc "stale", "list all zfs with stale snapshots"
7
7
  method_option :age, :desc => "timeframe outside of which the zfs will be considered stale", :default => '1d'
8
8
  def stale()
9
+ ZfsMgmt.global_options = options
9
10
  cutoff = Time.at(Time.now.to_i - ZfsMgmt.timespec_to_seconds(options[:age]))
10
11
  table = Text::Table.new
11
12
  table.head = ['zfs','snapshot','age']
@@ -5,8 +5,6 @@ class ZfsMgmt::ZfsMgr::Backup < Thor
5
5
  :desc => 'only act on zfs matching this regexp'
6
6
  class_option :restic_binary, :type => :string, :default => 'restic',
7
7
  :desc => 'restic binary'
8
- class_option :zfs_binary, :type => :string, :default => 'zfs',
9
- :desc => 'zfs binary'
10
8
  class_option :verbose, :alias => '-v', :type => :numeric,
11
9
  :desc => 'verbosity level for restic'
12
10
  class_option :buffer, :type => :string, :default => '256m',
@@ -21,15 +19,18 @@ class ZfsMgmt::ZfsMgr::Backup < Thor
21
19
  method_option :level, :desc => "backup level in integer form", :default => 2, :type => :numeric
22
20
  method_option :intermediary, :alias => '-I', :desc => "pass -I (intermediary) option to zfs send", :default => false, :type => :boolean
23
21
  def incremental()
22
+ ZfsMgmt.global_options = options
24
23
  ZfsMgmt::Restic.backup(backup_level: options[:level], options: options)
25
24
  end
26
25
  desc "differential", "perform differential backup"
27
26
  method_option :intermediary, :alias => '-I', :desc => "pass -I (intermediary) option to zfs send", :default => false, :type => :boolean
28
27
  def differential()
28
+ ZfsMgmt.global_options = options
29
29
  ZfsMgmt::Restic.backup(backup_level: 1, options: options)
30
30
  end
31
31
  desc "full", "perform full backup"
32
32
  def full()
33
+ ZfsMgmt.global_options = options
33
34
  ZfsMgmt::Restic.backup(backup_level: 0, options: options)
34
35
  end
35
36
  end
@@ -11,14 +11,17 @@ class ZfsMgmt::ZfsMgr::Snapshot < Thor
11
11
  :desc => 'only act on zfs matching this regexp'
12
12
  desc "destroy", "apply the snapshot destroy policy to zfs"
13
13
  def destroy()
14
+ ZfsMgmt.global_options = options
14
15
  ZfsMgmt.snapshot_destroy(noop: options[:noop], verbopt: options[:verbose], debugopt: options[:debug], filter: options[:filter])
15
16
  end
16
17
  desc "policy", "print the policy table for zfs"
17
18
  def policy()
19
+ ZfsMgmt.global_options = options
18
20
  ZfsMgmt.snapshot_policy(verbopt: options[:verbose], debugopt: options[:debug], filter: options[:filter])
19
21
  end
20
22
  desc "create", "execute zfs snapshot based on zfs properties"
21
23
  def create()
24
+ ZfsMgmt.global_options = options
22
25
  ZfsMgmt.snapshot_create(verbopt: options[:verbose], debugopt: options[:debug], filter: options[:filter])
23
26
  end
24
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zfs_mgmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aran Cox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-19 00:00:00.000000000 Z
11
+ date: 2021-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler