Skip to content

Commit 8c15efc

Browse files
committed
chore: parallelize gitops pre-commit check for faster execution
1 parent 48567be commit 8c15efc

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

kp_pre_commit_hooks/gitops-values-validation.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import re
22
import sys
33
import textwrap
4+
from concurrent.futures import ProcessPoolExecutor as WorkerPool
45
from dataclasses import dataclass, field
56
from functools import cache, cached_property
67
from 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+
339346
if __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

Comments
 (0)