Skip to content

Commit d814c11

Browse files
committed
Slight cleanup of validators
1 parent 885f0da commit d814c11

File tree

4 files changed

+97
-91
lines changed

4 files changed

+97
-91
lines changed

backend/infrahub/git/tasks.py

Lines changed: 28 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414

1515
from infrahub import lock
1616
from infrahub.context import InfrahubContext
17-
from infrahub.core.constants import InfrahubKind, RepositoryInternalStatus, ValidatorConclusion, ValidatorState
17+
from infrahub.core.constants import InfrahubKind, RepositoryInternalStatus, ValidatorConclusion
1818
from infrahub.core.registry import registry
1919
from infrahub.exceptions import CheckError, RepositoryError
2020
from infrahub.message_bus import Meta, messages
2121
from infrahub.services import InfrahubServices
22-
from infrahub.validators.events import send_start_validator
22+
from infrahub.validators.tasks import start_validator
2323
from infrahub.worker import WORKER_IDENTITY
2424

2525
from ..core.manager import NodeManager
@@ -530,8 +530,8 @@ async def trigger_repository_user_checks_definitions(
530530
validator_execution_id = str(UUIDT())
531531
check_execution_ids: list[str] = []
532532
await proposed_change.validations.fetch()
533-
validator: CoreUserValidator | None = None
534533

534+
previous_validator: CoreUserValidator | None = None
535535
for relationship in proposed_change.validations.peers:
536536
existing_validator = relationship.peer
537537

@@ -540,29 +540,20 @@ async def trigger_repository_user_checks_definitions(
540540
and existing_validator.repository.id == model.repository_id
541541
and existing_validator.check_definition.id == model.check_definition_id
542542
):
543-
validator = existing_validator
544-
service.log.info("Found the same validator", validator=validator)
545-
546-
if validator:
547-
validator.conclusion.value = ValidatorConclusion.UNKNOWN.value
548-
validator.state.value = ValidatorState.QUEUED.value
549-
validator.started_at.value = ""
550-
validator.completed_at.value = ""
551-
await validator.save()
552-
else:
553-
validator = await service.client.create(
554-
kind=CoreUserValidator,
555-
data={
556-
"label": f"Check: {definition.name.value}",
557-
"proposed_change": model.proposed_change,
558-
"repository": model.repository_id,
559-
"check_definition": model.check_definition_id,
560-
},
561-
)
562-
await validator.save()
543+
previous_validator = existing_validator
544+
service.log.info("Found the same validator", validator=previous_validator)
563545

564-
await send_start_validator(
565-
service=service, validator=validator, proposed_change_id=model.proposed_change, context=context
546+
validator = await start_validator(
547+
service=service,
548+
validator=previous_validator,
549+
validator_type=CoreUserValidator,
550+
proposed_change=model.proposed_change,
551+
data={
552+
"label": f"Check: {definition.name.value}",
553+
"repository": model.repository_id,
554+
"check_definition": model.check_definition_id,
555+
},
556+
context=context,
566557
)
567558

568559
if definition.targets.id:
@@ -695,35 +686,26 @@ async def trigger_internal_checks(
695686
await repository.checks.fetch()
696687

697688
validator_name = f"Repository Validator: {repository.name.value}"
698-
validator: CoreRepositoryValidator | None = None
689+
previous_validator: CoreRepositoryValidator | None = None
699690
for relationship in proposed_change.validations.peers:
700691
existing_validator = relationship.peer
701692

702693
if (
703694
existing_validator.typename == InfrahubKind.REPOSITORYVALIDATOR
704695
and existing_validator.repository.id == model.repository
705696
):
706-
validator = existing_validator
707-
708-
if validator:
709-
validator.conclusion.value = ValidatorConclusion.UNKNOWN.value
710-
validator.state.value = ValidatorState.QUEUED.value
711-
validator.started_at.value = ""
712-
validator.completed_at.value = ""
713-
await validator.save()
714-
else:
715-
validator = await service.client.create(
716-
kind=CoreRepositoryValidator,
717-
data={
718-
"label": validator_name,
719-
"proposed_change": model.proposed_change,
720-
"repository": model.repository,
721-
},
722-
)
723-
await validator.save()
697+
previous_validator = existing_validator
724698

725-
await send_start_validator(
726-
service=service, validator=validator, proposed_change_id=model.proposed_change, context=context
699+
validator = await start_validator(
700+
service=service,
701+
validator=previous_validator,
702+
validator_type=CoreRepositoryValidator,
703+
proposed_change=model.proposed_change,
704+
data={
705+
"label": validator_name,
706+
"repository": model.repository,
707+
},
708+
context=context,
727709
)
728710

729711
check_execution_id = str(UUIDT())

backend/infrahub/message_bus/operations/requests/generator_definition.py

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
from prefect import flow
44
from prefect.logging import get_run_logger
55

6-
from infrahub.core.constants import InfrahubKind, ValidatorConclusion, ValidatorState
6+
from infrahub.core.constants import InfrahubKind
77
from infrahub.core.timestamp import Timestamp
88
from infrahub.message_bus import InfrahubMessage, Meta, messages
99
from infrahub.message_bus.types import KVTTL
1010
from infrahub.services import InfrahubServices
11-
from infrahub.validators.events import send_start_validator
11+
from infrahub.validators.tasks import start_validator
1212
from infrahub.workflows.utils import add_tags
1313

1414

@@ -29,33 +29,25 @@ async def check(message: messages.RequestGeneratorDefinitionCheck, service: Infr
2929

3030
await proposed_change.validations.fetch()
3131

32-
validator: CoreGeneratorValidator | None = None
32+
previous_validator: CoreGeneratorValidator | None = None
3333
for relationship in proposed_change.validations.peers:
3434
existing_validator = relationship.peer
3535
if (
3636
existing_validator.typename == InfrahubKind.GENERATORVALIDATOR
3737
and existing_validator.definition.id == message.generator_definition.definition_id
3838
):
39-
validator = existing_validator
39+
previous_validator = existing_validator
4040

41-
if validator:
42-
validator.conclusion.value = ValidatorConclusion.UNKNOWN.value
43-
validator.state.value = ValidatorState.QUEUED.value
44-
validator.started_at.value = ""
45-
validator.completed_at.value = ""
46-
await validator.save()
47-
else:
48-
validator = await service.client.create(
49-
kind=CoreGeneratorValidator,
50-
data={
51-
"label": validator_name,
52-
"proposed_change": message.proposed_change,
53-
"definition": message.generator_definition.definition_id,
54-
},
55-
)
56-
await validator.save()
57-
await send_start_validator(
58-
service=service, validator=validator, proposed_change_id=message.proposed_change, context=message.context
41+
validator = await start_validator(
42+
service=service,
43+
validator=previous_validator,
44+
validator_type=CoreGeneratorValidator,
45+
proposed_change=message.proposed_change,
46+
data={
47+
"label": validator_name,
48+
"definition": message.generator_definition.definition_id,
49+
},
50+
context=message.context,
5951
)
6052

6153
group = await service.client.get(

backend/infrahub/proposed_change/tasks.py

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from infrahub.core import registry
2323
from infrahub.core.branch import Branch
2424
from infrahub.core.branch.tasks import merge_branch
25-
from infrahub.core.constants import InfrahubKind, RepositoryInternalStatus, ValidatorConclusion, ValidatorState
25+
from infrahub.core.constants import InfrahubKind, RepositoryInternalStatus, ValidatorConclusion
2626
from infrahub.core.diff.coordinator import DiffCoordinator
2727
from infrahub.core.diff.model.diff import DiffElementType, SchemaConflict
2828
from infrahub.core.diff.model.path import NodeDiffFieldSummary
@@ -52,7 +52,7 @@
5252
)
5353
from infrahub.pytest_plugin import InfrahubBackendPlugin
5454
from infrahub.services import InfrahubServices # noqa: TC001 needed for prefect flow
55-
from infrahub.validators.events import send_start_validator
55+
from infrahub.validators.tasks import start_validator
5656
from infrahub.workflows.catalogue import (
5757
COMPUTED_ATTRIBUTE_SETUP_PYTHON,
5858
GIT_REPOSITORIES_CHECK_ARTIFACT_CREATE,
@@ -540,34 +540,25 @@ async def validate_artifacts_generation(model: RequestArtifactDefinitionCheck, s
540540

541541
await proposed_change.validations.fetch()
542542

543-
validator: CoreArtifactValidator | None = None
543+
previous_validator: CoreArtifactValidator | None = None
544544
for relationship in proposed_change.validations.peers:
545545
existing_validator = relationship.peer
546546
if (
547547
existing_validator.typename == InfrahubKind.ARTIFACTVALIDATOR
548548
and existing_validator.definition.id == model.artifact_definition.definition_id
549549
):
550-
validator = existing_validator
551-
552-
if validator:
553-
validator.conclusion.value = ValidatorConclusion.UNKNOWN.value
554-
validator.state.value = ValidatorState.QUEUED.value
555-
validator.started_at.value = ""
556-
validator.completed_at.value = ""
557-
await validator.save()
558-
else:
559-
validator = await service.client.create(
560-
kind=CoreArtifactValidator,
561-
data={
562-
"label": validator_name,
563-
"proposed_change": model.proposed_change,
564-
"definition": model.artifact_definition.definition_id,
565-
},
566-
)
567-
await validator.save()
550+
previous_validator = existing_validator
568551

569-
await send_start_validator(
570-
service=service, validator=validator, proposed_change_id=model.proposed_change, context=model.context
552+
validator = await start_validator(
553+
service=service,
554+
validator=previous_validator,
555+
validator_type=CoreArtifactValidator,
556+
proposed_change=model.proposed_change,
557+
data={
558+
"label": validator_name,
559+
"definition": model.artifact_definition.definition_id,
560+
},
561+
context=model.context,
571562
)
572563

573564
await artifact_definition.targets.fetch()
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from typing import Any, TypeVar, cast
2+
3+
from infrahub_sdk.protocols import CoreValidator
4+
5+
from infrahub.context import InfrahubContext
6+
from infrahub.core.constants import ValidatorConclusion, ValidatorState
7+
from infrahub.services import InfrahubServices
8+
9+
from .events import send_start_validator
10+
11+
ValidatorType = TypeVar("ValidatorType", bound=CoreValidator)
12+
13+
14+
async def start_validator(
15+
service: InfrahubServices,
16+
validator: CoreValidator | None,
17+
validator_type: type[ValidatorType],
18+
proposed_change: str,
19+
context: InfrahubContext,
20+
data: dict[str, Any],
21+
) -> ValidatorType:
22+
if validator:
23+
validator.conclusion.value = ValidatorConclusion.UNKNOWN.value
24+
validator.state.value = ValidatorState.QUEUED.value
25+
validator.started_at.value = ""
26+
validator.completed_at.value = ""
27+
await validator.save()
28+
validator = cast(ValidatorType, validator)
29+
else:
30+
data["proposed_change"] = proposed_change
31+
validator = await service.client.create(
32+
kind=validator_type,
33+
data=data,
34+
)
35+
await validator.save()
36+
37+
await send_start_validator(
38+
service=service, validator=validator, proposed_change_id=proposed_change, context=context
39+
)
40+
41+
return validator

0 commit comments

Comments
 (0)