11import re
22import sys
33import textwrap
4+ from concurrent .futures import ProcessPoolExecutor as WorkerPool
45from dataclasses import dataclass , field
56from functools import cache , cached_property
67from pathlib import Path
@@ -336,17 +337,23 @@ def display_errors(
336337# Main code
337338###############################################################################
338339
340+
341+ def validate_service_instance_config (service_instance_config ):
342+ validator = ServiceInstanceConfigValidator (service_instance_config )
343+ return service_instance_config , validator .validate_configuration ()
344+
345+
339346if __name__ == "__main__" :
340347 gitops_path = Path (sys .argv [1 ]) if len (sys .argv ) >= 2 else Path .cwd ()
341348 gitops_repository = GitOpsRepository (gitops_path )
342349
343350 try :
344351 errors_found = False
345- for service_instance_config in gitops_repository .iter_service_instances_config ():
346- print (f"Checking { service_instance_config } " , end = "" )
347352
348- validator = ServiceInstanceConfigValidator (service_instance_config )
349- errors = validator .validate_configuration ()
353+ worker_pool = WorkerPool (max_workers = 10 )
354+ service_instances_config_iter = gitops_repository .iter_service_instances_config ()
355+ for service_instance_config , errors in worker_pool .map (validate_service_instance_config , service_instances_config_iter ):
356+ print (f"Checking { service_instance_config } " , end = "" )
350357 if not errors :
351358 print (green ("PASSED" ))
352359 else :
@@ -365,3 +372,6 @@ def display_errors(
365372 f" More info at { TWINGATE_DOC_URL } \n \n "
366373 )
367374 sys .exit (1 )
375+
376+ finally :
377+ worker_pool .shutdown ()
0 commit comments