lib/zfs_mgmt.rb in zfs_mgmt-0.3.4 vs lib/zfs_mgmt.rb in zfs_mgmt-0.3.5

- old
+ new

@@ -1,7 +1,8 @@ # coding: utf-8 require "zfs_mgmt/version" +require "zfs_mgmt/restic" require 'pp' require 'date' require 'logger' require 'text-table' require 'open3' @@ -308,12 +309,19 @@ else $logger.level = Logger::INFO end dt = DateTime.now zfsget(properties: custom_properties()).each do |zfs,props| + unless /#{filter}/ =~ zfs + next + end # zfs must have snapshot set to true or recursive - if props.has_key?('zfsmgmt:snapshot') and props['zfsmgmt:snapshot'] == 'true' or ( props['zfsmgmt:snapshot'] == 'recursive' and props['zfsmgmt:snapshot@source'] == 'local' ) + if props.has_key?('zfsmgmt:snapshot') and + props['zfsmgmt:snapshot'] == 'true' or + ( props['zfsmgmt:snapshot'] == 'recursive' and props['zfsmgmt:snapshot@source'] == 'local' ) or + ( props['zfsmgmt:snapshot'] == 'local' and props['zfsmgmt:snapshot@source'] == 'local' ) + prefix = ( props.has_key?('zfsmgmt:snap_prefix') ? props['zfsmgmt:snap_prefix'] : 'zfsmgmt' ) ts = ( props.has_key?('zfsmgmt:snap_timestamp') ? props['zfsmgmt:snap_timestamp'] : '%FT%T%z' ) com = ['zfs','snapshot'] if props['zfsmgmt:snapshot'] == 'recursive' and props['zfsmgmt:snapshot@source'] == 'local' com.push('-r') @@ -323,11 +331,11 @@ system(com.join(' ')) end end end end -class ZfsMgrList < Thor +class ZfsMgmtList < Thor class_option :filter, :type => :string, :default => '.+', :desc => 'only act on zfs matching this regexp' desc "stale", "list all zfs with stale snapshots" method_option :age, :desc => "timeframe outside of which the zfs will be considered stale", :default => '1d' def stale() @@ -338,10 +346,10 @@ ZfsMgmt.zfs_managed_list(filter: options[:filter]).each do |blob| zfs,props,snaps = blob last = snaps.keys.sort { |a,b| snaps[a]['creation'] <=> snaps[b]['creation'] }.last snap_time = Time.at(snaps[last]['creation']) if snap_time < cutoff - table.rows << [zfs,last,snap_time] + table.rows << [zfs,last.split('@')[1],snap_time] end end if table.rows.count > 0 print table.to_s end