api: content: pass encrypted status for PBS backups

Prefer the fingerprint, fallback to checking the files crypt-mode.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht
2020-11-24 23:17:57 +01:00
parent 3cc2eb738f
commit 878fe0177e
2 changed files with 29 additions and 0 deletions

View File

@ -92,6 +92,12 @@ __PACKAGE__->register_method ({
type => 'string',
optional => 1,
},
encrypted => {
description => "If whole backup is encrypted, value is the fingerprint or '1' "
." if encrypted. Only useful for the Proxmox Backup Server storage type.",
type => 'string',
optional => 1,
},
verification => {
description => "Last backup verification result, only useful for PBS storages.",
type => 'object',

View File

@ -528,6 +528,24 @@ sub list_images {
return $res;
}
my sub snapshot_files_encrypted {
my ($files) = @_;
return 0 if !$files;
my $any;
my $all = 1;
for my $file (@$files) {
my $fn = $file->{filename};
next if $fn eq 'client.log.blob' || $fn eq 'index.json.blob';
my $crypt = $file->{'crypt-mode'};
$all = 0 if !$crypt || $crypt ne 'encrypt';
$any ||= $crypt eq 'encrypt';
}
return $any && $all;
}
sub list_volumes {
my ($class, $storeid, $scfg, $vmid, $content_types) = @_;
@ -560,6 +578,11 @@ sub list_volumes {
$info->{verification} = $item->{verification} if defined($item->{verification});
$info->{notes} = $item->{comment} if defined($item->{comment});
if (defined($item->{fingerprint})) {
$info->{encrypted} = $item->{fingerprint};
} elsif (snapshot_files_encrypted($item->{files})) {
$info->{encrypted} = '1';
}
push @$res, $info;
}