infrahub-server 1.2.0rc0__py3-none-any.whl → 1.2.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. infrahub/api/dependencies.py +6 -6
  2. infrahub/api/diff/validation_models.py +7 -7
  3. infrahub/api/schema.py +1 -1
  4. infrahub/artifacts/models.py +5 -3
  5. infrahub/artifacts/tasks.py +3 -5
  6. infrahub/cli/__init__.py +13 -9
  7. infrahub/cli/constants.py +3 -0
  8. infrahub/cli/db.py +165 -183
  9. infrahub/cli/upgrade.py +146 -0
  10. infrahub/computed_attribute/gather.py +185 -0
  11. infrahub/computed_attribute/models.py +240 -12
  12. infrahub/computed_attribute/tasks.py +77 -441
  13. infrahub/computed_attribute/triggers.py +13 -47
  14. infrahub/config.py +43 -32
  15. infrahub/context.py +14 -0
  16. infrahub/core/account.py +4 -4
  17. infrahub/core/attribute.py +58 -58
  18. infrahub/core/branch/tasks.py +74 -22
  19. infrahub/core/changelog/diff.py +95 -36
  20. infrahub/core/changelog/models.py +217 -43
  21. infrahub/core/constants/__init__.py +28 -0
  22. infrahub/core/constants/infrahubkind.py +2 -0
  23. infrahub/core/constants/schema.py +2 -0
  24. infrahub/core/constraint/node/runner.py +9 -8
  25. infrahub/core/diff/branch_differ.py +10 -10
  26. infrahub/core/diff/enricher/cardinality_one.py +5 -0
  27. infrahub/core/diff/enricher/hierarchy.py +17 -4
  28. infrahub/core/diff/enricher/labels.py +5 -0
  29. infrahub/core/diff/enricher/path_identifier.py +4 -0
  30. infrahub/core/diff/ipam_diff_parser.py +4 -5
  31. infrahub/core/diff/model/diff.py +27 -27
  32. infrahub/core/diff/model/path.py +32 -9
  33. infrahub/core/diff/parent_node_adder.py +78 -0
  34. infrahub/core/diff/payload_builder.py +13 -2
  35. infrahub/core/diff/query/filters.py +2 -2
  36. infrahub/core/diff/query/merge.py +20 -17
  37. infrahub/core/diff/query/save.py +188 -182
  38. infrahub/core/diff/query/summary_counts_enricher.py +51 -4
  39. infrahub/core/diff/query_parser.py +4 -4
  40. infrahub/core/diff/repository/deserializer.py +8 -3
  41. infrahub/core/diff/repository/repository.py +156 -38
  42. infrahub/core/diff/tasks.py +4 -4
  43. infrahub/core/graph/__init__.py +1 -1
  44. infrahub/core/graph/index.py +3 -0
  45. infrahub/core/initialization.py +1 -10
  46. infrahub/core/ipam/constants.py +3 -4
  47. infrahub/core/ipam/reconciler.py +12 -12
  48. infrahub/core/ipam/utilization.py +10 -13
  49. infrahub/core/manager.py +36 -36
  50. infrahub/core/merge.py +7 -7
  51. infrahub/core/migrations/__init__.py +2 -3
  52. infrahub/core/migrations/graph/__init__.py +12 -3
  53. infrahub/core/migrations/graph/m017_add_core_profile.py +1 -5
  54. infrahub/core/migrations/graph/m018_uniqueness_nulls.py +4 -4
  55. infrahub/core/migrations/graph/m019_restore_rels_to_time.py +256 -0
  56. infrahub/core/migrations/graph/m020_duplicate_edges.py +160 -0
  57. infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py +51 -0
  58. infrahub/core/migrations/graph/m022_add_generate_template_attr.py +48 -0
  59. infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py +96 -0
  60. infrahub/core/migrations/query/attribute_add.py +2 -2
  61. infrahub/core/migrations/query/node_duplicate.py +43 -26
  62. infrahub/core/migrations/query/schema_attribute_update.py +2 -2
  63. infrahub/core/migrations/schema/models.py +19 -4
  64. infrahub/core/migrations/schema/node_remove.py +26 -12
  65. infrahub/core/migrations/schema/tasks.py +2 -2
  66. infrahub/core/migrations/shared.py +16 -16
  67. infrahub/core/models.py +15 -6
  68. infrahub/core/node/__init__.py +43 -39
  69. infrahub/core/node/base.py +2 -4
  70. infrahub/core/node/constraints/attribute_uniqueness.py +2 -2
  71. infrahub/core/node/constraints/grouped_uniqueness.py +99 -47
  72. infrahub/core/node/constraints/interface.py +1 -2
  73. infrahub/core/node/delete_validator.py +3 -5
  74. infrahub/core/node/ipam.py +4 -4
  75. infrahub/core/node/permissions.py +7 -7
  76. infrahub/core/node/resource_manager/ip_address_pool.py +6 -6
  77. infrahub/core/node/resource_manager/ip_prefix_pool.py +6 -6
  78. infrahub/core/node/resource_manager/number_pool.py +3 -3
  79. infrahub/core/path.py +12 -12
  80. infrahub/core/property.py +11 -11
  81. infrahub/core/protocols.py +7 -0
  82. infrahub/core/protocols_base.py +21 -21
  83. infrahub/core/query/__init__.py +33 -33
  84. infrahub/core/query/attribute.py +6 -4
  85. infrahub/core/query/diff.py +3 -3
  86. infrahub/core/query/node.py +82 -32
  87. infrahub/core/query/relationship.py +228 -40
  88. infrahub/core/query/resource_manager.py +2 -0
  89. infrahub/core/query/standard_node.py +3 -3
  90. infrahub/core/query/subquery.py +9 -9
  91. infrahub/core/registry.py +13 -15
  92. infrahub/core/relationship/constraints/count.py +3 -4
  93. infrahub/core/relationship/constraints/peer_kind.py +3 -4
  94. infrahub/core/relationship/constraints/profiles_kind.py +2 -2
  95. infrahub/core/relationship/model.py +51 -59
  96. infrahub/core/schema/attribute_schema.py +16 -8
  97. infrahub/core/schema/basenode_schema.py +105 -44
  98. infrahub/core/schema/computed_attribute.py +3 -3
  99. infrahub/core/schema/definitions/core/__init__.py +147 -0
  100. infrahub/core/schema/definitions/core/account.py +171 -0
  101. infrahub/core/schema/definitions/core/artifact.py +136 -0
  102. infrahub/core/schema/definitions/core/builtin.py +24 -0
  103. infrahub/core/schema/definitions/core/check.py +68 -0
  104. infrahub/core/schema/definitions/core/core.py +17 -0
  105. infrahub/core/schema/definitions/core/generator.py +100 -0
  106. infrahub/core/schema/definitions/core/graphql_query.py +79 -0
  107. infrahub/core/schema/definitions/core/group.py +108 -0
  108. infrahub/core/schema/definitions/core/ipam.py +193 -0
  109. infrahub/core/schema/definitions/core/lineage.py +19 -0
  110. infrahub/core/schema/definitions/core/menu.py +48 -0
  111. infrahub/core/schema/definitions/core/permission.py +163 -0
  112. infrahub/core/schema/definitions/core/profile.py +18 -0
  113. infrahub/core/schema/definitions/core/propose_change.py +97 -0
  114. infrahub/core/schema/definitions/core/propose_change_comment.py +193 -0
  115. infrahub/core/schema/definitions/core/propose_change_validator.py +328 -0
  116. infrahub/core/schema/definitions/core/repository.py +286 -0
  117. infrahub/core/schema/definitions/core/resource_pool.py +170 -0
  118. infrahub/core/schema/definitions/core/template.py +27 -0
  119. infrahub/core/schema/definitions/core/transform.py +96 -0
  120. infrahub/core/schema/definitions/core/webhook.py +134 -0
  121. infrahub/core/schema/definitions/internal.py +16 -16
  122. infrahub/core/schema/dropdown.py +3 -4
  123. infrahub/core/schema/generated/attribute_schema.py +15 -18
  124. infrahub/core/schema/generated/base_node_schema.py +12 -14
  125. infrahub/core/schema/generated/node_schema.py +3 -5
  126. infrahub/core/schema/generated/relationship_schema.py +9 -11
  127. infrahub/core/schema/generic_schema.py +2 -2
  128. infrahub/core/schema/manager.py +20 -9
  129. infrahub/core/schema/node_schema.py +4 -2
  130. infrahub/core/schema/relationship_schema.py +14 -6
  131. infrahub/core/schema/schema_branch.py +292 -144
  132. infrahub/core/schema/schema_branch_computed.py +41 -4
  133. infrahub/core/task/task.py +3 -3
  134. infrahub/core/task/user_task.py +15 -15
  135. infrahub/core/timestamp.py +3 -3
  136. infrahub/core/utils.py +20 -18
  137. infrahub/core/validators/__init__.py +1 -3
  138. infrahub/core/validators/aggregated_checker.py +2 -2
  139. infrahub/core/validators/attribute/choices.py +2 -2
  140. infrahub/core/validators/attribute/enum.py +2 -2
  141. infrahub/core/validators/attribute/kind.py +2 -2
  142. infrahub/core/validators/attribute/length.py +2 -2
  143. infrahub/core/validators/attribute/optional.py +2 -2
  144. infrahub/core/validators/attribute/regex.py +2 -2
  145. infrahub/core/validators/attribute/unique.py +2 -2
  146. infrahub/core/validators/checks_runner.py +25 -2
  147. infrahub/core/validators/determiner.py +1 -3
  148. infrahub/core/validators/interface.py +6 -2
  149. infrahub/core/validators/model.py +22 -3
  150. infrahub/core/validators/models/validate_migration.py +17 -4
  151. infrahub/core/validators/node/attribute.py +2 -2
  152. infrahub/core/validators/node/generate_profile.py +2 -2
  153. infrahub/core/validators/node/hierarchy.py +3 -5
  154. infrahub/core/validators/node/inherit_from.py +27 -5
  155. infrahub/core/validators/node/relationship.py +2 -2
  156. infrahub/core/validators/relationship/count.py +4 -4
  157. infrahub/core/validators/relationship/optional.py +2 -2
  158. infrahub/core/validators/relationship/peer.py +2 -2
  159. infrahub/core/validators/shared.py +2 -2
  160. infrahub/core/validators/tasks.py +8 -0
  161. infrahub/core/validators/uniqueness/checker.py +22 -21
  162. infrahub/core/validators/uniqueness/index.py +2 -2
  163. infrahub/core/validators/uniqueness/model.py +11 -11
  164. infrahub/database/__init__.py +27 -22
  165. infrahub/database/metrics.py +7 -1
  166. infrahub/dependencies/builder/constraint/grouped/node_runner.py +1 -3
  167. infrahub/dependencies/builder/diff/deserializer.py +3 -1
  168. infrahub/dependencies/builder/diff/enricher/hierarchy.py +3 -1
  169. infrahub/dependencies/builder/diff/parent_node_adder.py +8 -0
  170. infrahub/dependencies/component/registry.py +2 -2
  171. infrahub/events/__init__.py +25 -2
  172. infrahub/events/artifact_action.py +64 -0
  173. infrahub/events/branch_action.py +33 -22
  174. infrahub/events/generator.py +71 -0
  175. infrahub/events/group_action.py +51 -21
  176. infrahub/events/models.py +18 -19
  177. infrahub/events/node_action.py +88 -37
  178. infrahub/events/repository_action.py +5 -18
  179. infrahub/events/schema_action.py +4 -9
  180. infrahub/events/utils.py +16 -0
  181. infrahub/events/validator_action.py +55 -0
  182. infrahub/exceptions.py +32 -24
  183. infrahub/generators/models.py +2 -3
  184. infrahub/generators/tasks.py +24 -4
  185. infrahub/git/base.py +7 -7
  186. infrahub/git/integrator.py +48 -24
  187. infrahub/git/models.py +101 -9
  188. infrahub/git/repository.py +3 -3
  189. infrahub/git/tasks.py +408 -6
  190. infrahub/git/utils.py +48 -0
  191. infrahub/git/worktree.py +1 -2
  192. infrahub/git_credential/askpass.py +1 -2
  193. infrahub/graphql/analyzer.py +12 -0
  194. infrahub/graphql/app.py +13 -15
  195. infrahub/graphql/context.py +39 -0
  196. infrahub/graphql/initialization.py +3 -0
  197. infrahub/graphql/loaders/node.py +2 -12
  198. infrahub/graphql/loaders/peers.py +77 -0
  199. infrahub/graphql/loaders/shared.py +13 -0
  200. infrahub/graphql/manager.py +17 -19
  201. infrahub/graphql/mutations/artifact_definition.py +5 -5
  202. infrahub/graphql/mutations/branch.py +26 -1
  203. infrahub/graphql/mutations/computed_attribute.py +9 -5
  204. infrahub/graphql/mutations/diff.py +23 -11
  205. infrahub/graphql/mutations/diff_conflict.py +5 -0
  206. infrahub/graphql/mutations/generator.py +83 -0
  207. infrahub/graphql/mutations/graphql_query.py +5 -5
  208. infrahub/graphql/mutations/ipam.py +54 -74
  209. infrahub/graphql/mutations/main.py +195 -132
  210. infrahub/graphql/mutations/menu.py +7 -7
  211. infrahub/graphql/mutations/models.py +2 -4
  212. infrahub/graphql/mutations/node_getter/by_default_filter.py +10 -10
  213. infrahub/graphql/mutations/node_getter/by_hfid.py +1 -3
  214. infrahub/graphql/mutations/node_getter/by_id.py +1 -3
  215. infrahub/graphql/mutations/node_getter/interface.py +1 -2
  216. infrahub/graphql/mutations/proposed_change.py +7 -7
  217. infrahub/graphql/mutations/relationship.py +93 -19
  218. infrahub/graphql/mutations/repository.py +8 -8
  219. infrahub/graphql/mutations/resource_manager.py +3 -3
  220. infrahub/graphql/mutations/schema.py +19 -4
  221. infrahub/graphql/mutations/webhook.py +137 -0
  222. infrahub/graphql/parser.py +4 -4
  223. infrahub/graphql/permissions.py +1 -10
  224. infrahub/graphql/queries/diff/tree.py +19 -14
  225. infrahub/graphql/queries/event.py +5 -2
  226. infrahub/graphql/queries/ipam.py +2 -2
  227. infrahub/graphql/queries/relationship.py +2 -2
  228. infrahub/graphql/queries/search.py +2 -2
  229. infrahub/graphql/resolvers/many_relationship.py +264 -0
  230. infrahub/graphql/resolvers/resolver.py +13 -110
  231. infrahub/graphql/schema.py +2 -0
  232. infrahub/graphql/subscription/graphql_query.py +2 -0
  233. infrahub/graphql/types/context.py +12 -0
  234. infrahub/graphql/types/event.py +84 -17
  235. infrahub/graphql/types/node.py +2 -2
  236. infrahub/graphql/utils.py +2 -2
  237. infrahub/groups/ancestors.py +29 -0
  238. infrahub/groups/parsers.py +107 -0
  239. infrahub/lock.py +20 -20
  240. infrahub/menu/constants.py +0 -1
  241. infrahub/menu/generator.py +9 -21
  242. infrahub/menu/menu.py +17 -38
  243. infrahub/menu/models.py +117 -16
  244. infrahub/menu/repository.py +111 -0
  245. infrahub/menu/utils.py +5 -8
  246. infrahub/message_bus/__init__.py +11 -13
  247. infrahub/message_bus/messages/__init__.py +1 -21
  248. infrahub/message_bus/messages/check_generator_run.py +3 -3
  249. infrahub/message_bus/messages/finalize_validator_execution.py +3 -0
  250. infrahub/message_bus/messages/proposed_change/request_proposedchange_refreshartifacts.py +6 -0
  251. infrahub/message_bus/messages/request_generatordefinition_check.py +2 -0
  252. infrahub/message_bus/messages/send_echo_request.py +1 -1
  253. infrahub/message_bus/operations/__init__.py +1 -10
  254. infrahub/message_bus/operations/check/__init__.py +2 -2
  255. infrahub/message_bus/operations/check/generator.py +1 -0
  256. infrahub/message_bus/operations/event/__init__.py +2 -2
  257. infrahub/message_bus/operations/event/worker.py +0 -3
  258. infrahub/message_bus/operations/finalize/validator.py +51 -1
  259. infrahub/message_bus/operations/requests/__init__.py +0 -2
  260. infrahub/message_bus/operations/requests/generator_definition.py +21 -23
  261. infrahub/message_bus/operations/requests/proposed_change.py +14 -10
  262. infrahub/permissions/globals.py +15 -0
  263. infrahub/pools/number.py +2 -4
  264. infrahub/proposed_change/models.py +3 -0
  265. infrahub/proposed_change/tasks.py +58 -45
  266. infrahub/pytest_plugin.py +13 -10
  267. infrahub/server.py +2 -3
  268. infrahub/services/__init__.py +2 -2
  269. infrahub/services/adapters/cache/__init__.py +4 -6
  270. infrahub/services/adapters/cache/nats.py +4 -5
  271. infrahub/services/adapters/cache/redis.py +3 -7
  272. infrahub/services/adapters/event/__init__.py +1 -1
  273. infrahub/services/adapters/message_bus/__init__.py +3 -3
  274. infrahub/services/adapters/message_bus/local.py +2 -2
  275. infrahub/services/adapters/message_bus/nats.py +4 -4
  276. infrahub/services/adapters/message_bus/rabbitmq.py +4 -4
  277. infrahub/services/adapters/workflow/local.py +2 -2
  278. infrahub/services/component.py +5 -5
  279. infrahub/services/protocols.py +7 -7
  280. infrahub/services/scheduler.py +1 -3
  281. infrahub/task_manager/event.py +102 -9
  282. infrahub/task_manager/models.py +27 -7
  283. infrahub/tasks/artifact.py +7 -6
  284. infrahub/telemetry/__init__.py +0 -0
  285. infrahub/telemetry/constants.py +9 -0
  286. infrahub/telemetry/database.py +86 -0
  287. infrahub/telemetry/models.py +65 -0
  288. infrahub/telemetry/task_manager.py +77 -0
  289. infrahub/{tasks/telemetry.py → telemetry/tasks.py} +49 -56
  290. infrahub/telemetry/utils.py +11 -0
  291. infrahub/trace.py +4 -4
  292. infrahub/transformations/tasks.py +2 -2
  293. infrahub/trigger/catalogue.py +4 -6
  294. infrahub/trigger/constants.py +0 -8
  295. infrahub/trigger/models.py +54 -5
  296. infrahub/trigger/setup.py +90 -0
  297. infrahub/trigger/tasks.py +35 -84
  298. infrahub/utils.py +11 -1
  299. infrahub/validators/__init__.py +0 -0
  300. infrahub/validators/events.py +42 -0
  301. infrahub/validators/tasks.py +41 -0
  302. infrahub/webhook/gather.py +17 -0
  303. infrahub/webhook/models.py +176 -44
  304. infrahub/webhook/tasks.py +154 -155
  305. infrahub/webhook/triggers.py +31 -7
  306. infrahub/workers/infrahub_async.py +2 -2
  307. infrahub/workers/utils.py +2 -2
  308. infrahub/workflows/catalogue.py +86 -35
  309. infrahub/workflows/initialization.py +8 -2
  310. infrahub/workflows/models.py +27 -1
  311. infrahub/workflows/utils.py +10 -1
  312. infrahub_sdk/client.py +35 -8
  313. infrahub_sdk/config.py +3 -0
  314. infrahub_sdk/context.py +13 -0
  315. infrahub_sdk/ctl/branch.py +3 -2
  316. infrahub_sdk/ctl/cli_commands.py +5 -1
  317. infrahub_sdk/ctl/utils.py +0 -16
  318. infrahub_sdk/exceptions.py +12 -0
  319. infrahub_sdk/generator.py +4 -1
  320. infrahub_sdk/graphql.py +45 -13
  321. infrahub_sdk/node.py +71 -22
  322. infrahub_sdk/protocols.py +21 -8
  323. infrahub_sdk/protocols_base.py +32 -11
  324. infrahub_sdk/query_groups.py +6 -35
  325. infrahub_sdk/schema/__init__.py +55 -26
  326. infrahub_sdk/schema/main.py +8 -0
  327. infrahub_sdk/task/__init__.py +11 -0
  328. infrahub_sdk/task/constants.py +3 -0
  329. infrahub_sdk/task/exceptions.py +25 -0
  330. infrahub_sdk/task/manager.py +551 -0
  331. infrahub_sdk/task/models.py +74 -0
  332. infrahub_sdk/testing/schemas/animal.py +9 -0
  333. infrahub_sdk/timestamp.py +142 -33
  334. infrahub_sdk/utils.py +29 -1
  335. {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/METADATA +8 -6
  336. {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/RECORD +349 -293
  337. {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/entry_points.txt +1 -0
  338. infrahub_testcontainers/constants.py +2 -0
  339. infrahub_testcontainers/container.py +157 -12
  340. infrahub_testcontainers/docker-compose.test.yml +31 -6
  341. infrahub_testcontainers/helpers.py +18 -73
  342. infrahub_testcontainers/host.py +41 -0
  343. infrahub_testcontainers/measurements.py +93 -0
  344. infrahub_testcontainers/models.py +38 -0
  345. infrahub_testcontainers/performance_test.py +166 -0
  346. infrahub_testcontainers/plugin.py +136 -0
  347. infrahub_testcontainers/prometheus.yml +30 -0
  348. infrahub/core/schema/definitions/core.py +0 -2286
  349. infrahub/message_bus/messages/check_repository_checkdefinition.py +0 -20
  350. infrahub/message_bus/messages/check_repository_mergeconflicts.py +0 -16
  351. infrahub/message_bus/messages/check_repository_usercheck.py +0 -26
  352. infrahub/message_bus/messages/event_branch_create.py +0 -11
  353. infrahub/message_bus/messages/event_branch_delete.py +0 -11
  354. infrahub/message_bus/messages/event_branch_rebased.py +0 -9
  355. infrahub/message_bus/messages/event_node_mutated.py +0 -15
  356. infrahub/message_bus/messages/event_schema_update.py +0 -9
  357. infrahub/message_bus/messages/request_repository_checks.py +0 -12
  358. infrahub/message_bus/messages/request_repository_userchecks.py +0 -18
  359. infrahub/message_bus/operations/check/repository.py +0 -293
  360. infrahub/message_bus/operations/event/node.py +0 -20
  361. infrahub/message_bus/operations/event/schema.py +0 -17
  362. infrahub/message_bus/operations/requests/repository.py +0 -133
  363. infrahub/webhook/constants.py +0 -1
  364. {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/LICENSE.txt +0 -0
  365. {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,193 @@
1
+ from infrahub.core.constants import (
2
+ BranchSupportType,
3
+ InfrahubKind,
4
+ RelationshipDeleteBehavior,
5
+ )
6
+ from infrahub.core.constants import RelationshipCardinality as Cardinality
7
+ from infrahub.core.constants import RelationshipKind as RelKind
8
+
9
+ from ...attribute_schema import AttributeSchema as Attr
10
+ from ...generic_schema import GenericSchema
11
+ from ...node_schema import NodeSchema
12
+ from ...relationship_schema import (
13
+ RelationshipSchema as Rel,
14
+ )
15
+
16
+ core_propose_change_comment = GenericSchema(
17
+ name="Comment",
18
+ namespace="Core",
19
+ description="A comment on a Proposed Change",
20
+ label="Comment",
21
+ display_labels=["text__value"],
22
+ order_by=["created_at__value"],
23
+ include_in_menu=False,
24
+ branch=BranchSupportType.AGNOSTIC,
25
+ attributes=[
26
+ Attr(name="text", kind="TextArea", unique=False, optional=False),
27
+ Attr(name="created_at", kind="DateTime", optional=True),
28
+ ],
29
+ relationships=[
30
+ Rel(
31
+ name="created_by",
32
+ peer=InfrahubKind.GENERICACCOUNT,
33
+ optional=True,
34
+ branch=BranchSupportType.AGNOSTIC,
35
+ cardinality=Cardinality.ONE,
36
+ identifier="comment__account",
37
+ ),
38
+ ],
39
+ )
40
+
41
+ core_thread = GenericSchema(
42
+ name="Thread",
43
+ namespace="Core",
44
+ description="A thread on a Proposed Change",
45
+ label="Thread",
46
+ order_by=["created_at__value"],
47
+ branch=BranchSupportType.AGNOSTIC,
48
+ include_in_menu=False,
49
+ attributes=[
50
+ Attr(name="label", kind="Text", optional=True),
51
+ Attr(name="resolved", kind="Boolean", default_value=False),
52
+ Attr(name="created_at", kind="DateTime", optional=True),
53
+ ],
54
+ relationships=[
55
+ Rel(
56
+ name="change",
57
+ peer=InfrahubKind.PROPOSEDCHANGE,
58
+ identifier="proposedchange__thread",
59
+ kind=RelKind.PARENT,
60
+ optional=False,
61
+ cardinality=Cardinality.ONE,
62
+ ),
63
+ Rel(
64
+ name="comments",
65
+ peer=InfrahubKind.THREADCOMMENT,
66
+ identifier="thread__threadcomment",
67
+ kind=RelKind.COMPONENT,
68
+ optional=True,
69
+ cardinality=Cardinality.MANY,
70
+ on_delete=RelationshipDeleteBehavior.CASCADE,
71
+ ),
72
+ Rel(
73
+ name="created_by",
74
+ peer=InfrahubKind.GENERICACCOUNT,
75
+ identifier="thread__account",
76
+ optional=True,
77
+ branch=BranchSupportType.AGNOSTIC,
78
+ cardinality=Cardinality.ONE,
79
+ ),
80
+ ],
81
+ )
82
+
83
+ core_change_thread = NodeSchema(
84
+ name="ChangeThread",
85
+ namespace="Core",
86
+ description="A thread on proposed change",
87
+ include_in_menu=False,
88
+ label="Change Thread",
89
+ branch=BranchSupportType.AGNOSTIC,
90
+ inherit_from=[InfrahubKind.THREAD],
91
+ generate_profile=False,
92
+ )
93
+
94
+ core_file_thread = NodeSchema(
95
+ name="FileThread",
96
+ namespace="Core",
97
+ description="A thread related to a file on a proposed change",
98
+ include_in_menu=False,
99
+ label="Thread - File",
100
+ branch=BranchSupportType.AGNOSTIC,
101
+ inherit_from=[InfrahubKind.THREAD],
102
+ generate_profile=False,
103
+ attributes=[
104
+ Attr(name="file", kind="Text", optional=True),
105
+ Attr(name="commit", kind="Text", optional=True),
106
+ Attr(name="line_number", kind="Number", optional=True),
107
+ ],
108
+ relationships=[
109
+ Rel(
110
+ name="repository",
111
+ peer=InfrahubKind.REPOSITORY,
112
+ optional=False,
113
+ cardinality=Cardinality.ONE,
114
+ branch=BranchSupportType.AGNOSTIC,
115
+ ),
116
+ ],
117
+ )
118
+
119
+ core_artifact_thread = NodeSchema(
120
+ name="ArtifactThread",
121
+ namespace="Core",
122
+ description="A thread related to an artifact on a proposed change",
123
+ include_in_menu=False,
124
+ label="Thread - Artifact",
125
+ branch=BranchSupportType.AGNOSTIC,
126
+ inherit_from=[InfrahubKind.THREAD],
127
+ generate_profile=False,
128
+ attributes=[
129
+ Attr(name="artifact_id", kind="Text", optional=True),
130
+ Attr(name="storage_id", kind="Text", optional=True),
131
+ Attr(name="line_number", kind="Number", optional=True),
132
+ ],
133
+ )
134
+
135
+ core_object_thread = NodeSchema(
136
+ name="ObjectThread",
137
+ namespace="Core",
138
+ description="A thread related to an object on a proposed change",
139
+ include_in_menu=False,
140
+ label="Thread - Object",
141
+ branch=BranchSupportType.AGNOSTIC,
142
+ inherit_from=[InfrahubKind.THREAD],
143
+ generate_profile=False,
144
+ attributes=[
145
+ Attr(name="object_path", kind="Text", optional=False),
146
+ ],
147
+ )
148
+
149
+ core_change_comment = NodeSchema(
150
+ name="ChangeComment",
151
+ namespace="Core",
152
+ description="A comment on proposed change",
153
+ include_in_menu=False,
154
+ label="Change Comment",
155
+ default_filter="text__value",
156
+ display_labels=["text__value"],
157
+ branch=BranchSupportType.AGNOSTIC,
158
+ inherit_from=[InfrahubKind.COMMENT],
159
+ generate_profile=False,
160
+ relationships=[
161
+ Rel(
162
+ name="change",
163
+ kind=RelKind.PARENT,
164
+ peer=InfrahubKind.PROPOSEDCHANGE,
165
+ cardinality=Cardinality.ONE,
166
+ optional=False,
167
+ ),
168
+ ],
169
+ )
170
+
171
+ core_thread_comment = NodeSchema(
172
+ name="ThreadComment",
173
+ namespace="Core",
174
+ description="A comment on thread within a Proposed Change",
175
+ include_in_menu=False,
176
+ label="Thread Comment",
177
+ default_filter="text__value",
178
+ display_labels=["text__value"],
179
+ branch=BranchSupportType.AGNOSTIC,
180
+ inherit_from=[InfrahubKind.COMMENT],
181
+ generate_profile=False,
182
+ attributes=[],
183
+ relationships=[
184
+ Rel(
185
+ name="thread",
186
+ peer=InfrahubKind.THREAD,
187
+ kind=RelKind.PARENT,
188
+ identifier="thread__threadcomment",
189
+ cardinality=Cardinality.ONE,
190
+ optional=False,
191
+ ),
192
+ ],
193
+ )
@@ -0,0 +1,328 @@
1
+ from infrahub.core.constants import (
2
+ DEFAULT_KIND_MAX_LENGTH,
3
+ DEFAULT_KIND_MIN_LENGTH,
4
+ BranchConflictKeep,
5
+ BranchSupportType,
6
+ InfrahubKind,
7
+ RelationshipDeleteBehavior,
8
+ Severity,
9
+ ValidatorConclusion,
10
+ ValidatorState,
11
+ )
12
+ from infrahub.core.constants import RelationshipCardinality as Cardinality
13
+ from infrahub.core.constants import RelationshipKind as RelKind
14
+
15
+ from ...attribute_schema import AttributeSchema as Attr
16
+ from ...generic_schema import GenericSchema
17
+ from ...node_schema import NodeSchema
18
+ from ...relationship_schema import (
19
+ RelationshipSchema as Rel,
20
+ )
21
+
22
+ core_propose_change_validator = GenericSchema(
23
+ name="Validator",
24
+ namespace="Core",
25
+ description="",
26
+ include_in_menu=False,
27
+ label="Validator",
28
+ order_by=["started_at__value"],
29
+ display_labels=["label__value"],
30
+ branch=BranchSupportType.AGNOSTIC,
31
+ attributes=[
32
+ Attr(name="label", kind="Text", optional=True),
33
+ Attr(
34
+ name="state", kind="Text", enum=ValidatorState.available_types(), default_value=ValidatorState.QUEUED.value
35
+ ),
36
+ Attr(
37
+ name="conclusion",
38
+ kind="Text",
39
+ enum=ValidatorConclusion.available_types(),
40
+ default_value=ValidatorConclusion.UNKNOWN.value,
41
+ ),
42
+ Attr(name="completed_at", kind="DateTime", optional=True),
43
+ Attr(name="started_at", kind="DateTime", optional=True),
44
+ ],
45
+ relationships=[
46
+ Rel(
47
+ name="proposed_change",
48
+ peer=InfrahubKind.PROPOSEDCHANGE,
49
+ kind=RelKind.PARENT,
50
+ optional=False,
51
+ cardinality=Cardinality.ONE,
52
+ identifier="proposed_change__validator",
53
+ ),
54
+ Rel(
55
+ name="checks",
56
+ peer=InfrahubKind.CHECK,
57
+ kind=RelKind.COMPONENT,
58
+ optional=True,
59
+ cardinality=Cardinality.MANY,
60
+ identifier="validator__check",
61
+ on_delete=RelationshipDeleteBehavior.CASCADE,
62
+ ),
63
+ ],
64
+ )
65
+
66
+ core_data_validator = NodeSchema(
67
+ name="DataValidator",
68
+ namespace="Core",
69
+ description="A check to validate the data integrity between two branches",
70
+ include_in_menu=False,
71
+ label="Data Validator",
72
+ display_labels=["label__value"],
73
+ inherit_from=[InfrahubKind.VALIDATOR],
74
+ generate_profile=False,
75
+ branch=BranchSupportType.AGNOSTIC,
76
+ )
77
+
78
+ core_repository_validator = NodeSchema(
79
+ name="RepositoryValidator",
80
+ namespace="Core",
81
+ description="A Validator related to a specific repository",
82
+ include_in_menu=False,
83
+ label="Repository Validator",
84
+ display_labels=["label__value"],
85
+ inherit_from=[InfrahubKind.VALIDATOR],
86
+ generate_profile=False,
87
+ branch=BranchSupportType.AGNOSTIC,
88
+ relationships=[
89
+ Rel(
90
+ name="repository",
91
+ peer=InfrahubKind.GENERICREPOSITORY,
92
+ kind=RelKind.ATTRIBUTE,
93
+ optional=False,
94
+ cardinality=Cardinality.ONE,
95
+ branch=BranchSupportType.AGNOSTIC,
96
+ ),
97
+ ],
98
+ )
99
+
100
+ core_user_validator = NodeSchema(
101
+ name="UserValidator",
102
+ namespace="Core",
103
+ description="A Validator related to a user defined checks in a repository",
104
+ include_in_menu=False,
105
+ label="User Validator",
106
+ display_labels=["label__value"],
107
+ inherit_from=[InfrahubKind.VALIDATOR],
108
+ generate_profile=False,
109
+ branch=BranchSupportType.AGNOSTIC,
110
+ relationships=[
111
+ Rel(
112
+ name="check_definition",
113
+ peer=InfrahubKind.CHECKDEFINITION,
114
+ kind=RelKind.ATTRIBUTE,
115
+ optional=False,
116
+ cardinality=Cardinality.ONE,
117
+ branch=BranchSupportType.AGNOSTIC,
118
+ ),
119
+ Rel(
120
+ name="repository",
121
+ peer=InfrahubKind.GENERICREPOSITORY,
122
+ kind=RelKind.ATTRIBUTE,
123
+ optional=False,
124
+ cardinality=Cardinality.ONE,
125
+ branch=BranchSupportType.AGNOSTIC,
126
+ ),
127
+ ],
128
+ )
129
+
130
+ core_schema_validator = NodeSchema(
131
+ name="SchemaValidator",
132
+ namespace="Core",
133
+ description="A validator related to the schema",
134
+ include_in_menu=False,
135
+ label="Schema Validator",
136
+ display_labels=["label__value"],
137
+ generate_profile=False,
138
+ inherit_from=[InfrahubKind.VALIDATOR],
139
+ branch=BranchSupportType.AGNOSTIC,
140
+ )
141
+
142
+ core_artifact_validator = NodeSchema(
143
+ name="ArtifactValidator",
144
+ namespace="Core",
145
+ description="A validator related to the artifacts",
146
+ include_in_menu=False,
147
+ label="Artifact Validator",
148
+ display_labels=["label__value"],
149
+ inherit_from=[InfrahubKind.VALIDATOR],
150
+ generate_profile=False,
151
+ branch=BranchSupportType.AGNOSTIC,
152
+ relationships=[
153
+ Rel(
154
+ name="definition",
155
+ peer=InfrahubKind.ARTIFACTDEFINITION,
156
+ kind=RelKind.ATTRIBUTE,
157
+ optional=False,
158
+ cardinality=Cardinality.ONE,
159
+ branch=BranchSupportType.AGNOSTIC,
160
+ ),
161
+ ],
162
+ )
163
+
164
+ core_generator_validator = NodeSchema(
165
+ name="GeneratorValidator",
166
+ namespace="Core",
167
+ description="A validator related to generators",
168
+ include_in_menu=False,
169
+ label="Generator Validator",
170
+ display_labels=["label__value"],
171
+ inherit_from=[InfrahubKind.VALIDATOR],
172
+ generate_profile=False,
173
+ branch=BranchSupportType.AGNOSTIC,
174
+ relationships=[
175
+ Rel(
176
+ name="definition",
177
+ peer=InfrahubKind.GENERATORDEFINITION,
178
+ kind=RelKind.ATTRIBUTE,
179
+ optional=False,
180
+ cardinality=Cardinality.ONE,
181
+ branch=BranchSupportType.AGNOSTIC,
182
+ ),
183
+ ],
184
+ )
185
+
186
+ core_check = GenericSchema(
187
+ name="Check",
188
+ namespace="Core",
189
+ description="",
190
+ display_labels=["label__value"],
191
+ include_in_menu=False,
192
+ label="Check",
193
+ branch=BranchSupportType.AGNOSTIC,
194
+ attributes=[
195
+ Attr(name="name", kind="Text", optional=True),
196
+ Attr(name="label", kind="Text", optional=True),
197
+ Attr(name="origin", kind="Text", optional=False),
198
+ Attr(
199
+ name="kind",
200
+ kind="Text",
201
+ regex=r"^[A-Z][a-zA-Z0-9]+$",
202
+ optional=False,
203
+ min_length=DEFAULT_KIND_MIN_LENGTH,
204
+ max_length=DEFAULT_KIND_MAX_LENGTH,
205
+ ),
206
+ Attr(name="message", kind="TextArea", optional=True),
207
+ Attr(
208
+ name="conclusion",
209
+ kind="Text",
210
+ enum=ValidatorConclusion.available_types(),
211
+ default_value=ValidatorConclusion.UNKNOWN.value,
212
+ optional=True,
213
+ ),
214
+ Attr(
215
+ name="severity",
216
+ kind="Text",
217
+ enum=Severity.available_types(),
218
+ default_value=Severity.INFO.value,
219
+ optional=True,
220
+ ),
221
+ Attr(name="created_at", kind="DateTime", optional=True),
222
+ ],
223
+ relationships=[
224
+ Rel(
225
+ name="validator",
226
+ peer=InfrahubKind.VALIDATOR,
227
+ identifier="validator__check",
228
+ kind=RelKind.PARENT,
229
+ optional=False,
230
+ cardinality=Cardinality.ONE,
231
+ ),
232
+ ],
233
+ )
234
+
235
+ core_data_check = NodeSchema(
236
+ name="DataCheck",
237
+ namespace="Core",
238
+ description="A check related to some Data",
239
+ include_in_menu=False,
240
+ label="Data Check",
241
+ display_labels=["label__value"],
242
+ inherit_from=[InfrahubKind.CHECK],
243
+ generate_profile=False,
244
+ branch=BranchSupportType.AGNOSTIC,
245
+ attributes=[
246
+ Attr(name="conflicts", kind="JSON"),
247
+ Attr(name="keep_branch", kind="Text", enum=BranchConflictKeep.available_types(), optional=True),
248
+ Attr(name="enriched_conflict_id", kind="Text", optional=True),
249
+ ],
250
+ )
251
+
252
+ core_standard_check = NodeSchema(
253
+ name="StandardCheck",
254
+ namespace="Core",
255
+ description="A standard check",
256
+ include_in_menu=False,
257
+ label="Standard Check",
258
+ display_labels=["label__value"],
259
+ inherit_from=[InfrahubKind.CHECK],
260
+ generate_profile=False,
261
+ branch=BranchSupportType.AGNOSTIC,
262
+ )
263
+
264
+ core_schema_check = NodeSchema(
265
+ name="SchemaCheck",
266
+ namespace="Core",
267
+ description="A check related to the schema",
268
+ include_in_menu=False,
269
+ label="Schema Check",
270
+ display_labels=["label__value"],
271
+ inherit_from=[InfrahubKind.CHECK],
272
+ generate_profile=False,
273
+ branch=BranchSupportType.AGNOSTIC,
274
+ attributes=[
275
+ Attr(name="conflicts", kind="JSON"),
276
+ Attr(name="enriched_conflict_id", kind="Text", optional=True),
277
+ ],
278
+ )
279
+
280
+ core_file_check = NodeSchema(
281
+ name="FileCheck",
282
+ namespace="Core",
283
+ description="A check related to a file in a Git Repository",
284
+ include_in_menu=False,
285
+ label="File Check",
286
+ display_labels=["label__value"],
287
+ inherit_from=[InfrahubKind.CHECK],
288
+ generate_profile=False,
289
+ branch=BranchSupportType.AGNOSTIC,
290
+ attributes=[
291
+ Attr(name="files", kind="List", optional=True),
292
+ Attr(name="commit", kind="Text", optional=True),
293
+ ],
294
+ )
295
+
296
+ core_artifact_check = NodeSchema(
297
+ name="ArtifactCheck",
298
+ namespace="Core",
299
+ description="A check related to an artifact",
300
+ include_in_menu=False,
301
+ label="Artifact Check",
302
+ display_labels=["label__value"],
303
+ inherit_from=[InfrahubKind.CHECK],
304
+ generate_profile=False,
305
+ branch=BranchSupportType.AGNOSTIC,
306
+ attributes=[
307
+ Attr(name="changed", kind="Boolean", optional=True),
308
+ Attr(name="checksum", kind="Text", optional=True),
309
+ Attr(name="artifact_id", kind="Text", optional=True),
310
+ Attr(name="storage_id", kind="Text", optional=True),
311
+ Attr(name="line_number", kind="Number", optional=True),
312
+ ],
313
+ )
314
+
315
+ core_generator_check = NodeSchema(
316
+ name="GeneratorCheck",
317
+ namespace="Core",
318
+ description="A check related to a Generator instance",
319
+ include_in_menu=False,
320
+ label="Generator Check",
321
+ display_labels=["label__value"],
322
+ inherit_from=[InfrahubKind.CHECK],
323
+ generate_profile=False,
324
+ branch=BranchSupportType.AGNOSTIC,
325
+ attributes=[
326
+ Attr(name="instance", kind="Text", optional=False),
327
+ ],
328
+ )