Skip to content

Commit 163b03d

Browse files
authored
Merge pull request #4784 from opsmill/lgu-migrate-trigger-gen-def-run
Migrate TriggerGeneratorDefinitionRun to prefect
2 parents 3ad8ce5 + f572680 commit 163b03d

File tree

11 files changed

+63
-86
lines changed

11 files changed

+63
-86
lines changed

backend/infrahub/generators/tasks.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
from prefect import flow, task
88

99
from infrahub import lock
10-
from infrahub.core.constants import GeneratorInstanceStatus
10+
from infrahub.core.constants import GeneratorInstanceStatus, InfrahubKind
1111
from infrahub.generators.models import RequestGeneratorRun
1212
from infrahub.git.base import extract_repo_file_information
1313
from infrahub.git.repository import get_initialized_repo
14+
from infrahub.message_bus import messages
15+
from infrahub.message_bus.types import ProposedChangeGeneratorDefinition
1416
from infrahub.services import InfrahubServices, services
1517

1618

@@ -103,3 +105,34 @@ async def _define_instance(model: RequestGeneratorRun, service: InfrahubServices
103105
)
104106
await instance.save()
105107
return instance
108+
109+
110+
@flow(name="generator_definition_run")
111+
async def run_generator_definition(branch: str) -> None:
112+
service = services.service
113+
generators = await service.client.filters(
114+
kind=InfrahubKind.GENERATORDEFINITION, prefetch_relationships=True, populate_store=True, branch=branch
115+
)
116+
117+
generator_definitions = [
118+
ProposedChangeGeneratorDefinition(
119+
definition_id=generator.id,
120+
definition_name=generator.name.value,
121+
class_name=generator.class_name.value,
122+
file_path=generator.file_path.value,
123+
query_name=generator.query.peer.name.value,
124+
query_models=generator.query.peer.models.value,
125+
repository_id=generator.repository.peer.id,
126+
parameters=generator.parameters.value,
127+
group_id=generator.targets.peer.id,
128+
convert_query_response=generator.convert_query_response.value,
129+
)
130+
for generator in generators
131+
]
132+
133+
events = [
134+
messages.RequestGeneratorDefinitionRun(branch=branch, generator_definition=generator_definition)
135+
for generator_definition in generator_definitions
136+
]
137+
for event in events:
138+
await service.send(message=event)

backend/infrahub/message_bus/messages/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
from .schema_migration_path import SchemaMigrationPath, SchemaMigrationPathResponse
4242
from .schema_validator_path import SchemaValidatorPath, SchemaValidatorPathResponse
4343
from .send_echo_request import SendEchoRequest, SendEchoRequestResponse
44-
from .trigger_generatordefinition_run import TriggerGeneratorDefinitionRun
4544
from .trigger_proposed_change_cancel import TriggerProposedChangeCancel
4645
from .trigger_webhook_actions import TriggerWebhookActions
4746

@@ -87,7 +86,6 @@
8786
"request.repository.checks": RequestRepositoryChecks,
8887
"request.repository.user_checks": RequestRepositoryUserChecks,
8988
"send.echo.request": SendEchoRequest,
90-
"trigger.generator_definition.run": TriggerGeneratorDefinitionRun,
9189
"trigger.proposed_change.cancel": TriggerProposedChangeCancel,
9290
"trigger.webhook.actions": TriggerWebhookActions,
9391
}

backend/infrahub/message_bus/operations/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
"send.echo.request": send.echo.request,
6262
"schema.migration.path": schema.migration.path,
6363
"schema.validator.path": schema.validator.path,
64-
"trigger.generator_definition.run": trigger.generator_definition.run,
6564
"trigger.proposed_change.cancel": trigger.proposed_change.cancel,
6665
"trigger.webhook.actions": trigger.webhook.actions,
6766
}

backend/infrahub/message_bus/operations/event/branch.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
REQUEST_DIFF_REFRESH,
1616
REQUEST_DIFF_UPDATE,
1717
TRIGGER_ARTIFACT_DEFINITION_GENERATE,
18+
TRIGGER_GENERATOR_DEFINITION_RUN,
1819
)
1920

2021
log = get_logger()
@@ -56,7 +57,6 @@ async def merge(message: messages.EventBranchMerge, service: InfrahubServices) -
5657

5758
events: List[InfrahubMessage] = [
5859
messages.RefreshRegistryBranches(),
59-
messages.TriggerGeneratorDefinitionRun(branch=message.target_branch),
6060
]
6161
component_registry = get_component_registry()
6262
default_branch = registry.get_branch_from_registry()
@@ -69,6 +69,11 @@ async def merge(message: messages.EventBranchMerge, service: InfrahubServices) -
6969
parameters={"branch": message.target_branch},
7070
)
7171

72+
await service.workflow.submit_workflow(
73+
workflow=TRIGGER_GENERATOR_DEFINITION_RUN,
74+
parameters={"branch": message.target_branch},
75+
)
76+
7277
for diff_root in branch_diff_roots:
7378
if (
7479
diff_root.base_branch_name != diff_root.diff_branch_name
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from . import generator_definition, proposed_change, webhook
1+
from . import proposed_change, webhook
22

3-
__all__ = ["generator_definition", "proposed_change", "webhook"]
3+
__all__ = ["proposed_change", "webhook"]

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

Lines changed: 0 additions & 37 deletions
This file was deleted.

backend/infrahub/workflows/catalogue.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@
6262
function="generate_artifact_definition",
6363
)
6464

65+
TRIGGER_GENERATOR_DEFINITION_RUN = WorkflowDefinition(
66+
name="generator_definition_run",
67+
type=WorkflowType.INTERNAL,
68+
module="infrahub.generators.tasks",
69+
function="run_generator_definition",
70+
)
71+
6572
IPAM_RECONCILIATION = WorkflowDefinition(
6673
name="ipam_reconciliation",
6774
type=WorkflowType.INTERNAL,
@@ -160,4 +167,5 @@
160167
REQUEST_GENERATOR_RUN,
161168
REQUEST_DIFF_UPDATE,
162169
REQUEST_DIFF_REFRESH,
170+
TRIGGER_GENERATOR_DEFINITION_RUN,
163171
]

backend/tests/unit/message_bus/operations/event/test_branch.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@
1313
from infrahub.message_bus.operations.event.branch import delete, merge, rebased
1414
from infrahub.services import InfrahubServices, services
1515
from infrahub.services.adapters.workflow.local import WorkflowLocalExecution
16-
from infrahub.workflows.catalogue import REQUEST_DIFF_REFRESH, REQUEST_DIFF_UPDATE, TRIGGER_ARTIFACT_DEFINITION_GENERATE
16+
from infrahub.workflows.catalogue import (
17+
REQUEST_DIFF_REFRESH,
18+
REQUEST_DIFF_UPDATE,
19+
TRIGGER_ARTIFACT_DEFINITION_GENERATE,
20+
TRIGGER_GENERATOR_DEFINITION_RUN,
21+
)
1722
from tests.adapters.message_bus import BusRecorder
1823

1924

@@ -101,6 +106,10 @@ async def test_merged(default_branch: Branch, init_service: InfrahubServices, pr
101106

102107
expected_calls = [
103108
call(workflow=TRIGGER_ARTIFACT_DEFINITION_GENERATE, parameters={"branch": message.target_branch}),
109+
call(
110+
workflow=TRIGGER_GENERATOR_DEFINITION_RUN,
111+
parameters={"branch": target_branch_name},
112+
),
104113
call(
105114
workflow=REQUEST_DIFF_UPDATE,
106115
parameters={"model": RequestDiffUpdate(branch_name=tracked_diff_roots[0].diff_branch_name)},
@@ -118,9 +127,8 @@ async def test_merged(default_branch: Branch, init_service: InfrahubServices, pr
118127
)
119128
diff_repo.get_empty_roots.assert_awaited_once_with(base_branch_names=[target_branch_name])
120129

121-
assert len(service.message_bus.messages) == 2
130+
assert len(service.message_bus.messages) == 1
122131
assert service.message_bus.messages[0] == messages.RefreshRegistryBranches()
123-
assert service.message_bus.messages[1] == messages.TriggerGeneratorDefinitionRun(branch=target_branch_name)
124132

125133

126134
async def test_rebased(default_branch: Branch, prefect_test_fixture):

changelog/+permissions.added.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
New permissions system in UI:
2+
23
- Implemented CRUD views for managing accounts, groups, roles, and permissions
34
- Updated all components to support new permission system
45
- Added dynamic message display according to user access levels

changelog/new-layout.added.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
Reworked branch selector:
2+
23
- Redesigned the UI
34
- Added filter for branch
45
- Improved accessibility & keyboard navigation

0 commit comments

Comments
 (0)