infrahub-server 1.2.4__py3-none-any.whl → 1.2.6__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 (46) 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/manager.py +15 -2
  5. infrahub/core/migrations/graph/__init__.py +2 -0
  6. infrahub/core/migrations/graph/m026_0000_prefix_fix.py +54 -0
  7. infrahub/core/node/__init__.py +4 -1
  8. infrahub/core/node/resource_manager/number_pool.py +1 -1
  9. infrahub/core/registry.py +2 -3
  10. infrahub/core/schema/manager.py +0 -1
  11. infrahub/core/schema/schema_branch.py +39 -40
  12. infrahub/core/schema/schema_branch_computed.py +12 -1
  13. infrahub/database/__init__.py +2 -0
  14. infrahub/events/branch_action.py +3 -0
  15. infrahub/events/group_action.py +1 -1
  16. infrahub/events/node_action.py +1 -1
  17. infrahub/git/integrator.py +2 -2
  18. infrahub/graphql/manager.py +10 -0
  19. infrahub/graphql/mutations/main.py +4 -5
  20. infrahub/graphql/mutations/resource_manager.py +3 -3
  21. infrahub/message_bus/messages/__init__.py +0 -2
  22. infrahub/message_bus/messages/request_proposedchange_pipeline.py +5 -0
  23. infrahub/message_bus/operations/__init__.py +0 -2
  24. infrahub/message_bus/operations/requests/proposed_change.py +29 -9
  25. infrahub/message_bus/types.py +2 -34
  26. infrahub/proposed_change/branch_diff.py +65 -0
  27. infrahub/proposed_change/tasks.py +12 -4
  28. infrahub/services/adapters/workflow/worker.py +1 -1
  29. infrahub/tasks/registry.py +4 -1
  30. infrahub/workflows/catalogue.py +10 -0
  31. infrahub_sdk/generator.py +1 -0
  32. infrahub_sdk/node.py +16 -4
  33. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.6.dist-info}/METADATA +2 -2
  34. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.6.dist-info}/RECORD +42 -44
  35. infrahub_testcontainers/container.py +52 -2
  36. infrahub_testcontainers/docker-compose.test.yml +27 -0
  37. infrahub_testcontainers/models.py +2 -2
  38. infrahub_testcontainers/performance_test.py +5 -5
  39. infrahub_testcontainers/plugin.py +1 -1
  40. infrahub/core/branch/flow_models.py +0 -0
  41. infrahub/message_bus/messages/event_branch_merge.py +0 -13
  42. infrahub/message_bus/operations/event/__init__.py +0 -3
  43. infrahub/message_bus/operations/event/branch.py +0 -61
  44. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.6.dist-info}/LICENSE.txt +0 -0
  45. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.6.dist-info}/WHEEL +0 -0
  46. {infrahub_server-1.2.4.dist-info → infrahub_server-1.2.6.dist-info}/entry_points.txt +0 -0
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.6
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
@@ -131,10 +130,10 @@ infrahub/core/ipam/reconciler.py,sha256=48do6rx12G25gaKuOguSrVdUDXVpMr3t6ogU1hdP
131
130
  infrahub/core/ipam/size.py,sha256=Iu7cVvN9MkilyG_AGvYm3g3dSDesKRVdDh_AKH7yAqk,614
132
131
  infrahub/core/ipam/tasks.py,sha256=TUoP6WZjQkd7DdGLxKnBVVH4SxTHkH2xmJCU8nRWqH8,1483
133
132
  infrahub/core/ipam/utilization.py,sha256=d-zpXCaWsHgJxBLopCDd7y4sJYvHcIzzpYhbTMIgH74,6733
134
- infrahub/core/manager.py,sha256=nE5IL3Hk1ro_4seIbofEdIer3kbVVBtdvmVTbQFAyek,46169
133
+ infrahub/core/manager.py,sha256=v-Owvn60w85TIHrAtt5C9OF5vGdpf88ElTMDMGVacxE,46671
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
@@ -210,7 +210,7 @@ infrahub/core/query/subquery.py,sha256=40MEDGSFPeXG6M4DpwfQfJMVqB_ET6WTMwhgueKV-
210
210
  infrahub/core/query/task.py,sha256=tLgn8S_KaLYLuOB66D1YM155teHZIHNThkt2iUiKKD4,3137
211
211
  infrahub/core/query/task_log.py,sha256=2RdthOAQrmpKZU8uhV_dJCPqwdsSA_1CYSKpL_eZ_yk,1120
212
212
  infrahub/core/query/utils.py,sha256=t9LMvZWdmi10c3E0HAU_5m7x5zMHhYXsUjX7ZBl2RpU,1091
213
- infrahub/core/registry.py,sha256=LJfLiqw1fUrPWTI8k-hL0KYTLnK2nBCkKJYX5PZtduY,8570
213
+ infrahub/core/registry.py,sha256=eSDFD8gbE1rasYIuLQDWlTKO06HVfuDsuEdT9uqn-6U,8560
214
214
  infrahub/core/relationship/__init__.py,sha256=broUBD0iwpSSGKJbUdG66uau67TQ_DRhqT_PFhuk1ag,154
215
215
  infrahub/core/relationship/constraints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
216
216
  infrahub/core/relationship/constraints/count.py,sha256=4wSjiJtRd4fQ5qYNzGyWrt1WLV7x5Go2ZatMTtK79QQ,4157
@@ -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=9ut8iS4nUCjY81lJiX0VVTNWEA4K6bfS4yWpQe9NSTA,97723
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
@@ -305,7 +305,7 @@ infrahub/core/validators/uniqueness/checker.py,sha256=RpiLpIjbdkwwjivry-vjEkVim6
305
305
  infrahub/core/validators/uniqueness/index.py,sha256=Jw1o-UVinQquNduZ5vCCzt8GUfIEdVzBo-1XyRti8F8,5068
306
306
  infrahub/core/validators/uniqueness/model.py,sha256=V2aejcuHPhgC5nTrS7xX0JFMzprVu90QAau-rUzruCY,5135
307
307
  infrahub/core/validators/uniqueness/query.py,sha256=em_DKmzv0kiKl6VhD9G4-LkrtuQj4mTxT5kc5ZgFv7M,10150
308
- infrahub/database/__init__.py,sha256=m8Rkw7byTaz6eoYp3N9QlyJIxHQW8x2KXfn16sSAgwI,20982
308
+ infrahub/database/__init__.py,sha256=CQek6w4hoihLP9ClNya_QZ-UquXZTf9F3iNKPNpZBUw,21095
309
309
  infrahub/database/constants.py,sha256=WmV1iuOk4xulxZHOVvO3sS_VF1eTf7fKh0TPe_RnfV4,507
310
310
  infrahub/database/index.py,sha256=y0sWXO3tdIr1wL1XC9O6iNRV-Elu2KAXFOiYXRIIhN4,1659
311
311
  infrahub/database/manager.py,sha256=BDXNw1RNBeSFV-EZd0aGFbPNuoqlKwrkDqmYB7sy4tU,317
@@ -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
@@ -422,7 +422,7 @@ infrahub/graphql/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
422
422
  infrahub/graphql/loaders/node.py,sha256=ciATamtiU1-yHrvqnScjYlLRJJX2lyxlaDZVIXlL-7E,2604
423
423
  infrahub/graphql/loaders/peers.py,sha256=fOdgaaPBtBiiLKg8Rws4zXvpyCzUhszgxhDAeXkzETA,2785
424
424
  infrahub/graphql/loaders/shared.py,sha256=hUxLy8iVgfpEZiUMKNkUAeshPKKzEVSDMDsuaBbjJW4,389
425
- infrahub/graphql/manager.py,sha256=3LKW3LRJE6ne7BiTFNHufw_4q0loB_esHrNMu4q1nH8,44777
425
+ infrahub/graphql/manager.py,sha256=1q3HcaIcg82-t7dq0M3uIAihmVka-7w2KKsols5UMww,45222
426
426
  infrahub/graphql/metrics.py,sha256=viq_M57mDYd4DDK7suUttf1FJTgzQ3U50yOuSw_Nd-s,2267
427
427
  infrahub/graphql/models.py,sha256=7kr3DSO_rujPocMIfPyZ5Hwy3Mpnu4ySDMAIE9G5Y7Y,147
428
428
  infrahub/graphql/mutations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -436,7 +436,7 @@ infrahub/graphql/mutations/diff_conflict.py,sha256=JngQfyKXCVlmtlqQ_VyabmrOEDOEK
436
436
  infrahub/graphql/mutations/generator.py,sha256=Ulw4whZm8Gc8lJjwfUFoFSsR0cOUliFKl87Oca4B9O0,3579
437
437
  infrahub/graphql/mutations/graphql_query.py,sha256=mp_O2byChneCihUrEAFEiIAgJ1gW9WrgtwPetUQmkJw,3562
438
438
  infrahub/graphql/mutations/ipam.py,sha256=wIN8OcTNCHVy32YgatWZi2Of-snFYBd4wlxOAJvE-AY,15961
439
- infrahub/graphql/mutations/main.py,sha256=QpB_iV4VFWYkUpk5tcSe0eFJXAn1YcwFruzNjyccvUY,26618
439
+ infrahub/graphql/mutations/main.py,sha256=EgO0U8U0FmgwuTrDrKuafSOWjO7pNR5YZzYYZbQMfec,26611
440
440
  infrahub/graphql/mutations/menu.py,sha256=u2UbOA-TFDRcZRGFkgYTmpGxN2IAUgOvJXd7SnsufyI,3708
441
441
  infrahub/graphql/mutations/models.py,sha256=ilkSLr8OxVO9v3Ra_uDyUTJT9qPOmdPMqQbuWIydJMo,264
442
442
  infrahub/graphql/mutations/node_getter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -447,7 +447,7 @@ infrahub/graphql/mutations/node_getter/interface.py,sha256=3MVTz_3EQnI7REp-ytQvg
447
447
  infrahub/graphql/mutations/proposed_change.py,sha256=TyZF3adwbB517iVoOL5HC8ifGxddlcUciHxqJ9k55T0,10117
448
448
  infrahub/graphql/mutations/relationship.py,sha256=b-zi8O0JZo52zVoGabIrWvIFh64PbhHzjF9klZ7p8ac,20139
449
449
  infrahub/graphql/mutations/repository.py,sha256=Whrt1uYWt7Ro6omJYN8zc3D-poZ6bOBrpBHIG4odAmo,11316
450
- infrahub/graphql/mutations/resource_manager.py,sha256=782N1iwAgtTpl0I-Y-ou16u_ModhccJ3F28tap-uD1E,8874
450
+ infrahub/graphql/mutations/resource_manager.py,sha256=Nykdo4pIJ9BOossg24-dw_nU71qelYki896NIJk5O5I,8924
451
451
  infrahub/graphql/mutations/schema.py,sha256=vOwP8SIcQxamhP_JwbeXPG5iOEwxHhHawgqU6bD-4us,12897
452
452
  infrahub/graphql/mutations/tasks.py,sha256=j2t5pMXRQ1i3ohQ-WjfDaDNQpj-CnFnqYCTZ3y5p7ec,3806
453
453
  infrahub/graphql/mutations/webhook.py,sha256=IW_WPpBRySd-mpbkuGnR28VpU9naM2bLZBjJOaAGuH4,4777
@@ -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
@@ -597,7 +595,7 @@ infrahub/tasks/check.py,sha256=WEdktFP1XzahHtF6N782OnNFzkg5uX3KIeNFRy3NEUM,730
597
595
  infrahub/tasks/dummy.py,sha256=6SxlQqQXZqgTuwLaAsK-p1O1TYNKfdGmUYjNJFNHe9s,1209
598
596
  infrahub/tasks/keepalive.py,sha256=D6yh3Vmlr1WCEpZibk2YLc2n0dCcX6tM62HCSxyGEu8,783
599
597
  infrahub/tasks/recurring.py,sha256=RJO2zdzCU-38Kb81lmCUbFQOBhGui8qn2QizTV4vj9I,447
600
- infrahub/tasks/registry.py,sha256=wox2lo8JoW8abirN0LFF3Qeerspthviq8yFVe-LDu2g,3017
598
+ infrahub/tasks/registry.py,sha256=o1ybJvkNOSpFBvqem6wkOrtxqm6nqnbDA7JcptP-aC8,3169
601
599
  infrahub/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
602
600
  infrahub/telemetry/constants.py,sha256=_5mJAZaT_wTCaF7Yzsd---Zn1N6GZkoP_954GK8K4-c,184
603
601
  infrahub/telemetry/database.py,sha256=0yqrfotO3lF-ij15v-tG1nxtoUJppXzHaKubN0Jw9CQ,3097
@@ -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
@@ -739,18 +737,18 @@ infrahub_sdk/uuidt.py,sha256=Tz-4nHkJwbi39UT3gaIe2wJeZNAoBqf6tm3sw7LZbXc,2155
739
737
  infrahub_sdk/yaml.py,sha256=L_sj5ds-0_uKe3aIfZu86kDLq8tffKzle9dcyDUTaEc,2937
740
738
  infrahub_testcontainers/__init__.py,sha256=oPpmesGgYBSdKTg1L37FGwYBeao1EHury5SJGul-CT8,216
741
739
  infrahub_testcontainers/constants.py,sha256=mZ4hLvcf4rKk9wC7EId4MQxAY0sk4V99deB04N0J2bg,85
742
- infrahub_testcontainers/container.py,sha256=FUkEVkPwUtYGfjHd6brLkI_3D4-qYmH5BGAOlyJrFU4,10652
743
- infrahub_testcontainers/docker-compose.test.yml,sha256=MqN8TPIAWNOZg93m_P2HH5etyYvtgYmwR92SyHR_GDQ,7017
740
+ infrahub_testcontainers/container.py,sha256=HMWCwQpXgNnUYhGDNr1yEdfAO-t-TDzG2RgkZ1ye4tc,12257
741
+ infrahub_testcontainers/docker-compose.test.yml,sha256=6zAf4sVr3cAfMtZgvKv8SX8uD9FolTsNFlhSfzs8eI0,8229
744
742
  infrahub_testcontainers/haproxy.cfg,sha256=QUkG2Xu-hKoknPOeYKAkBT_xJH6U9CfIS0DTMFZJsnk,1305
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
750
- infrahub_testcontainers/plugin.py,sha256=vk33oG44MA2zxZwqMsS8_CkScm5LwuwwFmSOtmeAdMU,5357
746
+ infrahub_testcontainers/models.py,sha256=ASYyvl7d_WQz_i7y8-3iab9hwwmCl3OCJavqVbe8nXU,954
747
+ infrahub_testcontainers/performance_test.py,sha256=CZ0YeGqnc9RCEPPk5-jFh0b0zFz-DYweOBF-Lfo0bc8,6037
748
+ infrahub_testcontainers/plugin.py,sha256=g24SMg4EAqVe2N8i9F66EV34cNqIdDU4mRP7OeOJO1w,5381
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.6.dist-info/LICENSE.txt,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
751
+ infrahub_server-1.2.6.dist-info/METADATA,sha256=aH_88DkVv0zFyrXXGQaEESBXsfe7DFMoZy6vFjnJp2E,8189
752
+ infrahub_server-1.2.6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
753
+ infrahub_server-1.2.6.dist-info/entry_points.txt,sha256=UXIeFWDsrV-4IllNvUEd6KieYGzQfn9paga2YyABOQI,393
754
+ infrahub_server-1.2.6.dist-info/RECORD,,
@@ -1,5 +1,6 @@
1
1
  import os
2
2
  import shutil
3
+ import time
3
4
  import uuid
4
5
  from dataclasses import dataclass, field
5
6
  from functools import cached_property
@@ -265,9 +266,58 @@ class InfrahubDockerCompose(DockerCompose):
265
266
  )
266
267
 
267
268
  self.exec_in_container(
268
- command=["cypher-shell", "-d", "system", "-u", "neo4j", "-p", "admin", "START DATABASE neo4j;"],
269
+ command=["chown", "-R", "neo4j:neo4j", "/data"],
269
270
  service_name=service_name,
270
271
  )
271
272
 
273
+ (restore_output, _, _) = self.exec_in_container(
274
+ command=[
275
+ "cypher-shell",
276
+ "--format",
277
+ "plain",
278
+ "-d",
279
+ "system",
280
+ "-u",
281
+ "neo4j",
282
+ "-p",
283
+ "admin",
284
+ "START DATABASE neo4j;",
285
+ ],
286
+ service_name=service_name,
287
+ )
288
+
289
+ for _ in range(3):
290
+ (stdout, _, _) = self.exec_in_container(
291
+ command=[
292
+ "cypher-shell",
293
+ "--format",
294
+ "plain",
295
+ "-d",
296
+ "system",
297
+ "-u",
298
+ "neo4j",
299
+ "-p",
300
+ "admin",
301
+ "SHOW DATABASES WHERE name = 'neo4j' AND currentStatus = 'online';",
302
+ ],
303
+ service_name=service_name,
304
+ )
305
+ if stdout:
306
+ break
307
+ time.sleep(5)
308
+ else:
309
+ (debug_logs, _, _) = self.exec_in_container(
310
+ command=["cat", "logs/debug.log"],
311
+ service_name=service_name,
312
+ )
313
+ raise Exception(f"Failed to restore database:\n{restore_output}\nDebug logs:\n{debug_logs}")
314
+
315
+ old_services = self.services
316
+ self.services = ["infrahub-server", "task-worker"]
272
317
  self.stop(down=False)
273
- self.start()
318
+ try:
319
+ self.start()
320
+ except Exception as exc:
321
+ stdout, stderr = self.get_logs()
322
+ raise Exception(f"Failed to start docker compose:\nStdout:\n{stdout}\nStderr:\n{stderr}") from exc
323
+ self.services = old_services
@@ -45,6 +45,11 @@ services:
45
45
  - ${INFRAHUB_TESTING_SERVER_PORT:-0}:8000
46
46
 
47
47
  database:
48
+ deploy:
49
+ resources:
50
+ limits:
51
+ cpus: ${INFRAHUB_TESTING_DB_CPU_LIMIT:-0.0}
52
+ memory: ${INFRAHUB_TESTING_DB_MEMORY_LIMIT:-0}
48
53
  image: ${NEO4J_DOCKER_IMAGE:-neo4j:5.20.0-community}
49
54
  restart: unless-stopped
50
55
  environment:
@@ -52,6 +57,8 @@ services:
52
57
  NEO4J_dbms_security_procedures_unrestricted: "apoc.*"
53
58
  NEO4J_dbms_security_auth__minimum__password__length: 4
54
59
  NEO4J_ACCEPT_LICENSE_AGREEMENT: "yes"
60
+ NEO4J_dbms_memory_heap_initial__size: ${INFRAHUB_TESTING_DB_HEAP_INITIAL_SIZE}
61
+ NEO4J_dbms_memory_heap_max__size: ${INFRAHUB_TESTING_DB_HEAP_MAX_SIZE}
55
62
  volumes:
56
63
  - "database_data:/data"
57
64
  - "database_logs:/logs"
@@ -116,6 +123,13 @@ services:
116
123
  INFRAHUB_INITIAL_AGENT_TOKEN: ${INFRAHUB_TESTING_INITIAL_AGENT_TOKEN}
117
124
  INFRAHUB_SECURITY_SECRET_KEY: ${INFRAHUB_TESTING_SECURITY_SECRET_KEY}
118
125
  PREFECT_API_URL: ${INFRAHUB_TESTING_PREFECT_API}
126
+ # Tracing
127
+ INFRAHUB_TRACE_ENABLE: ${INFRAHUB_TRACE_ENABLE:-false}
128
+ INFRAHUB_TRACE_EXPORTER_ENDPOINT:
129
+ INFRAHUB_TRACE_EXPORTER_PROTOCOL: ${INFRAHUB_TRACE_EXPORTER_PROTOCOL:-grpc}
130
+ INFRAHUB_TRACE_EXPORTER_TYPE: ${INFRAHUB_TRACE_EXPORTER_TYPE:-console}
131
+ INFRAHUB_TRACE_INSECURE: ${INFRAHUB_TRACE_INSECURE:-true}
132
+ OTEL_RESOURCE_ATTRIBUTES:
119
133
  depends_on:
120
134
  database:
121
135
  condition: service_healthy
@@ -155,6 +169,13 @@ services:
155
169
  INFRAHUB_WORKFLOW_ADDRESS: ${INFRAHUB_TESTING_WORKFLOW_ADDRESS}
156
170
  INFRAHUB_TIMEOUT: ${INFRAHUB_TESTING_TIMEOUT}
157
171
  PREFECT_API_URL: ${INFRAHUB_TESTING_PREFECT_API}
172
+ # Tracing
173
+ INFRAHUB_TRACE_ENABLE: ${INFRAHUB_TRACE_ENABLE:-false}
174
+ INFRAHUB_TRACE_EXPORTER_ENDPOINT:
175
+ INFRAHUB_TRACE_EXPORTER_PROTOCOL: ${INFRAHUB_TRACE_EXPORTER_PROTOCOL:-grpc}
176
+ INFRAHUB_TRACE_EXPORTER_TYPE: ${INFRAHUB_TRACE_EXPORTER_TYPE:-console}
177
+ INFRAHUB_TRACE_INSECURE: ${INFRAHUB_TRACE_INSECURE:-true}
178
+ OTEL_RESOURCE_ATTRIBUTES:
158
179
  depends_on:
159
180
  - infrahub-server
160
181
  volumes:
@@ -187,6 +208,12 @@ services:
187
208
  - "--promscrape.config=/etc/prometheus/prometheus.yml"
188
209
  ports:
189
210
  - ${INFRAHUB_TESTING_SCRAPER_PORT:-0}:8428
211
+ healthcheck:
212
+ test: wget -qO- http://127.0.0.1:8428/-/healthy
213
+ start_period: 10s
214
+ interval: 5s
215
+ timeout: 5s
216
+ retries: 10
190
217
 
191
218
  volumes:
192
219
  database_data:
@@ -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
 
@@ -1,6 +1,6 @@
1
1
  import hashlib
2
2
  import json
3
- from datetime import UTC, datetime
3
+ from datetime import datetime, timezone
4
4
  from types import TracebackType
5
5
  from typing import Any
6
6
 
@@ -35,7 +35,7 @@ class InfrahubPerformanceTest:
35
35
  self.env_vars = {}
36
36
  self.project_name = ""
37
37
  self.test_info = {}
38
- self.start_time = datetime.now(UTC)
38
+ self.start_time = datetime.now(timezone.utc)
39
39
  self.end_time: datetime | None = None
40
40
  self.results_url = results_url
41
41
  self.scraper_endpoint = ""
@@ -57,7 +57,7 @@ class InfrahubPerformanceTest:
57
57
 
58
58
  def finalize(self, session: pytest.Session) -> None:
59
59
  if self.initialized:
60
- self.end_time = datetime.now(UTC)
60
+ self.end_time = datetime.now(timezone.utc)
61
61
  self.extract_test_session_information(session)
62
62
  self.send_results()
63
63
 
@@ -100,7 +100,7 @@ class InfrahubPerformanceTest:
100
100
  return self
101
101
 
102
102
  def fetch_metrics(self) -> None:
103
- with httpx.Client() as client:
103
+ with httpx.Client(timeout=30.0) as client:
104
104
  # Get Infrahub metrics
105
105
  response = client.post(
106
106
  url=self.scraper_endpoint,
@@ -129,7 +129,7 @@ class InfrahubPerformanceTest:
129
129
  if not exc_type and self.active_measurements:
130
130
  self.add_measurement(
131
131
  definition=self.active_measurements.definition,
132
- value=(datetime.now(UTC) - self.active_measurements.start_time).total_seconds() * 1000,
132
+ value=(datetime.now(timezone.utc) - self.active_measurements.start_time).total_seconds() * 1000,
133
133
  context=self.active_measurements.context,
134
134
  )
135
135
 
@@ -125,7 +125,7 @@ def pytest_terminal_summary(
125
125
  performance_test = terminalreporter._session.infrahub_performance_test
126
126
 
127
127
  report = [
128
- f"{measurement.name}: {measurement.value} {measurement.unit.value}"
128
+ f"{measurement.name} ({measurement.context}): {measurement.value} {measurement.unit.value}"
129
129
  for measurement in performance_test.measurements
130
130
  ]
131
131
  terminalreporter.write("\n" + "\n".join(report) + "\n")
File without changes
@@ -1,13 +0,0 @@
1
- from pydantic import Field
2
-
3
- from infrahub.context import InfrahubContext
4
- from infrahub.message_bus import InfrahubMessage
5
-
6
-
7
- class EventBranchMerge(InfrahubMessage):
8
- """Sent when a branch has been merged."""
9
-
10
- source_branch: str = Field(..., description="The source branch")
11
- target_branch: str = Field(..., description="The target branch")
12
-
13
- context: InfrahubContext = Field(..., description="The context of the event")
@@ -1,3 +0,0 @@
1
- from . import branch
2
-
3
- __all__ = ["branch"]
@@ -1,61 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from prefect import flow
4
-
5
- from infrahub.core import registry
6
- from infrahub.core.diff.model.path import BranchTrackingId
7
- from infrahub.core.diff.models import RequestDiffUpdate
8
- from infrahub.core.diff.repository.repository import DiffRepository
9
- from infrahub.dependencies.registry import get_component_registry
10
- from infrahub.log import get_logger
11
- from infrahub.message_bus import InfrahubMessage, messages
12
- from infrahub.services import InfrahubServices # noqa: TC001 needed for prefect flow
13
- from infrahub.workflows.catalogue import (
14
- DIFF_UPDATE,
15
- TRIGGER_ARTIFACT_DEFINITION_GENERATE,
16
- TRIGGER_GENERATOR_DEFINITION_RUN,
17
- )
18
-
19
- log = get_logger()
20
-
21
-
22
- @flow(name="branch-event-merge")
23
- async def merge(message: messages.EventBranchMerge, service: InfrahubServices) -> None:
24
- async with service.database.start_session() as db:
25
- log.info("Branch merged", source_branch=message.source_branch, target_branch=message.target_branch)
26
-
27
- events: list[InfrahubMessage] = [
28
- messages.RefreshRegistryBranches(),
29
- ]
30
- component_registry = get_component_registry()
31
- default_branch = registry.get_branch_from_registry()
32
- diff_repository = await component_registry.get_component(DiffRepository, db=db, branch=default_branch)
33
- # send diff update requests for every branch-tracking diff
34
- branch_diff_roots = await diff_repository.get_roots_metadata(base_branch_names=[message.target_branch])
35
-
36
- await service.workflow.submit_workflow(
37
- workflow=TRIGGER_ARTIFACT_DEFINITION_GENERATE,
38
- context=message.context,
39
- parameters={"branch": message.target_branch},
40
- )
41
-
42
- await service.workflow.submit_workflow(
43
- workflow=TRIGGER_GENERATOR_DEFINITION_RUN,
44
- context=message.context,
45
- parameters={"branch": message.target_branch},
46
- )
47
-
48
- for diff_root in branch_diff_roots:
49
- if (
50
- diff_root.base_branch_name != diff_root.diff_branch_name
51
- and diff_root.tracking_id
52
- and isinstance(diff_root.tracking_id, BranchTrackingId)
53
- ):
54
- request_diff_update_model = RequestDiffUpdate(branch_name=diff_root.diff_branch_name)
55
- await service.workflow.submit_workflow(
56
- workflow=DIFF_UPDATE, context=message.context, parameters={"model": request_diff_update_model}
57
- )
58
-
59
- for event in events:
60
- event.assign_meta(parent=message)
61
- await service.message_bus.send(message=event)