@@ -82,7 +82,9 @@ def __init__(
8282 self .docker_password = docker_password
8383 self .docker_registry_name = docker_registry_name
8484
85- self .authenticator = IAMAuthenticator (self .api_key , url = "https://iam.cloud.ibm.com" )
85+ self .authenticator = IAMAuthenticator (
86+ self .api_key , url = "https://iam.cloud.ibm.com"
87+ )
8688 self .authenticator .set_disable_ssl_verification (
8789 True
8890 ) # Disable SSL verification for the authenticator
@@ -97,9 +99,11 @@ def __init__(
9799
98100 def _extract_k8s_config_details (self , project_id ):
99101 delegated_refresh_token_payload = {
100- 'grant_type' : 'urn:ibm:params:oauth:grant-type:apikey' , 'apikey' : self .api_key ,
101- 'response_type' : 'delegated_refresh_token' , 'receiver_client_ids' : 'ce' ,
102- 'delegated_refresh_token_expiry' : '3600'
102+ "grant_type" : "urn:ibm:params:oauth:grant-type:apikey" ,
103+ "apikey" : self .api_key ,
104+ "response_type" : "delegated_refresh_token" ,
105+ "receiver_client_ids" : "ce" ,
106+ "delegated_refresh_token_expiry" : "3600" ,
103107 }
104108 token_manager = self .code_engine_service .authenticator .token_manager
105109 original_request_payload = token_manager .request_payload
@@ -109,24 +113,40 @@ def _extract_k8s_config_details(self, project_id):
109113 finally :
110114 token_manager .request_payload = original_request_payload
111115
112- kc_resp = self .code_engine_service_v1 .get_kubeconfig (iam_response ['delegated_refresh_token' ], project_id )
116+ kc_resp = self .code_engine_service_v1 .get_kubeconfig (
117+ iam_response ["delegated_refresh_token" ], project_id
118+ )
113119 kubeconfig_data = kc_resp .get_result ()
114120
115- current_context_name = kubeconfig_data ['current-context' ]
116- context_details = next (c ['context' ] for c in kubeconfig_data ['contexts' ] if c ['name' ] == current_context_name )
121+ current_context_name = kubeconfig_data ["current-context" ]
122+ context_details = next (
123+ c ["context" ]
124+ for c in kubeconfig_data ["contexts" ]
125+ if c ["name" ] == current_context_name
126+ )
117127
118- namespace = context_details .get ('namespace' , 'default' )
119- server_url = next (c ['cluster' ] for c in kubeconfig_data ['clusters' ] if c ['name' ] == context_details ['cluster' ])['server' ]
128+ namespace = context_details .get ("namespace" , "default" )
129+ server_url = next (
130+ c ["cluster" ]
131+ for c in kubeconfig_data ["clusters" ]
132+ if c ["name" ] == context_details ["cluster" ]
133+ )["server" ]
120134 return namespace , server_url
121135
122136 def create_registry_secret (self ):
123137 # Set up the authenticator and service instance
124- self .code_engine_service_v1 = IbmCloudCodeEngineV1 (authenticator = self .authenticator )
125- self .code_engine_service_v1 .set_service_url ("https://api." + self .region + ".codeengine.cloud.ibm.com/api/v1" )
138+ self .code_engine_service_v1 = IbmCloudCodeEngineV1 (
139+ authenticator = self .authenticator
140+ )
141+ self .code_engine_service_v1 .set_service_url (
142+ "https://api." + self .region + ".codeengine.cloud.ibm.com/api/v1"
143+ )
126144 token = self .authenticator .token_manager .get_token ()
127145
128146 # Fetch K8s config details
129- namespace , k8s_api_server_url = self ._extract_k8s_config_details (self .project_id )
147+ namespace , k8s_api_server_url = self ._extract_k8s_config_details (
148+ self .project_id
149+ )
130150
131151 # Create a new configuration instance
132152 configuration = client .Configuration ()
@@ -136,35 +156,51 @@ def create_registry_secret(self):
136156 core_api = client .CoreV1Api (api_client_instance )
137157
138158 secret = client .V1Secret (
139- metadata = client .V1ObjectMeta (name = self .docker_registry_name , namespace = namespace ),
159+ metadata = client .V1ObjectMeta (
160+ name = self .docker_registry_name , namespace = namespace
161+ ),
140162 type = "kubernetes.io/dockerconfigjson" ,
141- string_data = {".dockerconfigjson" : json .dumps ({
142- "auths" : {
143- self .docker_server : {
144- "username" : self .docker_username ,
145- "password" : self .docker_password ,
163+ string_data = {
164+ ".dockerconfigjson" : json .dumps (
165+ {
166+ "auths" : {
167+ self .docker_server : {
168+ "username" : self .docker_username ,
169+ "password" : self .docker_password ,
170+ }
171+ }
146172 }
147- }
148- })}
173+ )
174+ },
149175 )
150176
151177 try :
152- core_api .delete_namespaced_secret (self .docker_registry_name , namespace = namespace )
178+ core_api .delete_namespaced_secret (
179+ self .docker_registry_name , namespace = namespace
180+ )
153181 except ApiException as e :
154- if e .status == 404 : # Not Found, which is fine
182+ if e .status == 404 : # Not Found, which is fine
155183 pass
156184 else :
157- self .cluster ._log (f"Error deleting existing registry secret { self .docker_registry_name } in { namespace } : { e } " )
185+ self .cluster ._log (
186+ f"Error deleting existing registry secret { self .docker_registry_name } in { namespace } : { e } "
187+ )
158188 pass
159189
160190 try :
161191 core_api .create_namespaced_secret (namespace , secret )
162- self .cluster ._log (f"Successfully created registry secret '{ self .docker_registry_name } '." )
192+ self .cluster ._log (
193+ f"Successfully created registry secret '{ self .docker_registry_name } '."
194+ )
163195 except ApiException as e :
164- if e .status == 409 : # Conflict, secret already exists
165- self .cluster ._log (f"Registry secret '{ self .docker_registry_name } ' already exists." )
196+ if e .status == 409 : # Conflict, secret already exists
197+ self .cluster ._log (
198+ f"Registry secret '{ self .docker_registry_name } ' already exists."
199+ )
166200 else :
167- self .cluster ._log (f"Error creating registry secret '{ self .docker_registry_name } ': { e } " )
201+ self .cluster ._log (
202+ f"Error creating registry secret '{ self .docker_registry_name } ': { e } "
203+ )
168204 raise e
169205
170206 async def create_vm (self ):
@@ -307,7 +343,9 @@ def __init__(self, *args, **kwargs):
307343 async def start (self ):
308344 if self .docker_server and self .docker_username and self .docker_password :
309345 self .docker_registry_name = "dask-" + self .docker_server .split ("." )[0 ]
310- self .cluster ._log (f"Creating registry secret for { self .docker_registry_name } " )
346+ self .cluster ._log (
347+ f"Creating registry secret for { self .docker_registry_name } "
348+ )
311349 self .create_registry_secret ()
312350
313351 self .cluster ._log (
@@ -375,7 +413,7 @@ def __init__(
375413 ),
376414 ]
377415
378- # To work with Code Engine, we need to use the extra arguments
416+ # To work with Code Engine, we need to use the extra arguments
379417 if self .worker_command :
380418 custom_command_prefix = self .worker_command .split ()
381419 original_command_suffix = self .command [3 :]
@@ -445,7 +483,8 @@ class IBMCodeEngineCluster(VMCluster):
445483 docker_username: str
446484 The username for authenticating with the Docker registry. Required if using private Docker images.
447485 docker_password: str
448- The password or access token for authenticating with the Docker registry. Required if using private Docker images.
486+ The password or access token for authenticating with the Docker registry.
487+ Required if using private Docker images.
449488 debug: bool, optional
450489 More information will be printed when constructing clusters to enable debugging.
451490
@@ -572,8 +611,12 @@ def __init__(
572611 self .scheduler_cpu = scheduler_cpu or self .config .get ("scheduler_cpu" )
573612 self .scheduler_mem = scheduler_mem or self .config .get ("scheduler_mem" )
574613 self .scheduler_disk = scheduler_disk or self .config .get ("scheduler_disk" )
575- self .scheduler_timeout = scheduler_timeout or self .config .get ("scheduler_timeout" )
576- self .scheduler_command = scheduler_command or self .config .get ("scheduler_command" )
614+ self .scheduler_timeout = scheduler_timeout or self .config .get (
615+ "scheduler_timeout"
616+ )
617+ self .scheduler_command = scheduler_command or self .config .get (
618+ "scheduler_command"
619+ )
577620 self .worker_cpu = worker_cpu or self .config .get ("worker_cpu" )
578621 self .worker_mem = worker_mem or self .config .get ("worker_mem" )
579622 self .worker_disk = worker_disk or self .config .get ("worker_disk" )
0 commit comments