infrahub-server 1.2.4__py3-none-any.whl → 1.2.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- infrahub/cli/db.py +308 -2
- infrahub/core/branch/tasks.py +50 -10
- infrahub/core/graph/__init__.py +1 -1
- infrahub/core/migrations/graph/__init__.py +2 -0
- infrahub/core/migrations/graph/m026_0000_prefix_fix.py +54 -0
- infrahub/core/node/__init__.py +4 -1
- infrahub/core/node/resource_manager/number_pool.py +1 -1
- infrahub/core/schema/manager.py +0 -1
- infrahub/core/schema/schema_branch.py +5 -3
- infrahub/core/schema/schema_branch_computed.py +12 -1
- infrahub/events/branch_action.py +3 -0
- infrahub/events/group_action.py +1 -1
- infrahub/events/node_action.py +1 -1
- infrahub/git/integrator.py +2 -2
- infrahub/message_bus/messages/__init__.py +0 -2
- infrahub/message_bus/messages/request_proposedchange_pipeline.py +5 -0
- infrahub/message_bus/operations/__init__.py +0 -2
- infrahub/message_bus/operations/requests/proposed_change.py +29 -9
- infrahub/message_bus/types.py +2 -34
- infrahub/proposed_change/branch_diff.py +65 -0
- infrahub/proposed_change/tasks.py +12 -4
- infrahub/services/adapters/workflow/worker.py +1 -1
- infrahub/workflows/catalogue.py +10 -0
- infrahub_sdk/generator.py +1 -0
- infrahub_sdk/node.py +16 -4
- {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/METADATA +2 -2
- {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/RECORD +32 -34
- infrahub_testcontainers/models.py +2 -2
- infrahub_testcontainers/performance_test.py +4 -4
- infrahub/core/branch/flow_models.py +0 -0
- infrahub/message_bus/messages/event_branch_merge.py +0 -13
- infrahub/message_bus/operations/event/__init__.py +0 -3
- infrahub/message_bus/operations/event/branch.py +0 -61
- {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/LICENSE.txt +0 -0
- {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/WHEEL +0 -0
- {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/entry_points.txt +0 -0
|
@@ -4,7 +4,6 @@ from prefect import Flow
|
|
|
4
4
|
from infrahub.message_bus import RPCErrorResponse, messages
|
|
5
5
|
from infrahub.message_bus.operations import (
|
|
6
6
|
check,
|
|
7
|
-
event,
|
|
8
7
|
finalize,
|
|
9
8
|
git,
|
|
10
9
|
refresh,
|
|
@@ -17,7 +16,6 @@ from infrahub.tasks.check import set_check_status
|
|
|
17
16
|
|
|
18
17
|
COMMAND_MAP = {
|
|
19
18
|
"check.generator.run": check.generator.run,
|
|
20
|
-
"event.branch.merge": event.branch.merge,
|
|
21
19
|
"finalize.validator.execution": finalize.validator.execution,
|
|
22
20
|
"git.file.get": git.file.get,
|
|
23
21
|
"git.repository.connectivity": git.repository.connectivity,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from enum import IntFlag
|
|
4
|
+
from typing import TYPE_CHECKING
|
|
4
5
|
|
|
5
6
|
from prefect import flow, task
|
|
6
7
|
from prefect.logging import get_run_logger
|
|
@@ -20,6 +21,14 @@ from infrahub.message_bus.types import (
|
|
|
20
21
|
ProposedChangeRepository,
|
|
21
22
|
ProposedChangeSubscriber,
|
|
22
23
|
)
|
|
24
|
+
from infrahub.proposed_change.branch_diff import (
|
|
25
|
+
get_diff_summary_cache,
|
|
26
|
+
get_modified_kinds,
|
|
27
|
+
get_modified_node_ids,
|
|
28
|
+
has_data_changes,
|
|
29
|
+
has_node_changes,
|
|
30
|
+
set_diff_summary_cache,
|
|
31
|
+
)
|
|
23
32
|
from infrahub.proposed_change.models import (
|
|
24
33
|
RequestArtifactDefinitionCheck,
|
|
25
34
|
RequestProposedChangeDataIntegrity,
|
|
@@ -40,6 +49,9 @@ from infrahub.workflows.catalogue import (
|
|
|
40
49
|
)
|
|
41
50
|
from infrahub.workflows.utils import add_tags
|
|
42
51
|
|
|
52
|
+
if TYPE_CHECKING:
|
|
53
|
+
from infrahub_sdk.diff import NodeDiff
|
|
54
|
+
|
|
43
55
|
|
|
44
56
|
class DefinitionSelect(IntFlag):
|
|
45
57
|
NONE = 0
|
|
@@ -101,8 +113,11 @@ async def pipeline(message: messages.RequestProposedChangePipeline, service: Inf
|
|
|
101
113
|
await diff_coordinator.update_branch_diff(base_branch=destination_branch, diff_branch=source_branch)
|
|
102
114
|
|
|
103
115
|
diff_summary = await service.client.get_diff_summary(branch=message.source_branch)
|
|
104
|
-
|
|
105
|
-
|
|
116
|
+
await set_diff_summary_cache(pipeline_id=message.pipeline_id, diff_summary=diff_summary, cache=service.cache)
|
|
117
|
+
branch_diff = ProposedChangeBranchDiff(repositories=repositories, pipeline_id=message.pipeline_id)
|
|
118
|
+
await _populate_subscribers(
|
|
119
|
+
branch_diff=branch_diff, diff_summary=diff_summary, service=service, branch=message.source_branch
|
|
120
|
+
)
|
|
106
121
|
|
|
107
122
|
if message.check_type is CheckType.ARTIFACT:
|
|
108
123
|
events.append(
|
|
@@ -132,8 +147,8 @@ async def pipeline(message: messages.RequestProposedChangePipeline, service: Inf
|
|
|
132
147
|
parameters={"model": model_proposed_change_run_generator},
|
|
133
148
|
)
|
|
134
149
|
|
|
135
|
-
if message.check_type in [CheckType.ALL, CheckType.DATA] and
|
|
136
|
-
branch=message.source_branch
|
|
150
|
+
if message.check_type in [CheckType.ALL, CheckType.DATA] and has_node_changes(
|
|
151
|
+
diff_summary=diff_summary, branch=message.source_branch
|
|
137
152
|
):
|
|
138
153
|
model_proposed_change_data_integrity = RequestProposedChangeDataIntegrity(
|
|
139
154
|
proposed_change=message.proposed_change,
|
|
@@ -162,8 +177,8 @@ async def pipeline(message: messages.RequestProposedChangePipeline, service: Inf
|
|
|
162
177
|
parameters={"model": model_proposed_change_repo_checks},
|
|
163
178
|
)
|
|
164
179
|
|
|
165
|
-
if message.check_type in [CheckType.ALL, CheckType.SCHEMA] and
|
|
166
|
-
branch=message.source_branch
|
|
180
|
+
if message.check_type in [CheckType.ALL, CheckType.SCHEMA] and has_data_changes(
|
|
181
|
+
diff_summary=diff_summary, branch=message.source_branch
|
|
167
182
|
):
|
|
168
183
|
await service.workflow.submit_workflow(
|
|
169
184
|
workflow=REQUEST_PROPOSED_CHANGE_SCHEMA_INTEGRITY,
|
|
@@ -215,6 +230,9 @@ async def refresh_artifacts(message: messages.RequestProposedChangeRefreshArtifa
|
|
|
215
230
|
definitions=definition_information[InfrahubKind.ARTIFACTDEFINITION]["edges"]
|
|
216
231
|
)
|
|
217
232
|
|
|
233
|
+
diff_summary = await get_diff_summary_cache(pipeline_id=message.branch_diff.pipeline_id, cache=service.cache)
|
|
234
|
+
modified_kinds = get_modified_kinds(diff_summary=diff_summary, branch=message.source_branch)
|
|
235
|
+
|
|
218
236
|
for artifact_definition in artifact_definitions:
|
|
219
237
|
# Request artifact definition checks if the source branch that is managed in combination
|
|
220
238
|
# to the Git repository containing modifications which could indicate changes to the transforms
|
|
@@ -229,7 +247,7 @@ async def refresh_artifacts(message: messages.RequestProposedChangeRefreshArtifa
|
|
|
229
247
|
condition=message.source_branch_sync_with_git and message.branch_diff.has_file_modifications,
|
|
230
248
|
)
|
|
231
249
|
|
|
232
|
-
for changed_model in
|
|
250
|
+
for changed_model in modified_kinds:
|
|
233
251
|
condition = False
|
|
234
252
|
if (changed_model in artifact_definition.query_models) or (
|
|
235
253
|
changed_model.startswith("Profile")
|
|
@@ -589,11 +607,13 @@ async def _gather_repository_repository_diffs(
|
|
|
589
607
|
repo.files_changed = files_changed
|
|
590
608
|
|
|
591
609
|
|
|
592
|
-
async def _populate_subscribers(
|
|
610
|
+
async def _populate_subscribers(
|
|
611
|
+
branch_diff: ProposedChangeBranchDiff, diff_summary: list[NodeDiff], service: InfrahubServices, branch: str
|
|
612
|
+
) -> None:
|
|
593
613
|
result = await service.client.execute_graphql(
|
|
594
614
|
query=GATHER_GRAPHQL_QUERY_SUBSCRIBERS,
|
|
595
615
|
branch_name=branch,
|
|
596
|
-
variables={"members":
|
|
616
|
+
variables={"members": get_modified_node_ids(diff_summary=diff_summary, branch=branch)},
|
|
597
617
|
)
|
|
598
618
|
|
|
599
619
|
for group in result[InfrahubKind.GRAPHQLQUERYGROUP]["edges"]:
|
infrahub/message_bus/types.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import re
|
|
4
|
+
import uuid # noqa: TC003
|
|
4
5
|
from enum import Enum
|
|
5
6
|
|
|
6
|
-
from infrahub_sdk.diff import NodeDiff # noqa: TC002
|
|
7
7
|
from pydantic import BaseModel, Field
|
|
8
8
|
|
|
9
9
|
from infrahub.core.constants import InfrahubKind, RepositoryInternalStatus
|
|
@@ -109,9 +109,9 @@ class ProposedChangeArtifactDefinition(BaseModel):
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
class ProposedChangeBranchDiff(BaseModel):
|
|
112
|
-
diff_summary: list[NodeDiff] = Field(default_factory=list, description="The DiffSummary between two branches")
|
|
113
112
|
repositories: list[ProposedChangeRepository] = Field(default_factory=list)
|
|
114
113
|
subscribers: list[ProposedChangeSubscriber] = Field(default_factory=list)
|
|
114
|
+
pipeline_id: uuid.UUID = Field(..., description="The unique ID of the execution of this pipeline")
|
|
115
115
|
|
|
116
116
|
def get_repository(self, repository_id: str) -> ProposedChangeRepository:
|
|
117
117
|
for repository in self.repositories:
|
|
@@ -122,39 +122,7 @@ class ProposedChangeBranchDiff(BaseModel):
|
|
|
122
122
|
def get_subscribers_ids(self, kind: str) -> list[str]:
|
|
123
123
|
return [subscriber.subscriber_id for subscriber in self.subscribers if subscriber.kind == kind]
|
|
124
124
|
|
|
125
|
-
def has_node_changes(self, branch: str) -> bool:
|
|
126
|
-
"""Indicates if there is at least one node object that has been modified in the branch"""
|
|
127
|
-
return bool(
|
|
128
|
-
[
|
|
129
|
-
entry
|
|
130
|
-
for entry in self.diff_summary
|
|
131
|
-
if entry["branch"] == branch and not SCHEMA_CHANGE.match(entry["kind"])
|
|
132
|
-
]
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
def has_data_changes(self, branch: str) -> bool:
|
|
136
|
-
"""Indicates if there are node or schema changes within the branch."""
|
|
137
|
-
return bool([entry for entry in self.diff_summary if entry["branch"] == branch])
|
|
138
|
-
|
|
139
125
|
@property
|
|
140
126
|
def has_file_modifications(self) -> bool:
|
|
141
127
|
"""Indicates modifications to any of the files in the Git repositories."""
|
|
142
128
|
return any(repository.has_modifications for repository in self.repositories)
|
|
143
|
-
|
|
144
|
-
def modified_nodes(self, branch: str) -> list[str]:
|
|
145
|
-
"""Return a list of non schema nodes that have been modified on the branch"""
|
|
146
|
-
return [
|
|
147
|
-
entry["id"]
|
|
148
|
-
for entry in self.diff_summary
|
|
149
|
-
if entry["branch"] == branch and not SCHEMA_CHANGE.match(entry["kind"])
|
|
150
|
-
]
|
|
151
|
-
|
|
152
|
-
def modified_kinds(self, branch: str) -> list[str]:
|
|
153
|
-
"""Return a list of non schema kinds that have been modified on the branch"""
|
|
154
|
-
return list(
|
|
155
|
-
{
|
|
156
|
-
entry["kind"]
|
|
157
|
-
for entry in self.diff_summary
|
|
158
|
-
if entry["branch"] == branch and not SCHEMA_CHANGE.match(entry["kind"])
|
|
159
|
-
}
|
|
160
|
-
)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import re
|
|
5
|
+
from typing import TYPE_CHECKING, cast
|
|
6
|
+
|
|
7
|
+
from infrahub.exceptions import ResourceNotFoundError
|
|
8
|
+
from infrahub.message_bus.types import KVTTL
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from uuid import UUID
|
|
12
|
+
|
|
13
|
+
from infrahub_sdk.diff import NodeDiff
|
|
14
|
+
|
|
15
|
+
from infrahub.services.adapters.cache import InfrahubCache
|
|
16
|
+
|
|
17
|
+
SCHEMA_CHANGE = re.compile(r"^Schema[A-Z]")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def has_data_changes(diff_summary: list[NodeDiff], branch: str) -> bool:
|
|
21
|
+
"""Indicates if there are node or schema changes within the branch."""
|
|
22
|
+
return any(entry["branch"] == branch for entry in diff_summary)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def has_node_changes(diff_summary: list[NodeDiff], branch: str) -> bool:
|
|
26
|
+
"""Indicates if there is at least one node object that has been modified in the branch"""
|
|
27
|
+
return any(entry["branch"] == branch and not SCHEMA_CHANGE.match(entry["kind"]) for entry in diff_summary)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def get_modified_kinds(diff_summary: list[NodeDiff], branch: str) -> list[str]:
|
|
31
|
+
"""Return a list of non schema kinds that have been modified on the branch"""
|
|
32
|
+
return list(
|
|
33
|
+
{
|
|
34
|
+
entry["kind"]
|
|
35
|
+
for entry in diff_summary
|
|
36
|
+
if entry["branch"] == branch and not SCHEMA_CHANGE.match(entry["kind"])
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def get_modified_node_ids(diff_summary: list[NodeDiff], branch: str) -> list[str]:
|
|
42
|
+
"""Return a list of non schema nodes that have been modified on the branch"""
|
|
43
|
+
return [
|
|
44
|
+
entry["id"] for entry in diff_summary if entry["branch"] == branch and not SCHEMA_CHANGE.match(entry["kind"])
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
async def set_diff_summary_cache(pipeline_id: UUID, diff_summary: list[NodeDiff], cache: InfrahubCache) -> None:
|
|
49
|
+
serialized = json.dumps(diff_summary)
|
|
50
|
+
await cache.set(
|
|
51
|
+
key=f"proposed_change:pipeline:pipeline_id:{pipeline_id}:diff_summary",
|
|
52
|
+
value=serialized,
|
|
53
|
+
expires=KVTTL.TWO_HOURS,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
async def get_diff_summary_cache(pipeline_id: UUID, cache: InfrahubCache) -> list[NodeDiff]:
|
|
58
|
+
summary_payload = await cache.get(
|
|
59
|
+
key=f"proposed_change:pipeline:pipeline_id:{pipeline_id}:diff_summary",
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
if not summary_payload:
|
|
63
|
+
raise ResourceNotFoundError(message=f"Diff summary for pipeline {pipeline_id} was not found in the cache")
|
|
64
|
+
|
|
65
|
+
return cast(list["NodeDiff"], json.loads(summary_payload))
|
|
@@ -61,7 +61,10 @@ from infrahub.workflows.catalogue import (
|
|
|
61
61
|
)
|
|
62
62
|
from infrahub.workflows.utils import add_tags
|
|
63
63
|
|
|
64
|
+
from .branch_diff import get_diff_summary_cache, get_modified_kinds
|
|
65
|
+
|
|
64
66
|
if TYPE_CHECKING:
|
|
67
|
+
from infrahub_sdk.diff import NodeDiff
|
|
65
68
|
from infrahub_sdk.node import InfrahubNode
|
|
66
69
|
|
|
67
70
|
from infrahub.core.models import SchemaUpdateConstraintInfo
|
|
@@ -253,6 +256,9 @@ async def run_generators(
|
|
|
253
256
|
for generator in generators
|
|
254
257
|
]
|
|
255
258
|
|
|
259
|
+
diff_summary = await get_diff_summary_cache(pipeline_id=model.branch_diff.pipeline_id, cache=service.cache)
|
|
260
|
+
modified_kinds = get_modified_kinds(diff_summary=diff_summary, branch=model.source_branch)
|
|
261
|
+
|
|
256
262
|
for generator_definition in generator_definitions:
|
|
257
263
|
# Request generator definitions if the source branch that is managed in combination
|
|
258
264
|
# to the Git repository containing modifications which could indicate changes to the transforms
|
|
@@ -267,7 +273,7 @@ async def run_generators(
|
|
|
267
273
|
condition=model.source_branch_sync_with_git and model.branch_diff.has_file_modifications,
|
|
268
274
|
)
|
|
269
275
|
|
|
270
|
-
for changed_model in
|
|
276
|
+
for changed_model in modified_kinds:
|
|
271
277
|
select = select.add_flag(
|
|
272
278
|
current=select,
|
|
273
279
|
flag=DefinitionSelect.MODIFIED_KINDS,
|
|
@@ -338,8 +344,9 @@ async def run_proposed_change_schema_integrity_check(
|
|
|
338
344
|
schema_diff = dest_schema.diff(other=candidate_schema)
|
|
339
345
|
validation_result = dest_schema.validate_update(other=candidate_schema, diff=schema_diff)
|
|
340
346
|
|
|
347
|
+
diff_summary = await get_diff_summary_cache(pipeline_id=model.branch_diff.pipeline_id, cache=service.cache)
|
|
341
348
|
constraints_from_data_diff = await _get_proposed_change_schema_integrity_constraints(
|
|
342
|
-
|
|
349
|
+
schema=candidate_schema, diff_summary=diff_summary
|
|
343
350
|
)
|
|
344
351
|
constraints_from_schema_diff = validation_result.constraints
|
|
345
352
|
constraints = set(constraints_from_data_diff + constraints_from_schema_diff)
|
|
@@ -390,10 +397,11 @@ async def run_proposed_change_schema_integrity_check(
|
|
|
390
397
|
|
|
391
398
|
|
|
392
399
|
async def _get_proposed_change_schema_integrity_constraints(
|
|
393
|
-
|
|
400
|
+
schema: SchemaBranch, diff_summary: list[NodeDiff]
|
|
394
401
|
) -> list[SchemaUpdateConstraintInfo]:
|
|
395
402
|
node_diff_field_summary_map: dict[str, NodeDiffFieldSummary] = {}
|
|
396
|
-
|
|
403
|
+
|
|
404
|
+
for node_diff in diff_summary:
|
|
397
405
|
node_kind = node_diff["kind"]
|
|
398
406
|
if node_kind not in node_diff_field_summary_map:
|
|
399
407
|
node_diff_field_summary_map[node_kind] = NodeDiffFieldSummary(kind=node_kind)
|
|
@@ -66,7 +66,7 @@ class WorkflowWorkerExecution(InfrahubWorkflow):
|
|
|
66
66
|
if response.state.type == StateType.CRASHED:
|
|
67
67
|
raise RuntimeError(response.state.message)
|
|
68
68
|
|
|
69
|
-
return await response.state.result(raise_on_failure=True
|
|
69
|
+
return await response.state.result(raise_on_failure=True)
|
|
70
70
|
|
|
71
71
|
async def submit_workflow(
|
|
72
72
|
self,
|
infrahub/workflows/catalogue.py
CHANGED
|
@@ -190,6 +190,15 @@ BRANCH_MERGE = WorkflowDefinition(
|
|
|
190
190
|
tags=[WorkflowTag.DATABASE_CHANGE],
|
|
191
191
|
)
|
|
192
192
|
|
|
193
|
+
BRANCH_MERGE_POST_PROCESS = WorkflowDefinition(
|
|
194
|
+
name="branch-merge-post-process",
|
|
195
|
+
type=WorkflowType.CORE,
|
|
196
|
+
module="infrahub.core.branch.tasks",
|
|
197
|
+
function="post_process_branch_merge",
|
|
198
|
+
tags=[WorkflowTag.DATABASE_CHANGE],
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
|
|
193
202
|
BRANCH_MERGE_MUTATION = WorkflowDefinition(
|
|
194
203
|
name="merge-branch-mutation",
|
|
195
204
|
type=WorkflowType.CORE,
|
|
@@ -431,6 +440,7 @@ workflows = [
|
|
|
431
440
|
BRANCH_DELETE,
|
|
432
441
|
BRANCH_MERGE,
|
|
433
442
|
BRANCH_MERGE_MUTATION,
|
|
443
|
+
BRANCH_MERGE_POST_PROCESS,
|
|
434
444
|
BRANCH_REBASE,
|
|
435
445
|
BRANCH_VALIDATE,
|
|
436
446
|
COMPUTED_ATTRIBUTE_PROCESS_JINJA2,
|
infrahub_sdk/generator.py
CHANGED
|
@@ -40,6 +40,7 @@ class InfrahubGenerator:
|
|
|
40
40
|
self.generator_instance = generator_instance
|
|
41
41
|
self._init_client = client.clone()
|
|
42
42
|
self._init_client.config.default_branch = self._init_client.default_branch = self.branch_name
|
|
43
|
+
self._init_client.store._default_branch = self.branch_name
|
|
43
44
|
self._client: InfrahubClient | None = None
|
|
44
45
|
self._nodes: list[InfrahubNode] = []
|
|
45
46
|
self._related_nodes: list[InfrahubNode] = []
|
infrahub_sdk/node.py
CHANGED
|
@@ -82,17 +82,18 @@ class Attribute:
|
|
|
82
82
|
|
|
83
83
|
self.id: str | None = data.get("id", None)
|
|
84
84
|
|
|
85
|
-
self.
|
|
85
|
+
self._value: Any | None = data.get("value", None)
|
|
86
|
+
self.value_has_been_mutated = False
|
|
86
87
|
self.is_default: bool | None = data.get("is_default", None)
|
|
87
88
|
self.is_from_profile: bool | None = data.get("is_from_profile", None)
|
|
88
89
|
|
|
89
|
-
if self.
|
|
90
|
+
if self._value:
|
|
90
91
|
value_mapper: dict[str, Callable] = {
|
|
91
92
|
"IPHost": ipaddress.ip_interface,
|
|
92
93
|
"IPNetwork": ipaddress.ip_network,
|
|
93
94
|
}
|
|
94
95
|
mapper = value_mapper.get(schema.kind, lambda value: value)
|
|
95
|
-
self.
|
|
96
|
+
self._value = mapper(data.get("value"))
|
|
96
97
|
|
|
97
98
|
self.is_inherited: bool | None = data.get("is_inherited", None)
|
|
98
99
|
self.updated_at: str | None = data.get("updated_at", None)
|
|
@@ -107,6 +108,15 @@ class Attribute:
|
|
|
107
108
|
if data.get(prop_name):
|
|
108
109
|
setattr(self, prop_name, NodeProperty(data=data.get(prop_name))) # type: ignore[arg-type]
|
|
109
110
|
|
|
111
|
+
@property
|
|
112
|
+
def value(self) -> Any:
|
|
113
|
+
return self._value
|
|
114
|
+
|
|
115
|
+
@value.setter
|
|
116
|
+
def value(self, value: Any) -> None:
|
|
117
|
+
self._value = value
|
|
118
|
+
self.value_has_been_mutated = True
|
|
119
|
+
|
|
110
120
|
def _generate_input_data(self) -> dict | None:
|
|
111
121
|
data: dict[str, Any] = {}
|
|
112
122
|
variables: dict[str, Any] = {}
|
|
@@ -975,7 +985,9 @@ class InfrahubNodeBase:
|
|
|
975
985
|
for item in original_data.keys():
|
|
976
986
|
if item in data.keys():
|
|
977
987
|
if data[item] == original_data[item]:
|
|
978
|
-
|
|
988
|
+
if attr := getattr(self, item, None): # this should never be None, just a safety default value
|
|
989
|
+
if not isinstance(attr, Attribute) or not attr.value_has_been_mutated:
|
|
990
|
+
data.pop(item)
|
|
979
991
|
continue
|
|
980
992
|
if isinstance(original_data[item], dict):
|
|
981
993
|
self._strip_unmodified_dict(data=data, original_data=original_data, variables=variables, item=item)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: infrahub-server
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.5
|
|
4
4
|
Summary: Infrahub is taking a new approach to Infrastructure Management by providing a new generation of datastore to organize and control all the data that defines how an infrastructure should run.
|
|
5
5
|
Home-page: https://opsmill.com
|
|
6
6
|
License: AGPL-3.0-only
|
|
@@ -39,7 +39,7 @@ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc (==1.28.1)
|
|
|
39
39
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http (==1.28.1)
|
|
40
40
|
Requires-Dist: opentelemetry-instrumentation-aio-pika (==0.49b1)
|
|
41
41
|
Requires-Dist: opentelemetry-instrumentation-fastapi (==0.49b1)
|
|
42
|
-
Requires-Dist: prefect (==3.
|
|
42
|
+
Requires-Dist: prefect (==3.3.4)
|
|
43
43
|
Requires-Dist: prefect-redis (==0.2.2)
|
|
44
44
|
Requires-Dist: pyarrow (>=14,<15)
|
|
45
45
|
Requires-Dist: pydantic (>=2.10,<2.11)
|
|
@@ -27,7 +27,7 @@ infrahub/auth.py,sha256=g4pQX4kI1k-iWIQNduXODhpeZXIjY3XqLslh7QFRBq4,9194
|
|
|
27
27
|
infrahub/cli/__init__.py,sha256=zQjE9zMrwAmk_4qb5mbUgNi06g3HKvrPwQvJLQmv9JY,1814
|
|
28
28
|
infrahub/cli/constants.py,sha256=CoCeTMnfsA3j7ArdLKLZK4VPxOM7ls17qpxGJmND0m8,129
|
|
29
29
|
infrahub/cli/context.py,sha256=20CJj_D1VhigR9uhTDPHiVHnV7vzsgK8v-uLKs06kzA,398
|
|
30
|
-
infrahub/cli/db.py,sha256=
|
|
30
|
+
infrahub/cli/db.py,sha256=14ptdk1mvsa5WdatEY5NTqOETHyIWV1GLvUow2ob0dE,27851
|
|
31
31
|
infrahub/cli/events.py,sha256=nJmowQgTxRs6qaT41A71Ei9jm6qtYaL2amAT5TA1H_k,1726
|
|
32
32
|
infrahub/cli/git_agent.py,sha256=ajT9-kdd3xLIysOPe8GqZyCDMkpNyhqfWjBg9HPWVcg,5240
|
|
33
33
|
infrahub/cli/server.py,sha256=zeKgJE9V0usSMVBwye0sRNNh6Ctj-nSZHqHbNskqyz4,2248
|
|
@@ -46,9 +46,8 @@ infrahub/core/__init__.py,sha256=z6EJBZyCYCBqinoBtX9li6BTBbbGV8WCkE_4CrEsmDA,104
|
|
|
46
46
|
infrahub/core/account.py,sha256=_RL8QTRsA7XmaTfWSfE6GGy8Z1BEPK5BWoc_LUjDfyE,26507
|
|
47
47
|
infrahub/core/attribute.py,sha256=TUw_yTUo8eJyy0_iD0p1CdI6xfyNvIPdTb3f7ZZS2sA,43003
|
|
48
48
|
infrahub/core/branch/__init__.py,sha256=h0oIj0gHp1xI-N1cYW8_N6VZ81CBOmLuiUt5cS5nKuk,49
|
|
49
|
-
infrahub/core/branch/flow_models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
49
|
infrahub/core/branch/models.py,sha256=pu597Oe2N33cNdXDR59EgCFVHQOy1-hkl3UZnqSu-Vs,19471
|
|
51
|
-
infrahub/core/branch/tasks.py,sha256=
|
|
50
|
+
infrahub/core/branch/tasks.py,sha256=Q9dJtKbEieeQZJQ4FI5qlLvoQKnKmDHl1BcF_iaguUo,20984
|
|
52
51
|
infrahub/core/changelog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
52
|
infrahub/core/changelog/diff.py,sha256=0BxCpsgJ-38x5BBz5XDtAvc9FPy82M0NlzXl8nQ-c70,13752
|
|
54
53
|
infrahub/core/changelog/models.py,sha256=UgfJdOFUkMmjeUKe1mPCO7WE3jNENw0UJU3LWFf20HQ,29920
|
|
@@ -115,7 +114,7 @@ infrahub/core/diff/repository/deserializer.py,sha256=9CMYN17uQtDkp4w3PlCOnPIhE8R
|
|
|
115
114
|
infrahub/core/diff/repository/repository.py,sha256=xgTzmd_fdc-n7iX8E83sd3fOz25O4P3CEDQFpRMZjpI,24946
|
|
116
115
|
infrahub/core/diff/tasks.py,sha256=kHapEy7isn9zGsThYFauDkDnG-dIODanBaa-TaFD9EY,3278
|
|
117
116
|
infrahub/core/enums.py,sha256=qGbhRVoH43Xi0iDkUfWdQiKapJbLT9UKsCobFk_paIk,491
|
|
118
|
-
infrahub/core/graph/__init__.py,sha256=
|
|
117
|
+
infrahub/core/graph/__init__.py,sha256=vg81QN-hmdl7ziUJird8wna034Z7HFur47608DfljDY,19
|
|
119
118
|
infrahub/core/graph/constraints.py,sha256=lmuzrKDFoeSKRiLtycB9PXi6zhMYghczKrPYvfWyy90,10396
|
|
120
119
|
infrahub/core/graph/index.py,sha256=oR6wyYpJbq2IVVzUdiuGyWA511hw2AvgklFoBmQk-bM,1619
|
|
121
120
|
infrahub/core/graph/schema.py,sha256=FmEPPb1XOFv3nnS_XJCuUqlp8HsStX5A2frHjlhoqvE,10105
|
|
@@ -134,7 +133,7 @@ infrahub/core/ipam/utilization.py,sha256=d-zpXCaWsHgJxBLopCDd7y4sJYvHcIzzpYhbTMI
|
|
|
134
133
|
infrahub/core/manager.py,sha256=nE5IL3Hk1ro_4seIbofEdIer3kbVVBtdvmVTbQFAyek,46169
|
|
135
134
|
infrahub/core/merge.py,sha256=bZvToLKyphJlWMbQAzGuSHcrG2DfeqL69KSfqb1wWdc,10430
|
|
136
135
|
infrahub/core/migrations/__init__.py,sha256=syPb3-Irf11dXCHgbT0UdmTnEBbpf4wXJ3m8ADYXDpk,1175
|
|
137
|
-
infrahub/core/migrations/graph/__init__.py,sha256=
|
|
136
|
+
infrahub/core/migrations/graph/__init__.py,sha256=CB4j35V5VRpJxnSJN_HOYzUv_cPMVCHwpFGYjWjhoaA,2608
|
|
138
137
|
infrahub/core/migrations/graph/m001_add_version_to_graph.py,sha256=YcLN6cFjE6IGheXR4Ujb6CcyY8bJ7WE289hcKJaENOc,1515
|
|
139
138
|
infrahub/core/migrations/graph/m002_attribute_is_default.py,sha256=wB6f2N_ChTvGajqHD-OWCG5ahRMDhhXZuwo79ieq_II,1036
|
|
140
139
|
infrahub/core/migrations/graph/m003_relationship_parent_optional.py,sha256=fRMmcOmBdHgOEjlf-5TaWsZ1Rzs6op1s75-r_jE_tZ0,2345
|
|
@@ -160,6 +159,7 @@ infrahub/core/migrations/graph/m022_add_generate_template_attr.py,sha256=CmSxcXo
|
|
|
160
159
|
infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py,sha256=tW-su33h0K1zZk6GsOxqZcqpAsTNCmKo7kN88Te7jAA,3930
|
|
161
160
|
infrahub/core/migrations/graph/m024_missing_hierarchy_backfill.py,sha256=NQm51OmkS4D6gCczo4OB1RlOtIU1SaV3qusu1kEF4_k,2502
|
|
162
161
|
infrahub/core/migrations/graph/m025_uniqueness_nulls.py,sha256=n_g09PDLs1yo3dMYL00HH2VtmYkjV1sVnxFL0KL4hOg,863
|
|
162
|
+
infrahub/core/migrations/graph/m026_0000_prefix_fix.py,sha256=7sP6nQZrqgzFyRUHKf5fKSX2LrzKEAAsiDsRSu9noJM,1944
|
|
163
163
|
infrahub/core/migrations/query/__init__.py,sha256=JoWOUWlV6IzwxWxObsfCnAAKUOHJkE7dZlOsfB64ZEo,876
|
|
164
164
|
infrahub/core/migrations/query/attribute_add.py,sha256=zvOwd9afCtfBpR-rEWePEAnbpoeQorzkcSmD4t8myYA,3510
|
|
165
165
|
infrahub/core/migrations/query/attribute_rename.py,sha256=-p3AInP1dWRO-v-i8MSajDeK5_2LcJwYr2jqLQ_vbgs,6971
|
|
@@ -178,7 +178,7 @@ infrahub/core/migrations/schema/placeholder_dummy.py,sha256=3T3dBwC_ZyehOJr2KRKF
|
|
|
178
178
|
infrahub/core/migrations/schema/tasks.py,sha256=x6c_5N0pcQ_lTH5Vaqg2_MwlQ08I35BdX-8NhRDozBE,4165
|
|
179
179
|
infrahub/core/migrations/shared.py,sha256=e7HEBijWhG46UN8ODjSmxvGeK8KAQ3Twnj2q1dvb2m0,6983
|
|
180
180
|
infrahub/core/models.py,sha256=43iDtUwlsJ5G_F8IP4XoxLeoilfgjudhN3ZfS7esyh8,24840
|
|
181
|
-
infrahub/core/node/__init__.py,sha256=
|
|
181
|
+
infrahub/core/node/__init__.py,sha256=MahMw4Bs4KQCqWTPVoOvSd7K0rP_Ez7JVy57ZHR65xs,36755
|
|
182
182
|
infrahub/core/node/base.py,sha256=5HfcA2d3GPjEDqJAEHGF_eHh6RV3-QlNpAsTr499ZmI,2578
|
|
183
183
|
infrahub/core/node/constraints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
184
184
|
infrahub/core/node/constraints/attribute_uniqueness.py,sha256=9MThTmuqZ7RgK71ZZARlw1k1x3ARn1U67g2_Gatd6rE,2099
|
|
@@ -190,7 +190,7 @@ infrahub/core/node/permissions.py,sha256=uQzQ62IHcSly6fzPre0nQzlrkCIKzH4HyQkODKB
|
|
|
190
190
|
infrahub/core/node/resource_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
191
|
infrahub/core/node/resource_manager/ip_address_pool.py,sha256=M5Kgx56VvT61TTQaYf4NLSF1z6UGUxvKMhRYDhVkapU,4678
|
|
192
192
|
infrahub/core/node/resource_manager/ip_prefix_pool.py,sha256=L7Psmcto5kHRd3AVt6JGUK-3-tQoG1gnAK3UUDi_dCs,4895
|
|
193
|
-
infrahub/core/node/resource_manager/number_pool.py,sha256=
|
|
193
|
+
infrahub/core/node/resource_manager/number_pool.py,sha256=6mczrHTNd8jbXoW8Q6xHpBWi-JOSk5QSlwOegkMbNEQ,2479
|
|
194
194
|
infrahub/core/node/standard.py,sha256=Niyc7mNxEGn6K7a1MXHkiLJhyTNR3uvTWLLbHvm6-Bo,7113
|
|
195
195
|
infrahub/core/path.py,sha256=qHoC5cJwb3nwh-kUiuWqrCgkN2Dleatygn3KNid70sg,5844
|
|
196
196
|
infrahub/core/property.py,sha256=rwsqeaIvCMkHfJYl4WfsNPAS7KS0POo5rAN7vAprXGA,5102
|
|
@@ -257,12 +257,12 @@ infrahub/core/schema/generated/genericnode_schema.py,sha256=FvfeYfld9YeKHOzyH6G3
|
|
|
257
257
|
infrahub/core/schema/generated/node_schema.py,sha256=PMgbQX1PC5ixQsjOFw_bcEfa4txGNUI6BV6OkFDG3wQ,1631
|
|
258
258
|
infrahub/core/schema/generated/relationship_schema.py,sha256=LZIEAPlF9vfYscGYbQ8xgdRvSlVKgow7DQUZ2QC-yKs,5350
|
|
259
259
|
infrahub/core/schema/generic_schema.py,sha256=4qXhCm4G_MgDqxZOut_AJwatU4onXBECKeS1UZcusr8,1340
|
|
260
|
-
infrahub/core/schema/manager.py,sha256=
|
|
260
|
+
infrahub/core/schema/manager.py,sha256=4lPjjtE_MtJ0acJdYAJEkuK4jap3NnTdxB5esEB71Hs,32688
|
|
261
261
|
infrahub/core/schema/node_schema.py,sha256=ld_Wrqf-RsoEUVz_lKE0tcSf5n_oYZYtRI0lTqtd63o,6150
|
|
262
262
|
infrahub/core/schema/profile_schema.py,sha256=cOPSOt5KLgQ0nbqrAN_o33hY_pUtrKmiwSbY_YpVolI,1092
|
|
263
263
|
infrahub/core/schema/relationship_schema.py,sha256=lVbyQKMP2jPZZwZGK6DBvXdXfEQEsQGMbZ2WYxOZKTw,8261
|
|
264
|
-
infrahub/core/schema/schema_branch.py,sha256=
|
|
265
|
-
infrahub/core/schema/schema_branch_computed.py,sha256=
|
|
264
|
+
infrahub/core/schema/schema_branch.py,sha256=WcQlPi_UWspPMZ801b4biZcX8iOBSdEJEckIW_TiH9Y,97799
|
|
265
|
+
infrahub/core/schema/schema_branch_computed.py,sha256=14UUsQJDLMHkYhg7QMqeLiTF3PO8c8rGa90ul3F2ZZo,10629
|
|
266
266
|
infrahub/core/schema/template_schema.py,sha256=O-PBS9IRM4JX6PxeoyZKwqZ0u0SdQ2zxWMc01PJ2_EA,1084
|
|
267
267
|
infrahub/core/task/__init__.py,sha256=Ied1NvKGJUDmff27z_-yWW8ArenHxGvSvQTaQyx1iHs,128
|
|
268
268
|
infrahub/core/task/task.py,sha256=WKU59GbSq5F_qJatiC4J76GGMYhw-BfpWwxMlvqr8WQ,3800
|
|
@@ -371,12 +371,12 @@ infrahub/dependencies/interface.py,sha256=pVNdGYVeGlJgmBBlnv-3UYPXeZqZT8mx9Sg4Ss
|
|
|
371
371
|
infrahub/dependencies/registry.py,sha256=WPUJ_5MlGY1W1yrgHDhT343Vp8GtUM6UriMmBDmWeVw,4127
|
|
372
372
|
infrahub/events/__init__.py,sha256=MB4xQU5HyUrK5nOdEE31csO3KC0ARJv0m9FtcjdbbXQ,974
|
|
373
373
|
infrahub/events/artifact_action.py,sha256=05R-idXAA_JMWi4KrICKyyLTfIVANHg5WZ9uxsivbt8,2632
|
|
374
|
-
infrahub/events/branch_action.py,sha256=
|
|
374
|
+
infrahub/events/branch_action.py,sha256=73j9oWwSLg65WAjpq_d2QcOKfcy8Y9kAjP8A2YrOOIM,4692
|
|
375
375
|
infrahub/events/constants.py,sha256=B6sv4eWA_A0I6IKjVG6A4sn0xdV-rHSztlTwoe2kphY,29
|
|
376
376
|
infrahub/events/generator.py,sha256=reEO-TefCvt5E9mayLXQJXfsKFc7sSIYg4P5g63kAsU,2716
|
|
377
|
-
infrahub/events/group_action.py,sha256
|
|
377
|
+
infrahub/events/group_action.py,sha256=-svK6o9gZcoq_wjW_5WsUqX2G7vbahViTEN54y6FxXA,3893
|
|
378
378
|
infrahub/events/models.py,sha256=IbYAeaL-wLFhv0WyTnh7EM0wSuRm1gnMl7ewvtzchm4,7244
|
|
379
|
-
infrahub/events/node_action.py,sha256=
|
|
379
|
+
infrahub/events/node_action.py,sha256=UagMAcK9gfCJYCnkGEAPuVHLpFzNvlqW1glXcKSn8dk,7093
|
|
380
380
|
infrahub/events/repository_action.py,sha256=5x0boObzGipVb_QGQfNOXBrtENs-SNAjruttBzG4HZg,919
|
|
381
381
|
infrahub/events/schema_action.py,sha256=IvsCvEWsnl7CArJT5DqBn7nF7xmE8JdOHdcVqjeLWGk,1429
|
|
382
382
|
infrahub/events/utils.py,sha256=JmyKKKDjyD3LS9LlY9_AetL8hBb8EdEfRlreUihskTs,649
|
|
@@ -389,7 +389,7 @@ infrahub/git/__init__.py,sha256=KeQ9U8UI5jDj6KB6j00Oal7MZmtOD9vKqVgiezG_EQA,281
|
|
|
389
389
|
infrahub/git/base.py,sha256=WTYJ_LqiUhlaMs9QGt1X6pZrsCwmfUZ3eeZYOfZ9mts,38717
|
|
390
390
|
infrahub/git/constants.py,sha256=XpzcAkXbsgXZgrXey74id1sXV8Q6EHb_4FNw7BndxyY,106
|
|
391
391
|
infrahub/git/directory.py,sha256=fozxLXXJPweHG95yQwQkR5yy3sfTdmHiczCAJnsUX54,861
|
|
392
|
-
infrahub/git/integrator.py,sha256=
|
|
392
|
+
infrahub/git/integrator.py,sha256=PkchhobfFdZKkS6vLkQEBuartLqSiT2Puj43fz-2fZk,57612
|
|
393
393
|
infrahub/git/models.py,sha256=TwiJnknL3nRaFybttLIoVGC9Pqd5smxM4Lh7zTxaqmE,11961
|
|
394
394
|
infrahub/git/repository.py,sha256=mjYeH3pKWRM3UuvcwRCWeE793FuPbSdY8VF1IYK-BxA,11603
|
|
395
395
|
infrahub/git/tasks.py,sha256=EvquEalnUbZHvtFBZBt2BNsHILXCxzBWBKIbR7pgyGk,37102
|
|
@@ -505,9 +505,8 @@ infrahub/menu/models.py,sha256=qh0W-Lut6DtszRABx9Xa1QG1q7SYQsBcNT21QuUBFYM,9839
|
|
|
505
505
|
infrahub/menu/repository.py,sha256=IQpEbQ1u9WiCl7cWCoElEVH_E9qhcLTaTsrf8BWmges,5044
|
|
506
506
|
infrahub/menu/utils.py,sha256=tkTAeVCTUWgLNvL9QiPwJwys6os1Q92nhigHXxMwyQo,272
|
|
507
507
|
infrahub/message_bus/__init__.py,sha256=MkDavdkUxCAJ_RCohO7cLBAzYTqftcXAI6hVj5FaoiE,3669
|
|
508
|
-
infrahub/message_bus/messages/__init__.py,sha256=
|
|
508
|
+
infrahub/message_bus/messages/__init__.py,sha256=Cr8sU-SeidNzB1pnEMFQ-P_xY4_IH87GNmpYb1dR_-c,2488
|
|
509
509
|
infrahub/message_bus/messages/check_generator_run.py,sha256=l-3YmXbjFHSKfw53gVTa7SO7AYftGL25gdF0QJhhp4A,1535
|
|
510
|
-
infrahub/message_bus/messages/event_branch_merge.py,sha256=c4sdKh6Fhq-zXcLdetYpQa7wOI4bVBq8ZS3V9yp7W2c,433
|
|
511
510
|
infrahub/message_bus/messages/finalize_validator_execution.py,sha256=7Q6Qjjk2tVXaIE7j2IwSfcTzJpPw_h_fE5LsBRtoofk,815
|
|
512
511
|
infrahub/message_bus/messages/git_file_get.py,sha256=YoLJzkpNOIInhfVdTUCPEA_xf5LUZ09BRXDTDy8ZiVE,967
|
|
513
512
|
infrahub/message_bus/messages/git_repository_connectivity.py,sha256=O_x2EOXI9fhVQtz4nuQrRC3VB8FE6HOuAxcltImSF38,813
|
|
@@ -518,13 +517,11 @@ infrahub/message_bus/messages/refresh_git_fetch.py,sha256=LlxUse_N6HdoCbFEfnTETx
|
|
|
518
517
|
infrahub/message_bus/messages/refresh_registry_branches.py,sha256=_48LCqM_IWoRRbIDDTfls89kTr4E0wlXDzQdCIvSxfo,192
|
|
519
518
|
infrahub/message_bus/messages/refresh_registry_rebasedbranch.py,sha256=ozCj3kmNL8jFIW0sTrG02eYYvHaLU7kI31dUd3B5EMQ,275
|
|
520
519
|
infrahub/message_bus/messages/request_generatordefinition_check.py,sha256=-gkRdM91CRlzTWcEF_NTBd1zHuQQqmafVADT0RchFoI,1115
|
|
521
|
-
infrahub/message_bus/messages/request_proposedchange_pipeline.py,sha256=
|
|
520
|
+
infrahub/message_bus/messages/request_proposedchange_pipeline.py,sha256=ePuAw2qvSmFYV66Xq3gVMiLhBVerAxw9E-9iq3_Btq4,1089
|
|
522
521
|
infrahub/message_bus/messages/send_echo_request.py,sha256=Z9agbdXj1N8LdKFLKJzNnw3artk3b8WwQ-eA_MO1eAw,575
|
|
523
|
-
infrahub/message_bus/operations/__init__.py,sha256=
|
|
522
|
+
infrahub/message_bus/operations/__init__.py,sha256=AAi0Bd-wWlGONMuypGvZpqAsVoniLC6M_BUQ8qZ15Bk,2233
|
|
524
523
|
infrahub/message_bus/operations/check/__init__.py,sha256=o8-DkZSNc3FQllWcvOK8nUqEknZ1Ef0WaQpxnqgEFz4,49
|
|
525
524
|
infrahub/message_bus/operations/check/generator.py,sha256=YMDF7tjvUR6figkw2VXr3PB1L8F4CuF7J944lcbP4qw,6757
|
|
526
|
-
infrahub/message_bus/operations/event/__init__.py,sha256=Wm5TKOF2jeEIstmIqC1VhGrHy73B8YD0IojTN1efyxw,43
|
|
527
|
-
infrahub/message_bus/operations/event/branch.py,sha256=x4T_Ff9s5bFCrLwLzER51heAgzEdlXhAcykJf7XcOQw,2593
|
|
528
525
|
infrahub/message_bus/operations/finalize/__init__.py,sha256=5wo4BS6O_54Srh2249jRYzuLhJ42GjMJ7nuYaAbMCfo,49
|
|
529
526
|
infrahub/message_bus/operations/finalize/validator.py,sha256=6SvWxyr5FSr0bGiCRGAoMdfgVsdyJah8l4KUbjG7EYM,5537
|
|
530
527
|
infrahub/message_bus/operations/git/__init__.py,sha256=0Fbz1AnU8lWKdX7PS_b0BvjiKOPFqTcUXImTRYe6NLM,65
|
|
@@ -534,10 +531,10 @@ infrahub/message_bus/operations/refresh/__init__.py,sha256=vBuvTL4zRRpOMXATmckQ3
|
|
|
534
531
|
infrahub/message_bus/operations/refresh/registry.py,sha256=AWyIVoh7DvwqD_ihPAa6zbPogUGBZcz8tzTJpySoiUY,1301
|
|
535
532
|
infrahub/message_bus/operations/requests/__init__.py,sha256=7BWa2wc4XSNk13zySOEUdFfcaldSIZT6WXdR6eDxk-U,131
|
|
536
533
|
infrahub/message_bus/operations/requests/generator_definition.py,sha256=AE2x0NiGoyqD5PYp7XmmjzD23SqNCTyzI8KwcTcVurg,6093
|
|
537
|
-
infrahub/message_bus/operations/requests/proposed_change.py,sha256=
|
|
534
|
+
infrahub/message_bus/operations/requests/proposed_change.py,sha256=BepHKycBn6kXCAOHgwmOu7gVluuJ5LvchZnZ55Rt138,22800
|
|
538
535
|
infrahub/message_bus/operations/send/__init__.py,sha256=ivuUTAknLiWfArR44SxA40l0UKVkdHjtDIx0mg06IcE,39
|
|
539
536
|
infrahub/message_bus/operations/send/echo.py,sha256=m2z_ij7Bucl8u1E1rLAfL3fsrhKZhk_vNIvLqNErIEI,652
|
|
540
|
-
infrahub/message_bus/types.py,sha256=
|
|
537
|
+
infrahub/message_bus/types.py,sha256=suudCrwuYXqoRVN6J9dbshRtK22BPxk0cdaCG8QKaxM,4258
|
|
541
538
|
infrahub/middleware.py,sha256=g6lPpXewWNcLjyzRsr7FjdTIbdc5H2HitGQX-L7itgI,657
|
|
542
539
|
infrahub/models.py,sha256=QmwJwo3hNCta8BXM7eLsD9qv1S73Rj0cC_crLpadHTc,715
|
|
543
540
|
infrahub/permissions/__init__.py,sha256=WAtFhyaQj8dFkZJGnIbBaVbSMttGZGgK18V-QbMNVNU,538
|
|
@@ -558,9 +555,10 @@ infrahub/prefect_server/database.py,sha256=v-uti6O__lK51zG_ICq8Drj8j7XlrkRZNZouR
|
|
|
558
555
|
infrahub/prefect_server/events.py,sha256=My0DSsjTENx7-L7_NxxKsBakoOElp95is4-yanS_SkI,869
|
|
559
556
|
infrahub/prefect_server/models.py,sha256=J3xNH-Y5IE-4zBErdkHvJR-cmuaVojhyjn1Ia7A5uBk,1991
|
|
560
557
|
infrahub/proposed_change/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
558
|
+
infrahub/proposed_change/branch_diff.py,sha256=Oerw3cHo51XPKwBsAmpO0T470Fg9mkpWViHVY51hToY,2303
|
|
561
559
|
infrahub/proposed_change/constants.py,sha256=w8fPxKWJM1DzeClRd7Vr53hxkzl2Bq-rnXWfE2y3Bz0,1296
|
|
562
560
|
infrahub/proposed_change/models.py,sha256=fAXs7k9xI6vdq02RqKrorzWmkQdtZ7u-J1NQAi4hPcg,2208
|
|
563
|
-
infrahub/proposed_change/tasks.py,sha256=
|
|
561
|
+
infrahub/proposed_change/tasks.py,sha256=8jRavixDyQwVWtrQ5P6ON_vc2r2oAlVvlWXkhl-dO_A,28642
|
|
564
562
|
infrahub/pytest_plugin.py,sha256=u3t0WgLMo9XmuQYeb28mccQ3xbnyv2Fv173YWl1zBiM,6678
|
|
565
563
|
infrahub/serve/__init__.py,sha256=cWzvEH-Zwr1nQsoNJO9q1pef5KLuSK3VQLOumlnsQxk,73
|
|
566
564
|
infrahub/serve/gunicorn_config.py,sha256=BkClF6yjz-sIhZ-oDizXUmGSEE-FQSmy21JfVnRI5tA,102
|
|
@@ -581,7 +579,7 @@ infrahub/services/adapters/message_bus/nats.py,sha256=SPjwPZQHSdUbMoap0H38Ulbe1V
|
|
|
581
579
|
infrahub/services/adapters/message_bus/rabbitmq.py,sha256=OHEnQlZiY58S-5OksaxxvpltOZ-VJ-HXmY7fzdCDWKM,10975
|
|
582
580
|
infrahub/services/adapters/workflow/__init__.py,sha256=NvZnbwK2Gp5CYaMEiiQVClNa5u_4QWVN4G2KDtfNZBI,1642
|
|
583
581
|
infrahub/services/adapters/workflow/local.py,sha256=4W-WIrq2LSsn35K0ITmaJXCi_RAI4qsMp0iuQBBR26I,1850
|
|
584
|
-
infrahub/services/adapters/workflow/worker.py,sha256=
|
|
582
|
+
infrahub/services/adapters/workflow/worker.py,sha256=T3TaqvdG8dZtf1oQOgrTgRCaC6ycKAMeHieu0WQalp0,3097
|
|
585
583
|
infrahub/services/component.py,sha256=uQvmhDtvPTfxYAdDkaQulbdIWh_kxrFAuhJooKufaac,5634
|
|
586
584
|
infrahub/services/protocols.py,sha256=Ci4cnWK6L_R_5V2qAPnQpHtKXYS0hktp7CoJWIbcbc0,754
|
|
587
585
|
infrahub/services/scheduler.py,sha256=LbuIyLsyYa5E8eWA6aXidGyhIIninGJ8ue5tO5qmiCA,3113
|
|
@@ -632,7 +630,7 @@ infrahub/workers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
|
632
630
|
infrahub/workers/infrahub_async.py,sha256=NQ2HLmRFWW1_M9NZmmdkEctFCPgqGKFmweGlNkjdgyU,9207
|
|
633
631
|
infrahub/workers/utils.py,sha256=m6FOKrYo53Aoj-JcEyQ7-J4Dc20R9JtHMDzTcqXiRpg,2407
|
|
634
632
|
infrahub/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
635
|
-
infrahub/workflows/catalogue.py,sha256=
|
|
633
|
+
infrahub/workflows/catalogue.py,sha256=fn1oNCreKCGPsThZBPZfzOvvyuz5nivFcTpSfI7xd2c,14659
|
|
636
634
|
infrahub/workflows/constants.py,sha256=7je2FF7tJH6x_ZNqHKZfQX91X7I5gmD8OECN3dE_eqI,651
|
|
637
635
|
infrahub/workflows/initialization.py,sha256=BJjSt9uz7fuNr2aahGbLdy1RUKw8AjxKrZ81cJswbxY,3219
|
|
638
636
|
infrahub/workflows/models.py,sha256=uGBNla2xJqKnqARdq21vhXGHxM2ozDqioeBvT7zg3Jo,3439
|
|
@@ -673,11 +671,11 @@ infrahub_sdk/ctl/validate.py,sha256=dknc4kMBIdysZNtEBYyvhlFPyUYyLmc2a4OI4cjGj2c,
|
|
|
673
671
|
infrahub_sdk/data.py,sha256=4d8Fd1s7lTeOu8JWXsK2m2BM8t_5HG0Z73fnCZGc7Pc,841
|
|
674
672
|
infrahub_sdk/diff.py,sha256=Ms-3YyXo-DoF1feV9qP7GKakBYUNFsULZdy-yMEG71w,4258
|
|
675
673
|
infrahub_sdk/exceptions.py,sha256=MX8zsxJUYD0vSiArG2sHWveWNAUoJfkN-R2ehtGmeQs,5052
|
|
676
|
-
infrahub_sdk/generator.py,sha256=
|
|
674
|
+
infrahub_sdk/generator.py,sha256=9Je9mCfS6madP2WMD6gp9l8IkWhW_eIl5elnt9h7rvc,5592
|
|
677
675
|
infrahub_sdk/graphql.py,sha256=zrxRveg8-t0FbLtOEMDiiW0vqtBHc2qaFRkiHF9Bp6g,7019
|
|
678
676
|
infrahub_sdk/groups.py,sha256=GL14ByW4GHrkqOLJ-_vGhu6bkYDxljqPtkErcQVehv0,711
|
|
679
677
|
infrahub_sdk/jinja2.py,sha256=lTfV9E_P5gApaX6RW9M8U8oixQi-0H3U8wcs8fdGVaU,1150
|
|
680
|
-
infrahub_sdk/node.py,sha256=
|
|
678
|
+
infrahub_sdk/node.py,sha256=isR3SVSFLfb_c524fGTgaPo0E_ac08P-8MJPOsu7CrM,91151
|
|
681
679
|
infrahub_sdk/object_store.py,sha256=d-EDnxPpw_7BsbjbGbH50rjt-1-Ojj2zNrhFansP5hA,4299
|
|
682
680
|
infrahub_sdk/playback.py,sha256=ubkY1LiW_wFwm4auerdQ0zFJcFJZ1SYQT6-d4bxzaLg,1906
|
|
683
681
|
infrahub_sdk/protocols.py,sha256=LyiZcUvcT-ibgWYyYELjAPyAv42kxdhAPyFfac-RIZo,21569
|
|
@@ -745,12 +743,12 @@ infrahub_testcontainers/haproxy.cfg,sha256=QUkG2Xu-hKoknPOeYKAkBT_xJH6U9CfIS0DTM
|
|
|
745
743
|
infrahub_testcontainers/helpers.py,sha256=zsvBOql5qM2OX1ybPcklqF-nzWYHkZI3Gk3KZhxWOtU,3578
|
|
746
744
|
infrahub_testcontainers/host.py,sha256=Z4_gGoGKKeM_HGVS7SdYL1FTNGyLBk8wzicdSKHpfmM,1486
|
|
747
745
|
infrahub_testcontainers/measurements.py,sha256=gR-uTasSIFCXrwvnNpIpfsQIopKftT7pBiarCgIShaQ,2214
|
|
748
|
-
infrahub_testcontainers/models.py,sha256=
|
|
749
|
-
infrahub_testcontainers/performance_test.py,sha256=
|
|
746
|
+
infrahub_testcontainers/models.py,sha256=ASYyvl7d_WQz_i7y8-3iab9hwwmCl3OCJavqVbe8nXU,954
|
|
747
|
+
infrahub_testcontainers/performance_test.py,sha256=PSE03jevzv63n-v5rxNIzuQsbtCR-pVqLVpJddjCHhs,6025
|
|
750
748
|
infrahub_testcontainers/plugin.py,sha256=vk33oG44MA2zxZwqMsS8_CkScm5LwuwwFmSOtmeAdMU,5357
|
|
751
749
|
infrahub_testcontainers/prometheus.yml,sha256=610xQEyj3xuVJMzPkC4m1fRnCrjGpiRBrXA2ytCLa54,599
|
|
752
|
-
infrahub_server-1.2.
|
|
753
|
-
infrahub_server-1.2.
|
|
754
|
-
infrahub_server-1.2.
|
|
755
|
-
infrahub_server-1.2.
|
|
756
|
-
infrahub_server-1.2.
|
|
750
|
+
infrahub_server-1.2.5.dist-info/LICENSE.txt,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
|
|
751
|
+
infrahub_server-1.2.5.dist-info/METADATA,sha256=wnu7F6hrzd7PmzNKsQt9gNeSVanc9mj2Yyd-ZBGEtlo,8189
|
|
752
|
+
infrahub_server-1.2.5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
753
|
+
infrahub_server-1.2.5.dist-info/entry_points.txt,sha256=UXIeFWDsrV-4IllNvUEd6KieYGzQfn9paga2YyABOQI,393
|
|
754
|
+
infrahub_server-1.2.5.dist-info/RECORD,,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from datetime import
|
|
1
|
+
from datetime import datetime, timezone
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
@@ -27,7 +27,7 @@ class InfrahubResultContext(BaseModel):
|
|
|
27
27
|
|
|
28
28
|
class InfrahubActiveMeasurementItem(BaseModel):
|
|
29
29
|
definition: MeasurementDefinition
|
|
30
|
-
start_time: datetime = datetime.now(
|
|
30
|
+
start_time: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
31
31
|
context: dict[str, Any] = Field(default_factory=dict)
|
|
32
32
|
|
|
33
33
|
|