Преглед изворни кода

Make sure that new value of uses_default_kernel persists

Prior to this commit, whenever the user selected the default kernel in
a VM's "Advanced Settings" dialog in Qubes Manager, the
"uses_default_kernel" flag would not be saved as expected. Instead of
the intent to use the default kernel version for the VM in the future,
the VM would be stuck with the specific kernel version and not any new
future default kernel versions.

This issue occurs because the "kernel" property setter for the QubesVm
class resets the "uses_default_kernel" member variable to False, and
Qubes Manager sets the "uses_default_kernel" property before setting the
"kernel" property.

Resolve this issue by making sure that the "uses_default_kernel"
member variable of the VM in question is set after the "kernel" member
variable.
M. Vefa Bicakci пре 7 година
родитељ
комит
a2d0b128b7
1 измењених фајлова са 7 додато и 3 уклоњено
  1. 7 3
      qubesmanager/settings.py

+ 7 - 3
qubesmanager/settings.py

@@ -630,17 +630,21 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog):
                 if self.kernel.currentIndex() != self.kernel_idx:
                 if self.kernel.currentIndex() != self.kernel_idx:
                     new_kernel = str(self.kernel.currentText())
                     new_kernel = str(self.kernel.currentText())
                     new_kernel = new_kernel.split(' ')[0]
                     new_kernel = new_kernel.split(' ')[0]
+                    uses_default_kernel = False
+
                     if new_kernel == "default":
                     if new_kernel == "default":
                         kernel = self.qvm_collection.get_default_kernel()
                         kernel = self.qvm_collection.get_default_kernel()
-                        self.vm.uses_default_kernel = True
+                        uses_default_kernel = True
                     elif new_kernel == "none":
                     elif new_kernel == "none":
                         kernel = None
                         kernel = None
-                        self.vm.uses_default_kernel = False
                     else:
                     else:
                         kernel = new_kernel
                         kernel = new_kernel
-                        self.vm.uses_default_kernel = False
 
 
                     self.vm.kernel = kernel
                     self.vm.kernel = kernel
+                    # Set self.vm.uses_default_kernel after self.vm.kernel to ensure that
+                    # the correct value persists after QubesVm.kernel resets self.vm.uses_default_kernel
+                    # to False.
+                    self.vm.uses_default_kernel = uses_default_kernel
                     self.anything_changed = True
                     self.anything_changed = True
             except Exception as ex:
             except Exception as ex:
                 msg.append(str(ex))
                 msg.append(str(ex))