6060
6161 from .annotation import AnnotationType
6262 from .resource_pool import ResourcePool , ResourcePoolManagement
63+ from .user import UserManagement
6364
6465
6566_LOGGER = logging .getLogger (__name__ )
@@ -93,7 +94,6 @@ class Lab:
9394 "connector_mappings" : "labs/{lab_id}/connector_mappings" ,
9495 "resource_pools" : "labs/{lab_id}/resource_pools" ,
9596 "annotations" : "labs/{lab_id}/annotations" ,
96- "user_list" : "users" ,
9797 }
9898
9999 def __init__ (
@@ -110,6 +110,7 @@ def __init__(
110110 wait_time : int | float = 5 ,
111111 hostname : str | None = None ,
112112 resource_pool_manager : ResourcePoolManagement | None = None ,
113+ user_management : UserManagement | None = None ,
113114 ) -> None :
114115 """
115116 A VIRL2 lab network topology.
@@ -129,6 +130,8 @@ def __init__(
129130 :param hostname: Hostname/IP and port for pyATS console terminal server.
130131 :param resource_pool_manager: ResourcePoolManagement object shared
131132 with parent ClientLibrary.
133+ :param user_management: UserManagement object shared with parent
134+ ClientLibrary for resolving user IDs to usernames.
132135 :raises VirlException: If the lab object is created without
133136 a resource pool manager.
134137 """
@@ -201,6 +204,12 @@ def __init__(
201204 "because it is missing a resource pool manager."
202205 )
203206 self ._resource_pool_manager = resource_pool_manager
207+ if user_management is None :
208+ raise VirlException (
209+ f"Lab object for lab { title or lab_id } cannot be created "
210+ "because it is missing a user management."
211+ )
212+ self ._user_management = user_management
204213 self ._resource_pools = []
205214 self ._stale = False
206215 self ._synced_configs = True
@@ -2458,10 +2467,7 @@ def _set_owner(
24582467 :param user_name: Username.
24592468 """
24602469 if user_id :
2461- url = self ._url_for ("user_list" )
2462- users = self ._session .get (url ).json ()
2463- for user in users :
2464- if user ["id" ] == user_id :
2465- user_name = user ["username" ]
2466- break
2470+ resolved = self ._user_management .get_username (user_id )
2471+ if resolved is not None :
2472+ user_name = resolved
24672473 self ._owner = user_name
0 commit comments