From 8d3edbf1333c0e20675e17daa8ae57ac73bb21f7 Mon Sep 17 00:00:00 2001 From: Wojtek Porczyk Date: Tue, 20 Jan 2015 16:16:58 +0100 Subject: [PATCH] qubes/vm: fix kernels_dir --- qubes/vm/adminvm.py | 14 ++++++++++++++ qubes/vm/qubesvm.py | 31 ++++++++++++++++--------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/qubes/vm/adminvm.py b/qubes/vm/adminvm.py index aae10dee..0cce6ad3 100644 --- a/qubes/vm/adminvm.py +++ b/qubes/vm/adminvm.py @@ -34,6 +34,10 @@ class AdminVM(qubes.vm.qubesvm.QubesVM): default=None, 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 def xid(self): '''Always ``0``. @@ -53,6 +57,16 @@ class AdminVM(qubes.vm.qubesvm.QubesVM): 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 # @property # def ip(self): diff --git a/qubes/vm/qubesvm.py b/qubes/vm/qubesvm.py index 1d7ba9ab..c176f382 100644 --- a/qubes/vm/qubesvm.py +++ b/qubes/vm/qubesvm.py @@ -333,6 +333,20 @@ class QubesVM(qubes.vm.BaseVM): 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? @property def updateable(self): @@ -450,9 +464,9 @@ class QubesVM(qubes.vm.BaseVM): # Initialize VM image storage class 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, - "modules.img") + 'modules.img') self.storage.modules_img_rw = self.kernel is None # fire hooks @@ -581,10 +595,6 @@ class QubesVM(qubes.vm.BaseVM): self.fire_event('property-set:conf_file', 'conf_file', 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() @@ -1726,15 +1736,6 @@ class QubesVM(qubes.vm.BaseVM): # XXX probably will be obsoleted by .events_enabled # "_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 }, # }