fix: #1075: Restore VM template to VM and try to convert to template.

The restore of a backup from a VM template will first restore the VM and then
convert the restored VM back into a template.
This automatically performes the steps of the current behaviour, where the user
has to manually convert the restored VM back to a template.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
Christian Ebner 2019-04-19 12:06:07 +02:00 committed by Thomas Lamprecht
parent 4fdc1d3dfc
commit 5294c110bb
2 changed files with 9 additions and 3 deletions

View File

@ -557,14 +557,21 @@ __PACKAGE__->register_method({
PVE::QemuConfig->check_protection($conf, $emsg);
die "$emsg vm is running\n" if PVE::QemuServer::check_running($vmid);
die "$emsg vm is a template\n" if PVE::QemuConfig->is_template($conf);
my $realcmd = sub {
PVE::QemuServer::restore_archive($archive, $vmid, $authuser, {
storage => $storage,
pool => $pool,
unique => $unique,
bwlimit => $bwlimit, });
bwlimit => $bwlimit,
});
my $restored_conf = PVE::QemuConfig->load_config($vmid);
# Convert restored VM to template if backup was VM template
if (PVE::QemuConfig->is_template($restored_conf)) {
warn "Convert to template.\n";
eval { PVE::QemuServer::template_create($vmid, $restored_conf) };
warn $@ if $@;
}
PVE::AccessControl::add_vm_to_pool($vmid, $pool) if $pool;

View File

@ -5904,7 +5904,6 @@ sub restore_update_config_line {
return if $line =~ m/^lock:/;
return if $line =~ m/^unused\d+:/;
return if $line =~ m/^parent:/;
return if $line =~ m/^template:/; # restored VM is never a template
my $dc = PVE::Cluster::cfs_read_file('datacenter.cfg');
if (($line =~ m/^(vlan(\d+)):\s*(\S+)\s*$/)) {