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.
Files changed (36) hide show
  1. infrahub/cli/db.py +308 -2
  2. infrahub/core/branch/tasks.py +50 -10
  3. infrahub/core/graph/__init__.py +1 -1
  4. infrahub/core/migrations/graph/__init__.py +2 -0
  5. infrahub/core/migrations/graph/m026_0000_prefix_fix.py +54 -0
  6. infrahub/core/node/__init__.py +4 -1
  7. infrahub/core/node/resource_manager/number_pool.py +1 -1
  8. infrahub/core/schema/manager.py +0 -1
  9. infrahub/core/schema/schema_branch.py +5 -3
  10. infrahub/core/schema/schema_branch_computed.py +12 -1
  11. infrahub/events/branch_action.py +3 -0
  12. infrahub/events/group_action.py +1 -1
  13. infrahub/events/node_action.py +1 -1
  14. infrahub/git/integrator.py +2 -2
  15. infrahub/message_bus/messages/__init__.py +0 -2
  16. infrahub/message_bus/messages/request_proposedchange_pipeline.py +5 -0
  17. infrahub/message_bus/operations/__init__.py +0 -2
  18. infrahub/message_bus/operations/requests/proposed_change.py +29 -9
  19. infrahub/message_bus/types.py +2 -34
  20. infrahub/proposed_change/branch_diff.py +65 -0
  21. infrahub/proposed_change/tasks.py +12 -4
  22. infrahub/services/adapters/workflow/worker.py +1 -1
  23. infrahub/workflows/catalogue.py +10 -0
  24. infrahub_sdk/generator.py +1 -0
  25. infrahub_sdk/node.py +16 -4
  26. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/METADATA +2 -2
  27. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/RECORD +32 -34
  28. infrahub_testcontainers/models.py +2 -2
  29. infrahub_testcontainers/performance_test.py +4 -4
  30. infrahub/core/branch/flow_models.py +0 -0
  31. infrahub/message_bus/messages/event_branch_merge.py +0 -13
  32. infrahub/message_bus/operations/event/__init__.py +0 -3
  33. infrahub/message_bus/operations/event/branch.py +0 -61
  34. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/LICENSE.txt +0 -0
  35. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.5.dist-info}/WHEEL +0 -0
  36. {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
- branch_diff = ProposedChangeBranchDiff(diff_summary=diff_summary, repositories=repositories)
105
- await _populate_subscribers(branch_diff=branch_diff, service=service, branch=message.source_branch)
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 branch_diff.has_node_changes(
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 branch_diff.has_data_changes(
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 message.branch_diff.modified_kinds(branch=message.source_branch):
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(branch_diff: ProposedChangeBranchDiff, service: InfrahubServices, branch: str) -> None:
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": branch_diff.modified_nodes(branch=branch)},
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"]:
@@ -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 model.branch_diff.modified_kinds(branch=model.source_branch):
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
- model=model, schema=candidate_schema
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
- model: RequestProposedChangeSchemaIntegrity, schema: SchemaBranch
400
+ schema: SchemaBranch, diff_summary: list[NodeDiff]
394
401
  ) -> list[SchemaUpdateConstraintInfo]:
395
402
  node_diff_field_summary_map: dict[str, NodeDiffFieldSummary] = {}
396
- for node_diff in model.branch_diff.diff_summary:
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, fetch=True) # type: ignore[call-overload]
69
+ return await response.state.result(raise_on_failure=True)
70
70
 
71
71
  async def submit_workflow(
72
72
  self,
@@ -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.value: Any | None = data.get("value", None)
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.value:
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.value = mapper(data.get("value"))
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
- data.pop(item)
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.4
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.2.11)
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=SGS2Gk69waX3Z0abmT0qpth2vvSPA9U0iSBLLML6ePw,15108
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=8qtq4KFcflzoUkhCn64mRKvaD8hFbjVQSOz2WEvedbA,19237
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=CCOnlFah5snRKavdR0jKRqQf_hsAau1CELo6rj4Ksq8,19
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=8Vb8DXQ2QO2Jt7mylidj578RTKp3hT_NHiRoOBEGvtg,2543
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=SnP6_KQebb0A2PG4Lryyp3YIvbV2ktAW3F98adyX2jw,36689
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=GRteqDHToBCwuUfNgy_If3HLAzXuHh2jaRWz9vimqgE,2482
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=5RCtpEvPmqynkFRVID1COI5UqKZWfL-0TSFddgMCOKI,32719
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=i4MKTIwTZ39-vcwU25Q_NBhV_YaF1610WqqBeLdRFc8,97644
265
- infrahub/core/schema/schema_branch_computed.py,sha256=HoBubn2UBQkEJO3LQCsxZQMnfVAgTZl5cHIEMDTBPsE,10038
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=QJ1Zk2kBzKoCllic36_00KjPgCbGVvAO4FKtk8wWNA0,4595
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=ld83pSfzEDvi7su3O0pzwTVRhsejnxRZx0iDonVLoa8,3862
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=__jXKrRf0P2BiWqklZOWlq4bmTEze3aSaj8ofg6tn3s,7062
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=0PffNDW_qZNZ5PVzd6asTOJaKSWmd7HiCLE0zivSyjU,57606
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=Lu4kYX2EXpeXGrmeW5Rqvig38xWa-lK0DfZAdbdtT3w,2581
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=oF8SA-NWVCT5WUhJYXID-5t1DoXnlQRE8zAXB-QD3hE,936
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=Y-7KaW2I_5lhataY9eQfLBeXlhWHrUR9YLAFZbsjvn4,2290
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=gJmiEWhVPP1cW2GSpC7rFTKaY6Gd-1fZBwoMhZN9Q3U,22090
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=1DSHACKsFT-6tXgmSnWdLVjNFRiG7PL1tCWv-M6fDgQ,5575
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=qUHmAN9dT9xx_oYBBsPstfwOEbCncL3n1FctK61F1bY,28274
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=71Nd0rHGvgqPQKSjbVHy9czyxkKCwnCZkycTw4SpiAk,3140
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=2HgFnrhwQYmV_AVNrsS69QTZEtJ4rUI8A9Tc2SkTgqE,14387
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=7dJxn0-r-uMt4vngmPQD4O66rKfWQt7_FH0CQHFwxrg,5525
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=CjQ7oezsXOhZH7m21UnprRHl7sABSVDj_5vhsu3FOMQ,90684
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=R735sO9i6D1TTtwlB0rweN3rWmZMYoSFfk1zt5XgT-Y,909
749
- infrahub_testcontainers/performance_test.py,sha256=82g4hfDuEesV7T8U12UjMV7ujZQMy_q30CSNQCdDVlQ,5993
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.4.dist-info/LICENSE.txt,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
753
- infrahub_server-1.2.4.dist-info/METADATA,sha256=bbeRxYHNMiYzfzuCw2DOcl8olw_7KWAL4uHt8Ed_ocY,8190
754
- infrahub_server-1.2.4.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
755
- infrahub_server-1.2.4.dist-info/entry_points.txt,sha256=UXIeFWDsrV-4IllNvUEd6KieYGzQfn9paga2YyABOQI,393
756
- infrahub_server-1.2.4.dist-info/RECORD,,
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 UTC, datetime
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(UTC)
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