qubes/vm: fix kernels_dir

This commit is contained in:
Wojtek Porczyk 2015-01-20 16:16:58 +01:00
parent a686e810b9
commit 8d3edbf133
2 changed files with 30 additions and 15 deletions

View File

@ -34,6 +34,10 @@ class AdminVM(qubes.vm.qubesvm.QubesVM):
default=None, default=None,
doc='Dom0 cannot have netvm') doc='Dom0 cannot have netvm')
kernel = qubes.property('netvm', setter=qubes.property.forbidden,
default=None,
doc='There are other ways to set kernel for Dom0.')
@property @property
def xid(self): def xid(self):
'''Always ``0``. '''Always ``0``.
@ -53,6 +57,16 @@ class AdminVM(qubes.vm.qubesvm.QubesVM):
return None return None
@property
def kernels_dir(self):
'''Always :py:obj:`None`.
.. seealso:
:py:attr:`qubes.vm.qubesvm.QubesVM.kernels_dir`
'''
return None
# XXX probably unneeded, will return None as we don't have netvm # XXX probably unneeded, will return None as we don't have netvm
# @property # @property
# def ip(self): # def ip(self):

View File

@ -333,6 +333,20 @@ class QubesVM(qubes.vm.BaseVM):
return self.storage.volatile_img return self.storage.volatile_img
@property
def kernels_dir(self):
'''Directory where kernel resides.
If :py:attr:`self.kernel` is :py:obj:`None`, the this points inside
:py:attr:`self.dir_path`
'''
return os.path.join(
qubes.config.system_path['qubes_kernels_base_dir'], self.kernel) \
if self.kernel is not None \
else os.path.join(self.dir_path,
qubes.config.vm_files['kernels_subdir'])
# XXX shouldn't this go elsewhere? # XXX shouldn't this go elsewhere?
@property @property
def updateable(self): def updateable(self):
@ -450,9 +464,9 @@ class QubesVM(qubes.vm.BaseVM):
# Initialize VM image storage class # Initialize VM image storage class
self.storage = qubes.storage.get_storage(self) self.storage = qubes.storage.get_storage(self)
if hasattr(self, 'kernels_dir'): if self.kernels_dir is not None: # it is None for AdminVM
self.storage.modules_img = os.path.join(self.kernels_dir, self.storage.modules_img = os.path.join(self.kernels_dir,
"modules.img") 'modules.img')
self.storage.modules_img_rw = self.kernel is None self.storage.modules_img_rw = self.kernel is None
# fire hooks # fire hooks
@ -581,10 +595,6 @@ class QubesVM(qubes.vm.BaseVM):
self.fire_event('property-set:conf_file', 'conf_file', self.fire_event('property-set:conf_file', 'conf_file',
new_conf, old_conf) new_conf, old_conf)
if hasattr(self, 'kernels_dir') and self.kernels_dir is not None:
self.kernels_dir = self.kernels_dir.replace(
old_dirpath, new_dirpath)
self._update_libvirt_domain() self._update_libvirt_domain()
@ -1726,15 +1736,6 @@ class QubesVM(qubes.vm.BaseVM):
# XXX probably will be obsoleted by .events_enabled # XXX probably will be obsoleted by .events_enabled
# "_do_not_reset_firewall": { "func": lambda x: False }, # "_do_not_reset_firewall": { "func": lambda x: False },
# XXX WTF?
# "kernels_dir": {
# # for backward compatibility (or another rare case): kernel=None ->
# # kernel in VM dir
# "func": lambda x: \
# os.path.join(system_path["qubes_kernels_base_dir"],
# self.kernel) if self.kernel is not None \
# else os.path.join(self.dir_path,
# vm_files["kernels_subdir"]) },
# "_start_guid_first": { "func": lambda x: False }, # "_start_guid_first": { "func": lambda x: False },
# } # }