@@ -238,29 +238,35 @@ def __init__(self, backend_domain, port_id, devclass):
238
238
self .__devclass = devclass
239
239
240
240
def __hash__ (self ):
241
- return hash ((self .backend_domain . name , self .port_id , self .devclass ))
241
+ return hash ((self .backend_name , self .port_id , self .devclass ))
242
242
243
243
def __eq__ (self , other ):
244
244
if isinstance (other , Port ):
245
245
return (
246
- self .backend_domain == other .backend_domain and
247
- self .port_id == other .port_id and
248
- self .devclass == other .devclass
246
+ self .backend_name == other .backend_name and
247
+ self .port_id == other .port_id and
248
+ self .devclass == other .devclass
249
249
)
250
250
return False
251
251
252
252
def __lt__ (self , other ):
253
253
if isinstance (other , Port ):
254
- return (self .backend_domain . name , self .devclass , self .port_id ) < \
255
- (other . backend_domain . name , other .devclass , other .port_id )
254
+ return (self .backend_name , self .devclass , self .port_id ) < \
255
+ (self . backend_name , other .devclass , other .port_id )
256
256
raise TypeError (f"Comparing instances of 'Port' and '{ type (other )} ' "
257
257
"is not supported" )
258
258
259
259
def __repr__ (self ):
260
- return f"{ self .backend_domain . name } +{ self .port_id } "
260
+ return f"{ self .backend_name } +{ self .port_id } "
261
261
262
262
def __str__ (self ):
263
- return f"{ self .backend_domain .name } :{ self .port_id } "
263
+ return f"{ self .backend_name } :{ self .port_id } "
264
+
265
+ @property
266
+ def backend_name (self ) -> str :
267
+ if self .backend_domain is not None :
268
+ return self .backend_domain .name
269
+ return "*"
264
270
265
271
@classmethod
266
272
def from_qarg (
@@ -304,7 +310,7 @@ def port_id(self) -> str:
304
310
return self .__port_id
305
311
306
312
@property
307
- def backend_domain (self ) -> QubesVM :
313
+ def backend_domain (self ) -> Optional [ QubesVM ] :
308
314
""" Which domain exposed this port. (immutable)"""
309
315
return self .__backend_domain
310
316
@@ -367,6 +373,13 @@ def backend_domain(self):
367
373
return self .port .backend_domain
368
374
return '*'
369
375
376
+ @property
377
+ def backend_name (self ):
378
+ if self .port != '*' :
379
+ return self .port .backend_name
380
+ return '*'
381
+
382
+
370
383
@property
371
384
def port_id (self ):
372
385
if self .port != '*' and self .port .port_id is not None :
@@ -478,7 +491,8 @@ def _parse(
478
491
) -> 'VirtualDevice' :
479
492
if backend is None :
480
493
backend_name , identity = representation .split (sep , 1 )
481
- backend = get_domain (backend_name )
494
+ if backend_name != '*' :
495
+ backend = get_domain (backend_name )
482
496
else :
483
497
identity = representation
484
498
port_id , _ , devid = identity .partition (':' )
@@ -1070,15 +1084,19 @@ def __lt__(self, other):
1070
1084
1071
1085
@property
1072
1086
def backend_domain (self ):
1073
- return self .virtual_device .port .backend_domain
1087
+ return self .virtual_device .backend_domain
1088
+
1089
+ @property
1090
+ def backend_name (self ) -> str :
1091
+ return self .virtual_device .backend_name
1074
1092
1075
1093
@property
1076
1094
def port_id (self ):
1077
- return self .virtual_device .port . port_id
1095
+ return self .virtual_device .port_id
1078
1096
1079
1097
@property
1080
1098
def devclass (self ):
1081
- return self .virtual_device .port . devclass
1099
+ return self .virtual_device .devclass
1082
1100
1083
1101
@property
1084
1102
def device_id (self ):
0 commit comments