|
7 | 7 | from prefect import flow, task |
8 | 8 |
|
9 | 9 | from infrahub import lock |
10 | | -from infrahub.core.constants import GeneratorInstanceStatus |
| 10 | +from infrahub.core.constants import GeneratorInstanceStatus, InfrahubKind |
11 | 11 | from infrahub.generators.models import RequestGeneratorRun |
12 | 12 | from infrahub.git.base import extract_repo_file_information |
13 | 13 | from infrahub.git.repository import get_initialized_repo |
| 14 | +from infrahub.message_bus import messages |
| 15 | +from infrahub.message_bus.types import ProposedChangeGeneratorDefinition |
14 | 16 | from infrahub.services import InfrahubServices, services |
15 | 17 |
|
16 | 18 |
|
@@ -103,3 +105,34 @@ async def _define_instance(model: RequestGeneratorRun, service: InfrahubServices |
103 | 105 | ) |
104 | 106 | await instance.save() |
105 | 107 | 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) |
0 commit comments