QubesVm save the name of the storage pool used
This commit is contained in:
parent
d1685a13df
commit
78891dd70f
@ -40,12 +40,12 @@ import signal
|
|||||||
from qubes import qmemman
|
from qubes import qmemman
|
||||||
from qubes import qmemman_algo
|
from qubes import qmemman_algo
|
||||||
import libvirt
|
import libvirt
|
||||||
import warnings
|
|
||||||
|
|
||||||
from qubes.qubes import dry_run,vmm
|
from qubes.qubes import dry_run,vmm
|
||||||
from qubes.qubes import register_qubes_vm_class
|
from qubes.qubes import register_qubes_vm_class
|
||||||
from qubes.qubes import QubesVmCollection,QubesException,QubesHost,QubesVmLabels
|
from qubes.qubes import QubesVmCollection,QubesException,QubesHost,QubesVmLabels
|
||||||
from qubes.qubes import defaults,system_path,vm_files,qubes_max_qid
|
from qubes.qubes import defaults,system_path,vm_files,qubes_max_qid
|
||||||
|
from qubes.storage import get_pool
|
||||||
|
|
||||||
qmemman_present = False
|
qmemman_present = False
|
||||||
try:
|
try:
|
||||||
@ -109,6 +109,7 @@ class QubesVm(object):
|
|||||||
"name": { "order": 1 },
|
"name": { "order": 1 },
|
||||||
"uuid": { "order": 0, "eval": 'uuid.UUID(value) if value else None' },
|
"uuid": { "order": 0, "eval": 'uuid.UUID(value) if value else None' },
|
||||||
"dir_path": { "default": None, "order": 2 },
|
"dir_path": { "default": None, "order": 2 },
|
||||||
|
"pool_name": { "default":"default" },
|
||||||
"conf_file": {
|
"conf_file": {
|
||||||
"func": lambda value: self.absolute_path(value, self.name +
|
"func": lambda value: self.absolute_path(value, self.name +
|
||||||
".conf"),
|
".conf"),
|
||||||
@ -198,7 +199,7 @@ class QubesVm(object):
|
|||||||
'kernelopts', 'services', 'installed_by_rpm',\
|
'kernelopts', 'services', 'installed_by_rpm',\
|
||||||
'uses_default_netvm', 'include_in_backups', 'debug',\
|
'uses_default_netvm', 'include_in_backups', 'debug',\
|
||||||
'qrexec_timeout', 'autostart', 'uses_default_dispvm_netvm',
|
'qrexec_timeout', 'autostart', 'uses_default_dispvm_netvm',
|
||||||
'backup_content', 'backup_size', 'backup_path' ]:
|
'backup_content', 'backup_size', 'backup_path', 'pool_name' ]:
|
||||||
attrs[prop]['save'] = lambda prop=prop: str(getattr(self, prop))
|
attrs[prop]['save'] = lambda prop=prop: str(getattr(self, prop))
|
||||||
# Simple paths
|
# Simple paths
|
||||||
for prop in ['conf_file', 'firewall_conf']:
|
for prop in ['conf_file', 'firewall_conf']:
|
||||||
@ -345,7 +346,7 @@ class QubesVm(object):
|
|||||||
self.services['qubes-update-check'] = False
|
self.services['qubes-update-check'] = False
|
||||||
|
|
||||||
# Initialize VM image storage class
|
# Initialize VM image storage class
|
||||||
self.storage = defaults["storage_class"](self)
|
self.storage = get_pool(self.pool_name, self).getStorage()
|
||||||
if hasattr(self, 'kernels_dir'):
|
if hasattr(self, 'kernels_dir'):
|
||||||
modules_path = os.path.join(self.kernels_dir,
|
modules_path = os.path.join(self.kernels_dir,
|
||||||
"modules.img")
|
"modules.img")
|
||||||
|
@ -239,11 +239,10 @@ def load(string):
|
|||||||
return getattr(module, klass)
|
return getattr(module, klass)
|
||||||
|
|
||||||
|
|
||||||
def get_pool(vm):
|
def get_pool(name, vm):
|
||||||
""" Instantiates the storage for the specified vm """
|
""" Instantiates the storage for the specified vm """
|
||||||
config = _get_storage_config_parser()
|
config = _get_storage_config_parser()
|
||||||
|
|
||||||
name = vm.storage_pool
|
|
||||||
klass = _get_pool_klass(name, config)
|
klass = _get_pool_klass(name, config)
|
||||||
|
|
||||||
keys = [k for k in config.options(name) if k != 'type' and k != 'class']
|
keys = [k for k in config.options(name) if k != 'type' and k != 'class']
|
||||||
|
@ -28,7 +28,7 @@ import re
|
|||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from qubes.qubes import QubesException, vm_files
|
from qubes.qubes import QubesException, defaults, vm_files
|
||||||
from qubes.storage import Pool, QubesVmStorage
|
from qubes.storage import Pool, QubesVmStorage
|
||||||
|
|
||||||
|
|
||||||
@ -252,4 +252,8 @@ class XenStorage(QubesVmStorage):
|
|||||||
|
|
||||||
|
|
||||||
class XenPool(Pool):
|
class XenPool(Pool):
|
||||||
pass
|
def __init__(self, vm):
|
||||||
|
self.vm = vm
|
||||||
|
|
||||||
|
def getStorage(self):
|
||||||
|
return defaults['storage_class'](self.vm)
|
||||||
|
@ -30,7 +30,7 @@ class TC_00_Storage(SystemTestsMixin, QubesTestCase):
|
|||||||
""" Dumps storage instance to a storage string """
|
""" Dumps storage instance to a storage string """
|
||||||
vmname = self.make_vm_name('appvm')
|
vmname = self.make_vm_name('appvm')
|
||||||
template = self.qc.get_default_template()
|
template = self.qc.get_default_template()
|
||||||
storage = self.qc.add_new_vm('QubesAppVm', name=vmname, pool='default',
|
storage = self.qc.add_new_vm('QubesAppVm', name=vmname, pool_name='default',
|
||||||
template=template).storage
|
template=template).storage
|
||||||
result = qubes.storage.dump(storage)
|
result = qubes.storage.dump(storage)
|
||||||
expected = 'qubes.storage.xen.XenStorage'
|
expected = 'qubes.storage.xen.XenStorage'
|
||||||
@ -68,5 +68,5 @@ class TC_01_Storage(SystemTestsMixin, QubesTestCase):
|
|||||||
vmname = self.make_vm_name('appvm')
|
vmname = self.make_vm_name('appvm')
|
||||||
template = self.qc.get_default_template()
|
template = self.qc.get_default_template()
|
||||||
vm = self.qc.add_new_vm('QubesAppVm', name=vmname, template=template,
|
vm = self.qc.add_new_vm('QubesAppVm', name=vmname, template=template,
|
||||||
pool='default')
|
pool_name='default')
|
||||||
self.assertIsInstance(vm.storage, XenStorage)
|
self.assertIsInstance(vm.storage, XenStorage)
|
||||||
|
Loading…
Reference in New Issue
Block a user