mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-14 05:07:31 +00:00
vzdump: defaults: correctly parse prune-backups and convert maxfiles
Also simplify handling in new(), now that we never have maxfiles there anymore. Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
1c56bcf39d
commit
acc963c3e5
@ -230,6 +230,8 @@ sub read_vzdump_defaults {
|
||||
$res->{$key} = $defaults->{$key} if !defined($res->{$key});
|
||||
}
|
||||
|
||||
$parse_prune_backups_maxfiles->($res, "options in '$fn'");
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
@ -437,7 +439,7 @@ sub new {
|
||||
$opts->{remove} = 1 if !defined($opts->{remove});
|
||||
|
||||
foreach my $k (keys %$defaults) {
|
||||
next if $k eq 'exclude-path' || $k eq 'maxfiles'; # dealt with separately
|
||||
next if $k eq 'exclude-path' || $k eq 'prune-backups'; # dealt with separately
|
||||
if ($k eq 'dumpdir' || $k eq 'storage') {
|
||||
$opts->{$k} = $defaults->{$k} if !defined ($opts->{dumpdir}) &&
|
||||
!defined ($opts->{storage});
|
||||
@ -494,11 +496,7 @@ sub new {
|
||||
$opts->{dumpdir} = $info->{dumpdir};
|
||||
$opts->{scfg} = $info->{scfg};
|
||||
$opts->{pbs} = $info->{pbs};
|
||||
|
||||
if (!defined($opts->{'prune-backups'}) && !defined($opts->{maxfiles})) {
|
||||
$opts->{'prune-backups'} = $info->{'prune-backups'};
|
||||
$opts->{maxfiles} = $info->{maxfiles};
|
||||
}
|
||||
$opts->{'prune-backups'} //= $info->{'prune-backups'};
|
||||
}
|
||||
} elsif ($opts->{dumpdir}) {
|
||||
$errors .= "dumpdir '$opts->{dumpdir}' does not exist"
|
||||
@ -507,15 +505,7 @@ sub new {
|
||||
die "internal error";
|
||||
}
|
||||
|
||||
if (!defined($opts->{'prune-backups'})) {
|
||||
my $maxfiles = delete $opts->{maxfiles} // $defaults->{maxfiles};
|
||||
$maxfiles = int($maxfiles); # shouldn't be necessary, but be safe
|
||||
if ($maxfiles) {
|
||||
$opts->{'prune-backups'} = { 'keep-last' => $maxfiles };
|
||||
} else {
|
||||
$opts->{'prune-backups'} = { 'keep-all' => 1 };
|
||||
}
|
||||
}
|
||||
$opts->{'prune-backups'} //= $defaults->{'prune-backups'};
|
||||
|
||||
# avoid triggering any remove code path if keep-all is set
|
||||
$opts->{remove} = 0 if $opts->{'prune-backups'}->{'keep-all'};
|
||||
|
@ -164,6 +164,61 @@ my @tests = (
|
||||
remove => 1,
|
||||
},
|
||||
},
|
||||
{
|
||||
description => 'prune-backups vzdump 1',
|
||||
vzdump_param => {
|
||||
'prune-backups' => 'keep-last=1,keep-hourly=2,keep-daily=3,' .
|
||||
'keep-weekly=4,keep-monthly=5,keep-yearly=6',
|
||||
},
|
||||
expected => {
|
||||
'prune-backups' => {
|
||||
'keep-last' => 1,
|
||||
'keep-hourly' => 2,
|
||||
'keep-daily' => 3,
|
||||
'keep-weekly' => 4,
|
||||
'keep-monthly' => 5,
|
||||
'keep-yearly' => 6,
|
||||
},
|
||||
remove => 1,
|
||||
},
|
||||
},
|
||||
{
|
||||
description => 'prune-backups vzdump 2',
|
||||
vzdump_param => {
|
||||
'prune-backups' => 'keep-all=1',
|
||||
},
|
||||
expected => {
|
||||
'prune-backups' => {
|
||||
'keep-all' => 1,
|
||||
},
|
||||
remove => 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
description => 'prune-backups vzdump 3',
|
||||
vzdump_param => {
|
||||
'prune-backups' => 'keep-hourly=0,keep-monthly=0,keep-yearly=0',
|
||||
},
|
||||
expected => {
|
||||
'prune-backups' => {
|
||||
'keep-all' => 1,
|
||||
},
|
||||
remove => 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
description => 'both vzdump 1',
|
||||
vzdump_param => {
|
||||
'prune-backups' => 'keep-all=1',
|
||||
maxfiles => 7,
|
||||
},
|
||||
expected => {
|
||||
'prune-backups' => {
|
||||
'keep-all' => 1,
|
||||
},
|
||||
remove => 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
description => 'prune-backups storage 1',
|
||||
storage_param => {
|
||||
@ -379,6 +434,36 @@ my @tests = (
|
||||
remove => 1,
|
||||
},
|
||||
},
|
||||
{
|
||||
description => 'mixed 8',
|
||||
storage_param => {
|
||||
'prune-backups' => 'keep-last=10',
|
||||
},
|
||||
vzdump_param => {
|
||||
'prune-backups' => 'keep-all=1',
|
||||
},
|
||||
expected => {
|
||||
'prune-backups' => {
|
||||
'keep-last' => 10,
|
||||
},
|
||||
remove => 1,
|
||||
},
|
||||
},
|
||||
{
|
||||
description => 'mixed 9',
|
||||
vzdump_param => {
|
||||
'prune-backups' => 'keep-last=10',
|
||||
},
|
||||
cli_param => {
|
||||
'prune-backups' => 'keep-all=1',
|
||||
},
|
||||
expected => {
|
||||
'prune-backups' => {
|
||||
'keep-all' => 1,
|
||||
},
|
||||
remove => 0,
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
plan tests => scalar @tests;
|
||||
|
Loading…
Reference in New Issue
Block a user