1
1
import json
2
2
import tempfile
3
+ import time
3
4
from pathlib import Path
4
5
5
6
import yaml
@@ -233,6 +234,7 @@ def deploy_caddy(directory: Path):
233
234
elif kind == "Deployment" :
234
235
apps_v1 .create_namespaced_deployment (namespace , doc )
235
236
print (f"Created Deployment: { name } " )
237
+ wait_for_caddy_ready (name , namespace )
236
238
elif kind == "Service" :
237
239
core_v1 .create_namespaced_service (namespace , doc )
238
240
print (f"Created Service: { name } " )
@@ -250,6 +252,7 @@ def deploy_caddy(directory: Path):
250
252
core_v1 .replace_namespaced_config_map (name , namespace , doc )
251
253
elif kind == "Deployment" :
252
254
apps_v1 .replace_namespaced_deployment (name , namespace , doc )
255
+ wait_for_caddy_ready (name , namespace )
253
256
elif kind == "Service" :
254
257
core_v1 .replace_namespaced_service (name , namespace , doc )
255
258
else :
@@ -262,3 +265,23 @@ def deploy_caddy(directory: Path):
262
265
print (f"Error creating/updating { kind } { name } : { e } " )
263
266
264
267
print ("Caddy deployment completed." )
268
+
269
+
270
+ def wait_for_caddy_ready (name : str , namespace : str , timeout : int = 300 ):
271
+ apps_v1 = client .AppsV1Api ()
272
+ start_time = time .time ()
273
+
274
+ while True :
275
+ try :
276
+ deployment = apps_v1 .read_namespaced_deployment (name , namespace )
277
+ if deployment .status .ready_replicas == deployment .spec .replicas :
278
+ print (f"Caddy deployment { name } is ready" )
279
+ return True
280
+ except ApiException as e :
281
+ print (f"Error checking Caddy deployment { name } : { e } " )
282
+
283
+ if time .time () - start_time > timeout :
284
+ print (f"Timeout waiting for Caddy deployment { name } to be ready" )
285
+ return False
286
+
287
+ time .sleep (0.1 )
0 commit comments