infrahub-server 1.1.6__py3-none-any.whl → 1.1.7__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 (67) hide show
  1. infrahub/core/attribute.py +4 -1
  2. infrahub/core/branch/tasks.py +7 -4
  3. infrahub/core/diff/combiner.py +11 -7
  4. infrahub/core/diff/coordinator.py +49 -70
  5. infrahub/core/diff/data_check_synchronizer.py +86 -7
  6. infrahub/core/diff/enricher/aggregated.py +3 -3
  7. infrahub/core/diff/enricher/cardinality_one.py +1 -6
  8. infrahub/core/diff/enricher/labels.py +13 -3
  9. infrahub/core/diff/enricher/path_identifier.py +2 -8
  10. infrahub/core/diff/merger/merger.py +5 -3
  11. infrahub/core/diff/model/path.py +42 -24
  12. infrahub/core/diff/query/all_conflicts.py +5 -2
  13. infrahub/core/diff/query/diff_get.py +2 -1
  14. infrahub/core/diff/query/field_specifiers.py +2 -0
  15. infrahub/core/diff/query/field_summary.py +2 -1
  16. infrahub/core/diff/query/filters.py +12 -1
  17. infrahub/core/diff/query/has_conflicts_query.py +5 -2
  18. infrahub/core/diff/query/{drop_tracking_id.py → merge_tracking_id.py} +3 -3
  19. infrahub/core/diff/query/roots_metadata.py +8 -1
  20. infrahub/core/diff/query/save.py +148 -63
  21. infrahub/core/diff/query/summary_counts_enricher.py +220 -0
  22. infrahub/core/diff/query/time_range_query.py +2 -1
  23. infrahub/core/diff/query_parser.py +49 -24
  24. infrahub/core/diff/repository/deserializer.py +23 -24
  25. infrahub/core/diff/repository/repository.py +76 -20
  26. infrahub/core/node/__init__.py +6 -1
  27. infrahub/core/node/constraints/grouped_uniqueness.py +9 -2
  28. infrahub/core/node/ipam.py +6 -1
  29. infrahub/core/node/permissions.py +4 -0
  30. infrahub/core/query/diff.py +41 -3
  31. infrahub/core/query/node.py +8 -2
  32. infrahub/core/query/relationship.py +2 -1
  33. infrahub/core/query/resource_manager.py +3 -1
  34. infrahub/core/utils.py +1 -0
  35. infrahub/core/validators/uniqueness/query.py +20 -17
  36. infrahub/database/__init__.py +13 -0
  37. infrahub/dependencies/builder/constraint/grouped/node_runner.py +0 -2
  38. infrahub/dependencies/builder/diff/coordinator.py +0 -2
  39. infrahub/graphql/mutations/computed_attribute.py +3 -1
  40. infrahub/graphql/mutations/diff.py +28 -4
  41. infrahub/graphql/mutations/main.py +11 -6
  42. infrahub/graphql/mutations/relationship.py +29 -1
  43. infrahub/graphql/mutations/tasks.py +6 -3
  44. infrahub/graphql/queries/resource_manager.py +7 -3
  45. infrahub/permissions/__init__.py +2 -1
  46. infrahub/permissions/types.py +26 -0
  47. infrahub_sdk/batch.py +2 -2
  48. infrahub_sdk/config.py +1 -1
  49. infrahub_sdk/ctl/check.py +1 -1
  50. infrahub_sdk/ctl/utils.py +2 -2
  51. infrahub_sdk/data.py +1 -1
  52. infrahub_sdk/node.py +4 -1
  53. infrahub_sdk/protocols.py +1 -0
  54. infrahub_sdk/schema/__init__.py +3 -0
  55. infrahub_sdk/testing/docker.py +0 -30
  56. infrahub_sdk/transfer/exporter/json.py +1 -1
  57. {infrahub_server-1.1.6.dist-info → infrahub_server-1.1.7.dist-info}/METADATA +41 -7
  58. {infrahub_server-1.1.6.dist-info → infrahub_server-1.1.7.dist-info}/RECORD +65 -65
  59. infrahub_testcontainers/container.py +12 -3
  60. infrahub_testcontainers/docker-compose.test.yml +22 -3
  61. infrahub_testcontainers/haproxy.cfg +43 -0
  62. infrahub_testcontainers/helpers.py +85 -1
  63. infrahub/core/diff/enricher/summary_counts.py +0 -105
  64. infrahub/dependencies/builder/diff/enricher/summary_counts.py +0 -8
  65. {infrahub_server-1.1.6.dist-info → infrahub_server-1.1.7.dist-info}/LICENSE.txt +0 -0
  66. {infrahub_server-1.1.6.dist-info → infrahub_server-1.1.7.dist-info}/WHEEL +0 -0
  67. {infrahub_server-1.1.6.dist-info → infrahub_server-1.1.7.dist-info}/entry_points.txt +0 -0
@@ -36,12 +36,12 @@ infrahub/computed_attribute/tasks.py,sha256=rzzWBKrmCQ_ZXJ4Uv5XE7IDhdx39I0_HwyDT
36
36
  infrahub/config.py,sha256=DQFXa6e6nbW6McdLVViuCcKYlGjw9ytmYDsKU5l-Jdo,33605
37
37
  infrahub/core/__init__.py,sha256=z6EJBZyCYCBqinoBtX9li6BTBbbGV8WCkE_4CrEsmDA,104
38
38
  infrahub/core/account.py,sha256=sggpuO_QpwYH7wXG_lZDnrB5Izmej486o_CYiYjYin8,26497
39
- infrahub/core/attribute.py,sha256=sDhl2BBoX_Q3BR6v8lZE85j5wIuXvswATiCC57tPoqU,42045
39
+ infrahub/core/attribute.py,sha256=H0vHLoNlp1KHI2Jw-Ti5FLmlwJqpYDcv4-9o3K1AsR8,42150
40
40
  infrahub/core/branch/__init__.py,sha256=h0oIj0gHp1xI-N1cYW8_N6VZ81CBOmLuiUt5cS5nKuk,49
41
41
  infrahub/core/branch/constants.py,sha256=RJxn6dPZGXrnkmOYcRkx6h7IYFp_RCOgoupj1BrBmOQ,112
42
42
  infrahub/core/branch/flow_models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  infrahub/core/branch/models.py,sha256=dX37fBbHA84WS7Se2nwSwvOyF4bZVVzZ3oXsV46x-so,19607
44
- infrahub/core/branch/tasks.py,sha256=JgjwBafBfn2CdTLr93dP6zVxqoJnAbY4FdXACrNJMdU,18448
44
+ infrahub/core/branch/tasks.py,sha256=88u1PGAuSDaQFDjxdiAUX7XVjn5sSfvio24qlWaxjoA,18667
45
45
  infrahub/core/constants/__init__.py,sha256=CWAeCuj5sPjJMmCK1l3bniRT_s2dEHAOJ7tny9RqpKM,6864
46
46
  infrahub/core/constants/database.py,sha256=lxesWX2z6SZgGok1bAY6_pCBm5rFfu7k4ayMBr6w_Vo,336
47
47
  infrahub/core/constants/infrahubkind.py,sha256=UVPYZdsUDjG0LvfCLgKdnJC12dFlpCC6YH2Mp-N7Zp4,2378
@@ -55,52 +55,52 @@ infrahub/core/diff/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
55
55
  infrahub/core/diff/artifacts/calculator.py,sha256=qk1DspB3bkKeWJFesLbmziCALVnbRadjrez1kn_IZWU,4435
56
56
  infrahub/core/diff/branch_differ.py,sha256=9W9ZClBAQffcZWZOsRekzf4XOG9W_G-1jCR68uvfhPQ,7820
57
57
  infrahub/core/diff/calculator.py,sha256=1kGY-Pgp2ji4hg2KKWOcFXo3f5vmBuCcxSLRhZK1tD0,7250
58
- infrahub/core/diff/combiner.py,sha256=k28aIP4vwCB-57fTPR37nFzUUtmj9qieH5Y_4iO6HX0,22811
58
+ infrahub/core/diff/combiner.py,sha256=bIAkgs92RHbmqc0T2HjYuZM7zhg6k7SCQN5ytpkFPC0,22950
59
59
  infrahub/core/diff/conflict_transferer.py,sha256=LZCuS9Dbr4yBf-bd3RF-9cPnaOvVWiU3KBmmwxbRZl0,3968
60
60
  infrahub/core/diff/conflicts_enricher.py,sha256=x6qiZOXO2A3BQ2Fm78apJ4WA7HLzPO84JomJfcyuyDg,12552
61
61
  infrahub/core/diff/conflicts_extractor.py,sha256=HysGoyNy9qMxfQ0Lh4AVZsRpHUBpezQNUa8cteVLb2k,9715
62
- infrahub/core/diff/coordinator.py,sha256=ngEeLTvQQ4qq0fJV_-xB8k21p9xJbQ3Ljow01Rr5m64,27707
63
- infrahub/core/diff/data_check_synchronizer.py,sha256=WTY3xwZMTOwWmdmTxYxx6T1WTWmuoUo6QAX1WKoPqBY,5202
62
+ infrahub/core/diff/coordinator.py,sha256=Gk9j9im6oQ_EEznw6XgJGARLOzUJwSA9vgO8GKKIaXw,25879
63
+ infrahub/core/diff/data_check_synchronizer.py,sha256=g2Indp5Yw0FZon1pCzSopZQ5i_HLvCtlzcnIlYFb5X0,9138
64
64
  infrahub/core/diff/enricher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- infrahub/core/diff/enricher/aggregated.py,sha256=1T-19FYAefSQRcfH2nDZN3Y6qqj3oba209Bjutsgqh8,731
66
- infrahub/core/diff/enricher/cardinality_one.py,sha256=N8RpTV9VaYV5Z9zgFVB90buRwR2cBK7_tCbnWQcwKuE,6795
65
+ infrahub/core/diff/enricher/aggregated.py,sha256=-LnAeNKDo6mifjL3d3ylCg1A9dTZJBySngWPeF7DfrY,793
66
+ infrahub/core/diff/enricher/cardinality_one.py,sha256=tuefTG0zIHUm-VwgIwTBEQyW76xJlcstNAEa-bwnmQU,6597
67
67
  infrahub/core/diff/enricher/hierarchy.py,sha256=Ey3PIRzResW6d5ovhHVrilmyQ2ZfuRZQIk0vatYIozY,7032
68
68
  infrahub/core/diff/enricher/interface.py,sha256=pmbWFPONRznDcAPMchVIRm0cTqMThkkwCby8XVLjGWU,265
69
- infrahub/core/diff/enricher/labels.py,sha256=9dD11moB8IxEzhGckKN5Ag83egmYV1XvpoLBe58Wglg,9168
70
- infrahub/core/diff/enricher/path_identifier.py,sha256=EtCF3OAr_z3C5lXifurkaZeDDWZFPQi6HgFEfwCzxwc,3570
71
- infrahub/core/diff/enricher/summary_counts.py,sha256=CheM-Fcla1-_CrU056Z_f6dcT090MIKDyvDuapF0db0,4807
69
+ infrahub/core/diff/enricher/labels.py,sha256=yOqd7-j7QtHsRgMnE0pS25M_okuDFPt5wCTNoYHmdhg,9804
70
+ infrahub/core/diff/enricher/path_identifier.py,sha256=6PE-PCf-7fvetScs1vDDSxwnXPRfqa5bvYV9BzFxKbc,3195
72
71
  infrahub/core/diff/exceptions.py,sha256=R-i0mnzNwmHH9HQ1C7YAfL6tys-CbwQCIwTTmjfF_BM,546
73
72
  infrahub/core/diff/ipam_diff_parser.py,sha256=HSqo1KUF9UZVruZ-AD8Koc24pEzqE1nNh8oMoCostSA,6620
74
73
  infrahub/core/diff/merger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- infrahub/core/diff/merger/merger.py,sha256=tifn1difKENlB3OI0nGNY3QmGV0lKUUEbfBwKK3Blqs,3408
74
+ infrahub/core/diff/merger/merger.py,sha256=XrVCIsj7HWl-xXr0d-RFwSRi96QUsjFLWlWWH2RiQPM,3422
76
75
  infrahub/core/diff/merger/model.py,sha256=z1pjX0SXvZkqCqdcUKae73v6eEBrjUNotnkx0noe2wc,742
77
76
  infrahub/core/diff/merger/serializer.py,sha256=b6tSOkSkBTuxfKutHnSZGkC0_-PMitA9Im7f8RV4pDc,18410
78
77
  infrahub/core/diff/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
78
  infrahub/core/diff/model/diff.py,sha256=EM9yIkZauSeNP13RXn0RSz7IAdGOqUv3-QKJyAEfsD8,9589
80
- infrahub/core/diff/model/path.py,sha256=eWSx3XnoJUijPdWH-EQg36bzyEBgD7o90_I8yv7xyOE,29339
79
+ infrahub/core/diff/model/path.py,sha256=1GBG8lQcUiCeqavRDGi8muyeJU1M8TYQtAsmHwsymLk,29825
81
80
  infrahub/core/diff/models.py,sha256=wmOzW4xQ5YreDCr_i56YMFtxbM4-LRgZort49fGJ0BQ,441
82
81
  infrahub/core/diff/payload_builder.py,sha256=fzti6hA6bAWRySS3Y2fSoOhNwvQjeSRfyB76Dl6BkVg,1742
83
82
  infrahub/core/diff/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- infrahub/core/diff/query/all_conflicts.py,sha256=OO_LmfuVOG0Ook7_MKGqEVs1ftWXtRWtq8wVsFBUu9Y,3024
83
+ infrahub/core/diff/query/all_conflicts.py,sha256=PIFQIU3uGHJx6GB9Fm_wwDjZX5U1J1yYBMf6Atesa24,3091
85
84
  infrahub/core/diff/query/artifact.py,sha256=tC2KYdCcxAjrMmLMjfwg3SwEiptxA5DrFjOCYkUXNQc,8815
86
85
  infrahub/core/diff/query/delete_query.py,sha256=MKB-vaUByt8TbI1yyq_amk9FHhjnAAlY_BBi4MnrrFk,844
87
- infrahub/core/diff/query/diff_get.py,sha256=Qoe2AKtsM6L3NoodqcDJI3hBrD2nfaNVRtm0sRSaIP0,7398
86
+ infrahub/core/diff/query/diff_get.py,sha256=eUk4EhSx8kHxiHQnJoKSS0rVdfhtn-658GKw_AtE73E,7467
88
87
  infrahub/core/diff/query/diff_summary.py,sha256=u3SkPQYa7SPreZ2_JHk4SPOS829MVa3rt-RZG908QAE,3825
89
- infrahub/core/diff/query/drop_tracking_id.py,sha256=qu0-SdCDL0Lwf-0mKuBihGXOkfpMXOAm-_PkWtk_Tz0,816
90
- infrahub/core/diff/query/field_specifiers.py,sha256=h-UP10pY0CCaJRb_pPzp1x8eLqwAKHP9-cMib-wvz2w,1402
91
- infrahub/core/diff/query/field_summary.py,sha256=V8kvRAnL7MLPAmesCbar1GU5XJtZ7rZp8n8kI0Krv0k,3091
92
- infrahub/core/diff/query/filters.py,sha256=eNx1pWddWlNd1jkylCLRLto-0qxovEG-CBGftDZE8VU,3343
88
+ infrahub/core/diff/query/field_specifiers.py,sha256=trua1xJ-p_IhzZLoXc_8N9fGU2pSk3s_k57l2L8lcm0,1524
89
+ infrahub/core/diff/query/field_summary.py,sha256=ZXYxX5f-nJ0rG_ZzfSxmF01OmkBYdSj34Xt6sfBl078,3164
90
+ infrahub/core/diff/query/filters.py,sha256=HnbeTo3W2n0gQcKYM4my7sQ0Syoj7aPy5WFkVp38qLc,3646
93
91
  infrahub/core/diff/query/get_conflict_query.py,sha256=fXJNx5hiZW3NLAbGITvC-iuRDhRkXFhLF3oRTOzgEqM,876
94
- infrahub/core/diff/query/has_conflicts_query.py,sha256=-KtuKVwoA5b21xilB3DIBbPqO9_pro3U0TSTpVDwLDM,2454
92
+ infrahub/core/diff/query/has_conflicts_query.py,sha256=nftOmnAtDsNxxhpEoLcbQdalhgqx5ROckabou1CSv-Y,2531
95
93
  infrahub/core/diff/query/merge.py,sha256=HZgsf9tMIEZ_O-ztWBmF-L75nAO9LOe1lKo53Ehub9I,22902
96
- infrahub/core/diff/query/roots_metadata.py,sha256=Kzfox3RD26fT51xjj5P9-XtHywkTk2lj5LKRoWRAeH8,1808
97
- infrahub/core/diff/query/save.py,sha256=MewTGCvfT1eu2nX0W9vEK-GxI6A60dRT6LJiSB4YZLc,17453
98
- infrahub/core/diff/query/time_range_query.py,sha256=lBzSwlMZpFd7t_bddu6D1mCnd3HLFNzDcqjoZMzbiAg,2914
94
+ infrahub/core/diff/query/merge_tracking_id.py,sha256=puDyqQv-g0jHA-ZuNNwHyJ2spbWOUoSZr131d0NOu0M,817
95
+ infrahub/core/diff/query/roots_metadata.py,sha256=mwS8elSVxH-xHYdMd0maAGJ94sGY9oXk85jp59RsCQ4,2166
96
+ infrahub/core/diff/query/save.py,sha256=5RaYepOLBw7hZRabBca0Hlqi0L9oFTJiJ7io_5kSls0,22044
97
+ infrahub/core/diff/query/summary_counts_enricher.py,sha256=RKDJVAIKPGSaK3wqFwYNRLSgr3GdT0w2s26cW6LJe6Q,8436
98
+ infrahub/core/diff/query/time_range_query.py,sha256=W4CQlxfy37VysSc4aSpuklf-4pJFB57AxsjyL4ahatw,2987
99
99
  infrahub/core/diff/query/update_conflict_query.py,sha256=z19Y2l9T78A-ydQbqoWYt-eSXhaxMkrD_oLMuaW9FdA,1196
100
- infrahub/core/diff/query_parser.py,sha256=ph0xjvnGXtlvjdH6oAtxxYv9Yjufh-_5ItxvSUZ2bwk,36423
100
+ infrahub/core/diff/query_parser.py,sha256=vhWfm7wm9j1SztBWHXBGA16ly467z7lBi5N_5QjASGk,37765
101
101
  infrahub/core/diff/repository/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
- infrahub/core/diff/repository/deserializer.py,sha256=Cndi8QVmlfUht5acjuPm53mrNVg03KSzlHZWN6Mbr_8,20255
103
- infrahub/core/diff/repository/repository.py,sha256=0zxS5MBI2S8wkDA_uxiymvENZYX325mEu_D3PcjlHEs,17001
102
+ infrahub/core/diff/repository/deserializer.py,sha256=zGPXWUxTqlMIpEOrpoGhVJvdMJOdm1Wo8U74HAbfrvo,20246
103
+ infrahub/core/diff/repository/repository.py,sha256=TTVvpb6EaLnvmTAh6sLwfKMh5nWSibzB7sXRZIKTFvI,19445
104
104
  infrahub/core/diff/tasks.py,sha256=vJf3HdgkvBG5b_mnmFmdpd9xDeBOuD4XFgNSd1Wbex8,3045
105
105
  infrahub/core/enums.py,sha256=5wMcX9x6acU9CTa4B4b6rFwgRZ31N9c9TR3n2EO0BuI,490
106
106
  infrahub/core/graph/__init__.py,sha256=jwgNlvRvVs2_s5YC1TqeLucoKBHQ4pDox1v0tbE9oIw,19
@@ -159,15 +159,15 @@ infrahub/core/migrations/schema/placeholder_dummy.py,sha256=3T3dBwC_ZyehOJr2KRKF
159
159
  infrahub/core/migrations/schema/tasks.py,sha256=qrHz2dW-lwp1K3EWNnAAqh5HZn15-SgZQceOF-hC7Mc,4111
160
160
  infrahub/core/migrations/shared.py,sha256=y60PTvFKrwLB3SrCmsXr-XR188mJGDGpqZj_9qwmr8U,7133
161
161
  infrahub/core/models.py,sha256=vkxrU_CNccRC-w7YKq-eibqjlJz-CnEaa-j9oIsaus4,24269
162
- infrahub/core/node/__init__.py,sha256=J1lg90ys7YXNNmr8QL__5EZSP1RlUSoJGfKIwYE_gN0,30573
162
+ infrahub/core/node/__init__.py,sha256=T2zpQdd8MSAnHruaTKx3u0Puhwz4MS01rvyt4hPy_dE,30773
163
163
  infrahub/core/node/base.py,sha256=naK0ZmWTnwNTESvRRfSTybleBoGELZKm4bdUa9QmZvw,2655
164
164
  infrahub/core/node/constraints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
165
  infrahub/core/node/constraints/attribute_uniqueness.py,sha256=jbZP_c4oAIMfLte1x666JbV8it764VD2E44_hxsHZRY,2115
166
- infrahub/core/node/constraints/grouped_uniqueness.py,sha256=NQoJfnXJxxr3gWGBDAsT1snqi-TpAMCi_Mzl95siAGg,8717
166
+ infrahub/core/node/constraints/grouped_uniqueness.py,sha256=2Pupx8ISxex7td_ElelV0rVYuhMq1kINiB_rAC2Xhzg,9123
167
167
  infrahub/core/node/constraints/interface.py,sha256=K53ht1ozEiDV8LKKdd1slAByh0VP5CUT4_VE9MrkiGU,325
168
168
  infrahub/core/node/delete_validator.py,sha256=KkCh5F2osBwVv0Wl2f9BB74ywhOsPgNXkYFOEO9zojs,10541
169
- infrahub/core/node/ipam.py,sha256=WsgtGSmtmOYdk8XgH5JoKVz4P0CoDYp_R3iRFsiqp28,2845
170
- infrahub/core/node/permissions.py,sha256=EMO0oto4NIOcn6JXCwwLPl3M_TncGNC4DXAlj_Uy_m0,2051
169
+ infrahub/core/node/ipam.py,sha256=JvWP3tZ2DtMHz6EBgPa8GixgvuMa6_dAt24glDuJu2c,2974
170
+ infrahub/core/node/permissions.py,sha256=zYc6_4yp-4ZYziZSFu59AthUmFV9fTeSdvXSJ5KDE9U,2235
171
171
  infrahub/core/node/resource_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  infrahub/core/node/resource_manager/ip_address_pool.py,sha256=Ap7A37Cka3iB2fMjBEF871wXslDhGOGACtlWgnMwlGE,4703
173
173
  infrahub/core/node/resource_manager/ip_prefix_pool.py,sha256=c-0J3_fBiyOOoD1YFyQoDq-Y_VUbHzRmKry7boDndNw,4778
@@ -181,11 +181,11 @@ infrahub/core/query/__init__.py,sha256=iXvVvRB5s6f06UxBqkOucrbH7fOuUgyu1M8VXnlMN
181
181
  infrahub/core/query/attribute.py,sha256=-84v73Je49QpYcdBcBS6Acj8i8uIGFaOxJyFd2kszD4,11756
182
182
  infrahub/core/query/branch.py,sha256=OmYS1n1U4NEbDXBrPAM9lvh_qb_prbRdNnC07N1k-Mw,4561
183
183
  infrahub/core/query/delete.py,sha256=BsCeUb11Le3NU2hLMcu05acvWrRVrGncxGxpkWTIzJE,1902
184
- infrahub/core/query/diff.py,sha256=PkNcQ3hgcf-2aT9enauYtoNJVf7z3stkY36QLRF7ZNU,30009
184
+ infrahub/core/query/diff.py,sha256=73Jy-D1wd6GYpUoRb7MGDMkgSuX6KeQ_8swaYLhgJQU,31942
185
185
  infrahub/core/query/ipam.py,sha256=xWCemBaiOA00eU3sB8XmOdNOJ1L69Lls3L2GIw5P_CU,28123
186
- infrahub/core/query/node.py,sha256=UhVfDHvBAIualNNh6rL71snbG_-GaB2XCvTohezFInk,59348
187
- infrahub/core/query/relationship.py,sha256=30oRyNAM59lYA1nV1Vi0istLke73UoB5aDVzoDbJ76I,35001
188
- infrahub/core/query/resource_manager.py,sha256=AzmHSbUIb2Zow_p9g4RmBt008udbOIc8igyMZ7Wyg7Q,12438
186
+ infrahub/core/query/node.py,sha256=qdZYjUcNQTM3o3HLwnbC8xG2WqdGXwFFuQL2X7glPmU,59747
187
+ infrahub/core/query/relationship.py,sha256=3NobAJQuAWoshPas9mQtLJi1RDCzxsf9TJyGPYByy7I,35089
188
+ infrahub/core/query/resource_manager.py,sha256=yzAYu6E7szjD8ZBaInivpOfmbMHLEFtHHcha_2OE7Yc,12527
189
189
  infrahub/core/query/standard_node.py,sha256=Wh9ekHhfamxizri_1M5EQFcgJWyIvtAMQRz9nEKOL3w,4437
190
190
  infrahub/core/query/subquery.py,sha256=5vSBz8CuQHXmka1LtWZp4RDClA0IfJFi0L2cb9uZRZM,7636
191
191
  infrahub/core/query/task.py,sha256=DjcNUt4PXdvIDq_e_F3bHFEA_Hxd6-HLD6FkuuoAQic,3089
@@ -228,7 +228,7 @@ infrahub/core/task/task.py,sha256=GiQcOqKaWxjOEGHmNfwCTD6IgLkhHFIQ1_Ev_XvMSLc,38
228
228
  infrahub/core/task/task_log.py,sha256=Ihn8G2uW8K3wYz42qRjcddCSlspjN67apb44uirqxqA,986
229
229
  infrahub/core/task/user_task.py,sha256=Pa6h-3a4-lXdYlPhcEORE_Dt9rxn_KZNvm7hQhMHN2Q,4607
230
230
  infrahub/core/timestamp.py,sha256=LzftyzfOJ1wedqm69mvkL_oHczzX3vGNuc7kk1KrK7U,1049
231
- infrahub/core/utils.py,sha256=cphgwcCl-nHIEQ7Ea7k1Ees9TXgCqYcRpbT8-9Hz3To,9070
231
+ infrahub/core/utils.py,sha256=Wuc1s_PpuI12AfnrF7-8snGGLH0yS0xbYP0i7gao3bI,9091
232
232
  infrahub/core/validators/__init__.py,sha256=yl5EZcZxuQ1LYEDD_rEVBHuidRAqkcE_h2iiYSS8oYw,2185
233
233
  infrahub/core/validators/aggregated_checker.py,sha256=HSX_jEJGVGHRBEjpCl80daT6TX7nXtfuROSS8T2a4dc,4728
234
234
  infrahub/core/validators/attribute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -262,8 +262,8 @@ infrahub/core/validators/uniqueness/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
262
262
  infrahub/core/validators/uniqueness/checker.py,sha256=IqreVcMPZj7nNhC5cc5SlBSZ-P6txVmPxJp6gU028Ls,10266
263
263
  infrahub/core/validators/uniqueness/index.py,sha256=yu-clITQF4MrgK36hsyuXllvR4QkVTqy4ugi_Y_C_Sg,5081
264
264
  infrahub/core/validators/uniqueness/model.py,sha256=EPl8X91BSGXGU7GWbUSue6laNGhAtIiXj7rFaz56Kvk,5197
265
- infrahub/core/validators/uniqueness/query.py,sha256=WgRKKC5rC-wpWOawPh7Y8wEgsEsPzDYxB1AhJCo3PDM,9694
266
- infrahub/database/__init__.py,sha256=A2H8RBnFfmrsPkmZWMlxt1yOLkgBl4kWOxAnzXPqBO4,19721
265
+ infrahub/core/validators/uniqueness/query.py,sha256=DigQCR5278wBiXNXhy1FFTTVQewlf2Q8rCcuSmyilkQ,10171
266
+ infrahub/database/__init__.py,sha256=kAoCPRqfxNWTRu9o7-xCWLLryvMbf5OiG6Th5H7aFhQ,20123
267
267
  infrahub/database/constants.py,sha256=WmV1iuOk4xulxZHOVvO3sS_VF1eTf7fKh0TPe_RnfV4,507
268
268
  infrahub/database/index.py,sha256=y0sWXO3tdIr1wL1XC9O6iNRV-Elu2KAXFOiYXRIIhN4,1659
269
269
  infrahub/database/manager.py,sha256=BDXNw1RNBeSFV-EZd0aGFbPNuoqlKwrkDqmYB7sy4tU,317
@@ -273,7 +273,7 @@ infrahub/database/neo4j.py,sha256=IE5lSevKqu-tJa3KF_bj_gOUx-SpZNdmGOl6oheNhiY,26
273
273
  infrahub/dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
274
274
  infrahub/dependencies/builder/constraint/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
275
275
  infrahub/dependencies/builder/constraint/grouped/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
276
- infrahub/dependencies/builder/constraint/grouped/node_runner.py,sha256=a2_XXAGcn0ch4CG6rcRqyGcMBnausXZmBgIDeCLBUqg,1376
276
+ infrahub/dependencies/builder/constraint/grouped/node_runner.py,sha256=bk84DCReSTGQSMrNwKPJQUOqd-1mplf1yVZkxVgzgwY,1218
277
277
  infrahub/dependencies/builder/constraint/node/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
278
  infrahub/dependencies/builder/constraint/node/grouped_uniqueness.py,sha256=lDPINXeKuAoxwPcxG0p9HcnZFAnIiPLlWNz0yHApcIw,477
279
279
  infrahub/dependencies/builder/constraint/node/uniqueness.py,sha256=3YzMLdhSBDCb78vMzufSzfoX6VKa7AwwTqNwuDL9q0E,489
@@ -303,7 +303,7 @@ infrahub/dependencies/builder/diff/combiner.py,sha256=ZFdP95Nxq4ws5Kdg3ywvG4B7Re
303
303
  infrahub/dependencies/builder/diff/conflict_transferer.py,sha256=faslY7GQsx1MekKgluq4z8MbtWbK_Zn5HuPzFWTAaH8,490
304
304
  infrahub/dependencies/builder/diff/conflicts_enricher.py,sha256=nhXS9sSq-hmKDnseyYB51wkQSSOVfY4xYPgEXelyMos,363
305
305
  infrahub/dependencies/builder/diff/conflicts_extractor.py,sha256=LL_Tvsp-I6R1q9IxCB9OhsF4FJV29PylUSGtLGLGEDQ,398
306
- infrahub/dependencies/builder/diff/coordinator.py,sha256=eLU5IwYstR4d0tQ5ci4ih4L1O60kaHcYUajvdAhI6O8,1648
306
+ infrahub/dependencies/builder/diff/coordinator.py,sha256=7Z4SwtkKicZLnWQl_sZFKpHkSWqa1co_ijsBExWlVQo,1479
307
307
  infrahub/dependencies/builder/diff/data_check_conflict_recorder.py,sha256=ABMNwa0H6uo-WW_EjhFXMEdFkIJ2e6cBY9yPuiGbhUE,683
308
308
  infrahub/dependencies/builder/diff/data_check_synchronizer.py,sha256=k8mc4yAd7hczXajaMfw9yQ04b3qtqD1Jm5G4uDbmNNc,890
309
309
  infrahub/dependencies/builder/diff/deserializer.py,sha256=lw7WhTW9bEtxKmdo-iq75oMKgchboPW085tN1QVfotM,391
@@ -314,7 +314,6 @@ infrahub/dependencies/builder/diff/enricher/cardinality_one.py,sha256=84JJmbFr4Z
314
314
  infrahub/dependencies/builder/diff/enricher/hierarchy.py,sha256=waPTBwZSe3wmynGcLrEzpoCQZm2sfh56h3Cg46vWfq4,392
315
315
  infrahub/dependencies/builder/diff/enricher/labels.py,sha256=EZy4OWEGbb1OUhARD0SOSBJSCzdXHIT_c5RpM9GxLCk,374
316
316
  infrahub/dependencies/builder/diff/enricher/path_identifier.py,sha256=Pv31HAzacLkkV1p5lra5Kg9epAWp_uTjLVAqAMCpEUw,423
317
- infrahub/dependencies/builder/diff/enricher/summary_counts.py,sha256=VrI-kO7q8sPykqImb9t4SvUU6494jrxluzNRM38-TVE,404
318
317
  infrahub/dependencies/builder/diff/ipam_diff_parser.py,sha256=ZFEMMXWe0x8gr2gyPFuHfto9DtZZSUbZisragYKOhvs,639
319
318
  infrahub/dependencies/builder/diff/repository.py,sha256=Z3-61TcDJyl8Am7yD-h5a0S0A6aTXl2asDnMKqE3oBE,478
320
319
  infrahub/dependencies/builder/ip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -378,12 +377,12 @@ infrahub/graphql/mutations/account.py,sha256=MR9hJQCY4LxwdxmhS4UI6GnmwGMdBlOrjq3
378
377
  infrahub/graphql/mutations/artifact_definition.py,sha256=DQofuL3YqLordJEl6MJqFtitwD85bUUKP97RIPavS0Q,3245
379
378
  infrahub/graphql/mutations/attribute.py,sha256=a35MP8Pvy_42N5dkO3HKATgJDW6qy9ncDu5t8YI3AUE,2734
380
379
  infrahub/graphql/mutations/branch.py,sha256=PmyoQKdFouDGjMUgy9vLyN3HJfyohS5D7DHpMiL8eKE,8533
381
- infrahub/graphql/mutations/computed_attribute.py,sha256=bD9lF5JZhVKUbZsUBCKPAkQrvIdMMe1bCXxDdkEWOOM,4062
382
- infrahub/graphql/mutations/diff.py,sha256=9cRa2jPHCVubve9wpkODjfiG_CloWmw6Y9vzoU4jMHs,2473
380
+ infrahub/graphql/mutations/computed_attribute.py,sha256=8FmG2gY6Pls1ZpmAcW8AmMMAYtyOJJOwqyHub68W6GA,4118
381
+ infrahub/graphql/mutations/diff.py,sha256=rp6zxOVQ681QpiASLjPn_ghQI6COEGd3U8dpJJ_Lp9U,4057
383
382
  infrahub/graphql/mutations/diff_conflict.py,sha256=Rx0TvqDK_jqtJlK9vKkBcTI5ybVADi524kazr4WwVYk,2779
384
383
  infrahub/graphql/mutations/graphql_query.py,sha256=zn6GrSixspdoxnjQJk68l2HlwDDPfU7z3L_GIK84qjA,3341
385
384
  infrahub/graphql/mutations/ipam.py,sha256=S26y3k-s6obkHKE2BVQi8FuJk8xxzGPQZFCEpLA7bgs,16887
386
- infrahub/graphql/mutations/main.py,sha256=9DUL_m83HmrsiNVX3OznwUV_dhBHpUM0oxMfwhAZRpo,17888
385
+ infrahub/graphql/mutations/main.py,sha256=CzH0PM6JiXgLFuh2SpWUdhISRRmX-yh0xMKnssvRBTs,18205
387
386
  infrahub/graphql/mutations/menu.py,sha256=JC7wpSsVk9xeEGNIdWwRut6xYWEMPEyTWKH3plPppXM,3677
388
387
  infrahub/graphql/mutations/models.py,sha256=OMjCJNHF5WaoAqO-KGVllzDHW_mxFlFoyOxVWYCxmWQ,299
389
388
  infrahub/graphql/mutations/node_getter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -392,11 +391,11 @@ infrahub/graphql/mutations/node_getter/by_hfid.py,sha256=1cEeg2jvVN6qojBrRrx5h1Q
392
391
  infrahub/graphql/mutations/node_getter/by_id.py,sha256=FTSyqwc_Rf_0hec7TFF_a5GNJQeQS54FOPHsva_6vyw,888
393
392
  infrahub/graphql/mutations/node_getter/interface.py,sha256=aLPUTB3oxb4MduKCTeXviC_nN6mKlMujO2Qba-E1CbM,450
394
393
  infrahub/graphql/mutations/proposed_change.py,sha256=6wYany-bI1sk3G0_rORubQ6XWK1bRWi8hgrxP-Pod9Q,9366
395
- infrahub/graphql/mutations/relationship.py,sha256=uAWxxd7sT6gFlTiy4ELL4JX7XEs3s__MDaW1-_1RVh0,6761
394
+ infrahub/graphql/mutations/relationship.py,sha256=Bz-iJVt0bfPO_ySfh-WQX_wurpGJCPgXBCqXPEvkLNs,8115
396
395
  infrahub/graphql/mutations/repository.py,sha256=TfqNrTZtZqqvVGDumWcFidilzS31AvHfirfzojpq6uE,10837
397
396
  infrahub/graphql/mutations/resource_manager.py,sha256=b9K-c6a_noqzB5yKHZDMJSIO3_StXHZnzcWSD9WTrik,8784
398
397
  infrahub/graphql/mutations/schema.py,sha256=v354ubGGcoXRjNVVq49csKo16RCxOPtP1pLKbE3jemE,11418
399
- infrahub/graphql/mutations/tasks.py,sha256=RBfzFPIc6jbBy3iI9HDy366egDY_ljnCfJt3dt20VZg,3363
398
+ infrahub/graphql/mutations/tasks.py,sha256=uTqH4PxFhOij8jH1fqw8E_kc5ninEv5rh4IgEmgHWVE,3575
400
399
  infrahub/graphql/parser.py,sha256=VP3Ot0kC3gAd85TXsIW0nfsVv2JolWMkKdVExgmAglo,8631
401
400
  infrahub/graphql/permissions.py,sha256=aP0yzseu0HzxulwfSo3GQ3HM4PNsPhDqS2-CQ_e3f4g,1300
402
401
  infrahub/graphql/queries/__init__.py,sha256=LGmI88POb8a4fyjSuBEkOkCIYpU2FZEwOkxWuretmHc,789
@@ -407,7 +406,7 @@ infrahub/graphql/queries/diff/tree.py,sha256=Ql-3b6mBjGRAHhbGCFb_BTGENydYmNXUDPQ
407
406
  infrahub/graphql/queries/internal.py,sha256=0_NO8aS5Ldp5eWXOrxqm_5ZG_UlMmvD0BWRECGjLIgY,670
408
407
  infrahub/graphql/queries/ipam.py,sha256=f_9WV8iGCCQq6np6BS8lfbH6_5Prjm6qAUrIbGlbQFo,3875
409
408
  infrahub/graphql/queries/relationship.py,sha256=uy_lTZaJu2ZOQBO9ZJFtTY0tBREVeGW5oxx-KuC8C4w,2504
410
- infrahub/graphql/queries/resource_manager.py,sha256=4HC7kFmiqr7jADHGwYDjpXUX2eI0o2AgDpbRoHmOMu0,14452
409
+ infrahub/graphql/queries/resource_manager.py,sha256=MMjiU7Hz_-CZ2bABGuO6ImMfAgo31jQGUvDoyxbV1RA,14576
411
410
  infrahub/graphql/queries/search.py,sha256=PdFvrkMvaKqcJz7_6BW_osRaAjeBqaxVg4nUvwuJEis,4942
412
411
  infrahub/graphql/queries/status.py,sha256=F3UpRHocUrJRQeOyI1PYa9W-2YDwTBTdGU-CyC6UYJE,1980
413
412
  infrahub/graphql/queries/task.py,sha256=qBL54BBKRW3vRxg1bIIM88c6Yfrq6IiH2-zc-m-NdTk,3491
@@ -500,13 +499,13 @@ infrahub/message_bus/operations/send/echo.py,sha256=WEqZaB8l2QUNp20Nta66Kh-lzxiZ
500
499
  infrahub/message_bus/types.py,sha256=Hui3N-j-by4DpB9eK98NPtr7VFueK65uoxLLxE3YQf8,5574
501
500
  infrahub/middleware.py,sha256=g6lPpXewWNcLjyzRsr7FjdTIbdc5H2HitGQX-L7itgI,657
502
501
  infrahub/models.py,sha256=QmwJwo3hNCta8BXM7eLsD9qv1S73Rj0cC_crLpadHTc,715
503
- infrahub/permissions/__init__.py,sha256=hGEPIA1YuVFZKXSZ_IzckmIQZ9GPXAZB92Df_FGAKH4,468
502
+ infrahub/permissions/__init__.py,sha256=WAtFhyaQj8dFkZJGnIbBaVbSMttGZGgK18V-QbMNVNU,538
504
503
  infrahub/permissions/backend.py,sha256=azvyFOTne0Zy1yrc4t9u3GCkHI_x_OPSDV65yxmVPDQ,529
505
504
  infrahub/permissions/constants.py,sha256=2sGj9caif_aH2XtD3s35BU4HRONOjRHCyCJ3gbT5kZs,1221
506
505
  infrahub/permissions/local_backend.py,sha256=JXUBGcYsi62Jmpz_sSueYGV3tqxV1WrNXpevhwKhr1w,1470
507
506
  infrahub/permissions/manager.py,sha256=RpYiKeAy6ByIjbR6zuuV8try4Ug8edivKZJ5X6SQw8U,6655
508
507
  infrahub/permissions/report.py,sha256=kXNVbWp_q5mu6Qx8DUcHceZOdKkVqUZO8E7YWiA1n3o,5118
509
- infrahub/permissions/types.py,sha256=062OowV-LvNTDfBtHIVnxfzLOeGqMSNG99PP__Cf9Pw,614
508
+ infrahub/permissions/types.py,sha256=cQQ0lJKlkufmJ7TQO2CM2yi0Y_yL-F7waFrjGumvkIE,1580
510
509
  infrahub/pools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
511
510
  infrahub/pools/address.py,sha256=QouI4q09sPRTyXYQFL88l0qiQHsGgdYhttPu7Iq1lIM,773
512
511
  infrahub/pools/number.py,sha256=gSpEHVmshk-gq3zBm5bPoVY7AF_lBlKHL2sHei6X4yM,2463
@@ -583,17 +582,17 @@ infrahub_sdk/__init__.py,sha256=weZAa06Ar0NO5IOKLQICtCceHUCKQxbkBxHebqQGJ1o,401
583
582
  infrahub_sdk/_importer.py,sha256=8oHTMxa_AMO_qbfb3UXNfjSr31S5YJTcqe-YMrixY_E,2257
584
583
  infrahub_sdk/analyzer.py,sha256=UDJN372vdAiuAv2TEyPUlsSVoUfZN6obWkIokNNaHbA,4148
585
584
  infrahub_sdk/async_typer.py,sha256=Gj7E8EGdjA-XF404vr9cBt20mmbroQh7N68HXhWYx00,892
586
- infrahub_sdk/batch.py,sha256=LRZ_04ic56ll9FBjgXCYrJRDJcwB3wR1yX4grrQutDQ,3795
585
+ infrahub_sdk/batch.py,sha256=WSAPAPvRvcHR7aCFH56RcqKaVxsig1A5nIdg0mmSZBQ,3879
587
586
  infrahub_sdk/branch.py,sha256=hmtoIekQ1uusoJ6yEKlw6vrFMTAHJrXu-YsqqCQC_kc,12716
588
587
  infrahub_sdk/checks.py,sha256=AmlCim-9Mbhpye_yYAaV_NM-pFL4_JvQGEVM3cJsaqY,5700
589
588
  infrahub_sdk/client.py,sha256=yuD-uvx_5LLXqHm9sjo0jei1AH-xGgl4DhYJcoqH8uw,99592
590
589
  infrahub_sdk/code_generator.py,sha256=UJoqofjO7WSHygORhok0RRUv7HG4aTcl6htczaKNBjc,4411
591
- infrahub_sdk/config.py,sha256=xVKPFor6lwl1wVaWcvQywvVQXAMRlU7Sz0bk2hF8u48,7161
590
+ infrahub_sdk/config.py,sha256=hjF4Fo6NrxxLHaS1XBZ1O2o0aU7IILEyhPXRiiRedjc,7190
592
591
  infrahub_sdk/constants.py,sha256=Ca66r09eDzpmMhfFAspKFSehSxOmoflVongP-UuBDc4,138
593
592
  infrahub_sdk/ctl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
594
593
  infrahub_sdk/ctl/_file.py,sha256=FdbveH5t6jVZvANTGDYKRTt1BhfnL6D_6qKDiJlXxkE,498
595
594
  infrahub_sdk/ctl/branch.py,sha256=CgKi7GwkI0cebbYOfaQQd3h7uG4JVmoEUVQHda_MOr4,4733
596
- infrahub_sdk/ctl/check.py,sha256=t5WmvTx6qViWlnGEzyfmixyiA3uxsFGOLbhSju_QESA,7879
595
+ infrahub_sdk/ctl/check.py,sha256=0OyicWSCUsuHOn5ef2t6LBcIKJugzKCdlsUsb44tfKI,7921
597
596
  infrahub_sdk/ctl/cli.py,sha256=A9jJKYBo5opzIIyWYf6niyAHhy49V59g6biueMDFbpE,328
598
597
  infrahub_sdk/ctl/cli_commands.py,sha256=d46DBf6hRynKEn_olTuaVnPF1qgo6paF0mlSPtENkGA,18889
599
598
  infrahub_sdk/ctl/client.py,sha256=6bmXmQta9qQCJ8HybQwt2uSF2X1Em91xNFpwiKFujxs,2083
@@ -610,19 +609,19 @@ infrahub_sdk/ctl/render.py,sha256=KJsZQ6iNW4u8K_dtEKmJxtTpkSMR_zP2YT-IP6Z85tc,40
610
609
  infrahub_sdk/ctl/repository.py,sha256=jyfRRE3mMPMEKJUIr5XfCdG9Y144MvDT86sE-op_mWY,4754
611
610
  infrahub_sdk/ctl/schema.py,sha256=28eHiWWsuQgOVa8FiIa94pb6tk6-xTQXq9Il2MnbnkU,7060
612
611
  infrahub_sdk/ctl/transform.py,sha256=5qRqiKeEefs0rda6RAFAAj1jkCKdbPYE_t8O-n436LQ,414
613
- infrahub_sdk/ctl/utils.py,sha256=dVYkbNkL221dVCE5QhP0l_Uq6AjAPIO0KTa4fcUiliA,6922
612
+ infrahub_sdk/ctl/utils.py,sha256=_Uy-AAgFzp7CqrO1cfFOhAspScv3wlGeBwMqwf_FZAs,7006
614
613
  infrahub_sdk/ctl/validate.py,sha256=6DHhk6ubZih-FaNfX6m8G0HwOEJuJk6DFHCg1oAaZtQ,3879
615
- infrahub_sdk/data.py,sha256=4d8Fd1s7lTeOu8JWXsK2m2BM8t_5HG0Z73fnCZGc7Pc,841
614
+ infrahub_sdk/data.py,sha256=t3jCqmnYM8rhTZlPlc37aW8zKMKLLVcTWHozH9qb0Bs,870
616
615
  infrahub_sdk/diff.py,sha256=Ms-3YyXo-DoF1feV9qP7GKakBYUNFsULZdy-yMEG71w,4258
617
616
  infrahub_sdk/exceptions.py,sha256=S563xPBgwvdXkVS42XLLTuCkdVnrXOZyDSY8aFd3udc,4436
618
617
  infrahub_sdk/generator.py,sha256=TVxSDByNnnuqFOpmi2mBgUZnU07PudvH8J-aM8QtwMM,5242
619
618
  infrahub_sdk/graphql.py,sha256=qw1HJ95-JhRS_zrsyDj5P_PWKuUNgoXvH1q-Kfs27IA,5861
620
619
  infrahub_sdk/groups.py,sha256=GL14ByW4GHrkqOLJ-_vGhu6bkYDxljqPtkErcQVehv0,711
621
620
  infrahub_sdk/jinja2.py,sha256=lTfV9E_P5gApaX6RW9M8U8oixQi-0H3U8wcs8fdGVaU,1150
622
- infrahub_sdk/node.py,sha256=I2mgUWQD5gSIg3tp4cILu2TIHz57kSoLEDt8HHeuMqA,87320
621
+ infrahub_sdk/node.py,sha256=kwVswivc5kPnmzXjFB8Mt-BFbLhOQcp70PMl63CmkIc,87484
623
622
  infrahub_sdk/object_store.py,sha256=d-EDnxPpw_7BsbjbGbH50rjt-1-Ojj2zNrhFansP5hA,4299
624
623
  infrahub_sdk/playback.py,sha256=ubkY1LiW_wFwm4auerdQ0zFJcFJZ1SYQT6-d4bxzaLg,1906
625
- infrahub_sdk/protocols.py,sha256=1anewqFJNtAQKoAptHlDiiWCEP66pDlFNLMu1NbpRnM,21196
624
+ infrahub_sdk/protocols.py,sha256=vmAuV_IjjbslSshrmFjKYcSMtyzi0vlgwj9UufCo4Hc,21233
626
625
  infrahub_sdk/protocols_base.py,sha256=9aE5K2mwZ0xAza_yBppVWVRDds9ALhQqJofOjT-Alao,3882
627
626
  infrahub_sdk/pytest_plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
628
627
  infrahub_sdk/pytest_plugin/exceptions.py,sha256=ek2WyTBPuZdxhJClOhLo4EcFdvgE4BP0q26OiAr-Sec,2185
@@ -640,7 +639,7 @@ infrahub_sdk/queries.py,sha256=s4gnx67e-MNg-3jP4Vx1jreO9uiW3uYPllFQgaTODdQ,2308
640
639
  infrahub_sdk/query_groups.py,sha256=Hg6MdjU9wSWQmtKktlmKCHcwjlodz7L_VPPou-jC8vk,11434
641
640
  infrahub_sdk/recorder.py,sha256=G134AfAwE5efSqArVJneurF2JIEuhvSJWWI3woPczgI,2194
642
641
  infrahub_sdk/repository.py,sha256=PbSHHl6ajIeZu1t4pH1j7qzR-DPOkGuzubcNM02NuV0,1011
643
- infrahub_sdk/schema/__init__.py,sha256=mC3nojBmJT9VVuiGPJjOAMfP-pUHWoG71I1K8VKLQTU,25841
642
+ infrahub_sdk/schema/__init__.py,sha256=RINn1qvejp88Y57Ov1D7ceYkxV2gpYMucldJPiNkjLU,25879
644
643
  infrahub_sdk/schema/main.py,sha256=rySdEBJNMVpulWKMRw3ARqSbZPiFBHRYR2nqZvYp1VY,10580
645
644
  infrahub_sdk/schema/repository.py,sha256=AAITXGprCPb2WptJSRhj9gEbRrW1HHM-yEPYAgsztcU,11299
646
645
  infrahub_sdk/spec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -648,7 +647,7 @@ infrahub_sdk/spec/menu.py,sha256=LvNLuBEkiLTMNgM3kseIzM7wQ_zK_2uXM_anUNu6Pfc,105
648
647
  infrahub_sdk/spec/object.py,sha256=H55fctUrQUDbRrRJJQQcXHppVOeMye6ykBoo6lCasDw,5012
649
648
  infrahub_sdk/store.py,sha256=kWJ9UvirLuSHLuDDzTd4-ualTkuRocy9W0J7TdL60Po,5734
650
649
  infrahub_sdk/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
651
- infrahub_sdk/testing/docker.py,sha256=O8RUA7ddor7A1eXCppRfXkzz3LAaYY1imFyzXj08TEM,1871
650
+ infrahub_sdk/testing/docker.py,sha256=V089h9fGjNnXVdw7Fw-mloSBgSnjXT9rvnDpj7cecoI,724
652
651
  infrahub_sdk/testing/repository.py,sha256=9s4MMaMljbJe97Ua4bJgc64giQ2UMC0bD5qIqYd4YNk,3571
653
652
  infrahub_sdk/testing/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
654
653
  infrahub_sdk/testing/schemas/animal.py,sha256=5frpoBCeGaM05X8sFxIDQUH93JrPsa-kIYKb8xcQxcw,6796
@@ -660,7 +659,7 @@ infrahub_sdk/transfer/constants.py,sha256=kdYkVWif8v4IiWbbff3Mn3JnPCXD2ONI3SLXQM
660
659
  infrahub_sdk/transfer/exceptions.py,sha256=MK-jvBTYMyasjQ_0qeQBLSP_ocob0yhrBDuJ2XLgUvU,237
661
660
  infrahub_sdk/transfer/exporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
662
661
  infrahub_sdk/transfer/exporter/interface.py,sha256=6_X7Hay7VbE7TGYjmt2iv5AOrSe-skZP8nTALQzYzIw,297
663
- infrahub_sdk/transfer/exporter/json.py,sha256=IqZpuxVXyZpjdhohGwNnTtQ4bzRQlZNrbRAdu4PryXE,6892
662
+ infrahub_sdk/transfer/exporter/json.py,sha256=ZOQevyZe1D9gKqoV5jZdlU5HrYDlq0jeQ0LyXaVMbwU,6929
664
663
  infrahub_sdk/transfer/importer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
665
664
  infrahub_sdk/transfer/importer/interface.py,sha256=TN7FH_LgThkBjrpWwkdTZIVJPtNklAYiK3Mn6RPs7IM,195
666
665
  infrahub_sdk/transfer/importer/json.py,sha256=-Tlmg22TiBrEqXOSLMnUzlCFOZ2M0Q8lWyPbwjUjifw,9654
@@ -671,11 +670,12 @@ infrahub_sdk/utils.py,sha256=5rnk-ZfMoMvNHH72D0Bb5OVRjyk6cJ__UoKvZlUNzns,11064
671
670
  infrahub_sdk/uuidt.py,sha256=Tz-4nHkJwbi39UT3gaIe2wJeZNAoBqf6tm3sw7LZbXc,2155
672
671
  infrahub_sdk/yaml.py,sha256=dxdzEjuaG-OwF2XIcA2YXoFEmF4TeiwKju5K2uOQhgQ,2963
673
672
  infrahub_testcontainers/__init__.py,sha256=oPpmesGgYBSdKTg1L37FGwYBeao1EHury5SJGul-CT8,216
674
- infrahub_testcontainers/container.py,sha256=g0AOvnV3z_-wGCMOUBCaK4-U_ST38YvGXYqZbfGtKXY,4421
675
- infrahub_testcontainers/docker-compose.test.yml,sha256=lS-mXnL73rOVXs3nW1R_BsfSGH8_d38fwxVkH_3Uf9o,5352
676
- infrahub_testcontainers/helpers.py,sha256=3K6Bbfcr19DwH9pfc-WE6ehqIUbAXx1NruVOkKJoXvY,2274
677
- infrahub_server-1.1.6.dist-info/LICENSE.txt,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
678
- infrahub_server-1.1.6.dist-info/METADATA,sha256=_2pIvHST_lQUNyM-tEl1ljmLfWpb9-mRHuvZw9F77LU,4702
679
- infrahub_server-1.1.6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
680
- infrahub_server-1.1.6.dist-info/entry_points.txt,sha256=JNQoBcLpUyfeOMhls_-uX1CdJ8Vl-AFSh9UhzTcKdjA,329
681
- infrahub_server-1.1.6.dist-info/RECORD,,
673
+ infrahub_testcontainers/container.py,sha256=dtweuZol1LAZiJBItRnB-Yrd-k6ohVuOdcgWcd0F-RM,4855
674
+ infrahub_testcontainers/docker-compose.test.yml,sha256=l-ac0Bi8MxXCNM0w7QPakmeMsYzMnJXPhENN1yGRHAk,5993
675
+ infrahub_testcontainers/haproxy.cfg,sha256=QF_DJSll10uGWICLnwFpj0-0VWIeB3CteCDthVoWpCU,1316
676
+ infrahub_testcontainers/helpers.py,sha256=NlzyZN1QpByUQ6t7NwIDQxSSM7xFvY2jCM6-P8RYE6g,5253
677
+ infrahub_server-1.1.7.dist-info/LICENSE.txt,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
678
+ infrahub_server-1.1.7.dist-info/METADATA,sha256=2sxXxvhAhT4WUkgmFmTejFPTFLC7iPJwtWMr-oa_YAk,8081
679
+ infrahub_server-1.1.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
680
+ infrahub_server-1.1.7.dist-info/entry_points.txt,sha256=JNQoBcLpUyfeOMhls_-uX1CdJ8Vl-AFSh9UhzTcKdjA,329
681
+ infrahub_server-1.1.7.dist-info/RECORD,,
@@ -18,7 +18,7 @@ class ContainerService:
18
18
 
19
19
 
20
20
  INFRAHUB_SERVICES: dict[str, ContainerService] = {
21
- "server": ContainerService(container="infrahub-server", port=8000),
21
+ "server": ContainerService(container="infrahub-server-lb", port=8000),
22
22
  "task-manager": ContainerService(container="task-manager", port=4200),
23
23
  }
24
24
 
@@ -33,8 +33,8 @@ PROJECT_ENV_VARIABLES: dict[str, str] = {
33
33
  "INFRAHUB_TESTING_INITIAL_ADMIN_TOKEN": "06438eb2-8019-4776-878c-0941b1f1d1ec",
34
34
  "INFRAHUB_TESTING_INITIAL_AGENT_TOKEN": "44af444d-3b26-410d-9546-b758657e026c",
35
35
  "INFRAHUB_TESTING_SECURITY_SECRET_KEY": "327f747f-efac-42be-9e73-999f08f86b92",
36
- "INFRAHUB_TESTING_ADDRESS": "http://infrahub-server:8000",
37
- "INFRAHUB_TESTING_INTERNAL_ADDRESS": "http://infrahub-server:8000",
36
+ "INFRAHUB_TESTING_ADDRESS": "http://infrahub-server-lb:8000",
37
+ "INFRAHUB_TESTING_INTERNAL_ADDRESS": "http://infrahub-server-lb:8000",
38
38
  "INFRAHUB_TESTING_BROKER_ADDRESS": "message-queue",
39
39
  "INFRAHUB_TESTING_CACHE_ADDRESS": "cache",
40
40
  "INFRAHUB_TESTING_WORKFLOW_ADDRESS": "task-manager",
@@ -43,6 +43,10 @@ PROJECT_ENV_VARIABLES: dict[str, str] = {
43
43
  "INFRAHUB_TESTING_LOCAL_REMOTE_GIT_DIRECTORY": "repos",
44
44
  "INFRAHUB_TESTING_INTERNAL_REMOTE_GIT_DIRECTORY": "/remote",
45
45
  "INFRAHUB_TESTING_WEB_CONCURRENCY": "4",
46
+ "INFRAHUB_TESTING_LOCAL_DB_BACKUP_DIRECTORY": "backups",
47
+ "INFRAHUB_TESTING_INTERNAL_DB_BACKUP_DIRECTORY": "/backups",
48
+ "INFRAHUB_TESTING_API_SERVER_COUNT": "2",
49
+ "INFRAHUB_TESTING_TASK_WORKER_COUNT": "2",
46
50
  }
47
51
 
48
52
 
@@ -80,6 +84,11 @@ class InfrahubDockerCompose(DockerCompose):
80
84
  test_compose_file = directory / "docker-compose.yml"
81
85
  test_compose_file.write_bytes(compose_file.read_bytes())
82
86
 
87
+ haproxy_config_file = current_directory / "haproxy.cfg"
88
+
89
+ test_haproxy_config_file = directory / "haproxy.cfg"
90
+ test_haproxy_config_file.write_bytes(haproxy_config_file.read_bytes())
91
+
83
92
  return test_compose_file
84
93
 
85
94
  @classmethod
@@ -28,6 +28,22 @@ services:
28
28
  timeout: 5s
29
29
  retries: 3
30
30
 
31
+ infrahub-server-lb:
32
+ image: haproxy:3.1-alpine
33
+ volumes:
34
+ - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
35
+ depends_on:
36
+ infrahub-server:
37
+ condition: service_started
38
+ healthcheck:
39
+ test: wget -O /dev/null http://127.0.0.1:8000/api/config || exit 1
40
+ interval: 5s
41
+ timeout: 5s
42
+ retries: 20
43
+ start_period: 10s
44
+ ports:
45
+ - ${INFRAHUB_TESTING_SERVER_PORT:-0}:8000
46
+
31
47
  database:
32
48
  image: ${NEO4J_DOCKER_IMAGE:-neo4j:5.20.0-community}
33
49
  restart: unless-stopped
@@ -35,9 +51,11 @@ services:
35
51
  NEO4J_AUTH: neo4j/admin
36
52
  NEO4J_dbms_security_procedures_unrestricted: "apoc.*"
37
53
  NEO4J_dbms_security_auth__minimum__password__length: 4
54
+ NEO4J_ACCEPT_LICENSE_AGREEMENT: "yes"
38
55
  volumes:
39
56
  - "database_data:/data"
40
57
  - "database_logs:/logs"
58
+ - "./${INFRAHUB_TESTING_LOCAL_DB_BACKUP_DIRECTORY}:${INFRAHUB_TESTING_INTERNAL_DB_BACKUP_DIRECTORY}"
41
59
  healthcheck:
42
60
  test: wget http://localhost:7474 || exit 1
43
61
  interval: 2s
@@ -80,6 +98,9 @@ services:
80
98
  retries: 5
81
99
 
82
100
  infrahub-server:
101
+ deploy:
102
+ mode: replicated
103
+ replicas: ${INFRAHUB_TESTING_API_SERVER_COUNT}
83
104
  image: "${INFRAHUB_TESTING_DOCKER_IMAGE}:${INFRAHUB_TESTING_IMAGE_VERSION}"
84
105
  command: >
85
106
  gunicorn --config backend/infrahub/serve/gunicorn_config.py
@@ -106,8 +127,6 @@ services:
106
127
  condition: service_healthy
107
128
  task-manager:
108
129
  condition: service_healthy
109
- ports:
110
- - ${INFRAHUB_TESTING_SERVER_PORT:-0}:8000
111
130
  volumes:
112
131
  - "storage_data:/opt/infrahub/storage"
113
132
  tty: true
@@ -121,7 +140,7 @@ services:
121
140
  task-worker:
122
141
  deploy:
123
142
  mode: replicated
124
- replicas: 2
143
+ replicas: ${INFRAHUB_TESTING_TASK_WORKER_COUNT}
125
144
  image: "${INFRAHUB_TESTING_DOCKER_IMAGE}:${INFRAHUB_TESTING_IMAGE_VERSION}"
126
145
  command: prefect worker start --type infrahubasync --pool infrahub-worker --with-healthcheck
127
146
  environment:
@@ -0,0 +1,43 @@
1
+ global
2
+ log stdout local0
3
+ log stdout local1 notice
4
+ #chroot /var/lib/haproxy
5
+ #stats socket /run/haproxy/admin.sock mode 660 level admin
6
+ stats timeout 30s
7
+ user haproxy
8
+ group haproxy
9
+ daemon
10
+
11
+ # Default SSL material locations
12
+ ca-base /etc/ssl/certs
13
+ crt-base /etc/ssl/private
14
+
15
+ # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
16
+ ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
17
+ ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
18
+ ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
19
+
20
+ defaults
21
+ log global
22
+ mode http
23
+ option httplog
24
+ option dontlognull
25
+ timeout connect 5000
26
+ timeout client 50000
27
+ timeout server 50000
28
+
29
+ resolvers docker
30
+ parse-resolv-conf
31
+ accepted_payload_size 8192
32
+
33
+ frontend fe
34
+ mode http
35
+ bind *:8000
36
+ option forwardfor
37
+
38
+ default_backend be
39
+
40
+ backend be
41
+ mode http
42
+ balance roundrobin
43
+ server-template api 100 infrahub-server:8000 check resolvers docker init-addr none
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import shutil
2
3
  import subprocess # noqa: S404
3
4
  from pathlib import Path
4
5
 
@@ -36,12 +37,25 @@ class TestInfrahubDocker:
36
37
 
37
38
  return directory
38
39
 
40
+ @pytest.fixture(scope="class")
41
+ def remote_backups_dir(self, tmp_directory: Path) -> Path:
42
+ directory = tmp_directory / PROJECT_ENV_VARIABLES["INFRAHUB_TESTING_LOCAL_DB_BACKUP_DIRECTORY"]
43
+ directory.mkdir(exist_ok=True)
44
+
45
+ return directory
46
+
39
47
  @pytest.fixture(scope="class")
40
48
  def default_branch(self) -> str:
41
49
  return "main"
42
50
 
43
51
  @pytest.fixture(scope="class")
44
- def infrahub_compose(self, tmp_directory: Path, infrahub_version: str) -> InfrahubDockerCompose:
52
+ def infrahub_compose(
53
+ self,
54
+ tmp_directory: Path,
55
+ remote_repos_dir: Path, # initialize repository before running docker compose to fix permissions issues # noqa: ARG002
56
+ remote_backups_dir: Path, # noqa: ARG002
57
+ infrahub_version: str,
58
+ ) -> InfrahubDockerCompose:
45
59
  return InfrahubDockerCompose.init(directory=tmp_directory, version=infrahub_version)
46
60
 
47
61
  @pytest.fixture(scope="class")
@@ -62,3 +76,73 @@ class TestInfrahubDocker:
62
76
  @pytest.fixture(scope="class")
63
77
  def task_manager_port(self, infrahub_app: dict[str, int]) -> int:
64
78
  return infrahub_app["task-manager"]
79
+
80
+ def backup_database(self, request: pytest.FixtureRequest, dest_dir: Path | None = None) -> None:
81
+ assert "enterprise" in os.environ.get("NEO4J_DOCKER_IMAGE", "")
82
+
83
+ backup_dir: Path = request.getfixturevalue("remote_backups_dir")
84
+ infrahub_compose: InfrahubDockerCompose = request.getfixturevalue("infrahub_compose")
85
+
86
+ infrahub_compose.exec_in_container(
87
+ command=[
88
+ "neo4j-admin",
89
+ "database",
90
+ "backup",
91
+ "--to-path",
92
+ os.environ.get(
93
+ "INFRAHUB_TESTING_INTERNAL_DB_BACKUP_DIRECTORY",
94
+ PROJECT_ENV_VARIABLES["INFRAHUB_TESTING_INTERNAL_DB_BACKUP_DIRECTORY"],
95
+ ),
96
+ ],
97
+ service_name="database",
98
+ )
99
+
100
+ if dest_dir:
101
+ shutil.copytree(
102
+ str(backup_dir),
103
+ str(dest_dir),
104
+ )
105
+
106
+ def restore_database(self, request: pytest.FixtureRequest, backup_file: Path) -> None:
107
+ assert "enterprise" in os.environ.get("NEO4J_DOCKER_IMAGE", "")
108
+
109
+ backup_dir: Path = request.getfixturevalue("remote_backups_dir")
110
+ infrahub_compose: InfrahubDockerCompose = request.getfixturevalue("infrahub_compose")
111
+
112
+ shutil.copy(
113
+ str(backup_file),
114
+ str(backup_dir / backup_file.name),
115
+ )
116
+
117
+ infrahub_compose.exec_in_container(
118
+ command=["cypher-shell", "-u", "neo4j", "-p", "admin", "STOP DATABASE neo4j;"],
119
+ service_name="database",
120
+ )
121
+
122
+ infrahub_compose.exec_in_container(
123
+ command=[
124
+ "neo4j-admin",
125
+ "database",
126
+ "restore",
127
+ "--overwrite-destination",
128
+ "--from-path",
129
+ str(
130
+ Path(
131
+ os.environ.get(
132
+ "INFRAHUB_TESTING_INTERNAL_DB_BACKUP_DIRECTORY",
133
+ PROJECT_ENV_VARIABLES["INFRAHUB_TESTING_INTERNAL_DB_BACKUP_DIRECTORY"],
134
+ )
135
+ )
136
+ / backup_file.name
137
+ ),
138
+ ],
139
+ service_name="database",
140
+ )
141
+
142
+ infrahub_compose.exec_in_container(
143
+ command=["cypher-shell", "-d", "system", "-u", "neo4j", "-p", "admin", "START DATABASE neo4j;"],
144
+ service_name="database",
145
+ )
146
+
147
+ infrahub_compose.stop(down=False)
148
+ infrahub_compose.start()