Browse Source

Merge remote-tracking branch 'origin/pr/271'

* origin/pr/271:
  Fix too long line
  Prevent 'qubesd' for crashing if any device backend is not available
Marek Marczykowski-Górecki 4 years ago
parent
commit
205f6215b2
1 changed files with 14 additions and 7 deletions
  1. 14 7
      qubes/vm/__init__.py

+ 14 - 7
qubes/vm/__init__.py

@@ -268,13 +268,20 @@ class BaseVM(qubes.PropertyHolder):
                 for option in node.xpath('./option'):
                     options[option.get('name')] = option.text
 
-                device_assignment = qubes.devices.DeviceAssignment(
-                    self.app.domains[node.get('backend-domain')],
-                    node.get('id'),
-                    options,
-                    persistent=True
-                )
-                self.devices[devclass].load_persistent(device_assignment)
+                try:
+                    device_assignment = qubes.devices.DeviceAssignment(
+                        self.app.domains[node.get('backend-domain')],
+                        node.get('id'),
+                        options,
+                        persistent=True
+                    )
+                    self.devices[devclass].load_persistent(device_assignment)
+                except KeyError:
+                    msg = "{}: Cannot find backend domain '{}' " \
+                          "for device type {} '{}'".format(self.name, node.get(
+                              'backend-domain'), devclass, node.get('id'))
+                    self.log.info(msg)
+                    continue
 
         # tags
         for node in self.xml.xpath('./tags/tag'):