Commit a5da230 1 parent a5086b6 commit a5da230 Copy full SHA for a5da230
File tree 1 file changed +19
-4
lines changed
1 file changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -232,12 +232,27 @@ def detach_device(args):
232
232
subcommand.
233
233
"""
234
234
vm = args .domains [0 ]
235
- if args .device :
236
- device = args .device
237
- # ignore device id, detach any device
238
- device .device_id = '*'
235
+ device = args .device
236
+ if device and device .port_id != '*' :
239
237
assignment = DeviceAssignment (device )
238
+
239
+ try :
240
+ actual_dev = assignment .device
241
+ except ProtocolError as exc :
242
+ raise qubesadmin .exc .QubesException (str (exc ))
243
+
244
+ if not assignment .matches (actual_dev ):
245
+ raise qubesadmin .exc .QubesException (
246
+ f"{ device } is not attached." )
247
+
240
248
vm .devices [args .devclass ].detach (assignment )
249
+ elif args .device :
250
+ assignment = DeviceAssignment (device )
251
+ for ass in (vm .devices [args .devclass ].get_attached_devices ()):
252
+ if assignment .matches (ass .device ):
253
+ vm .devices [args .devclass ].detach (ass )
254
+ else :
255
+ raise qubesadmin .exc .QubesException (f"{ device } is not attached." )
241
256
else :
242
257
for ass in (vm .devices [args .devclass ].get_attached_devices ()):
243
258
vm .devices [args .devclass ].detach (ass )
You can’t perform that action at this time.
0 commit comments