Skip to content

Commit 1d26a0e

Browse files
committed
q-dev: fixes
1 parent af77f91 commit 1d26a0e

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed

qubes/api/admin.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import string
2828
import subprocess
2929
import pathlib
30+
import sys
3031

3132
import libvirt
3233
import lxml.etree
@@ -1280,22 +1281,24 @@ async def vm_device_attached(self, endpoint):
12801281
raise qubes.exc.QubesException("qubesd shutdown in progress")
12811282
raise
12821283
if self.arg:
1283-
select_backend, select_ident = self.arg.split('+', 1)
1284+
select_backend, select_ident = self.arg.split('+', 1) # TODO
12841285
device_assignments = [dev for dev in device_assignments
12851286
if (str(dev.backend_domain), dev.port_id)
12861287
== (select_backend, select_ident)]
12871288
# no duplicated devices, but device may not exist, in which case
12881289
# the list is empty
12891290
self.enforce(len(device_assignments) <= 1)
1290-
device_assignments = self.fire_event_for_filter(device_assignments,
1291-
devclass=devclass)
1291+
device_assignments = [
1292+
a.clone(device=self.app.domains[a.backend_name
1293+
].devices[devclass][a.port_id]) for a in device_assignments]
1294+
device_assignments = self.fire_event_for_filter(
1295+
device_assignments, devclass=devclass)
12921296

12931297
dev_info = {
12941298
(f'{assignment.backend_domain}'
12951299
f'+{assignment.port_id}:{assignment.device_id}'):
12961300
assignment.serialize().decode('ascii', errors="ignore")
12971301
for assignment in device_assignments}
1298-
12991302
return ''.join('{} {}\n'.format(port_id, dev_info[port_id])
13001303
for port_id in sorted(dev_info))
13011304

@@ -1363,7 +1366,7 @@ async def vm_device_unassign(self, endpoint):
13631366
ep.name
13641367
for ep in importlib.metadata.entry_points(group='qubes.devices')),
13651368
scope='local', execute=True)
1366-
async def vm_device_unassign(self, endpoint, untrusted_payload):
1369+
async def vm_device_attach(self, endpoint, untrusted_payload):
13671370
devclass = endpoint
13681371
dev = self.load_device_info(devclass)
13691372
assignment = DeviceAssignment.deserialize(

qubes/device_protocol.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1034,7 +1034,7 @@ def __init__(
10341034
mode: Union[str, AssignmentMode] = "manual",
10351035
):
10361036
if isinstance(device, DeviceInfo):
1037-
device = VirtualDevice(device.port, device._device_id)
1037+
device = VirtualDevice(device.port, device.device_id)
10381038
self.virtual_device = device
10391039
self.__options = options or {}
10401040
if isinstance(mode, AssignmentMode):

qubes/tests/devices_block.py

-2
Original file line numberDiff line numberDiff line change
@@ -673,8 +673,6 @@ def test_060_on_qdb_change_added(self):
673673
self.ext.on_qdb_change(back_vm, None, None)
674674

675675
self.assertEqual(self.ext.devices_cache, {'sys-usb': {'sda': None}})
676-
print(back_vm.fired_events, file=sys.stderr) # TODO
677-
print(exp_dev, file=sys.stderr) # TODO
678676
self.assertEqual(
679677
back_vm.fired_events[
680678
('device-added:block', frozenset({('device', exp_dev)}))], 1)

templates/libvirt/xen.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@
157157
{# start external devices from xvdi #}
158158
{% set counter = {'i': 4} %}
159159
{% for assignment in vm.devices.block.get_assigned_devices(True) %}
160-
{% set device = assignment.device %}
160+
{% set device = assignment.devices[0] %}
161161
{% set options = assignment.options %}
162162
{% include 'libvirt/devices/block.xml' %}
163163
{% endfor %}
@@ -167,7 +167,7 @@
167167
{% endif %}
168168
169169
{% for assignment in vm.devices.pci.get_assigned_devices(True) %}
170-
{% set device = assignment.device %}
170+
{% set device = assignment.devices[0] %}
171171
{% set options = assignment.options %}
172172
{% set power_mgmt =
173173
vm.app.domains[0].features.get('suspend-s0ix', False) %}

0 commit comments

Comments
 (0)