Skip to content

Commit 56559c0

Browse files
committed
q-dev: add tests
1 parent 9f19108 commit 56559c0

File tree

5 files changed

+216
-103
lines changed

5 files changed

+216
-103
lines changed

qubes/api/admin.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1281,7 +1281,7 @@ async def vm_device_attached(self, endpoint):
12811281
raise qubes.exc.QubesException("qubesd shutdown in progress")
12821282
raise
12831283
if self.arg:
1284-
select_backend, select_ident = self.arg.split('+', 1) # TODO
1284+
select_backend, select_ident = self.arg.split('+', 1)
12851285
device_assignments = [dev for dev in device_assignments
12861286
if (str(dev.backend_domain), dev.port_id)
12871287
== (select_backend, select_ident)]
@@ -1421,7 +1421,7 @@ async def vm_device_set_required(self, endpoint, untrusted_payload):
14211421

14221422
dev = VirtualDevice.from_qarg(self.arg, devclass, self.app.domains)
14231423

1424-
self.fire_event_for_permission(device=dev, assignment=assignment)
1424+
self.fire_event_for_permission(device=dev, mode=assignment)
14251425

14261426
await self.dest.devices[devclass].update_required(dev, assignment)
14271427
self.app.save()

qubes/devices.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,9 @@ async def assign(self, assignment: DeviceAssignment):
238238
f'{self._bus} device {device!s} '
239239
f'already assigned to {self._vm!s}')
240240

241+
if not assignment.attach_automatically:
242+
raise ValueError('Only auto-attachable devices can be assigned.')
243+
241244
self._set.add(assignment)
242245

243246
await self._vm.fire_event_async(
@@ -281,8 +284,10 @@ async def update_required(self, device: VirtualDevice, required: bool):
281284
if assignment.required == required:
282285
return
283286

284-
assignments[0] = assignment.clone(
287+
new_assignment = assignment.clone(
285288
mode='required' if required else 'auto-attach')
289+
self._set.discard(assignment)
290+
self._set.add(new_assignment)
286291
await self._vm.fire_event_async(
287292
'device-assignment-changed:' + self._bus, device=device)
288293

qubes/ext/admin.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ def on_tag_add(self, vm, event, tag, **kwargs):
168168

169169
@qubes.ext.handler(*(f'admin-permission:admin.vm.device.{ep.name}.Attach'
170170
for ep in importlib.metadata.entry_points(group='qubes.devices')))
171-
def on_usb_device_attacg(
171+
def on_device_attach(
172172
self, vm, event, dest, arg, device, mode, options, **kwargs
173173
):
174174
# ignore auto-attachment

0 commit comments

Comments
 (0)