vm/dispvm: fix DispVM storage definition
Specify empty 'source' field, so it gets filled with appropriate template's images. Then also fix recursive 'source' handling - DispVM root volume should point at TemplateVM's root volume as a source, not a AppVM's one - which is also only a snapshot. Fixes QubesOS/qubes-issues#2896
This commit is contained in:
parent
d9db4f747c
commit
148d1cda78
@ -351,7 +351,7 @@ class Storage(object):
|
|||||||
for name, conf in self.vm.volume_config.items():
|
for name, conf in self.vm.volume_config.items():
|
||||||
if 'source' in conf:
|
if 'source' in conf:
|
||||||
template = getattr(vm, 'template', None)
|
template = getattr(vm, 'template', None)
|
||||||
if template:
|
while template:
|
||||||
# we have no control over VM load order,
|
# we have no control over VM load order,
|
||||||
# so initialize storage recursively if needed
|
# so initialize storage recursively if needed
|
||||||
if template.storage is None:
|
if template.storage is None:
|
||||||
@ -360,6 +360,10 @@ class Storage(object):
|
|||||||
# maybe we don't need it at all if it's always from
|
# maybe we don't need it at all if it's always from
|
||||||
# VM's template?
|
# VM's template?
|
||||||
conf['source'] = template.volumes[name]
|
conf['source'] = template.volumes[name]
|
||||||
|
if conf['source'].source is not None:
|
||||||
|
template = getattr(template, 'template', None)
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
self.init_volume(name, conf)
|
self.init_volume(name, conf)
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ class DispVM(qubes.vm.qubesvm.QubesVM):
|
|||||||
'snap_on_start': True,
|
'snap_on_start': True,
|
||||||
'save_on_stop': False,
|
'save_on_stop': False,
|
||||||
'rw': False,
|
'rw': False,
|
||||||
|
'source': None,
|
||||||
},
|
},
|
||||||
'private': {
|
'private': {
|
||||||
'name': 'private',
|
'name': 'private',
|
||||||
@ -54,6 +55,7 @@ class DispVM(qubes.vm.qubesvm.QubesVM):
|
|||||||
'snap_on_start': True,
|
'snap_on_start': True,
|
||||||
'save_on_stop': False,
|
'save_on_stop': False,
|
||||||
'rw': True,
|
'rw': True,
|
||||||
|
'source': None,
|
||||||
},
|
},
|
||||||
'volatile': {
|
'volatile': {
|
||||||
'name': 'volatile',
|
'name': 'volatile',
|
||||||
|
Loading…
Reference in New Issue
Block a user