]> git.proxmox.com Git - pve-storage.git/commitdiff
implement extract_vzdump_config for PBSPlugin
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 19 Feb 2020 12:55:28 +0000 (13:55 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 19 Feb 2020 13:00:04 +0000 (14:00 +0100)
PVE/Storage.pm
PVE/Storage/PBSPlugin.pm

index 17196a862be3512e759bdfd4a53b7c9c475c147a..2a5295f965de7100c958757e384a3cb0c04cd387 100755 (executable)
@@ -1370,6 +1370,15 @@ sub extract_vzdump_config_vma {
 sub extract_vzdump_config {
     my ($cfg, $volid) = @_;
 
+    my ($storeid, $volname) = parse_volume_id($volid);
+    if (defined($storeid)) {
+       my $scfg = storage_config($cfg, $storeid);
+       if ($scfg->{type} eq 'pbs') {
+           storage_check_enabled($cfg, $storeid);
+           return PVE::Storage::PBSPlugin->extract_vzdump_config($scfg, $volname, $storeid);
+       }
+    }
+
     my $archive = abs_filesystem_path($cfg, $volid);
 
     if ($volid =~ /vzdump-(lxc|openvz)-\d+-(\d{4})_(\d{2})_(\d{2})-(\d{2})_(\d{2})_(\d{2})\.(tgz|(tar(\.(gz|lzo))?))$/) {
index 7142474168fdccc4c46c1930a5b75a3f38f1314e..1149cd826cdbb76fb4286d3387f81100e102e262 100644 (file)
@@ -144,6 +144,33 @@ sub run_client_cmd {
 
 # Storage implementation
 
+sub extract_vzdump_config {
+    my ($class, $scfg, $volname, $storeid) = @_;
+
+    my ($vtype, $name, $vmid, undef, undef, undef, $format) = $class->parse_volname($volname);
+
+    my $config = '';
+
+    my $outfunc = sub {
+       my $line = shift;
+       $config .= "$line\n";
+    };
+
+    my $config_name;
+    if ($format eq 'pbs-vm') {
+       $config_name = 'qemu-server.conf';
+    } elsif  ($format eq 'pbs-ct') {
+       $config_name = 'pct.conf';
+    } else {
+       die "unable to extract configuration for backup format '$format'\n";
+    }
+
+    run_raw_client_cmd(undef, $scfg, $storeid, 'restore', [ $name, $config_name, '-' ],
+                      outfunc => $outfunc, errmsg => 'proxmox-backup-client failed');
+
+    return $config;
+}
+
 sub on_add_hook {
     my ($class, $storeid, $scfg, %param) = @_;