infrahub-server 1.2.3__tar.gz → 1.2.5__tar.gz

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 (761) hide show
  1. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/PKG-INFO +2 -2
  2. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/db.py +308 -2
  3. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/git_agent.py +4 -10
  4. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/config.py +32 -0
  5. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/branch/tasks.py +50 -10
  6. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/constants/__init__.py +1 -0
  7. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/constraint/node/runner.py +6 -5
  8. infrahub_server-1.2.5/backend/infrahub/core/graph/__init__.py +1 -0
  9. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/__init__.py +4 -0
  10. infrahub_server-1.2.5/backend/infrahub/core/migrations/graph/m018_uniqueness_nulls.py +99 -0
  11. infrahub_server-1.2.5/backend/infrahub/core/migrations/graph/m025_uniqueness_nulls.py +26 -0
  12. infrahub_server-1.2.5/backend/infrahub/core/migrations/graph/m026_0000_prefix_fix.py +54 -0
  13. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/node_attribute_remove.py +16 -2
  14. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/models.py +1 -1
  15. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/__init__.py +4 -1
  16. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/constraints/grouped_uniqueness.py +6 -1
  17. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/resource_manager/number_pool.py +1 -1
  18. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/registry.py +18 -0
  19. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/basenode_schema.py +21 -1
  20. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/internal.py +2 -1
  21. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/generated/base_node_schema.py +1 -1
  22. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/manager.py +21 -1
  23. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/schema_branch.py +8 -7
  24. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/schema_branch_computed.py +12 -1
  25. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/database/__init__.py +10 -0
  26. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/branch_action.py +3 -0
  27. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/group_action.py +6 -1
  28. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/node_action.py +5 -1
  29. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/integrator.py +2 -2
  30. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/main.py +10 -12
  31. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/__init__.py +0 -4
  32. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/request_proposedchange_pipeline.py +5 -0
  33. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/__init__.py +0 -3
  34. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/requests/proposed_change.py +29 -9
  35. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/types.py +2 -34
  36. infrahub_server-1.2.5/backend/infrahub/proposed_change/branch_diff.py +65 -0
  37. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/proposed_change/tasks.py +12 -4
  38. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/server.py +6 -11
  39. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/cache/__init__.py +17 -0
  40. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/cache/redis.py +11 -1
  41. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/message_bus/__init__.py +20 -0
  42. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/workflow/worker.py +1 -1
  43. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/component.py +1 -2
  44. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/tasks/registry.py +3 -7
  45. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workers/infrahub_async.py +4 -10
  46. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workflows/catalogue.py +10 -0
  47. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/pyproject.toml +2 -2
  48. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/generator.py +1 -0
  49. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/node.py +16 -4
  50. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/schema/__init__.py +10 -1
  51. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/container.py +4 -0
  52. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/helpers.py +1 -1
  53. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/models.py +2 -2
  54. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/performance_test.py +4 -4
  55. infrahub_server-1.2.3/backend/infrahub/core/branch/flow_models.py +0 -0
  56. infrahub_server-1.2.3/backend/infrahub/core/graph/__init__.py +0 -1
  57. infrahub_server-1.2.3/backend/infrahub/core/migrations/graph/m018_uniqueness_nulls.py +0 -101
  58. infrahub_server-1.2.3/backend/infrahub/message_bus/messages/event_branch_merge.py +0 -13
  59. infrahub_server-1.2.3/backend/infrahub/message_bus/messages/event_worker_newprimaryapi.py +0 -9
  60. infrahub_server-1.2.3/backend/infrahub/message_bus/operations/event/__init__.py +0 -3
  61. infrahub_server-1.2.3/backend/infrahub/message_bus/operations/event/branch.py +0 -61
  62. infrahub_server-1.2.3/backend/infrahub/message_bus/operations/event/worker.py +0 -9
  63. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/LICENSE.txt +0 -0
  64. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/README.md +0 -0
  65. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/__init__.py +0 -0
  66. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/__init__.py +0 -0
  67. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/artifact.py +0 -0
  68. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/auth.py +0 -0
  69. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/dependencies.py +0 -0
  70. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/diff/__init__.py +0 -0
  71. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/diff/diff.py +0 -0
  72. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/diff/validation_models.py +0 -0
  73. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/exception_handlers.py +0 -0
  74. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/exceptions.py +0 -0
  75. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/file.py +0 -0
  76. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/internal.py +0 -0
  77. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/menu.py +0 -0
  78. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/oauth2.py +0 -0
  79. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/oidc.py +0 -0
  80. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/query.py +0 -0
  81. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/schema.py +0 -0
  82. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/static/redoc.standalone.js +0 -0
  83. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/static/swagger-ui-bundle.js +0 -0
  84. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/static/swagger-ui.css +0 -0
  85. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/storage.py +0 -0
  86. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/api/transformation.py +0 -0
  87. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/artifacts/__init__.py +0 -0
  88. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/artifacts/models.py +0 -0
  89. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/artifacts/tasks.py +0 -0
  90. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/auth.py +0 -0
  91. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/__init__.py +0 -0
  92. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/constants.py +0 -0
  93. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/context.py +0 -0
  94. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/events.py +0 -0
  95. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/server.py +0 -0
  96. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/tasks.py +0 -0
  97. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/cli/upgrade.py +0 -0
  98. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/components.py +0 -0
  99. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/computed_attribute/__init__.py +0 -0
  100. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/computed_attribute/constants.py +0 -0
  101. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/computed_attribute/gather.py +0 -0
  102. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/computed_attribute/models.py +0 -0
  103. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/computed_attribute/tasks.py +0 -0
  104. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/computed_attribute/triggers.py +0 -0
  105. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/context.py +0 -0
  106. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/__init__.py +0 -0
  107. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/account.py +0 -0
  108. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/attribute.py +0 -0
  109. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/branch/__init__.py +0 -0
  110. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/branch/models.py +0 -0
  111. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/changelog/__init__.py +0 -0
  112. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/changelog/diff.py +0 -0
  113. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/changelog/models.py +0 -0
  114. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/constants/database.py +0 -0
  115. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/constants/infrahubkind.py +0 -0
  116. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/constants/relationship_label.py +0 -0
  117. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/constants/schema.py +0 -0
  118. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/constraint/__init__.py +0 -0
  119. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/constraint/node/__init__.py +0 -0
  120. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/__init__.py +0 -0
  121. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/artifacts/__init__.py +0 -0
  122. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/artifacts/calculator.py +0 -0
  123. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/branch_differ.py +0 -0
  124. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/calculator.py +0 -0
  125. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/combiner.py +0 -0
  126. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/conflict_transferer.py +0 -0
  127. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/conflicts_enricher.py +0 -0
  128. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/conflicts_extractor.py +0 -0
  129. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/coordinator.py +0 -0
  130. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/data_check_synchronizer.py +0 -0
  131. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/enricher/__init__.py +0 -0
  132. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/enricher/aggregated.py +0 -0
  133. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/enricher/cardinality_one.py +0 -0
  134. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/enricher/hierarchy.py +0 -0
  135. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/enricher/interface.py +0 -0
  136. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/enricher/labels.py +0 -0
  137. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/enricher/path_identifier.py +0 -0
  138. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/enricher/summary_counts.py +0 -0
  139. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/exceptions.py +0 -0
  140. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/ipam_diff_parser.py +0 -0
  141. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/merger/__init__.py +0 -0
  142. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/merger/merger.py +0 -0
  143. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/merger/model.py +0 -0
  144. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/merger/serializer.py +0 -0
  145. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/model/__init__.py +0 -0
  146. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/model/diff.py +0 -0
  147. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/model/path.py +0 -0
  148. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/models.py +0 -0
  149. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/parent_node_adder.py +0 -0
  150. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/payload_builder.py +0 -0
  151. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/__init__.py +0 -0
  152. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/all_conflicts.py +0 -0
  153. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/artifact.py +0 -0
  154. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/delete_query.py +0 -0
  155. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/diff_get.py +0 -0
  156. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/diff_summary.py +0 -0
  157. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/field_specifiers.py +0 -0
  158. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/field_summary.py +0 -0
  159. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/filters.py +0 -0
  160. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/get_conflict_query.py +0 -0
  161. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/has_conflicts_query.py +0 -0
  162. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/merge.py +0 -0
  163. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/merge_tracking_id.py +0 -0
  164. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/roots_metadata.py +0 -0
  165. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/save.py +0 -0
  166. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/summary_counts_enricher.py +0 -0
  167. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/time_range_query.py +0 -0
  168. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query/update_conflict_query.py +0 -0
  169. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/query_parser.py +0 -0
  170. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/repository/__init__.py +0 -0
  171. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/repository/deserializer.py +0 -0
  172. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/repository/repository.py +0 -0
  173. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/diff/tasks.py +0 -0
  174. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/enums.py +0 -0
  175. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/graph/constraints.py +0 -0
  176. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/graph/index.py +0 -0
  177. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/graph/schema.py +0 -0
  178. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/initialization.py +0 -0
  179. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/integrity/__init__.py +0 -0
  180. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/integrity/object_conflict/__init__.py +0 -0
  181. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/integrity/object_conflict/conflict_recorder.py +0 -0
  182. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/ipam/__init__.py +0 -0
  183. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/ipam/constants.py +0 -0
  184. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/ipam/kinds_getter.py +0 -0
  185. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/ipam/model.py +0 -0
  186. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/ipam/reconciler.py +0 -0
  187. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/ipam/size.py +0 -0
  188. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/ipam/tasks.py +0 -0
  189. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/ipam/utilization.py +0 -0
  190. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/manager.py +0 -0
  191. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/merge.py +0 -0
  192. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/__init__.py +0 -0
  193. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m001_add_version_to_graph.py +0 -0
  194. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m002_attribute_is_default.py +0 -0
  195. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m003_relationship_parent_optional.py +0 -0
  196. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m004_add_attr_documentation.py +0 -0
  197. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m005_add_rel_read_only.py +0 -0
  198. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m006_add_rel_on_delete.py +0 -0
  199. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m007_add_rel_allow_override.py +0 -0
  200. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m008_add_human_friendly_id.py +0 -0
  201. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m009_add_generate_profile_attr.py +0 -0
  202. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m010_add_generate_profile_attr_generic.py +0 -0
  203. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m011_remove_profile_relationship_schema.py +0 -0
  204. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m012_convert_account_generic.py +0 -0
  205. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m013_convert_git_password_credential.py +0 -0
  206. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m014_remove_index_attr_value.py +0 -0
  207. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m015_diff_format_update.py +0 -0
  208. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m016_diff_delete_bug_fix.py +0 -0
  209. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m017_add_core_profile.py +0 -0
  210. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m019_restore_rels_to_time.py +0 -0
  211. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m020_duplicate_edges.py +0 -0
  212. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py +0 -0
  213. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m022_add_generate_template_attr.py +0 -0
  214. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py +0 -0
  215. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/graph/m024_missing_hierarchy_backfill.py +0 -0
  216. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/query/__init__.py +0 -0
  217. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/query/attribute_add.py +0 -0
  218. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/query/attribute_rename.py +0 -0
  219. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/query/delete_element_in_schema.py +0 -0
  220. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/query/node_duplicate.py +0 -0
  221. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/query/relationship_duplicate.py +0 -0
  222. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/query/schema_attribute_update.py +0 -0
  223. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/__init__.py +0 -0
  224. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/attribute_name_update.py +0 -0
  225. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/models.py +0 -0
  226. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/node_attribute_add.py +0 -0
  227. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/node_kind_update.py +0 -0
  228. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/node_remove.py +0 -0
  229. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/placeholder_dummy.py +0 -0
  230. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/schema/tasks.py +0 -0
  231. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/migrations/shared.py +0 -0
  232. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/base.py +0 -0
  233. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/constraints/__init__.py +0 -0
  234. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/constraints/attribute_uniqueness.py +0 -0
  235. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/constraints/interface.py +0 -0
  236. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/delete_validator.py +0 -0
  237. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/ipam.py +0 -0
  238. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/permissions.py +0 -0
  239. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/resource_manager/__init__.py +0 -0
  240. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/resource_manager/ip_address_pool.py +0 -0
  241. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/resource_manager/ip_prefix_pool.py +0 -0
  242. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/node/standard.py +0 -0
  243. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/path.py +0 -0
  244. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/property.py +0 -0
  245. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/protocols.py +0 -0
  246. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/protocols_base.py +0 -0
  247. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/__init__.py +0 -0
  248. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/attribute.py +0 -0
  249. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/branch.py +0 -0
  250. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/delete.py +0 -0
  251. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/diff.py +0 -0
  252. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/ipam.py +0 -0
  253. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/node.py +0 -0
  254. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/relationship.py +0 -0
  255. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/resource_manager.py +0 -0
  256. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/standard_node.py +0 -0
  257. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/subquery.py +0 -0
  258. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/task.py +0 -0
  259. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/task_log.py +0 -0
  260. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/query/utils.py +0 -0
  261. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/relationship/__init__.py +0 -0
  262. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/relationship/constraints/__init__.py +0 -0
  263. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/relationship/constraints/count.py +0 -0
  264. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/relationship/constraints/interface.py +0 -0
  265. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/relationship/constraints/peer_kind.py +0 -0
  266. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/relationship/constraints/profiles_kind.py +0 -0
  267. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/relationship/model.py +0 -0
  268. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/root.py +0 -0
  269. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/__init__.py +0 -0
  270. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/attribute_schema.py +0 -0
  271. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/computed_attribute.py +0 -0
  272. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/constants.py +0 -0
  273. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/__init__.py +0 -0
  274. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/__init__.py +0 -0
  275. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/account.py +0 -0
  276. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/artifact.py +0 -0
  277. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/builtin.py +0 -0
  278. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/check.py +0 -0
  279. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/core.py +0 -0
  280. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/generator.py +0 -0
  281. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/graphql_query.py +0 -0
  282. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/group.py +0 -0
  283. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/ipam.py +0 -0
  284. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/lineage.py +0 -0
  285. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/menu.py +0 -0
  286. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/permission.py +0 -0
  287. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/profile.py +0 -0
  288. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/propose_change.py +0 -0
  289. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/propose_change_comment.py +0 -0
  290. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/propose_change_validator.py +0 -0
  291. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/repository.py +0 -0
  292. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/resource_pool.py +0 -0
  293. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/template.py +0 -0
  294. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/transform.py +0 -0
  295. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/core/webhook.py +0 -0
  296. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/definitions/deprecated.py +0 -0
  297. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/dropdown.py +0 -0
  298. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/generated/__init__.py +0 -0
  299. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/generated/attribute_schema.py +0 -0
  300. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/generated/genericnode_schema.py +0 -0
  301. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/generated/node_schema.py +0 -0
  302. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/generated/relationship_schema.py +0 -0
  303. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/generic_schema.py +0 -0
  304. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/node_schema.py +0 -0
  305. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/profile_schema.py +0 -0
  306. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/relationship_schema.py +0 -0
  307. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/schema/template_schema.py +0 -0
  308. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/task/__init__.py +0 -0
  309. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/task/task.py +0 -0
  310. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/task/task_log.py +0 -0
  311. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/task/user_task.py +0 -0
  312. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/timestamp.py +0 -0
  313. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/utils.py +0 -0
  314. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/__init__.py +0 -0
  315. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/aggregated_checker.py +0 -0
  316. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/attribute/__init__.py +0 -0
  317. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/attribute/choices.py +0 -0
  318. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/attribute/enum.py +0 -0
  319. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/attribute/kind.py +0 -0
  320. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/attribute/length.py +0 -0
  321. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/attribute/optional.py +0 -0
  322. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/attribute/regex.py +0 -0
  323. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/attribute/unique.py +0 -0
  324. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/checks_runner.py +0 -0
  325. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/determiner.py +0 -0
  326. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/interface.py +0 -0
  327. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/model.py +0 -0
  328. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/models/__init__.py +0 -0
  329. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/models/validate_migration.py +0 -0
  330. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/models/violation.py +0 -0
  331. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/node/__init__.py +0 -0
  332. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/node/attribute.py +0 -0
  333. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/node/generate_profile.py +0 -0
  334. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/node/hierarchy.py +0 -0
  335. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/node/inherit_from.py +0 -0
  336. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/node/relationship.py +0 -0
  337. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/query.py +0 -0
  338. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/relationship/__init__.py +0 -0
  339. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/relationship/count.py +0 -0
  340. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/relationship/optional.py +0 -0
  341. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/relationship/peer.py +0 -0
  342. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/shared.py +0 -0
  343. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/tasks.py +0 -0
  344. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/uniqueness/__init__.py +0 -0
  345. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/uniqueness/checker.py +0 -0
  346. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/uniqueness/index.py +0 -0
  347. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/uniqueness/model.py +0 -0
  348. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/core/validators/uniqueness/query.py +0 -0
  349. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/database/constants.py +0 -0
  350. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/database/index.py +0 -0
  351. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/database/manager.py +0 -0
  352. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/database/memgraph.py +0 -0
  353. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/database/metrics.py +0 -0
  354. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/database/neo4j.py +0 -0
  355. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/__init__.py +0 -0
  356. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/__init__.py +0 -0
  357. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/grouped/__init__.py +0 -0
  358. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/grouped/node_runner.py +0 -0
  359. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/node/__init__.py +0 -0
  360. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/node/grouped_uniqueness.py +0 -0
  361. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/node/uniqueness.py +0 -0
  362. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/relationship_manager/__init__.py +0 -0
  363. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/relationship_manager/count.py +0 -0
  364. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_kind.py +0 -0
  365. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/relationship_manager/profiles_kind.py +0 -0
  366. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/__init__.py +0 -0
  367. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/aggregated.py +0 -0
  368. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/attribute_choices.py +0 -0
  369. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/attribute_enum.py +0 -0
  370. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/attribute_kind.py +0 -0
  371. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/attribute_length.py +0 -0
  372. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/attribute_optional.py +0 -0
  373. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/attribute_regex.py +0 -0
  374. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/attribute_uniqueness.py +0 -0
  375. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/generate_profile.py +0 -0
  376. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/inherit_from.py +0 -0
  377. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/node_attribute.py +0 -0
  378. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/node_relationship.py +0 -0
  379. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/relationship_count.py +0 -0
  380. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/relationship_optional.py +0 -0
  381. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/constraint/schema/uniqueness.py +0 -0
  382. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/__init__.py +0 -0
  383. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/calculator.py +0 -0
  384. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/combiner.py +0 -0
  385. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/conflict_transferer.py +0 -0
  386. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/conflicts_enricher.py +0 -0
  387. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/conflicts_extractor.py +0 -0
  388. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/coordinator.py +0 -0
  389. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/data_check_conflict_recorder.py +0 -0
  390. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/data_check_synchronizer.py +0 -0
  391. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/deserializer.py +0 -0
  392. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/diff_merger.py +0 -0
  393. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/enricher/__init__.py +0 -0
  394. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/enricher/aggregated.py +0 -0
  395. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/enricher/cardinality_one.py +0 -0
  396. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/enricher/hierarchy.py +0 -0
  397. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/enricher/labels.py +0 -0
  398. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/enricher/path_identifier.py +0 -0
  399. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/enricher/summary_counts.py +0 -0
  400. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/ipam_diff_parser.py +0 -0
  401. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/parent_node_adder.py +0 -0
  402. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/diff/repository.py +0 -0
  403. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/ip/__init__.py +0 -0
  404. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/ip/kinds_getter.py +0 -0
  405. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/node/__init__.py +0 -0
  406. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/builder/node/delete_validator.py +0 -0
  407. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/component/__init__.py +0 -0
  408. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/component/exceptions.py +0 -0
  409. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/component/registry.py +0 -0
  410. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/interface.py +0 -0
  411. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/dependencies/registry.py +0 -0
  412. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/__init__.py +0 -0
  413. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/artifact_action.py +0 -0
  414. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/constants.py +0 -0
  415. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/generator.py +0 -0
  416. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/models.py +0 -0
  417. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/repository_action.py +0 -0
  418. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/schema_action.py +0 -0
  419. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/utils.py +0 -0
  420. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/events/validator_action.py +0 -0
  421. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/exceptions.py +0 -0
  422. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/generators/__init__.py +0 -0
  423. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/generators/models.py +0 -0
  424. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/generators/tasks.py +0 -0
  425. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/__init__.py +0 -0
  426. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/base.py +0 -0
  427. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/constants.py +0 -0
  428. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/directory.py +0 -0
  429. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/models.py +0 -0
  430. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/repository.py +0 -0
  431. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/tasks.py +0 -0
  432. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/utils.py +0 -0
  433. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git/worktree.py +0 -0
  434. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git_credential/__init__.py +0 -0
  435. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git_credential/askpass.py +0 -0
  436. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/git_credential/helper.py +0 -0
  437. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/__init__.py +0 -0
  438. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/analyzer.py +0 -0
  439. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/api/__init__.py +0 -0
  440. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/api/dependencies.py +0 -0
  441. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/api/endpoints.py +0 -0
  442. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/app.py +0 -0
  443. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/__init__.py +0 -0
  444. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/query_permission_checker/__init__.py +0 -0
  445. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/query_permission_checker/anonymous_checker.py +0 -0
  446. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/query_permission_checker/checker.py +0 -0
  447. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/query_permission_checker/default_branch_checker.py +0 -0
  448. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/query_permission_checker/interface.py +0 -0
  449. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/query_permission_checker/merge_operation_checker.py +0 -0
  450. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/query_permission_checker/object_permission_checker.py +0 -0
  451. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/auth/query_permission_checker/super_admin_checker.py +0 -0
  452. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/constants.py +0 -0
  453. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/context.py +0 -0
  454. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/directives.py +0 -0
  455. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/enums.py +0 -0
  456. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/initialization.py +0 -0
  457. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/loaders/__init__.py +0 -0
  458. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/loaders/node.py +0 -0
  459. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/loaders/peers.py +0 -0
  460. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/loaders/shared.py +0 -0
  461. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/manager.py +0 -0
  462. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/metrics.py +0 -0
  463. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/models.py +0 -0
  464. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/__init__.py +0 -0
  465. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/account.py +0 -0
  466. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/artifact_definition.py +0 -0
  467. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/attribute.py +0 -0
  468. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/branch.py +0 -0
  469. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/computed_attribute.py +0 -0
  470. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/diff.py +0 -0
  471. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/diff_conflict.py +0 -0
  472. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/generator.py +0 -0
  473. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/graphql_query.py +0 -0
  474. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/ipam.py +0 -0
  475. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/menu.py +0 -0
  476. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/models.py +0 -0
  477. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/node_getter/__init__.py +0 -0
  478. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/node_getter/by_default_filter.py +0 -0
  479. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/node_getter/by_hfid.py +0 -0
  480. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/node_getter/by_id.py +0 -0
  481. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/node_getter/interface.py +0 -0
  482. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/proposed_change.py +0 -0
  483. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/relationship.py +0 -0
  484. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/repository.py +0 -0
  485. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/resource_manager.py +0 -0
  486. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/schema.py +0 -0
  487. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/tasks.py +0 -0
  488. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/mutations/webhook.py +0 -0
  489. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/parser.py +0 -0
  490. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/permissions.py +0 -0
  491. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/__init__.py +0 -0
  492. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/account.py +0 -0
  493. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/branch.py +0 -0
  494. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/diff/__init__.py +0 -0
  495. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/diff/tree.py +0 -0
  496. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/event.py +0 -0
  497. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/internal.py +0 -0
  498. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/ipam.py +0 -0
  499. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/relationship.py +0 -0
  500. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/resource_manager.py +0 -0
  501. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/search.py +0 -0
  502. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/status.py +0 -0
  503. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/queries/task.py +0 -0
  504. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/resolvers/__init__.py +0 -0
  505. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/resolvers/many_relationship.py +0 -0
  506. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/resolvers/resolver.py +0 -0
  507. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/resolvers/single_relationship.py +0 -0
  508. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/schema.py +0 -0
  509. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/subscription/__init__.py +0 -0
  510. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/subscription/events.py +0 -0
  511. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/subscription/graphql_query.py +0 -0
  512. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/__init__.py +0 -0
  513. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/attribute.py +0 -0
  514. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/branch.py +0 -0
  515. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/common.py +0 -0
  516. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/context.py +0 -0
  517. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/enums.py +0 -0
  518. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/event.py +0 -0
  519. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/interface.py +0 -0
  520. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/node.py +0 -0
  521. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/permission.py +0 -0
  522. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/relationship.py +0 -0
  523. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/standard_node.py +0 -0
  524. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/task.py +0 -0
  525. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/types/task_log.py +0 -0
  526. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/graphql/utils.py +0 -0
  527. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/groups/__init__.py +0 -0
  528. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/groups/ancestors.py +0 -0
  529. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/groups/models.py +0 -0
  530. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/groups/parsers.py +0 -0
  531. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/groups/tasks.py +0 -0
  532. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/helpers.py +0 -0
  533. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/lock.py +0 -0
  534. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/log.py +0 -0
  535. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/menu/__init__.py +0 -0
  536. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/menu/constants.py +0 -0
  537. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/menu/generator.py +0 -0
  538. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/menu/menu.py +0 -0
  539. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/menu/models.py +0 -0
  540. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/menu/repository.py +0 -0
  541. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/menu/utils.py +0 -0
  542. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/__init__.py +0 -0
  543. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/check_generator_run.py +0 -0
  544. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/finalize_validator_execution.py +0 -0
  545. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/git_file_get.py +0 -0
  546. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/git_repository_connectivity.py +0 -0
  547. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/proposed_change/__init__.py +0 -0
  548. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/proposed_change/base_with_diff.py +0 -0
  549. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/proposed_change/request_proposedchange_refreshartifacts.py +0 -0
  550. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/refresh_git_fetch.py +0 -0
  551. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/refresh_registry_branches.py +0 -0
  552. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/refresh_registry_rebasedbranch.py +0 -0
  553. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/request_generatordefinition_check.py +0 -0
  554. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/messages/send_echo_request.py +0 -0
  555. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/check/__init__.py +0 -0
  556. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/check/generator.py +0 -0
  557. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/finalize/__init__.py +0 -0
  558. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/finalize/validator.py +0 -0
  559. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/git/__init__.py +0 -0
  560. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/git/file.py +0 -0
  561. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/git/repository.py +0 -0
  562. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/refresh/__init__.py +0 -0
  563. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/refresh/registry.py +0 -0
  564. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/requests/__init__.py +0 -0
  565. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/requests/generator_definition.py +0 -0
  566. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/send/__init__.py +0 -0
  567. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/message_bus/operations/send/echo.py +0 -0
  568. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/middleware.py +0 -0
  569. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/models.py +0 -0
  570. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/permissions/__init__.py +0 -0
  571. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/permissions/backend.py +0 -0
  572. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/permissions/constants.py +0 -0
  573. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/permissions/globals.py +0 -0
  574. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/permissions/local_backend.py +0 -0
  575. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/permissions/manager.py +0 -0
  576. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/permissions/report.py +0 -0
  577. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/permissions/types.py +0 -0
  578. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/pools/__init__.py +0 -0
  579. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/pools/address.py +0 -0
  580. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/pools/number.py +0 -0
  581. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/pools/prefix.py +0 -0
  582. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/prefect_server/__init__.py +0 -0
  583. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/prefect_server/app.py +0 -0
  584. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/prefect_server/database.py +0 -0
  585. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/prefect_server/events.py +0 -0
  586. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/prefect_server/models.py +0 -0
  587. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/proposed_change/__init__.py +0 -0
  588. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/proposed_change/constants.py +0 -0
  589. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/proposed_change/models.py +0 -0
  590. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/pytest_plugin.py +0 -0
  591. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/serve/__init__.py +0 -0
  592. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/serve/gunicorn_config.py +0 -0
  593. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/serve/log.py +0 -0
  594. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/serve/worker.py +0 -0
  595. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/__init__.py +0 -0
  596. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/__init__.py +0 -0
  597. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/cache/nats.py +0 -0
  598. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/event/__init__.py +0 -0
  599. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/http/__init__.py +0 -0
  600. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/http/httpx.py +0 -0
  601. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/message_bus/local.py +0 -0
  602. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/message_bus/nats.py +0 -0
  603. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/message_bus/rabbitmq.py +0 -0
  604. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/workflow/__init__.py +0 -0
  605. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/adapters/workflow/local.py +0 -0
  606. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/protocols.py +0 -0
  607. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/services/scheduler.py +0 -0
  608. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/storage.py +0 -0
  609. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/task_manager/__init__.py +0 -0
  610. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/task_manager/constants.py +0 -0
  611. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/task_manager/event.py +0 -0
  612. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/task_manager/models.py +0 -0
  613. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/task_manager/task.py +0 -0
  614. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/tasks/__init__.py +0 -0
  615. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/tasks/artifact.py +0 -0
  616. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/tasks/check.py +0 -0
  617. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/tasks/dummy.py +0 -0
  618. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/tasks/keepalive.py +0 -0
  619. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/tasks/recurring.py +0 -0
  620. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/telemetry/__init__.py +0 -0
  621. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/telemetry/constants.py +0 -0
  622. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/telemetry/database.py +0 -0
  623. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/telemetry/models.py +0 -0
  624. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/telemetry/task_manager.py +0 -0
  625. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/telemetry/tasks.py +0 -0
  626. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/telemetry/utils.py +0 -0
  627. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/trace.py +0 -0
  628. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/transformations/__init__.py +0 -0
  629. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/transformations/constants.py +0 -0
  630. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/transformations/models.py +0 -0
  631. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/transformations/tasks.py +0 -0
  632. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/trigger/__init__.py +0 -0
  633. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/trigger/catalogue.py +0 -0
  634. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/trigger/constants.py +0 -0
  635. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/trigger/models.py +0 -0
  636. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/trigger/setup.py +0 -0
  637. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/trigger/tasks.py +0 -0
  638. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/types.py +0 -0
  639. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/utils.py +0 -0
  640. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/validators/__init__.py +0 -0
  641. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/validators/events.py +0 -0
  642. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/validators/tasks.py +0 -0
  643. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/visuals.py +0 -0
  644. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/webhook/__init__.py +0 -0
  645. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/webhook/gather.py +0 -0
  646. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/webhook/models.py +0 -0
  647. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/webhook/tasks.py +0 -0
  648. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/webhook/triggers.py +0 -0
  649. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/worker.py +0 -0
  650. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workers/__init__.py +0 -0
  651. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workers/utils.py +0 -0
  652. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workflows/__init__.py +0 -0
  653. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workflows/constants.py +0 -0
  654. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workflows/initialization.py +0 -0
  655. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workflows/models.py +0 -0
  656. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/backend/infrahub/workflows/utils.py +0 -0
  657. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/__init__.py +0 -0
  658. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/_importer.py +0 -0
  659. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/analyzer.py +0 -0
  660. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/async_typer.py +0 -0
  661. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/batch.py +0 -0
  662. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/branch.py +0 -0
  663. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/checks.py +0 -0
  664. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/client.py +0 -0
  665. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/code_generator.py +0 -0
  666. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/config.py +0 -0
  667. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/constants.py +0 -0
  668. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/context.py +0 -0
  669. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/__init__.py +0 -0
  670. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/branch.py +0 -0
  671. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/check.py +0 -0
  672. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/cli.py +0 -0
  673. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/cli_commands.py +0 -0
  674. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/client.py +0 -0
  675. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/config.py +0 -0
  676. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/constants.py +0 -0
  677. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/exceptions.py +0 -0
  678. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/exporter.py +0 -0
  679. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/generator.py +0 -0
  680. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/importer.py +0 -0
  681. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/menu.py +0 -0
  682. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/object.py +0 -0
  683. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/parameters.py +0 -0
  684. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/render.py +0 -0
  685. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/repository.py +0 -0
  686. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/schema.py +0 -0
  687. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/transform.py +0 -0
  688. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/utils.py +0 -0
  689. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/ctl/validate.py +0 -0
  690. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/data.py +0 -0
  691. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/diff.py +0 -0
  692. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/exceptions.py +0 -0
  693. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/graphql.py +0 -0
  694. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/groups.py +0 -0
  695. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/jinja2.py +0 -0
  696. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/object_store.py +0 -0
  697. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/playback.py +0 -0
  698. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/protocols.py +0 -0
  699. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/protocols_base.py +0 -0
  700. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/__init__.py +0 -0
  701. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/exceptions.py +0 -0
  702. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/items/__init__.py +0 -0
  703. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/items/base.py +0 -0
  704. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/items/check.py +0 -0
  705. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/items/graphql_query.py +0 -0
  706. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/items/jinja2_transform.py +0 -0
  707. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/items/python_transform.py +0 -0
  708. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/loader.py +0 -0
  709. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/models.py +0 -0
  710. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/plugin.py +0 -0
  711. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/pytest_plugin/utils.py +0 -0
  712. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/queries.py +0 -0
  713. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/query_groups.py +0 -0
  714. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/recorder.py +0 -0
  715. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/repository.py +0 -0
  716. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/schema/main.py +0 -0
  717. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/schema/repository.py +0 -0
  718. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/spec/__init__.py +0 -0
  719. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/spec/menu.py +0 -0
  720. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/spec/object.py +0 -0
  721. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/store.py +0 -0
  722. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/task/__init__.py +0 -0
  723. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/task/constants.py +0 -0
  724. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/task/exceptions.py +0 -0
  725. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/task/manager.py +0 -0
  726. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/task/models.py +0 -0
  727. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/template/__init__.py +0 -0
  728. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/template/exceptions.py +0 -0
  729. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/template/filters.py +0 -0
  730. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/template/models.py +0 -0
  731. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/testing/__init__.py +0 -0
  732. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/testing/docker.py +0 -0
  733. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/testing/repository.py +0 -0
  734. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/testing/schemas/__init__.py +0 -0
  735. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/testing/schemas/animal.py +0 -0
  736. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/testing/schemas/car_person.py +0 -0
  737. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/timestamp.py +0 -0
  738. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/topological_sort.py +0 -0
  739. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/__init__.py +0 -0
  740. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/constants.py +0 -0
  741. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/exceptions.py +0 -0
  742. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/exporter/__init__.py +0 -0
  743. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/exporter/interface.py +0 -0
  744. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/exporter/json.py +0 -0
  745. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/importer/__init__.py +0 -0
  746. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/importer/interface.py +0 -0
  747. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/importer/json.py +0 -0
  748. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transfer/schema_sorter.py +0 -0
  749. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/transforms.py +0 -0
  750. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/types.py +0 -0
  751. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/utils.py +0 -0
  752. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/uuidt.py +0 -0
  753. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_sdk/infrahub_sdk/yaml.py +0 -0
  754. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/__init__.py +0 -0
  755. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/constants.py +0 -0
  756. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/docker-compose.test.yml +0 -0
  757. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/haproxy.cfg +0 -0
  758. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/host.py +0 -0
  759. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/measurements.py +0 -0
  760. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/plugin.py +0 -0
  761. {infrahub_server-1.2.3 → infrahub_server-1.2.5}/python_testcontainers/infrahub_testcontainers/prometheus.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: infrahub-server
3
- Version: 1.2.3
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)
@@ -3,10 +3,15 @@ from __future__ import annotations
3
3
  import importlib
4
4
  import logging
5
5
  import os
6
+ from collections import defaultdict
7
+ from csv import DictReader, DictWriter
8
+ from datetime import datetime, timezone
6
9
  from enum import Enum
7
- from typing import TYPE_CHECKING
10
+ from pathlib import Path
11
+ from typing import TYPE_CHECKING, Any
8
12
 
9
13
  import typer
14
+ import ujson
10
15
  from infrahub_sdk.async_typer import AsyncTyper
11
16
  from prefect.testing.utilities import prefect_test_harness
12
17
  from rich import print as rprint
@@ -19,7 +24,14 @@ from infrahub.core import registry
19
24
  from infrahub.core.graph import GRAPH_VERSION
20
25
  from infrahub.core.graph.constraints import ConstraintManagerBase, ConstraintManagerMemgraph, ConstraintManagerNeo4j
21
26
  from infrahub.core.graph.index import node_indexes, rel_indexes
22
- from infrahub.core.graph.schema import GRAPH_SCHEMA
27
+ from infrahub.core.graph.schema import (
28
+ GRAPH_SCHEMA,
29
+ GraphAttributeProperties,
30
+ GraphNodeProperties,
31
+ GraphRelationshipDefault,
32
+ GraphRelationshipIsPartOf,
33
+ GraphRelationshipProperties,
34
+ )
23
35
  from infrahub.core.initialization import (
24
36
  first_time_initialization,
25
37
  get_root_node,
@@ -419,3 +431,297 @@ async def update_core_schema(
419
431
  for message in migration_error_msgs:
420
432
  rprint(message)
421
433
  raise typer.Exit(1)
434
+
435
+
436
+ @app.command(name="selected-export")
437
+ async def selected_export_cmd(
438
+ ctx: typer.Context,
439
+ kinds: list[str] = typer.Option([], help="Node kinds to export"), # noqa: B008
440
+ uuids: list[str] = typer.Option([], help="UUIDs of nodes to export"), # noqa: B008
441
+ query_limit: int = typer.Option(1000, help="Maximum batch size of export query"), # noqa: B008
442
+ export_dir: Path = typer.Option(Path("infrahub-exports"), help="Path of directory to save exports"), # noqa: B008
443
+ config_file: str = typer.Argument("infrahub.toml", envvar="INFRAHUB_CONFIG"),
444
+ ) -> None:
445
+ """Export database structure of selected nodes from the database without any actual data"""
446
+ logging.getLogger("infrahub").setLevel(logging.WARNING)
447
+ logging.getLogger("neo4j").setLevel(logging.ERROR)
448
+ logging.getLogger("prefect").setLevel(logging.ERROR)
449
+
450
+ config.load_and_exit(config_file_name=config_file)
451
+
452
+ context: CliContext = ctx.obj
453
+ dbdriver = await context.init_db(retry=1)
454
+
455
+ await selected_export(db=dbdriver, kinds=kinds, uuids=uuids, export_dir=export_dir, query_limit=query_limit)
456
+
457
+ await dbdriver.close()
458
+
459
+
460
+ async def selected_export(
461
+ db: InfrahubDatabase,
462
+ kinds: list[str],
463
+ uuids: list[str],
464
+ export_dir: Path,
465
+ query_limit: int = 1000,
466
+ ) -> Path:
467
+ query = """
468
+ // --------------
469
+ // filter nodes
470
+ // --------------
471
+ MATCH (n:Node)
472
+ WHERE ($kinds IS NULL OR size($kinds) = 0 OR any(l IN labels(n) WHERE l in $kinds))
473
+ AND ($uuids IS NULL OR size($uuids) = 0 OR n.uuid IN $uuids)
474
+ WITH n
475
+ // --------------
476
+ // pagination
477
+ // --------------
478
+ ORDER BY %(id_func)s(n)
479
+ SKIP toInteger($offset)
480
+ LIMIT toInteger($limit)
481
+ CALL {
482
+ // --------------
483
+ // get all the nodes and edges linked to this node up to 2 steps away, excluding IS_PART_OF
484
+ // --------------
485
+ WITH n
486
+ MATCH (n)-[r1]-(v1)-[r2]-(v2)
487
+ WHERE type(r1) <> "IS_PART_OF"
488
+ WITH collect([v1, v2]) AS vertex_pairs, collect([r1, r2]) AS edge_pairs
489
+ WITH reduce(
490
+ vertices = [], v_pair IN vertex_pairs |
491
+ CASE
492
+ WHEN NOT v_pair[0] IN vertices AND NOT v_pair[1] IN vertices THEN vertices + v_pair
493
+ WHEN NOT v_pair[0] IN vertices THEN vertices + [v_pair[0]]
494
+ WHEN NOT v_pair[1] IN vertices THEN vertices + [v_pair[1]]
495
+ ELSE vertices
496
+ END
497
+ ) AS vertices,
498
+ reduce(
499
+ edges = [], e_pair IN edge_pairs |
500
+ CASE
501
+ WHEN NOT e_pair[0] IN edges AND NOT e_pair[1] IN edges THEN edges + e_pair
502
+ WHEN NOT e_pair[0] IN edges THEN edges + [e_pair[0]]
503
+ WHEN NOT e_pair[1] IN edges THEN edges + [e_pair[1]]
504
+ ELSE edges
505
+ END
506
+ ) AS edges
507
+ RETURN vertices, edges
508
+ }
509
+ // --------------
510
+ // include the root and IS_PART_OF edges
511
+ // --------------
512
+ OPTIONAL MATCH (n)-[root_edge:IS_PART_OF]->(root:Root)
513
+ WITH n, vertices, edges, root, collect(root_edge) AS root_edges
514
+ WITH n, edges + root_edges AS edges, CASE
515
+ WHEN root IS NOT NULL THEN vertices + [n, root]
516
+ ELSE vertices + [n]
517
+ END AS vertices
518
+ RETURN vertices, edges
519
+ """ % {"id_func": db.get_id_function_name()}
520
+ timestamp_str = datetime.now(tz=timezone.utc).strftime("%Y%m%d-%H%M%S")
521
+ export_dir /= Path(f"export-{timestamp_str}")
522
+ if not export_dir.exists():
523
+ export_dir.mkdir(parents=True)
524
+ vertex_path = export_dir / Path("vertices.csv")
525
+ vertex_path.touch(exist_ok=True)
526
+ edge_path = export_dir / Path("edges.csv")
527
+ edge_path.touch(exist_ok=True)
528
+
529
+ graph_node_schemas = [GraphNodeProperties, GraphRelationshipProperties, GraphAttributeProperties]
530
+ graph_vertex_properties = set()
531
+ for graph_schema in graph_node_schemas:
532
+ for field_name, field_info in graph_schema.model_fields.items():
533
+ property_name = field_info.alias or field_name
534
+ graph_vertex_properties.add(property_name)
535
+
536
+ graph_edge_schemas = [GraphRelationshipIsPartOf, GraphRelationshipDefault]
537
+ graph_edge_properties = set()
538
+ for graph_schema in graph_edge_schemas:
539
+ for field_name, field_info in graph_schema.model_fields.items():
540
+ property_name = field_info.alias or field_name
541
+ graph_edge_properties.add(property_name)
542
+
543
+ all_db_ids: set[str] = set()
544
+ has_more_data = True
545
+ limit = query_limit
546
+ offset = 0
547
+
548
+ with vertex_path.open(mode="w") as vertex_file, edge_path.open(mode="w") as edge_file:
549
+ vertex_field_names = ["db_id", "labels"] + sorted(graph_vertex_properties)
550
+ vertex_csv_writer = DictWriter(vertex_file, fieldnames=vertex_field_names)
551
+ vertex_csv_writer.writeheader()
552
+ edge_field_names = ["db_id", "edge_type", "start_node_id", "end_node_id"] + sorted(graph_edge_properties)
553
+ edge_csv_writer = DictWriter(edge_file, fieldnames=edge_field_names)
554
+ edge_csv_writer.writeheader()
555
+
556
+ while has_more_data:
557
+ rprint("Retrieving batch of vertices and edges...", end="")
558
+ results = await db.execute_query(
559
+ query=query,
560
+ params={"kinds": kinds, "uuids": uuids, "limit": limit, "offset": offset},
561
+ )
562
+ rprint("done. ", end="")
563
+ has_more_data = len(results) >= limit
564
+ offset += limit
565
+
566
+ rprint("Writing batch to export files...", end="")
567
+ for result in results:
568
+ vertices = result.get("vertices")
569
+ for vertex in vertices:
570
+ if vertex.element_id in all_db_ids:
571
+ continue
572
+ serial_vertex = {
573
+ "db_id": vertex.element_id,
574
+ "labels": ujson.dumps(list(vertex.labels)),
575
+ }
576
+ for property_name in graph_vertex_properties:
577
+ if value := vertex.get(property_name):
578
+ serial_vertex[property_name] = value
579
+ vertex_csv_writer.writerow(serial_vertex)
580
+ all_db_ids.add(vertex.element_id)
581
+
582
+ edges = result.get("edges")
583
+ for edge in edges:
584
+ if edge.element_id in all_db_ids:
585
+ continue
586
+ serial_edge = {
587
+ "db_id": edge.element_id,
588
+ "edge_type": edge.type,
589
+ "start_node_id": edge.start_node.element_id,
590
+ "end_node_id": edge.end_node.element_id,
591
+ }
592
+ for property_name in graph_edge_properties:
593
+ if value := edge.get(property_name):
594
+ serial_edge[property_name] = value
595
+ edge_csv_writer.writerow(serial_edge)
596
+ all_db_ids.add(edge.element_id)
597
+ rprint("done.")
598
+
599
+ rprint(f"{SUCCESS_BADGE} Export complete")
600
+ rprint(f"Export directory is here: {export_dir.absolute()}")
601
+ return export_dir
602
+
603
+
604
+ @app.command(name="load-export", hidden=True)
605
+ async def load_export_cmd(
606
+ ctx: typer.Context,
607
+ export_dir: Path = typer.Argument(help="Path to export directory"),
608
+ query_limit: int = typer.Option(1000, help="Maximum batch size of import query"),
609
+ config_file: str = typer.Argument("infrahub.toml", envvar="INFRAHUB_CONFIG"),
610
+ ) -> None:
611
+ """
612
+ Cannot be used for backup/restore functionality.
613
+ Loads an anonymized export into Neo4j.
614
+ Only used for analysis of output of the selected-export command.
615
+ """
616
+ logging.getLogger("infrahub").setLevel(logging.WARNING)
617
+ logging.getLogger("neo4j").setLevel(logging.ERROR)
618
+ logging.getLogger("prefect").setLevel(logging.ERROR)
619
+
620
+ config.load_and_exit(config_file_name=config_file)
621
+
622
+ context: CliContext = ctx.obj
623
+ dbdriver = await context.init_db(retry=1)
624
+
625
+ await load_export(db=dbdriver, export_dir=export_dir, query_limit=query_limit)
626
+
627
+ await dbdriver.close()
628
+
629
+
630
+ async def load_vertices(
631
+ db: InfrahubDatabase, vertex_labels: list[str], vertex_dicts: list[dict[str, str | int | bool | None]]
632
+ ) -> None:
633
+ vertex_import_query = """
634
+ UNWIND $vertices AS vertex
635
+ CREATE (v:ImportNode:%(node_labels)s {db_id: vertex.db_id})
636
+ SET v = vertex
637
+ """ % {"node_labels": ":".join(vertex_labels)}
638
+ rprint(f"Loading {len(vertex_dicts)} {vertex_labels} nodes...", end="")
639
+ await db.execute_query(query=vertex_import_query, params={"vertices": vertex_dicts})
640
+ rprint("done")
641
+
642
+
643
+ async def load_edges(
644
+ db: InfrahubDatabase, edge_type: str, edge_dicts: list[dict[str, str | int | bool | None]]
645
+ ) -> None:
646
+ edges_import_query = """
647
+ UNWIND $edges AS edge
648
+ MATCH (a:ImportNode) WHERE a.db_id = toString(edge.start_node_id)
649
+ MATCH (b:ImportNode) WHERE b.db_id = toString(edge.end_node_id)
650
+ CREATE (a)-[e:%(edge_type)s]->(b)
651
+ SET e = edge.properties
652
+ """ % {"edge_type": edge_type}
653
+ rprint(f"Loading {len(edge_dicts)} {edge_type} edges...", end="")
654
+ await db.execute_query(query=edges_import_query, params={"edges": edge_dicts})
655
+ rprint("done")
656
+
657
+
658
+ async def load_export(db: InfrahubDatabase, export_dir: Path, query_limit: int = 1000) -> None:
659
+ if not export_dir.exists():
660
+ rprint(f"{ERROR_BADGE} {export_dir} does not exist")
661
+ raise typer.Exit(1)
662
+ if not export_dir.is_dir():
663
+ rprint(f"{ERROR_BADGE} {export_dir} is not a directory")
664
+ raise typer.Exit(1)
665
+ vertex_file: Path | None = None
666
+ edge_file: Path | None = None
667
+
668
+ for export_file in export_dir.glob("*.csv"):
669
+ if export_file.name == "vertices.csv":
670
+ vertex_file = export_file
671
+ elif export_file.name == "edges.csv":
672
+ edge_file = export_file
673
+ if not vertex_file or not vertex_file.exists() or not vertex_file.is_file():
674
+ rprint(f"{ERROR_BADGE} File 'vertices.csv' does not exist in the export directory")
675
+ raise typer.Exit(1)
676
+ if not edge_file or not edge_file.exists() or not edge_file.is_file():
677
+ rprint(f"{ERROR_BADGE} File 'edges.csv' does not exist in the export directory")
678
+ raise typer.Exit(1)
679
+
680
+ # index massively improves time required to load a large export
681
+ create_index_query = "CREATE RANGE INDEX import_node_db_id IF NOT EXISTS FOR (v:ImportNode) ON (v.db_id)"
682
+ await db.execute_query(query=create_index_query)
683
+
684
+ rprint("Loading vertices...")
685
+ vertices_by_labels_map: dict[frozenset[str], list[dict[str, Any]]] = defaultdict(list)
686
+ with vertex_file.open() as file:
687
+ csv_reader = DictReader(file)
688
+ for vertex_row in csv_reader:
689
+ labels = frozenset(ujson.loads(vertex_row["labels"]))
690
+ cleaned_row = {k: v for k, v in vertex_row.items() if k != "labels" and v}
691
+ vertices_by_labels_map[labels].append(cleaned_row)
692
+ # once a group of vertices meets the query_limit, save them to the database and delete them from memory
693
+ if len(vertices_by_labels_map[labels]) >= query_limit:
694
+ await load_vertices(db=db, vertex_labels=list(labels), vertex_dicts=vertices_by_labels_map[labels])
695
+ vertices_by_labels_map[labels] = []
696
+
697
+ for labels, vertex_rows in vertices_by_labels_map.items():
698
+ await load_vertices(db=db, vertex_labels=list(labels), vertex_dicts=vertex_rows)
699
+ rprint("Vertices loaded")
700
+
701
+ rprint("Loading edges...")
702
+ edges_by_type_map: dict[str, list[dict[str, Any]]] = defaultdict(list)
703
+ with edge_file.open() as file:
704
+ csv_reader = DictReader(file)
705
+ for edge_row in csv_reader:
706
+ edge_type = edge_row["edge_type"]
707
+
708
+ edge_properties = {}
709
+ edge_dict = {}
710
+ for k, v in edge_row.items():
711
+ if k == "edge_type" or not v:
712
+ continue
713
+ if k in ["start_node_id", "end_node_id"]:
714
+ edge_dict[k] = v
715
+ else:
716
+ edge_properties[k] = v
717
+ edge_dict["properties"] = edge_properties
718
+ edges_by_type_map[edge_type].append(edge_dict)
719
+ # once a group of edges meets the query_limit, save them to the database and delete them from memory
720
+ if len(edges_by_type_map[edge_type]) >= query_limit:
721
+ await load_edges(db=db, edge_type=edge_type, edge_dicts=edges_by_type_map[edge_type])
722
+ edges_by_type_map[edge_type] = []
723
+
724
+ for edge_type, edge_dicts in edges_by_type_map.items():
725
+ await load_edges(db=db, edge_type=edge_type, edge_dicts=edge_dicts)
726
+ rprint("Edges loaded")
727
+ rprint(f"{SUCCESS_BADGE} Export loaded")
@@ -19,10 +19,8 @@ from infrahub.git import initialize_repositories_directory
19
19
  from infrahub.lock import initialize_lock
20
20
  from infrahub.log import get_logger
21
21
  from infrahub.services import InfrahubServices
22
- from infrahub.services.adapters.cache.nats import NATSCache
23
- from infrahub.services.adapters.cache.redis import RedisCache
24
- from infrahub.services.adapters.message_bus.nats import NATSMessageBus
25
- from infrahub.services.adapters.message_bus.rabbitmq import RabbitMQMessageBus
22
+ from infrahub.services.adapters.cache import InfrahubCache
23
+ from infrahub.services.adapters.message_bus import InfrahubMessageBus
26
24
  from infrahub.services.adapters.workflow.local import WorkflowLocalExecution
27
25
  from infrahub.services.adapters.workflow.worker import WorkflowWorkerExecution
28
26
  from infrahub.trace import configure_trace
@@ -121,13 +119,9 @@ async def start(
121
119
 
122
120
  component_type = ComponentType.GIT_AGENT
123
121
  message_bus = config.OVERRIDE.message_bus or (
124
- await NATSMessageBus.new(component_type=component_type)
125
- if config.SETTINGS.broker.driver == config.BrokerDriver.NATS
126
- else await RabbitMQMessageBus.new(component_type=component_type)
127
- )
128
- cache = config.OVERRIDE.cache or (
129
- await NATSCache.new() if config.SETTINGS.cache.driver == config.CacheDriver.NATS else RedisCache()
122
+ await InfrahubMessageBus.new_from_driver(component_type=component_type, driver=config.SETTINGS.broker.driver)
130
123
  )
124
+ cache = config.OVERRIDE.cache or (await InfrahubCache.new_from_driver(driver=config.SETTINGS.cache.driver))
131
125
 
132
126
  service = await InfrahubServices.new(
133
127
  cache=cache,
@@ -115,11 +115,43 @@ class BrokerDriver(str, Enum):
115
115
  RabbitMQ = "rabbitmq"
116
116
  NATS = "nats"
117
117
 
118
+ @property
119
+ def driver_module_path(self) -> str:
120
+ match self:
121
+ case BrokerDriver.NATS:
122
+ return "infrahub.services.adapters.message_bus.nats"
123
+ case BrokerDriver.RabbitMQ:
124
+ return "infrahub.services.adapters.message_bus.rabbitmq"
125
+
126
+ @property
127
+ def driver_class_name(self) -> str:
128
+ match self:
129
+ case BrokerDriver.NATS:
130
+ return "NATSMessageBus"
131
+ case BrokerDriver.RabbitMQ:
132
+ return "RabbitMQMessageBus"
133
+
118
134
 
119
135
  class CacheDriver(str, Enum):
120
136
  Redis = "redis"
121
137
  NATS = "nats"
122
138
 
139
+ @property
140
+ def driver_module_path(self) -> str:
141
+ match self:
142
+ case CacheDriver.NATS:
143
+ return "infrahub.services.adapters.cache.nats"
144
+ case CacheDriver.Redis:
145
+ return "infrahub.services.adapters.cache.redis"
146
+
147
+ @property
148
+ def driver_class_name(self) -> str:
149
+ match self:
150
+ case CacheDriver.NATS:
151
+ return "NATSCache"
152
+ case CacheDriver.Redis:
153
+ return "RedisCache"
154
+
123
155
 
124
156
  class WorkflowDriver(str, Enum):
125
157
  LOCAL = "local"
@@ -18,6 +18,7 @@ from infrahub.core.diff.coordinator import DiffCoordinator
18
18
  from infrahub.core.diff.ipam_diff_parser import IpamDiffParser
19
19
  from infrahub.core.diff.merger.merger import DiffMerger
20
20
  from infrahub.core.diff.model.path import BranchTrackingId, EnrichedDiffRoot, EnrichedDiffRootMetadata
21
+ from infrahub.core.diff.models import RequestDiffUpdate
21
22
  from infrahub.core.diff.repository.repository import DiffRepository
22
23
  from infrahub.core.merge import BranchMerger
23
24
  from infrahub.core.migrations.schema.models import SchemaApplyMigrationData
@@ -32,15 +33,16 @@ from infrahub.events.models import EventMeta, InfrahubEvent
32
33
  from infrahub.events.node_action import get_node_event
33
34
  from infrahub.exceptions import BranchNotFoundError, MergeFailedError, ValidationError
34
35
  from infrahub.graphql.mutations.models import BranchCreateModel # noqa: TC001
35
- from infrahub.log import get_log_data
36
- from infrahub.message_bus import Meta, messages
37
36
  from infrahub.services import InfrahubServices # noqa: TC001 needed for prefect flow
38
- from infrahub.worker import WORKER_IDENTITY
39
37
  from infrahub.workflows.catalogue import (
40
38
  BRANCH_CANCEL_PROPOSED_CHANGES,
39
+ BRANCH_MERGE_POST_PROCESS,
41
40
  DIFF_REFRESH_ALL,
41
+ DIFF_UPDATE,
42
42
  GIT_REPOSITORIES_CREATE_BRANCH,
43
43
  IPAM_RECONCILIATION,
44
+ TRIGGER_ARTIFACT_DEFINITION_GENERATE,
45
+ TRIGGER_GENERATOR_DEFINITION_RUN,
44
46
  )
45
47
  from infrahub.workflows.utils import add_tags
46
48
 
@@ -271,15 +273,11 @@ async def merge_branch(
271
273
  # NOTE: we still need to convert this event and potentially pull
272
274
  # some tasks currently executed based on the event into this workflow
273
275
  # -------------------------------------------------------------
274
- log_data = get_log_data()
275
- request_id = log_data.get("request_id", "")
276
- message = messages.EventBranchMerge(
277
- source_branch=obj.name,
278
- target_branch=registry.default_branch,
276
+ await service.workflow.submit_workflow(
277
+ workflow=BRANCH_MERGE_POST_PROCESS,
279
278
  context=context,
280
- meta=Meta(initiator_id=WORKER_IDENTITY, request_id=request_id),
279
+ parameters={"source_branch": obj.name, "target_branch": registry.default_branch},
281
280
  )
282
- await service.message_bus.send(message=message)
283
281
 
284
282
  events: list[InfrahubEvent] = [merge_event]
285
283
 
@@ -412,3 +410,45 @@ async def _get_diff_root(
412
410
  )
413
411
 
414
412
  return default_branch_diff
413
+
414
+
415
+ @flow(
416
+ name="branch-merge-post-process",
417
+ flow_run_name="Run additional tasks after merging {source_branch} in {target_branch}",
418
+ )
419
+ async def post_process_branch_merge(
420
+ source_branch: str, target_branch: str, context: InfrahubContext, service: InfrahubServices
421
+ ) -> None:
422
+ async with service.database.start_session() as db:
423
+ await add_tags(branches=[source_branch])
424
+ log = get_run_logger()
425
+ log.info(f"Running additional tasks after merging {source_branch} within {target_branch}")
426
+
427
+ component_registry = get_component_registry()
428
+ default_branch = registry.get_branch_from_registry()
429
+ diff_repository = await component_registry.get_component(DiffRepository, db=db, branch=default_branch)
430
+ # send diff update requests for every branch-tracking diff
431
+ branch_diff_roots = await diff_repository.get_roots_metadata(base_branch_names=[target_branch])
432
+
433
+ await service.workflow.submit_workflow(
434
+ workflow=TRIGGER_ARTIFACT_DEFINITION_GENERATE,
435
+ context=context,
436
+ parameters={"branch": target_branch},
437
+ )
438
+
439
+ await service.workflow.submit_workflow(
440
+ workflow=TRIGGER_GENERATOR_DEFINITION_RUN,
441
+ context=context,
442
+ parameters={"branch": target_branch},
443
+ )
444
+
445
+ for diff_root in branch_diff_roots:
446
+ if (
447
+ diff_root.base_branch_name != diff_root.diff_branch_name
448
+ and diff_root.tracking_id
449
+ and isinstance(diff_root.tracking_id, BranchTrackingId)
450
+ ):
451
+ request_diff_update_model = RequestDiffUpdate(branch_name=diff_root.diff_branch_name)
452
+ await service.workflow.submit_workflow(
453
+ workflow=DIFF_UPDATE, context=context, parameters={"model": request_diff_update_model}
454
+ )
@@ -348,6 +348,7 @@ RESTRICTED_NAMESPACES: list[str] = [
348
348
  NODE_NAME_REGEX = r"^[A-Z][a-zA-Z0-9]+$"
349
349
  DEFAULT_NAME_MIN_LENGTH = 2
350
350
  NAME_REGEX = r"^[a-z0-9\_]+$"
351
+ NAME_REGEX_OR_EMPTY = r"^[a-z0-9\_]*$"
351
352
  DEFAULT_DESCRIPTION_LENGTH = 128
352
353
 
353
354
  DEFAULT_NAME_MAX_LENGTH = 32
@@ -23,10 +23,15 @@ class NodeConstraintRunner:
23
23
  self.uniqueness_constraint = uniqueness_constraint
24
24
  self.relationship_manager_constraints = relationship_manager_constraints
25
25
 
26
- async def check(self, node: Node, field_filters: list[str] | None = None) -> None:
26
+ async def check(
27
+ self, node: Node, field_filters: list[str] | None = None, skip_uniqueness_check: bool = False
28
+ ) -> None:
27
29
  async with self.db.start_session() as db:
28
30
  await node.resolve_relationships(db=db)
29
31
 
32
+ if not skip_uniqueness_check:
33
+ await self.uniqueness_constraint.check(node, filters=field_filters)
34
+
30
35
  for relationship_name in node.get_schema().relationship_names:
31
36
  if field_filters and relationship_name not in field_filters:
32
37
  continue
@@ -34,7 +39,3 @@ class NodeConstraintRunner:
34
39
  await relationship_manager.fetch_relationship_ids(db=db, force_refresh=True)
35
40
  for relationship_constraint in self.relationship_manager_constraints:
36
41
  await relationship_constraint.check(relm=relationship_manager, node_schema=node.get_schema())
37
-
38
- # If HFID constraint is the only constraint violated, all other constraints need to have ran before,
39
- # as it means there is an existing node that we might want to update in the case of an upsert
40
- await self.uniqueness_constraint.check(node, filters=field_filters)
@@ -0,0 +1 @@
1
+ GRAPH_VERSION = 26
@@ -26,6 +26,8 @@ from .m021_missing_hierarchy_merge import Migration021
26
26
  from .m022_add_generate_template_attr import Migration022
27
27
  from .m023_deduplicate_cardinality_one_relationships import Migration023
28
28
  from .m024_missing_hierarchy_backfill import Migration024
29
+ from .m025_uniqueness_nulls import Migration025
30
+ from .m026_0000_prefix_fix import Migration026
29
31
 
30
32
  if TYPE_CHECKING:
31
33
  from infrahub.core.root import Root
@@ -57,6 +59,8 @@ MIGRATIONS: list[type[GraphMigration | InternalSchemaMigration | ArbitraryMigrat
57
59
  Migration022,
58
60
  Migration023,
59
61
  Migration024,
62
+ Migration025,
63
+ Migration026,
60
64
  ]
61
65
 
62
66
 
@@ -0,0 +1,99 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import defaultdict
4
+ from typing import TYPE_CHECKING, Sequence
5
+
6
+ from infrahub.core import registry
7
+ from infrahub.core.diff.payload_builder import get_display_labels_per_kind
8
+ from infrahub.core.migrations.shared import MigrationResult
9
+ from infrahub.core.schema import GenericSchema, NodeSchema, SchemaRoot, internal_schema
10
+ from infrahub.core.schema.manager import SchemaManager
11
+ from infrahub.core.validators.uniqueness.checker import UniquenessChecker
12
+ from infrahub.dependencies.registry import build_component_registry, get_component_registry
13
+ from infrahub.log import get_logger
14
+
15
+ from ..shared import InternalSchemaMigration, SchemaMigration
16
+
17
+ if TYPE_CHECKING:
18
+ from infrahub.core.validators.uniqueness.model import NonUniqueNode
19
+ from infrahub.database import InfrahubDatabase
20
+
21
+ log = get_logger()
22
+
23
+
24
+ async def validate_nulls_in_uniqueness_constraints(db: InfrahubDatabase) -> MigrationResult:
25
+ """
26
+ Validate any schema that include optional attributes in the uniqueness constraints
27
+
28
+ An update to uniqueness constraint validation now handles NULL values as unique instead of ignoring them
29
+ """
30
+
31
+ default_branch = registry.get_branch_from_registry()
32
+ build_component_registry()
33
+ component_registry = get_component_registry()
34
+ uniqueness_checker = await component_registry.get_component(UniquenessChecker, db=db, branch=default_branch)
35
+ non_unique_nodes_by_kind: dict[str, list[NonUniqueNode]] = defaultdict(list)
36
+
37
+ manager = SchemaManager()
38
+ registry.schema = manager
39
+ internal_schema_root = SchemaRoot(**internal_schema)
40
+ manager.register_schema(schema=internal_schema_root)
41
+ schema_branch = await manager.load_schema_from_db(db=db, branch=default_branch)
42
+ manager.set_schema_branch(name=default_branch.name, schema=schema_branch)
43
+
44
+ for schema_kind in schema_branch.node_names + schema_branch.generic_names_without_templates:
45
+ schema = schema_branch.get(name=schema_kind, duplicate=False)
46
+ if not isinstance(schema, NodeSchema | GenericSchema):
47
+ continue
48
+
49
+ uniqueness_constraint_paths = schema.get_unique_constraint_schema_attribute_paths(schema_branch=schema_branch)
50
+ includes_optional_attr: bool = False
51
+
52
+ for uniqueness_constraint_path in uniqueness_constraint_paths:
53
+ for schema_attribute_path in uniqueness_constraint_path.attributes_paths:
54
+ if schema_attribute_path.attribute_schema and schema_attribute_path.attribute_schema.optional is True:
55
+ includes_optional_attr = True
56
+ break
57
+
58
+ if not includes_optional_attr:
59
+ continue
60
+
61
+ non_unique_nodes = await uniqueness_checker.check_one_schema(schema=schema)
62
+ if non_unique_nodes:
63
+ non_unique_nodes_by_kind[schema_kind] = non_unique_nodes
64
+
65
+ if not non_unique_nodes_by_kind:
66
+ return MigrationResult()
67
+
68
+ error_strings = []
69
+ for schema_kind, non_unique_nodes in non_unique_nodes_by_kind.items():
70
+ display_label_map = await get_display_labels_per_kind(
71
+ db=db, kind=schema_kind, branch_name=default_branch.name, ids=[nun.node_id for nun in non_unique_nodes]
72
+ )
73
+ for non_unique_node in non_unique_nodes:
74
+ display_label = display_label_map.get(non_unique_node.node_id)
75
+ error_str = f"{display_label or ''}({non_unique_node.node_schema.kind} / {non_unique_node.node_id})"
76
+ error_str += " violates uniqueness constraints for the following attributes: "
77
+ attr_values = [
78
+ f"{attr.attribute_name}={attr.attribute_value}" for attr in non_unique_node.non_unique_attributes
79
+ ]
80
+ error_str += ", ".join(attr_values)
81
+ error_strings.append(error_str)
82
+ if error_strings:
83
+ error_str = "For the following nodes, you must update the uniqueness_constraints on the schema of the node"
84
+ error_str += " to remove the attribute(s) with NULL values or update the data on the nodes to be unique"
85
+ error_str += " now that NULL values are considered during uniqueness validation"
86
+ return MigrationResult(errors=[error_str] + error_strings)
87
+ return MigrationResult()
88
+
89
+
90
+ class Migration018(InternalSchemaMigration):
91
+ name: str = "018_validate_nulls_in_uniqueness_constraints"
92
+ minimum_version: int = 17
93
+ migrations: Sequence[SchemaMigration] = []
94
+
95
+ async def validate_migration(self, db: InfrahubDatabase) -> MigrationResult: # noqa: ARG002
96
+ return MigrationResult()
97
+
98
+ async def execute(self, db: InfrahubDatabase) -> MigrationResult:
99
+ return await validate_nulls_in_uniqueness_constraints(db=db)