11from infrahub_sdk import InfrahubClient
2- from infrahub_sdk .protocols import CoreArtifact , CoreArtifactDefinition , CoreCheckDefinition , CoreRepository
2+ from infrahub_sdk .protocols import (
3+ CoreArtifact ,
4+ CoreArtifactDefinition ,
5+ CoreCheckDefinition ,
6+ CoreRepository ,
7+ CoreRepositoryValidator ,
8+ CoreUserValidator ,
9+ )
310from infrahub_sdk .uuidt import UUIDT
411from prefect import flow , task
512from prefect .cache_policies import NONE
1219from infrahub .exceptions import CheckError , RepositoryError
1320from infrahub .message_bus import Meta , messages
1421from infrahub .services import InfrahubServices
22+ from infrahub .validators .events import send_start_validator
1523from infrahub .worker import WORKER_IDENTITY
1624
1725from ..core .manager import NodeManager
@@ -509,7 +517,9 @@ async def git_repository_diff_names_only(
509517 name = "git-repository-user-checks-definition-trigger" ,
510518 flow_run_name = "Trigger user defined checks for repository {model.repository_name}" ,
511519)
512- async def trigger_repository_user_checks_definitions (model : UserCheckDefinitionData , service : InfrahubServices ) -> None :
520+ async def trigger_repository_user_checks_definitions (
521+ model : UserCheckDefinitionData , context : InfrahubContext , service : InfrahubServices
522+ ) -> None :
513523 await add_tags (branches = [model .branch_name ], nodes = [model .proposed_change ])
514524 log = get_run_logger ()
515525
@@ -520,7 +530,7 @@ async def trigger_repository_user_checks_definitions(model: UserCheckDefinitionD
520530 validator_execution_id = str (UUIDT ())
521531 check_execution_ids : list [str ] = []
522532 await proposed_change .validations .fetch ()
523- validator = None
533+ validator : CoreUserValidator | None = None
524534
525535 for relationship in proposed_change .validations .peers :
526536 existing_validator = relationship .peer
@@ -541,7 +551,7 @@ async def trigger_repository_user_checks_definitions(model: UserCheckDefinitionD
541551 await validator .save ()
542552 else :
543553 validator = await service .client .create (
544- kind = InfrahubKind . USERVALIDATOR ,
554+ kind = CoreUserValidator ,
545555 data = {
546556 "label" : f"Check: { definition .name .value } " ,
547557 "proposed_change" : model .proposed_change ,
@@ -551,6 +561,10 @@ async def trigger_repository_user_checks_definitions(model: UserCheckDefinitionD
551561 )
552562 await validator .save ()
553563
564+ await send_start_validator (
565+ service = service , validator = validator , proposed_change_id = model .proposed_change , context = context
566+ )
567+
554568 if definition .targets .id :
555569 # Check against a group of targets
556570 await definition .targets .fetch ()
@@ -612,14 +626,22 @@ async def trigger_repository_user_checks_definitions(model: UserCheckDefinitionD
612626 for model in check_models
613627 ]
614628
615- await run_checks_and_update_validator (checks_coroutines , validator )
629+ await run_checks_and_update_validator (
630+ checks = checks_coroutines ,
631+ validator = validator ,
632+ context = context ,
633+ service = service ,
634+ proposed_change_id = model .proposed_change ,
635+ )
616636
617637
618638@flow (
619639 name = "git-repository-trigger-user-checks" ,
620640 flow_run_name = "Evaluating user-defined checks on repository {model.repository_name}" ,
621641)
622- async def trigger_user_checks (model : TriggerRepositoryUserChecks , service : InfrahubServices ) -> None :
642+ async def trigger_user_checks (
643+ model : TriggerRepositoryUserChecks , service : InfrahubServices , context : InfrahubContext
644+ ) -> None :
623645 """Request to start validation checks on a specific repository for User-defined checks."""
624646
625647 await add_tags (branches = [model .source_branch ], nodes = [model .proposed_change ])
@@ -645,15 +667,19 @@ async def trigger_user_checks(model: TriggerRepositoryUserChecks, service: Infra
645667 branch_diff = model .branch_diff ,
646668 )
647669 await service .workflow .submit_workflow (
648- workflow = GIT_REPOSITORY_USER_CHECKS_DEFINITIONS_TRIGGER , parameters = {"model" : user_check_definition_model }
670+ workflow = GIT_REPOSITORY_USER_CHECKS_DEFINITIONS_TRIGGER ,
671+ context = context ,
672+ parameters = {"model" : user_check_definition_model },
649673 )
650674
651675
652676@flow (
653677 name = "git-repository-trigger-internal-checks" ,
654678 flow_run_name = "Running repository checks for repository {model.repository}" ,
655679)
656- async def trigger_internal_checks (model : TriggerRepositoryInternalChecks , service : InfrahubServices ) -> None :
680+ async def trigger_internal_checks (
681+ model : TriggerRepositoryInternalChecks , service : InfrahubServices , context : InfrahubContext
682+ ) -> None :
657683 """Request to start validation checks on a specific repository."""
658684 await add_tags (branches = [model .source_branch ], nodes = [model .proposed_change ])
659685 log = get_run_logger ()
@@ -669,7 +695,7 @@ async def trigger_internal_checks(model: TriggerRepositoryInternalChecks, servic
669695 await repository .checks .fetch ()
670696
671697 validator_name = f"Repository Validator: { repository .name .value } "
672- validator = None
698+ validator : CoreRepositoryValidator | None = None
673699 for relationship in proposed_change .validations .peers :
674700 existing_validator = relationship .peer
675701
@@ -687,7 +713,7 @@ async def trigger_internal_checks(model: TriggerRepositoryInternalChecks, servic
687713 await validator .save ()
688714 else :
689715 validator = await service .client .create (
690- kind = InfrahubKind . REPOSITORYVALIDATOR ,
716+ kind = CoreRepositoryValidator ,
691717 data = {
692718 "label" : validator_name ,
693719 "proposed_change" : model .proposed_change ,
@@ -696,6 +722,10 @@ async def trigger_internal_checks(model: TriggerRepositoryInternalChecks, servic
696722 )
697723 await validator .save ()
698724
725+ await send_start_validator (
726+ service = service , validator = validator , proposed_change_id = model .proposed_change , context = context
727+ )
728+
699729 check_execution_id = str (UUIDT ())
700730 check_execution_ids .append (check_execution_id )
701731 log .info ("Adding check for merge conflict" )
@@ -718,7 +748,13 @@ async def trigger_internal_checks(model: TriggerRepositoryInternalChecks, servic
718748 expected_return = ValidatorConclusion ,
719749 )
720750
721- await run_checks_and_update_validator (checks = [check_coroutine ], validator = validator )
751+ await run_checks_and_update_validator (
752+ checks = [check_coroutine ],
753+ validator = validator ,
754+ context = context ,
755+ service = service ,
756+ proposed_change_id = model .proposed_change ,
757+ )
722758
723759
724760@flow (
0 commit comments