implemented support for excluding children of a specific dataset
This commit is contained in:
parent
22160deb8e
commit
ea55308dfc
18
sanoid
18
sanoid
|
@ -661,7 +661,7 @@ sub init {
|
||||||
tie my %ini, 'Config::IniFiles', ( -file => $conf_file ) or die "FATAL: cannot load $conf_file - please create a valid local config file before running sanoid!";
|
tie my %ini, 'Config::IniFiles', ( -file => $conf_file ) or die "FATAL: cannot load $conf_file - please create a valid local config file before running sanoid!";
|
||||||
|
|
||||||
# we'll use these later to normalize potentially true and false values on any toggle keys
|
# we'll use these later to normalize potentially true and false values on any toggle keys
|
||||||
my @toggles = ('autosnap','autoprune','monitor_dont_warn','monitor_dont_crit','monitor','recursive','process_children_only');
|
my @toggles = ('autosnap','autoprune','monitor_dont_warn','monitor_dont_crit','monitor','recursive','process_children_only','skip_children');
|
||||||
my @istrue=(1,"true","True","TRUE","yes","Yes","YES","on","On","ON");
|
my @istrue=(1,"true","True","TRUE","yes","Yes","YES","on","On","ON");
|
||||||
my @isfalse=(0,"false","False","FALSE","no","No","NO","off","Off","OFF");
|
my @isfalse=(0,"false","False","FALSE","no","No","NO","off","Off","OFF");
|
||||||
|
|
||||||
|
@ -718,7 +718,7 @@ sub init {
|
||||||
|
|
||||||
# override with any locally set values in the module itself
|
# override with any locally set values in the module itself
|
||||||
foreach my $key (keys %{$ini{$section}} ) {
|
foreach my $key (keys %{$ini{$section}} ) {
|
||||||
if (! ($key =~ /template|recursive/)) {
|
if (! ($key =~ /template|recursive|skip_children/)) {
|
||||||
if ($args{'debug'}) { print "DEBUG: overriding $key on $section with value directly set in module.\n"; }
|
if ($args{'debug'}) { print "DEBUG: overriding $key on $section with value directly set in module.\n"; }
|
||||||
$config{$section}{$key} = $ini{$section}{$key};
|
$config{$section}{$key} = $ini{$section}{$key};
|
||||||
}
|
}
|
||||||
|
@ -743,10 +743,17 @@ sub init {
|
||||||
|
|
||||||
# how 'bout some recursion? =)
|
# how 'bout some recursion? =)
|
||||||
my @datasets;
|
my @datasets;
|
||||||
if ($ini{$section}{'recursive'}) {
|
if ($ini{$section}{'recursive'} || $ini{$section}{'skip_children'}) {
|
||||||
@datasets = getchilddatasets($config{$section}{'path'});
|
@datasets = getchilddatasets($config{$section}{'path'});
|
||||||
foreach my $dataset(@datasets) {
|
DATASETS: foreach my $dataset(@datasets) {
|
||||||
chomp $dataset;
|
chomp $dataset;
|
||||||
|
|
||||||
|
if ($ini{$section}{'skip_children'}) {
|
||||||
|
if ($args{'debug'}) { print "DEBUG: ignoring $dataset.\n"; }
|
||||||
|
delete $config{$dataset};
|
||||||
|
next DATASETS;
|
||||||
|
}
|
||||||
|
|
||||||
foreach my $key (keys %{$config{$section}} ) {
|
foreach my $key (keys %{$config{$section}} ) {
|
||||||
if (! ($key =~ /template|recursive|children_only/)) {
|
if (! ($key =~ /template|recursive|children_only/)) {
|
||||||
if ($args{'debug'}) { print "DEBUG: recursively setting $key from $section to $dataset.\n"; }
|
if ($args{'debug'}) { print "DEBUG: recursively setting $key from $section to $dataset.\n"; }
|
||||||
|
@ -1257,6 +1264,9 @@ sub getchilddatasets {
|
||||||
my @children = <FH>;
|
my @children = <FH>;
|
||||||
close FH;
|
close FH;
|
||||||
|
|
||||||
|
# parent dataset is the first element
|
||||||
|
shift @children;
|
||||||
|
|
||||||
return @children;
|
return @children;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ path =
|
||||||
recursive =
|
recursive =
|
||||||
use_template =
|
use_template =
|
||||||
process_children_only =
|
process_children_only =
|
||||||
|
skip_children =
|
||||||
|
|
||||||
# If any snapshot type is set to 0, we will not take snapshots for it - and will immediately
|
# If any snapshot type is set to 0, we will not take snapshots for it - and will immediately
|
||||||
# prune any of those type snapshots already present.
|
# prune any of those type snapshots already present.
|
||||||
|
|
Loading…
Reference in New Issue