@@ -20,9 +20,16 @@ def __init__(self, conn: Connection, user_name: str, domain: Domain):
2020 user_name , query = {"domain_id" : self .domain .id }
2121 )
2222
23- def assign_role_to_user (self , role_name : str ):
23+ def assign_role_to_user (self , role_name : str , mandatory : bool = True ):
24+
25+ role_id = self .get_role_id_by_name (role_name , mandatory )
26+
27+ if role_id is None :
28+ LOGGER .warning (f"Role '{ role_name } ' not found, not assigning it" )
29+ return
30+
2431 self .conn .identity .assign_project_role_to_user (
25- self .obj .id , self .domain .id , self . get_role_id_by_name ( role_name )
32+ self .obj .id , self .domain .id , role_id
2633 )
2734 LOGGER .info (
2835 f"Assigned role '{ role_name } ' to user '{ self .obj .name } ' in { DomainCache .ident_by_id (self .domain .id )} "
@@ -55,8 +62,11 @@ def delete_user(self):
5562 LOGGER .warning (f"Deleted user: { self .obj .name } / { self .obj .id } " )
5663 self .obj = None
5764
58- def get_role_id_by_name (self , role_name ) -> str :
65+ def get_role_id_by_name (self , role_name , mandatory : bool = True ) -> str | None :
5966 for role in self .conn .identity .roles ():
6067 if role .name == role_name :
6168 return role .id
62- raise RuntimeError (f"No such role { role_name } " )
69+ if mandatory :
70+ raise RuntimeError (f"No such role { role_name } " )
71+ else :
72+ return None
0 commit comments