qvm-template-postprocess: extract config handling into separate function
Keep post_install() short.
This commit is contained in:
parent
bcf59579f1
commit
c4efdf41c5
@ -309,48 +309,7 @@ def post_install(args):
|
|||||||
|
|
||||||
conf_path = os.path.join(args.dir, 'template.conf')
|
conf_path = os.path.join(args.dir, 'template.conf')
|
||||||
if os.path.exists(conf_path):
|
if os.path.exists(conf_path):
|
||||||
conf = parse_template_config(conf_path)
|
import_template_config(args, conf_path, vm)
|
||||||
# Import qvm-feature tags
|
|
||||||
for key in (
|
|
||||||
'no-monitor-layout',
|
|
||||||
'pci-e820-host',
|
|
||||||
'linux-stubdom',
|
|
||||||
'gui',
|
|
||||||
'gui-emulated'
|
|
||||||
'qrexec'):
|
|
||||||
if key in conf:
|
|
||||||
if conf[key] == '1':
|
|
||||||
vm.features[key] = conf[key]
|
|
||||||
else:
|
|
||||||
vm.log.warning(
|
|
||||||
'ignoring boolean config flags that are not \'1\'')
|
|
||||||
for key in (
|
|
||||||
'net.fake-ip',
|
|
||||||
'net.fake-gateway',
|
|
||||||
'net.fake-netmask'):
|
|
||||||
if key in conf:
|
|
||||||
if validate_ip(conf[key]):
|
|
||||||
vm.features[key] = conf[key]
|
|
||||||
else:
|
|
||||||
vm.log.warning(
|
|
||||||
'ignoring invalid value for \'%s\'', key)
|
|
||||||
if 'virt-mode' in conf:
|
|
||||||
if conf['virt-mode'] == 'pv' and args.allow_pv:
|
|
||||||
vm.virt_mode = 'pv'
|
|
||||||
elif conf['virt-mode'] == 'pv':
|
|
||||||
vm.log.warning(
|
|
||||||
'--allow-pv not set, ignoring request to change virt-mode')
|
|
||||||
elif conf['virt-mode'] in ('pvh', 'hvm'):
|
|
||||||
vm.virt_mode = conf['virt-mode']
|
|
||||||
else:
|
|
||||||
vm.log.warning('ignoring invalid value for virt-mode')
|
|
||||||
|
|
||||||
if 'kernel' in conf:
|
|
||||||
if conf['kernel'] == '':
|
|
||||||
vm.kernel = ''
|
|
||||||
else:
|
|
||||||
vm.log.warning(
|
|
||||||
'Currently only supports setting kernel to (none)')
|
|
||||||
|
|
||||||
if not args.skip_start:
|
if not args.skip_start:
|
||||||
yield from call_postinstall_service(vm)
|
yield from call_postinstall_service(vm)
|
||||||
@ -372,6 +331,60 @@ def post_install(args):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
def import_template_config(args, conf_path, vm):
|
||||||
|
"""
|
||||||
|
Parse template.conf and apply its content to the just installed TemplateVM
|
||||||
|
|
||||||
|
:param args: arguments for qvm-template-postprocess (used for --allow-pv
|
||||||
|
option and possibly some other in the future)
|
||||||
|
:param conf_path: path to the template.conf
|
||||||
|
:param vm: Template to operate on
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
conf = parse_template_config(conf_path)
|
||||||
|
# Import qvm-feature tags
|
||||||
|
for key in (
|
||||||
|
'no-monitor-layout',
|
||||||
|
'pci-e820-host',
|
||||||
|
'linux-stubdom',
|
||||||
|
'gui',
|
||||||
|
'gui-emulated'
|
||||||
|
'qrexec'):
|
||||||
|
if key in conf:
|
||||||
|
if conf[key] == '1':
|
||||||
|
vm.features[key] = conf[key]
|
||||||
|
else:
|
||||||
|
vm.log.warning(
|
||||||
|
'ignoring boolean config flags that are not \'1\'')
|
||||||
|
for key in (
|
||||||
|
'net.fake-ip',
|
||||||
|
'net.fake-gateway',
|
||||||
|
'net.fake-netmask'):
|
||||||
|
if key in conf:
|
||||||
|
if validate_ip(conf[key]):
|
||||||
|
vm.features[key] = conf[key]
|
||||||
|
else:
|
||||||
|
vm.log.warning(
|
||||||
|
'ignoring invalid value for \'%s\'', key)
|
||||||
|
if 'virt-mode' in conf:
|
||||||
|
if conf['virt-mode'] == 'pv' and args.allow_pv:
|
||||||
|
vm.virt_mode = 'pv'
|
||||||
|
elif conf['virt-mode'] == 'pv':
|
||||||
|
vm.log.warning(
|
||||||
|
'--allow-pv not set, ignoring request to change virt-mode')
|
||||||
|
elif conf['virt-mode'] in ('pvh', 'hvm'):
|
||||||
|
vm.virt_mode = conf['virt-mode']
|
||||||
|
else:
|
||||||
|
vm.log.warning('ignoring invalid value for virt-mode')
|
||||||
|
|
||||||
|
if 'kernel' in conf:
|
||||||
|
if conf['kernel'] == '':
|
||||||
|
vm.kernel = ''
|
||||||
|
else:
|
||||||
|
vm.log.warning(
|
||||||
|
'Currently only supports setting kernel to (none)')
|
||||||
|
|
||||||
|
|
||||||
def pre_remove(args):
|
def pre_remove(args):
|
||||||
'''Handle pre-removal tasks'''
|
'''Handle pre-removal tasks'''
|
||||||
app = args.app
|
app = args.app
|
||||||
|
Loading…
Reference in New Issue
Block a user