77import  time 
88import  traceback 
99from  contextlib  import  asynccontextmanager 
10- from  typing  import  Any , AsyncIterator , Dict ,  List ,  Mapping , Optional ,  Set ,  Tuple 
10+ from  typing  import  Any , AsyncIterator , Mapping , Optional 
1111
1212import  aiodocker 
1313from  aiodocker .utils  import  clean_filters , clean_map 
1717from  models_library .projects  import  ProjectID 
1818from  models_library .projects_nodes_io  import  NodeID 
1919from  models_library .users  import  UserID 
20- from  packaging  import  version 
2120from  servicelib .utils  import  logged_gather 
2221from  tenacity ._asyncio  import  AsyncRetrying 
2322from  tenacity .retry  import  retry_if_exception_type 
4342log  =  logging .getLogger (__name__ )
4443
4544
46- def  _monkey_patch_aiodocker () ->  None :
47-     """Raises an error once the library is up to date.""" 
48-     from  aiodocker  import  volumes 
49-     from  aiodocker .volumes  import  DockerVolume 
50- 
51-     if  version .parse (aiodocker .__version__ ) >  version .parse ("0.21.0" ):
52-         raise  RuntimeError (
53-             "Please check that PR https://github.com/aio-libs/aiodocker/pull/623 " 
54-             "is not part of the current bump version. " 
55-             "Otherwise, if the current PR is part of this new release " 
56-             "remove monkey_patch." 
57-         )
58- 
59-     # pylint: disable=protected-access 
60-     async  def  _custom_volumes_list (self , * , filters = None ):
61-         """ 
62-         Return a list of volumes 
63- 
64-         Args: 
65-             filters: a dict with a list of filters 
66- 
67-         Available filters: 
68-             dangling=<boolean> 
69-             driver=<volume-driver-name> 
70-             label=<key> or label=<key>:<value> 
71-             name=<volume-name> 
72-         """ 
73-         params  =  {} if  filters  is  None  else  {"filters" : clean_filters (filters )}
74- 
75-         data  =  await  self .docker ._query_json ("volumes" , params = params )
76-         return  data 
77- 
78-     async  def  _custom_volumes_get (self , id ):  # pylint: disable=redefined-builtin 
79-         data  =  await  self .docker ._query_json ("volumes/{id}" .format (id = id ), method = "GET" )
80-         return  DockerVolume (self .docker , data ["Name" ])
81- 
82-     setattr (volumes .DockerVolumes , "list" , _custom_volumes_list )
83-     setattr (volumes .DockerVolumes , "get" , _custom_volumes_get )
84- 
85- 
86- _monkey_patch_aiodocker ()
87- 
88- 
8945class  _RetryError (Exception ):
9046    pass 
9147
@@ -106,7 +62,7 @@ async def docker_client() -> AsyncIterator[aiodocker.docker.Docker]:
10662            await  client .close ()
10763
10864
109- async  def  get_swarm_network (dynamic_sidecar_settings : DynamicSidecarSettings ) ->  Dict :
65+ async  def  get_swarm_network (dynamic_sidecar_settings : DynamicSidecarSettings ) ->  dict :
11066    async  with  docker_client () as  client :
11167        all_networks  =  await  client .networks .list ()
11268
@@ -127,7 +83,7 @@ async def get_swarm_network(dynamic_sidecar_settings: DynamicSidecarSettings) ->
12783    return  networks [0 ]
12884
12985
130- async  def  create_network (network_config : Dict [str , Any ]) ->  str :
86+ async  def  create_network (network_config : dict [str , Any ]) ->  str :
13187    async  with  docker_client () as  client :
13288        try :
13389            docker_network  =  await  client .networks .create (network_config )
@@ -168,17 +124,17 @@ async def create_service_and_get_id(create_service_data: AioDockerServiceSpec) -
168124    return  service_start_result ["ID" ]
169125
170126
171- async  def  inspect_service (service_id : str ) ->  Dict [str , Any ]:
127+ async  def  inspect_service (service_id : str ) ->  dict [str , Any ]:
172128    async  with  docker_client () as  client :
173129        return  await  client .services .inspect (service_id )
174130
175131
176132async  def  get_dynamic_sidecars_to_observe (
177133    dynamic_sidecar_settings : DynamicSidecarSettings ,
178- ) ->  List [SchedulerData ]:
134+ ) ->  list [SchedulerData ]:
179135    """called when scheduler is started to discover new services to observe""" 
180136    async  with  docker_client () as  client :
181-         running_dynamic_sidecar_services : List [
137+         running_dynamic_sidecar_services : list [
182138            Mapping [str , Any ]
183139        ] =  await  client .services .list (
184140            filters = {
@@ -196,12 +152,12 @@ async def get_dynamic_sidecars_to_observe(
196152async  def  _extract_task_data_from_service_for_state (
197153    service_id : str ,
198154    dynamic_sidecar_settings : DynamicSidecarSettings ,
199-     target_statuses : Set [str ],
200- ) ->  Dict [str , Any ]:
155+     target_statuses : set [str ],
156+ ) ->  dict [str , Any ]:
201157    """Waits until the dynamic-sidecar task is in one of the target_statuses 
202158    and then returns the task""" 
203159
204-     async  def  _sleep_or_error (started : float , task : Dict ):
160+     async  def  _sleep_or_error (started : float , task : dict ):
205161        await  asyncio .sleep (1.0 )
206162        elapsed  =  time .time () -  started 
207163        if  (
@@ -217,7 +173,7 @@ async def _sleep_or_error(started: float, task: Dict):
217173
218174    async  with  docker_client () as  client :
219175        service_state : Optional [str ] =  None 
220-         task : Dict [str , Any ] =  {}
176+         task : dict [str , Any ] =  {}
221177
222178        started  =  time .time ()
223179
@@ -275,8 +231,8 @@ async def get_service_placement(
275231    return  task ["NodeID" ]
276232
277233
278- async  def  get_dynamic_sidecar_state (service_id : str ) ->  Tuple [ServiceState , str ]:
279-     def  _make_pending () ->  Tuple [ServiceState , str ]:
234+ async  def  get_dynamic_sidecar_state (service_id : str ) ->  tuple [ServiceState , str ]:
235+     def  _make_pending () ->  tuple [ServiceState , str ]:
280236        pending_task_state  =  {"State" : ServiceState .PENDING .value }
281237        return  extract_task_state (task_status = pending_task_state )
282238
@@ -386,38 +342,11 @@ async def remove_dynamic_sidecar_network(network_name: str) -> bool:
386342        return  False 
387343
388344
389- async  def  remove_dynamic_sidecar_volumes (
390-     node_uuid : NodeID , dynamic_sidecar_settings : DynamicSidecarSettings 
391- ) ->  Set [str ]:
392-     async  with  docker_client () as  client :
393-         volumes_response  =  await  client .volumes .list (
394-             filters = {
395-                 "label" : [
396-                     f"swarm_stack_name={ dynamic_sidecar_settings .SWARM_STACK_NAME }  ,
397-                     f"uuid={ node_uuid }  ,
398-                 ]
399-             }
400-         )
401-         volumes  =  volumes_response ["Volumes" ]
402-         log .debug ("Removing volumes: %s" , [v ["Name" ] for  v  in  volumes ])
403-         if  len (volumes ) ==  0 :
404-             log .warning ("Expected to find at least 1 volume to remove, 0 were found" )
405- 
406-         removed_volumes : Set [str ] =  set ()
407- 
408-         for  volume_data  in  volumes :
409-             volume  =  await  client .volumes .get (volume_data ["Name" ])
410-             await  volume .delete ()
411-             removed_volumes .add (volume_data ["Name" ])
412- 
413-         return  removed_volumes 
414- 
415- 
416345async  def  list_dynamic_sidecar_services (
417346    dynamic_sidecar_settings : DynamicSidecarSettings ,
418347    user_id : Optional [UserID ] =  None ,
419348    project_id : Optional [ProjectID ] =  None ,
420- ) ->  List [ Dict [str , Any ]]:
349+ ) ->  list [ dict [str , Any ]]:
421350    service_filters  =  {
422351        "label" : [
423352            f"swarm_stack_name={ dynamic_sidecar_settings .SWARM_STACK_NAME }  ,
@@ -451,8 +380,8 @@ async def is_dynamic_service_running(
451380
452381
453382async  def  get_or_create_networks_ids (
454-     networks : List [str ], project_id : ProjectID 
455- ) ->  Dict [str , str ]:
383+     networks : list [str ], project_id : ProjectID 
384+ ) ->  dict [str , str ]:
456385    async  def  _get_id_from_name (client , network_name : str ) ->  str :
457386        network  =  await  client .networks .get (network_name )
458387        network_inspect  =  await  network .show ()
@@ -496,7 +425,7 @@ async def _get_id_from_name(client, network_name: str) -> str:
496425
497426async  def  get_projects_networks_containers (
498427    project_id : ProjectID ,
499- ) ->  Dict [str , int ]:
428+ ) ->  dict [str , int ]:
500429    """ 
501430    Returns all current projects_networks for the project with 
502431    the amount of containers attached to them. 
@@ -511,8 +440,8 @@ async def get_projects_networks_containers(
511440    if  not  filtered_networks :
512441        return  {}
513442
514-     def  _count_containers (item : Dict [str , Any ]) ->  int :
515-         containers : Optional [List ] =  item .get ("Containers" )
443+     def  _count_containers (item : dict [str , Any ]) ->  int :
444+         containers : Optional [list ] =  item .get ("Containers" )
516445        return  0  if  containers  is  None  else  len (containers )
517446
518447    return  {x ["Name" ]: _count_containers (x ) for  x  in  filtered_networks }
0 commit comments