@@ -1190,8 +1190,7 @@ def imp(self, spec):
1190
1190
1191
1191
def service (self , entity_id , typ , service , binding = None ):
1192
1192
known_entity = False
1193
- logger .debug ("service(%s, %s, %s, %s)" , entity_id , typ , service ,
1194
- binding )
1193
+ logger .debug ("service(%s, %s, %s, %s)" , entity_id , typ , service , binding )
1195
1194
for key , _md in self .metadata .items ():
1196
1195
srvs = _md .service (entity_id , typ , service , binding )
1197
1196
if srvs :
@@ -1522,6 +1521,29 @@ def registration_info(self, entity_id):
1522
1521
}
1523
1522
return res
1524
1523
1524
+ def registration_info_typ (self , entity_id , typ ):
1525
+ try :
1526
+ md = self .__getitem__ (entity_id )
1527
+ except KeyError :
1528
+ md = {}
1529
+
1530
+ services_of_type = md .get (typ ) or []
1531
+ typ_reg_info = (
1532
+ {
1533
+ "registration_authority" : elem .get ("registration_authority" ),
1534
+ "registration_instant" : elem .get ("registration_instant" ),
1535
+ "registration_policy" : {
1536
+ policy ["lang" ]: policy ["text" ]
1537
+ for policy in elem .get ("registration_policy" , [])
1538
+ if policy .get ("__class__" ) == classnames ["mdrpi_registration_policy" ]
1539
+ },
1540
+ }
1541
+ for srv in services_of_type
1542
+ for elem in srv .get ("extensions" , {}).get ("extension_elements" , [])
1543
+ if elem .get ("__class__" ) == classnames ["mdrpi_registration_info" ]
1544
+ )
1545
+ return typ_reg_info
1546
+
1525
1547
def _lookup_elements_by_cls (self , root , cls ):
1526
1548
elements = (
1527
1549
element
0 commit comments