restore.py: deal with DispVM templates
This commit is contained in:
parent
68c8b7fafc
commit
2ace32bb73
@ -1472,26 +1472,40 @@ class BackupRestore(object):
|
|||||||
|
|
||||||
# check template
|
# check template
|
||||||
if vm_info.template:
|
if vm_info.template:
|
||||||
template_name = vm_info.template
|
present_on_host = False
|
||||||
try:
|
if vm_info.template in self.app.domains:
|
||||||
host_template = self.app.domains[template_name]
|
host_tpl = self.app.domains[vm_info.template]
|
||||||
except KeyError:
|
if vm_info.vm.klass == 'DispVM':
|
||||||
host_template = None
|
present_on_host = (
|
||||||
present_on_host = (host_template and
|
getattr(host_tpl, 'template_for_dispvms', False))
|
||||||
host_template.klass == 'TemplateVM')
|
|
||||||
present_in_backup = (template_name in restore_info.keys() and
|
|
||||||
restore_info[template_name].good_to_go and
|
|
||||||
restore_info[template_name].vm.klass ==
|
|
||||||
'TemplateVM')
|
|
||||||
if not present_on_host and not present_in_backup:
|
|
||||||
if self.options.use_default_template and \
|
|
||||||
self.app.default_template:
|
|
||||||
if vm_info.orig_template is None:
|
|
||||||
vm_info.orig_template = template_name
|
|
||||||
vm_info.template = self.app.default_template.name
|
|
||||||
else:
|
else:
|
||||||
vm_info.problems.add(
|
present_on_host = host_tpl.klass == 'TemplateVM'
|
||||||
self.VMToRestore.MISSING_TEMPLATE)
|
|
||||||
|
present_in_backup = False
|
||||||
|
if vm_info.template in restore_info:
|
||||||
|
bak_tpl = restore_info[vm_info.template]
|
||||||
|
if bak_tpl.good_to_go:
|
||||||
|
if vm_info.vm.klass == 'DispVM':
|
||||||
|
present_in_backup = (
|
||||||
|
bak_tpl.vm.properties.get(
|
||||||
|
'template_for_dispvms', False))
|
||||||
|
else:
|
||||||
|
present_in_backup = (
|
||||||
|
bak_tpl.vm.klass == 'TemplateVM')
|
||||||
|
|
||||||
|
if not present_on_host and not present_in_backup:
|
||||||
|
if vm_info.vm.klass == 'DispVM':
|
||||||
|
default_template = self.app.default_dispvm
|
||||||
|
else:
|
||||||
|
default_template = self.app.default_template
|
||||||
|
|
||||||
|
if (self.options.use_default_template
|
||||||
|
and default_template is not None):
|
||||||
|
if vm_info.orig_template is None:
|
||||||
|
vm_info.orig_template = vm_info.template
|
||||||
|
vm_info.template = default_template.name
|
||||||
|
else:
|
||||||
|
vm_info.problems.add(self.VMToRestore.MISSING_TEMPLATE)
|
||||||
|
|
||||||
# check netvm
|
# check netvm
|
||||||
if vm_info.vm.properties.get('netvm', None) is not None:
|
if vm_info.vm.properties.get('netvm', None) is not None:
|
||||||
|
Loading…
Reference in New Issue
Block a user