Parcourir la source

vm: change kernel=None to kernel=''

vm.kernel property have type 'str'. Putting None there makes a lot of
troubles: it gets encoded as 'None' in qubes.xml and then loaded back as
'None' string, not None value. Also it isn't possible to assign None
value to str property throgh Admin API.

kernel='' is equally good to specify "no kernel from dom0".

QubesOS/qubes-issues#2622
Marek Marczykowski-Górecki il y a 7 ans
Parent
commit
4c4f903fe3
2 fichiers modifiés avec 8 ajouts et 8 suppressions
  1. 6 6
      qubes/storage/kernels.py
  2. 2 2
      qubes/vm/qubesvm.py

+ 6 - 6
qubes/storage/kernels.py

@@ -52,28 +52,28 @@ class LinuxModules(Volume):
     @property
     def kernels_dir(self):
         kernel_version = self.vid
-        if kernel_version is None:
+        if not kernel_version:
             return None
         return os.path.join(self.target_dir, kernel_version)
 
     @property
     def path(self):
         kernels_dir = self.kernels_dir
-        if kernels_dir is None:
+        if not kernels_dir:
             return None
         return os.path.join(kernels_dir, 'modules.img')
 
     @property
     def vmlinuz(self):
         kernels_dir = self.kernels_dir
-        if kernels_dir is None:
+        if not kernels_dir:
             return None
         return os.path.join(kernels_dir, 'vmlinuz')
 
     @property
     def initramfs(self):
         kernels_dir = self.kernels_dir
-        if kernels_dir is None:
+        if not kernels_dir:
             return None
         return os.path.join(kernels_dir, 'initramfs')
 
@@ -82,7 +82,7 @@ class LinuxModules(Volume):
         return {}
 
     def block_device(self):
-        if self.vid is not None:
+        if self.vid:
             return super().block_device()
 
 
@@ -154,7 +154,7 @@ class LinuxKernel(Pool):
         pass
 
     def verify(self, volume):
-        if volume.vid is not None:
+        if volume.vid:
             _check_path(volume.path)
             _check_path(volume.vmlinuz)
             _check_path(volume.initramfs)

+ 2 - 2
qubes/vm/qubesvm.py

@@ -97,8 +97,8 @@ def _setter_name(self, prop, value):
 def _setter_kernel(self, prop, value):
     ''' Helper for setting the domain kernel and running sanity checks on it.
     '''  # pylint: disable=unused-argument
-    if value is None:
-        return value
+    if value is None or value == '':
+        return ''
     value = str(value)
     if '/' in value:
         raise qubes.exc.QubesPropertyValueError(self, prop, value,