infrahub-server 1.1.6__py3-none-any.whl → 1.2.0b1__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 (407) hide show
  1. infrahub/api/artifact.py +16 -4
  2. infrahub/api/dependencies.py +8 -0
  3. infrahub/api/oauth2.py +0 -1
  4. infrahub/api/oidc.py +0 -1
  5. infrahub/api/query.py +18 -7
  6. infrahub/api/schema.py +32 -6
  7. infrahub/api/transformation.py +12 -5
  8. infrahub/{message_bus/messages/check_artifact_create.py → artifacts/models.py} +5 -3
  9. infrahub/{message_bus/operations/check/artifact.py → artifacts/tasks.py} +26 -25
  10. infrahub/cli/__init__.py +0 -2
  11. infrahub/cli/db.py +6 -7
  12. infrahub/cli/events.py +8 -3
  13. infrahub/cli/git_agent.py +9 -7
  14. infrahub/cli/tasks.py +4 -6
  15. infrahub/computed_attribute/models.py +1 -1
  16. infrahub/computed_attribute/tasks.py +64 -17
  17. infrahub/computed_attribute/triggers.py +90 -0
  18. infrahub/config.py +1 -1
  19. infrahub/context.py +39 -0
  20. infrahub/core/account.py +5 -8
  21. infrahub/core/attribute.py +54 -22
  22. infrahub/core/branch/models.py +4 -4
  23. infrahub/core/branch/tasks.py +137 -129
  24. infrahub/core/changelog/__init__.py +0 -0
  25. infrahub/core/changelog/diff.py +283 -0
  26. infrahub/core/changelog/models.py +499 -0
  27. infrahub/core/constants/__init__.py +43 -2
  28. infrahub/core/constants/infrahubkind.py +1 -0
  29. infrahub/core/constants/schema.py +2 -0
  30. infrahub/core/diff/combiner.py +12 -8
  31. infrahub/core/diff/coordinator.py +49 -70
  32. infrahub/core/diff/data_check_synchronizer.py +86 -7
  33. infrahub/core/diff/enricher/aggregated.py +3 -3
  34. infrahub/core/diff/enricher/cardinality_one.py +7 -7
  35. infrahub/core/diff/enricher/hierarchy.py +22 -7
  36. infrahub/core/diff/enricher/labels.py +19 -4
  37. infrahub/core/diff/enricher/path_identifier.py +7 -9
  38. infrahub/core/diff/enricher/summary_counts.py +3 -1
  39. infrahub/core/diff/merger/merger.py +8 -4
  40. infrahub/core/diff/model/path.py +76 -35
  41. infrahub/core/diff/parent_node_adder.py +78 -0
  42. infrahub/core/diff/payload_builder.py +13 -2
  43. infrahub/core/diff/query/all_conflicts.py +6 -3
  44. infrahub/core/diff/query/artifact.py +1 -1
  45. infrahub/core/diff/query/delete_query.py +1 -1
  46. infrahub/core/diff/query/diff_get.py +3 -2
  47. infrahub/core/diff/query/diff_summary.py +1 -1
  48. infrahub/core/diff/query/field_specifiers.py +3 -1
  49. infrahub/core/diff/query/field_summary.py +3 -2
  50. infrahub/core/diff/query/filters.py +14 -3
  51. infrahub/core/diff/query/get_conflict_query.py +1 -1
  52. infrahub/core/diff/query/has_conflicts_query.py +6 -3
  53. infrahub/core/diff/query/merge.py +3 -3
  54. infrahub/core/diff/query/{drop_tracking_id.py → merge_tracking_id.py} +4 -4
  55. infrahub/core/diff/query/roots_metadata.py +9 -2
  56. infrahub/core/diff/query/save.py +233 -142
  57. infrahub/core/diff/query/summary_counts_enricher.py +267 -0
  58. infrahub/core/diff/query/time_range_query.py +3 -2
  59. infrahub/core/diff/query/update_conflict_query.py +1 -1
  60. infrahub/core/diff/query_parser.py +49 -24
  61. infrahub/core/diff/repository/deserializer.py +32 -28
  62. infrahub/core/diff/repository/repository.py +215 -41
  63. infrahub/core/diff/tasks.py +13 -12
  64. infrahub/core/enums.py +1 -1
  65. infrahub/core/graph/__init__.py +1 -1
  66. infrahub/core/graph/index.py +3 -0
  67. infrahub/core/integrity/object_conflict/conflict_recorder.py +1 -1
  68. infrahub/core/ipam/reconciler.py +1 -1
  69. infrahub/core/ipam/tasks.py +2 -3
  70. infrahub/core/manager.py +20 -15
  71. infrahub/core/merge.py +5 -2
  72. infrahub/core/migrations/graph/__init__.py +4 -0
  73. infrahub/core/migrations/graph/m001_add_version_to_graph.py +1 -1
  74. infrahub/core/migrations/graph/m002_attribute_is_default.py +2 -2
  75. infrahub/core/migrations/graph/m003_relationship_parent_optional.py +2 -2
  76. infrahub/core/migrations/graph/m004_add_attr_documentation.py +1 -1
  77. infrahub/core/migrations/graph/m005_add_rel_read_only.py +1 -1
  78. infrahub/core/migrations/graph/m006_add_rel_on_delete.py +1 -1
  79. infrahub/core/migrations/graph/m007_add_rel_allow_override.py +1 -1
  80. infrahub/core/migrations/graph/m008_add_human_friendly_id.py +1 -1
  81. infrahub/core/migrations/graph/m009_add_generate_profile_attr.py +1 -1
  82. infrahub/core/migrations/graph/m010_add_generate_profile_attr_generic.py +1 -1
  83. infrahub/core/migrations/graph/m011_remove_profile_relationship_schema.py +2 -2
  84. infrahub/core/migrations/graph/m012_convert_account_generic.py +12 -23
  85. infrahub/core/migrations/graph/m013_convert_git_password_credential.py +7 -11
  86. infrahub/core/migrations/graph/m014_remove_index_attr_value.py +2 -2
  87. infrahub/core/migrations/graph/m015_diff_format_update.py +1 -1
  88. infrahub/core/migrations/graph/m016_diff_delete_bug_fix.py +1 -1
  89. infrahub/core/migrations/graph/m017_add_core_profile.py +1 -1
  90. infrahub/core/migrations/graph/m018_uniqueness_nulls.py +2 -2
  91. infrahub/core/migrations/graph/m019_restore_rels_to_time.py +256 -0
  92. infrahub/core/migrations/graph/m020_add_generate_template_attr.py +48 -0
  93. infrahub/core/migrations/query/attribute_add.py +1 -1
  94. infrahub/core/migrations/query/attribute_rename.py +1 -1
  95. infrahub/core/migrations/query/delete_element_in_schema.py +1 -1
  96. infrahub/core/migrations/query/node_duplicate.py +39 -19
  97. infrahub/core/migrations/query/relationship_duplicate.py +1 -1
  98. infrahub/core/migrations/query/schema_attribute_update.py +1 -1
  99. infrahub/core/migrations/schema/node_attribute_remove.py +1 -1
  100. infrahub/core/migrations/schema/node_remove.py +27 -13
  101. infrahub/core/migrations/schema/tasks.py +5 -5
  102. infrahub/core/migrations/shared.py +4 -4
  103. infrahub/core/models.py +7 -8
  104. infrahub/core/node/__init__.py +170 -46
  105. infrahub/core/node/base.py +1 -1
  106. infrahub/core/node/constraints/grouped_uniqueness.py +9 -2
  107. infrahub/core/node/delete_validator.py +4 -4
  108. infrahub/core/node/ipam.py +13 -8
  109. infrahub/core/node/permissions.py +4 -0
  110. infrahub/core/node/resource_manager/ip_prefix_pool.py +8 -5
  111. infrahub/core/node/standard.py +3 -5
  112. infrahub/core/property.py +1 -1
  113. infrahub/core/protocols.py +6 -0
  114. infrahub/core/protocols_base.py +4 -2
  115. infrahub/core/query/__init__.py +2 -5
  116. infrahub/core/query/attribute.py +9 -9
  117. infrahub/core/query/branch.py +5 -5
  118. infrahub/core/query/delete.py +1 -1
  119. infrahub/core/query/diff.py +45 -7
  120. infrahub/core/query/ipam.py +4 -4
  121. infrahub/core/query/node.py +19 -14
  122. infrahub/core/query/relationship.py +213 -26
  123. infrahub/core/query/resource_manager.py +13 -11
  124. infrahub/core/query/standard_node.py +6 -6
  125. infrahub/core/query/task.py +3 -3
  126. infrahub/core/query/task_log.py +1 -1
  127. infrahub/core/query/utils.py +5 -5
  128. infrahub/core/registry.py +0 -2
  129. infrahub/core/relationship/constraints/count.py +1 -1
  130. infrahub/core/relationship/constraints/peer_kind.py +1 -1
  131. infrahub/core/relationship/model.py +76 -38
  132. infrahub/core/schema/__init__.py +6 -4
  133. infrahub/core/schema/attribute_schema.py +8 -0
  134. infrahub/core/schema/basenode_schema.py +13 -3
  135. infrahub/core/schema/definitions/core/__init__.py +153 -0
  136. infrahub/core/schema/definitions/core/account.py +168 -0
  137. infrahub/core/schema/definitions/core/artifact.py +127 -0
  138. infrahub/core/schema/definitions/core/builtin.py +21 -0
  139. infrahub/core/schema/definitions/core/check.py +60 -0
  140. infrahub/core/schema/definitions/core/generator.py +96 -0
  141. infrahub/core/schema/definitions/core/graphql_query.py +77 -0
  142. infrahub/core/schema/definitions/core/group.py +105 -0
  143. infrahub/core/schema/definitions/core/ipam.py +252 -0
  144. infrahub/core/schema/definitions/core/lineage.py +17 -0
  145. infrahub/core/schema/definitions/core/menu.py +46 -0
  146. infrahub/core/schema/definitions/core/permission.py +161 -0
  147. infrahub/core/schema/definitions/core/profile.py +29 -0
  148. infrahub/core/schema/definitions/core/propose_change.py +88 -0
  149. infrahub/core/schema/definitions/core/propose_change_comment.py +188 -0
  150. infrahub/core/schema/definitions/core/propose_change_validator.py +326 -0
  151. infrahub/core/schema/definitions/core/repository.py +280 -0
  152. infrahub/core/schema/definitions/core/resource_pool.py +180 -0
  153. infrahub/core/schema/definitions/core/template.py +12 -0
  154. infrahub/core/schema/definitions/core/transform.py +87 -0
  155. infrahub/core/schema/definitions/core/webhook.py +108 -0
  156. infrahub/core/schema/definitions/internal.py +16 -0
  157. infrahub/core/schema/generated/genericnode_schema.py +5 -0
  158. infrahub/core/schema/generated/node_schema.py +5 -0
  159. infrahub/core/schema/generic_schema.py +5 -1
  160. infrahub/core/schema/manager.py +45 -42
  161. infrahub/core/schema/node_schema.py +4 -0
  162. infrahub/core/schema/profile_schema.py +4 -0
  163. infrahub/core/schema/relationship_schema.py +10 -2
  164. infrahub/core/schema/schema_branch.py +260 -16
  165. infrahub/core/schema/template_schema.py +36 -0
  166. infrahub/core/task/user_task.py +7 -5
  167. infrahub/core/timestamp.py +3 -3
  168. infrahub/core/utils.py +3 -2
  169. infrahub/core/validators/attribute/choices.py +1 -1
  170. infrahub/core/validators/attribute/enum.py +1 -1
  171. infrahub/core/validators/attribute/kind.py +1 -1
  172. infrahub/core/validators/attribute/length.py +1 -1
  173. infrahub/core/validators/attribute/optional.py +1 -1
  174. infrahub/core/validators/attribute/regex.py +1 -1
  175. infrahub/core/validators/attribute/unique.py +1 -1
  176. infrahub/core/validators/checks_runner.py +37 -0
  177. infrahub/core/validators/node/generate_profile.py +1 -1
  178. infrahub/core/validators/node/hierarchy.py +1 -1
  179. infrahub/core/validators/query.py +1 -1
  180. infrahub/core/validators/relationship/count.py +1 -1
  181. infrahub/core/validators/relationship/optional.py +1 -1
  182. infrahub/core/validators/relationship/peer.py +1 -1
  183. infrahub/core/validators/tasks.py +8 -6
  184. infrahub/core/validators/uniqueness/query.py +20 -17
  185. infrahub/database/__init__.py +16 -2
  186. infrahub/database/memgraph.py +1 -1
  187. infrahub/dependencies/builder/constraint/grouped/node_runner.py +0 -2
  188. infrahub/dependencies/builder/diff/combiner.py +1 -1
  189. infrahub/dependencies/builder/diff/conflicts_enricher.py +1 -1
  190. infrahub/dependencies/builder/diff/coordinator.py +0 -2
  191. infrahub/dependencies/builder/diff/deserializer.py +4 -2
  192. infrahub/dependencies/builder/diff/enricher/hierarchy.py +3 -1
  193. infrahub/dependencies/builder/diff/enricher/summary_counts.py +1 -1
  194. infrahub/dependencies/builder/diff/parent_node_adder.py +8 -0
  195. infrahub/events/artifact_action.py +76 -0
  196. infrahub/events/branch_action.py +50 -21
  197. infrahub/events/group_action.py +117 -0
  198. infrahub/events/models.py +164 -51
  199. infrahub/events/node_action.py +70 -8
  200. infrahub/events/repository_action.py +8 -8
  201. infrahub/events/schema_action.py +21 -8
  202. infrahub/exceptions.py +9 -0
  203. infrahub/generators/models.py +1 -0
  204. infrahub/generators/tasks.py +34 -15
  205. infrahub/git/base.py +3 -5
  206. infrahub/git/constants.py +0 -1
  207. infrahub/git/integrator.py +60 -36
  208. infrahub/git/models.py +80 -1
  209. infrahub/git/repository.py +7 -8
  210. infrahub/git/tasks.py +432 -112
  211. infrahub/git_credential/helper.py +2 -3
  212. infrahub/graphql/analyzer.py +572 -11
  213. infrahub/graphql/app.py +34 -26
  214. infrahub/graphql/auth/query_permission_checker/anonymous_checker.py +5 -5
  215. infrahub/graphql/auth/query_permission_checker/default_branch_checker.py +4 -4
  216. infrahub/graphql/auth/query_permission_checker/merge_operation_checker.py +4 -4
  217. infrahub/graphql/auth/query_permission_checker/object_permission_checker.py +28 -35
  218. infrahub/graphql/auth/query_permission_checker/super_admin_checker.py +5 -5
  219. infrahub/graphql/context.py +33 -0
  220. infrahub/graphql/enums.py +1 -1
  221. infrahub/graphql/initialization.py +5 -1
  222. infrahub/graphql/loaders/node.py +2 -2
  223. infrahub/graphql/manager.py +63 -63
  224. infrahub/graphql/mutations/account.py +20 -13
  225. infrahub/graphql/mutations/artifact_definition.py +16 -12
  226. infrahub/graphql/mutations/branch.py +86 -40
  227. infrahub/graphql/mutations/computed_attribute.py +24 -13
  228. infrahub/graphql/mutations/diff.py +54 -14
  229. infrahub/graphql/mutations/diff_conflict.py +14 -8
  230. infrahub/graphql/mutations/generator.py +83 -0
  231. infrahub/graphql/mutations/graphql_query.py +19 -11
  232. infrahub/graphql/mutations/ipam.py +25 -23
  233. infrahub/graphql/mutations/main.py +243 -50
  234. infrahub/graphql/mutations/menu.py +10 -10
  235. infrahub/graphql/mutations/proposed_change.py +36 -28
  236. infrahub/graphql/mutations/relationship.py +343 -104
  237. infrahub/graphql/mutations/repository.py +41 -35
  238. infrahub/graphql/mutations/resource_manager.py +26 -26
  239. infrahub/graphql/mutations/schema.py +66 -33
  240. infrahub/graphql/mutations/tasks.py +16 -10
  241. infrahub/graphql/parser.py +1 -1
  242. infrahub/graphql/permissions.py +3 -10
  243. infrahub/graphql/queries/account.py +22 -18
  244. infrahub/graphql/queries/branch.py +6 -4
  245. infrahub/graphql/queries/diff/tree.py +63 -52
  246. infrahub/graphql/queries/event.py +115 -0
  247. infrahub/graphql/queries/internal.py +3 -3
  248. infrahub/graphql/queries/ipam.py +23 -18
  249. infrahub/graphql/queries/relationship.py +11 -10
  250. infrahub/graphql/queries/resource_manager.py +43 -27
  251. infrahub/graphql/queries/search.py +9 -8
  252. infrahub/graphql/queries/status.py +12 -9
  253. infrahub/graphql/queries/task.py +11 -9
  254. infrahub/graphql/resolvers/resolver.py +69 -43
  255. infrahub/graphql/resolvers/single_relationship.py +16 -10
  256. infrahub/graphql/schema.py +4 -0
  257. infrahub/graphql/subscription/__init__.py +1 -1
  258. infrahub/graphql/subscription/events.py +1 -1
  259. infrahub/graphql/subscription/graphql_query.py +8 -8
  260. infrahub/graphql/types/branch.py +2 -2
  261. infrahub/graphql/types/common.py +6 -1
  262. infrahub/graphql/types/context.py +12 -0
  263. infrahub/graphql/types/enums.py +2 -0
  264. infrahub/graphql/types/event.py +158 -0
  265. infrahub/graphql/types/interface.py +2 -2
  266. infrahub/graphql/types/node.py +3 -3
  267. infrahub/graphql/types/permission.py +2 -2
  268. infrahub/graphql/types/relationship.py +3 -3
  269. infrahub/graphql/types/standard_node.py +9 -11
  270. infrahub/graphql/utils.py +28 -182
  271. infrahub/groups/tasks.py +2 -3
  272. infrahub/lock.py +21 -21
  273. infrahub/menu/generator.py +0 -1
  274. infrahub/menu/menu.py +116 -138
  275. infrahub/menu/models.py +4 -4
  276. infrahub/message_bus/__init__.py +11 -13
  277. infrahub/message_bus/messages/__init__.py +0 -14
  278. infrahub/message_bus/messages/check_generator_run.py +1 -3
  279. infrahub/message_bus/messages/event_branch_merge.py +3 -0
  280. infrahub/message_bus/messages/proposed_change/request_proposedchange_refreshartifacts.py +6 -0
  281. infrahub/message_bus/messages/request_proposedchange_pipeline.py +2 -0
  282. infrahub/message_bus/messages/send_echo_request.py +1 -1
  283. infrahub/message_bus/operations/__init__.py +4 -13
  284. infrahub/message_bus/operations/check/__init__.py +2 -2
  285. infrahub/message_bus/operations/check/generator.py +1 -3
  286. infrahub/message_bus/operations/event/branch.py +7 -3
  287. infrahub/message_bus/operations/event/schema.py +1 -1
  288. infrahub/message_bus/operations/event/worker.py +0 -3
  289. infrahub/message_bus/operations/finalize/validator.py +1 -1
  290. infrahub/message_bus/operations/git/file.py +2 -2
  291. infrahub/message_bus/operations/git/repository.py +1 -1
  292. infrahub/message_bus/operations/requests/__init__.py +0 -4
  293. infrahub/message_bus/operations/requests/generator_definition.py +2 -4
  294. infrahub/message_bus/operations/requests/proposed_change.py +37 -20
  295. infrahub/message_bus/operations/send/echo.py +1 -1
  296. infrahub/message_bus/types.py +1 -1
  297. infrahub/permissions/__init__.py +2 -1
  298. infrahub/permissions/globals.py +15 -0
  299. infrahub/permissions/types.py +26 -0
  300. infrahub/pools/prefix.py +29 -165
  301. infrahub/prefect_server/__init__.py +0 -0
  302. infrahub/prefect_server/app.py +18 -0
  303. infrahub/prefect_server/database.py +20 -0
  304. infrahub/prefect_server/events.py +28 -0
  305. infrahub/prefect_server/models.py +46 -0
  306. infrahub/proposed_change/models.py +18 -1
  307. infrahub/proposed_change/tasks.py +195 -53
  308. infrahub/pytest_plugin.py +4 -4
  309. infrahub/server.py +13 -12
  310. infrahub/services/__init__.py +148 -63
  311. infrahub/services/adapters/cache/__init__.py +11 -11
  312. infrahub/services/adapters/cache/nats.py +42 -25
  313. infrahub/services/adapters/cache/redis.py +3 -11
  314. infrahub/services/adapters/event/__init__.py +10 -18
  315. infrahub/services/adapters/http/__init__.py +0 -5
  316. infrahub/services/adapters/http/httpx.py +22 -15
  317. infrahub/services/adapters/message_bus/__init__.py +25 -8
  318. infrahub/services/adapters/message_bus/local.py +9 -7
  319. infrahub/services/adapters/message_bus/nats.py +14 -8
  320. infrahub/services/adapters/message_bus/rabbitmq.py +23 -10
  321. infrahub/services/adapters/workflow/__init__.py +11 -8
  322. infrahub/services/adapters/workflow/local.py +27 -6
  323. infrahub/services/adapters/workflow/worker.py +23 -7
  324. infrahub/services/component.py +43 -40
  325. infrahub/services/protocols.py +7 -7
  326. infrahub/services/scheduler.py +30 -29
  327. infrahub/storage.py +2 -4
  328. infrahub/task_manager/constants.py +1 -1
  329. infrahub/task_manager/event.py +261 -0
  330. infrahub/task_manager/models.py +147 -3
  331. infrahub/task_manager/task.py +1 -1
  332. infrahub/tasks/artifact.py +19 -18
  333. infrahub/tasks/registry.py +1 -1
  334. infrahub/tasks/telemetry.py +13 -14
  335. infrahub/transformations/tasks.py +3 -5
  336. infrahub/trigger/__init__.py +0 -0
  337. infrahub/trigger/catalogue.py +16 -0
  338. infrahub/trigger/constants.py +9 -0
  339. infrahub/trigger/models.py +105 -0
  340. infrahub/trigger/tasks.py +91 -0
  341. infrahub/types.py +1 -1
  342. infrahub/utils.py +1 -1
  343. infrahub/webhook/constants.py +0 -2
  344. infrahub/webhook/models.py +161 -40
  345. infrahub/webhook/tasks.py +123 -202
  346. infrahub/webhook/triggers.py +27 -0
  347. infrahub/workers/infrahub_async.py +36 -25
  348. infrahub/workers/utils.py +63 -0
  349. infrahub/workflows/catalogue.py +71 -52
  350. infrahub/workflows/initialization.py +14 -8
  351. infrahub/workflows/models.py +28 -4
  352. infrahub/workflows/utils.py +1 -1
  353. infrahub_sdk/client.py +8 -0
  354. infrahub_sdk/ctl/branch.py +3 -2
  355. infrahub_sdk/ctl/check.py +3 -3
  356. infrahub_sdk/ctl/cli_commands.py +16 -11
  357. infrahub_sdk/ctl/exceptions.py +0 -6
  358. infrahub_sdk/ctl/exporter.py +1 -1
  359. infrahub_sdk/ctl/generator.py +5 -5
  360. infrahub_sdk/ctl/importer.py +3 -2
  361. infrahub_sdk/ctl/menu.py +1 -1
  362. infrahub_sdk/ctl/object.py +1 -1
  363. infrahub_sdk/ctl/repository.py +23 -15
  364. infrahub_sdk/ctl/schema.py +2 -2
  365. infrahub_sdk/ctl/utils.py +4 -19
  366. infrahub_sdk/ctl/validate.py +2 -1
  367. infrahub_sdk/exceptions.py +12 -0
  368. infrahub_sdk/generator.py +3 -0
  369. infrahub_sdk/node.py +4 -4
  370. infrahub_sdk/protocols.py +21 -8
  371. infrahub_sdk/schema/__init__.py +14 -2
  372. infrahub_sdk/schema/main.py +7 -0
  373. infrahub_sdk/task/__init__.py +1 -0
  374. infrahub_sdk/task/constants.py +3 -0
  375. infrahub_sdk/task/exceptions.py +25 -0
  376. infrahub_sdk/task/manager.py +545 -0
  377. infrahub_sdk/task/models.py +74 -0
  378. infrahub_sdk/timestamp.py +134 -33
  379. infrahub_sdk/utils.py +39 -1
  380. infrahub_sdk/yaml.py +2 -3
  381. {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0b1.dist-info}/METADATA +47 -12
  382. infrahub_server-1.2.0b1.dist-info/RECORD +725 -0
  383. infrahub_testcontainers/container.py +14 -6
  384. infrahub_testcontainers/docker-compose.test.yml +24 -5
  385. infrahub_testcontainers/haproxy.cfg +43 -0
  386. infrahub_testcontainers/helpers.py +85 -1
  387. infrahub/core/branch/constants.py +0 -2
  388. infrahub/core/schema/definitions/core.py +0 -2274
  389. infrahub/graphql/query.py +0 -52
  390. infrahub/message_bus/messages/check_repository_checkdefinition.py +0 -20
  391. infrahub/message_bus/messages/check_repository_mergeconflicts.py +0 -16
  392. infrahub/message_bus/messages/check_repository_usercheck.py +0 -26
  393. infrahub/message_bus/messages/request_artifactdefinition_check.py +0 -17
  394. infrahub/message_bus/messages/request_repository_checks.py +0 -12
  395. infrahub/message_bus/messages/request_repository_userchecks.py +0 -18
  396. infrahub/message_bus/operations/check/repository.py +0 -293
  397. infrahub/message_bus/operations/requests/artifact_definition.py +0 -148
  398. infrahub/message_bus/operations/requests/repository.py +0 -133
  399. infrahub/schema/constants.py +0 -1
  400. infrahub/schema/tasks.py +0 -76
  401. infrahub/services/adapters/database/__init__.py +0 -9
  402. infrahub_sdk/ctl/_file.py +0 -13
  403. infrahub_server-1.1.6.dist-info/RECORD +0 -681
  404. /infrahub/{schema → artifacts}/__init__.py +0 -0
  405. {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0b1.dist-info}/LICENSE.txt +0 -0
  406. {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0b1.dist-info}/WHEEL +0 -0
  407. {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0b1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,280 @@
1
+ from typing import Any
2
+
3
+ from infrahub.core.constants import (
4
+ AllowOverrideType,
5
+ BranchSupportType,
6
+ InfrahubKind,
7
+ RepositoryInternalStatus,
8
+ RepositoryOperationalStatus,
9
+ RepositorySyncStatus,
10
+ )
11
+ from infrahub.core.schema.attribute_schema import AttributeSchema
12
+ from infrahub.core.schema.node_schema import NodeSchema
13
+
14
+ core_repository = NodeSchema(
15
+ name="Repository",
16
+ namespace="Core",
17
+ description="A Git Repository integrated with Infrahub",
18
+ include_in_menu=False,
19
+ icon="mdi:source-repository",
20
+ label="Repository",
21
+ default_filter="name__value",
22
+ order_by=["name__value"],
23
+ display_labels=["name__value"],
24
+ generate_profile=False,
25
+ branch=BranchSupportType.AGNOSTIC,
26
+ inherit_from=[
27
+ InfrahubKind.LINEAGEOWNER,
28
+ InfrahubKind.LINEAGESOURCE,
29
+ InfrahubKind.GENERICREPOSITORY,
30
+ InfrahubKind.TASKTARGET,
31
+ ],
32
+ documentation="/topics/repository",
33
+ attributes=[
34
+ AttributeSchema(
35
+ name="default_branch",
36
+ kind="Text",
37
+ default_value="main",
38
+ order_weight=6000,
39
+ ),
40
+ AttributeSchema(
41
+ name="commit",
42
+ kind="Text",
43
+ optional=True,
44
+ branch=BranchSupportType.LOCAL,
45
+ order_weight=7000,
46
+ ),
47
+ ],
48
+ )
49
+
50
+ core_read_only_repository: dict[str, Any] = {
51
+ "name": "ReadOnlyRepository",
52
+ "namespace": "Core",
53
+ "description": "A Git Repository integrated with Infrahub, Git-side will not be updated",
54
+ "include_in_menu": False,
55
+ "label": "Read-Only Repository",
56
+ "default_filter": "name__value",
57
+ "order_by": ["name__value"],
58
+ "display_labels": ["name__value"],
59
+ "generate_profile": False,
60
+ "branch": BranchSupportType.AGNOSTIC.value,
61
+ "inherit_from": [
62
+ InfrahubKind.LINEAGEOWNER,
63
+ InfrahubKind.LINEAGESOURCE,
64
+ InfrahubKind.GENERICREPOSITORY,
65
+ InfrahubKind.TASKTARGET,
66
+ ],
67
+ "documentation": "/topics/repository",
68
+ "attributes": [
69
+ {
70
+ "name": "ref",
71
+ "kind": "Text",
72
+ "default_value": "main",
73
+ "branch": BranchSupportType.AWARE.value,
74
+ "order_weight": 6000,
75
+ },
76
+ {
77
+ "name": "commit",
78
+ "kind": "Text",
79
+ "optional": True,
80
+ "branch": BranchSupportType.AWARE.value,
81
+ "order_weight": 7000,
82
+ },
83
+ ],
84
+ }
85
+
86
+ core_generic_repository: dict[str, Any] = {
87
+ "name": "GenericRepository",
88
+ "namespace": "Core",
89
+ "label": "Git Repository",
90
+ "description": "A Git Repository integrated with Infrahub",
91
+ "include_in_menu": False,
92
+ "default_filter": "name__value",
93
+ "order_by": ["name__value"],
94
+ "display_labels": ["name__value"],
95
+ "icon": "mdi:source-repository",
96
+ "branch": BranchSupportType.AGNOSTIC.value,
97
+ "uniqueness_constraints": [["name__value"], ["location__value"]],
98
+ "documentation": "/topics/repository",
99
+ "attributes": [
100
+ {
101
+ "name": "name",
102
+ "regex": "^[^/]*$",
103
+ "kind": "Text",
104
+ "unique": True,
105
+ "branch": BranchSupportType.AGNOSTIC.value,
106
+ "order_weight": 1000,
107
+ "allow_override": AllowOverrideType.NONE,
108
+ },
109
+ {
110
+ "name": "description",
111
+ "kind": "Text",
112
+ "optional": True,
113
+ "branch": BranchSupportType.AGNOSTIC.value,
114
+ "order_weight": 2000,
115
+ "allow_override": AllowOverrideType.NONE,
116
+ },
117
+ {
118
+ "name": "location",
119
+ "kind": "Text",
120
+ "unique": True,
121
+ "branch": BranchSupportType.AGNOSTIC.value,
122
+ "order_weight": 3000,
123
+ "allow_override": AllowOverrideType.NONE,
124
+ },
125
+ {
126
+ "name": "internal_status",
127
+ "kind": "Dropdown",
128
+ "choices": [
129
+ {
130
+ "name": RepositoryInternalStatus.STAGING.value,
131
+ "label": "Staging",
132
+ "description": "Repository was recently added to this branch.",
133
+ "color": "#fef08a",
134
+ },
135
+ {
136
+ "name": RepositoryInternalStatus.ACTIVE.value,
137
+ "label": "Active",
138
+ "description": "Repository is actively being synced for this branch",
139
+ "color": "#86efac",
140
+ },
141
+ {
142
+ "name": RepositoryInternalStatus.INACTIVE.value,
143
+ "label": "Inactive",
144
+ "description": "Repository is not active on this branch.",
145
+ "color": "#e5e7eb",
146
+ },
147
+ ],
148
+ "default_value": "inactive",
149
+ "optional": False,
150
+ "branch": BranchSupportType.LOCAL.value,
151
+ "order_weight": 7000,
152
+ "allow_override": AllowOverrideType.NONE,
153
+ },
154
+ {
155
+ "name": "operational_status",
156
+ "kind": "Dropdown",
157
+ "choices": [
158
+ {
159
+ "name": RepositoryOperationalStatus.UNKNOWN.value,
160
+ "label": "Unknown",
161
+ "description": "Status of the repository is unknown and mostlikely because it hasn't been synced yet",
162
+ "color": "#9ca3af",
163
+ },
164
+ {
165
+ "name": RepositoryOperationalStatus.ONLINE.value,
166
+ "label": "Online",
167
+ "description": "Repository connection is working",
168
+ "color": "#86efac",
169
+ },
170
+ {
171
+ "name": RepositoryOperationalStatus.ERROR_CRED.value,
172
+ "label": "Credential Error",
173
+ "description": "Repository can't be synced due to some credential error(s)",
174
+ "color": "#f87171",
175
+ },
176
+ {
177
+ "name": RepositoryOperationalStatus.ERROR_CONNECTION.value,
178
+ "label": "Connectivity Error",
179
+ "description": "Repository can't be synced due to some connectivity error(s)",
180
+ "color": "#f87171",
181
+ },
182
+ {
183
+ "name": RepositoryOperationalStatus.ERROR.value,
184
+ "label": "Error",
185
+ "description": "Repository can't be synced due to an unknown error",
186
+ "color": "#ef4444",
187
+ },
188
+ ],
189
+ "optional": False,
190
+ "branch": BranchSupportType.AGNOSTIC.value,
191
+ "default_value": RepositoryOperationalStatus.UNKNOWN.value,
192
+ "order_weight": 5000,
193
+ },
194
+ {
195
+ "name": "sync_status",
196
+ "kind": "Dropdown",
197
+ "choices": [
198
+ {
199
+ "name": RepositorySyncStatus.UNKNOWN.value,
200
+ "label": "Unknown",
201
+ "description": "Status of the repository is unknown and mostlikely because it hasn't been synced yet",
202
+ "color": "#9ca3af",
203
+ },
204
+ {
205
+ "name": RepositorySyncStatus.ERROR_IMPORT.value,
206
+ "label": "Import Error",
207
+ "description": "Repository import error observed",
208
+ "color": "#f87171",
209
+ },
210
+ {
211
+ "name": RepositorySyncStatus.IN_SYNC.value,
212
+ "label": "In Sync",
213
+ "description": "The repository is syncing correctly",
214
+ "color": "#60a5fa",
215
+ },
216
+ {
217
+ "name": RepositorySyncStatus.SYNCING.value,
218
+ "label": "Syncing",
219
+ "description": "A sync job is currently running against the repository.",
220
+ "color": "#a855f7",
221
+ },
222
+ ],
223
+ "optional": False,
224
+ "branch": BranchSupportType.LOCAL.value,
225
+ "default_value": RepositorySyncStatus.UNKNOWN.value,
226
+ "order_weight": 6000,
227
+ },
228
+ ],
229
+ "relationships": [
230
+ {
231
+ "name": "credential",
232
+ "peer": InfrahubKind.CREDENTIAL,
233
+ "identifier": "gitrepository__credential",
234
+ "kind": "Attribute",
235
+ "optional": True,
236
+ "cardinality": "one",
237
+ "order_weight": 4000,
238
+ },
239
+ {
240
+ "name": "tags",
241
+ "peer": InfrahubKind.TAG,
242
+ "kind": "Attribute",
243
+ "optional": True,
244
+ "cardinality": "many",
245
+ "order_weight": 8000,
246
+ },
247
+ {
248
+ "name": "transformations",
249
+ "peer": InfrahubKind.TRANSFORM,
250
+ "identifier": "repository__transformation",
251
+ "optional": True,
252
+ "cardinality": "many",
253
+ "order_weight": 10000,
254
+ },
255
+ {
256
+ "name": "queries",
257
+ "peer": InfrahubKind.GRAPHQLQUERY,
258
+ "identifier": "graphql_query__repository",
259
+ "optional": True,
260
+ "cardinality": "many",
261
+ "order_weight": 9000,
262
+ },
263
+ {
264
+ "name": "checks",
265
+ "peer": InfrahubKind.CHECKDEFINITION,
266
+ "identifier": "check_definition__repository",
267
+ "optional": True,
268
+ "cardinality": "many",
269
+ "order_weight": 11000,
270
+ },
271
+ {
272
+ "name": "generators",
273
+ "peer": InfrahubKind.GENERATORDEFINITION,
274
+ "identifier": "generator_definition__repository",
275
+ "optional": True,
276
+ "cardinality": "many",
277
+ "order_weight": 12000,
278
+ },
279
+ ],
280
+ }
@@ -0,0 +1,180 @@
1
+ from infrahub.core.constants import (
2
+ BranchSupportType,
3
+ InfrahubKind,
4
+ )
5
+
6
+ core_resource_pool = {
7
+ "name": "ResourcePool",
8
+ "namespace": "Core",
9
+ "label": "Resource Pool",
10
+ "description": "The resource manager contains pools of resources to allow for automatic assignments.",
11
+ "include_in_menu": False,
12
+ "default_filter": "name__value",
13
+ "order_by": ["name__value"],
14
+ "display_labels": ["name__value"],
15
+ "human_friendly_id": ["name__value"],
16
+ "icon": "mdi:view-grid-outline",
17
+ "branch": BranchSupportType.AGNOSTIC.value,
18
+ "uniqueness_constraints": [["name__value"]],
19
+ "generate_profile": False,
20
+ "attributes": [
21
+ {
22
+ "name": "name",
23
+ "kind": "Text",
24
+ "order_weight": 1000,
25
+ "unique": True,
26
+ },
27
+ {
28
+ "name": "description",
29
+ "kind": "Text",
30
+ "optional": True,
31
+ "order_weight": 2000,
32
+ },
33
+ ],
34
+ }
35
+
36
+ core_ip_prefix_pool = {
37
+ "name": "IPPrefixPool",
38
+ "namespace": "Core",
39
+ "description": "A pool of IP prefix resources",
40
+ "label": "IP Prefix Pool",
41
+ "include_in_menu": False,
42
+ "branch": BranchSupportType.AGNOSTIC.value,
43
+ "generate_profile": False,
44
+ "inherit_from": [InfrahubKind.RESOURCEPOOL, InfrahubKind.LINEAGESOURCE],
45
+ "attributes": [
46
+ {
47
+ "name": "default_prefix_length",
48
+ "kind": "Number",
49
+ "description": "The default prefix length as an integer for prefixes allocated from this pool.",
50
+ "optional": True,
51
+ "order_weight": 5000,
52
+ },
53
+ {
54
+ "name": "default_member_type",
55
+ "kind": "Text",
56
+ "enum": ["prefix", "address"],
57
+ "default_value": "prefix",
58
+ "optional": True,
59
+ "order_weight": 3000,
60
+ },
61
+ {
62
+ "name": "default_prefix_type",
63
+ "kind": "Text",
64
+ "optional": True,
65
+ "order_weight": 4000,
66
+ },
67
+ ],
68
+ "relationships": [
69
+ {
70
+ "name": "resources",
71
+ "peer": "BuiltinIPPrefix",
72
+ "kind": "Attribute",
73
+ "identifier": "prefixpool__resource",
74
+ "cardinality": "many",
75
+ "branch": BranchSupportType.AGNOSTIC.value,
76
+ "optional": False,
77
+ "order_weight": 6000,
78
+ },
79
+ {
80
+ "name": "ip_namespace",
81
+ "peer": "BuiltinIPNamespace",
82
+ "kind": "Attribute",
83
+ "identifier": "prefixpool__ipnamespace",
84
+ "cardinality": "one",
85
+ "branch": BranchSupportType.AGNOSTIC.value,
86
+ "optional": False,
87
+ "order_weight": 7000,
88
+ },
89
+ ],
90
+ }
91
+
92
+ core_ip_address_pool = {
93
+ "name": "IPAddressPool",
94
+ "namespace": "Core",
95
+ "description": "A pool of IP address resources",
96
+ "label": "IP Address Pool",
97
+ "include_in_menu": False,
98
+ "branch": BranchSupportType.AGNOSTIC.value,
99
+ "generate_profile": False,
100
+ "inherit_from": [InfrahubKind.RESOURCEPOOL, InfrahubKind.LINEAGESOURCE],
101
+ "attributes": [
102
+ {
103
+ "name": "default_address_type",
104
+ "kind": "Text",
105
+ "optional": False,
106
+ "description": "The object type to create when reserving a resource in the pool",
107
+ "order_weight": 3000,
108
+ },
109
+ {
110
+ "name": "default_prefix_length",
111
+ "kind": "Number",
112
+ "description": "The default prefix length as an integer for addresses allocated from this pool.",
113
+ "optional": True,
114
+ "order_weight": 4000,
115
+ },
116
+ ],
117
+ "relationships": [
118
+ {
119
+ "name": "resources",
120
+ "peer": "BuiltinIPPrefix",
121
+ "kind": "Attribute",
122
+ "identifier": "ipaddresspool__resource",
123
+ "cardinality": "many",
124
+ "branch": BranchSupportType.AGNOSTIC.value,
125
+ "optional": False,
126
+ "order_weight": 5000,
127
+ },
128
+ {
129
+ "name": "ip_namespace",
130
+ "peer": "BuiltinIPNamespace",
131
+ "kind": "Attribute",
132
+ "identifier": "ipaddresspool__ipnamespace",
133
+ "cardinality": "one",
134
+ "branch": BranchSupportType.AGNOSTIC.value,
135
+ "optional": False,
136
+ "order_weight": 6000,
137
+ },
138
+ ],
139
+ }
140
+
141
+ core_number_pool = {
142
+ "name": "NumberPool",
143
+ "namespace": "Core",
144
+ "description": "A pool of number resources",
145
+ "label": "Number Pool",
146
+ "include_in_menu": False,
147
+ "branch": BranchSupportType.AGNOSTIC.value,
148
+ "generate_profile": False,
149
+ "inherit_from": [InfrahubKind.RESOURCEPOOL, InfrahubKind.LINEAGESOURCE],
150
+ "attributes": [
151
+ {
152
+ "name": "node",
153
+ "kind": "Text",
154
+ "optional": False,
155
+ "description": "The model of the object that requires integers to be allocated",
156
+ "order_weight": 3000,
157
+ },
158
+ {
159
+ "name": "node_attribute",
160
+ "kind": "Text",
161
+ "description": "The attribute of the selected model",
162
+ "optional": False,
163
+ "order_weight": 4000,
164
+ },
165
+ {
166
+ "name": "start_range",
167
+ "kind": "Number",
168
+ "optional": False,
169
+ "description": "The start range for the pool",
170
+ "order_weight": 5000,
171
+ },
172
+ {
173
+ "name": "end_range",
174
+ "kind": "Number",
175
+ "optional": False,
176
+ "description": "The end range for the pool",
177
+ "order_weight": 6000,
178
+ },
179
+ ],
180
+ }
@@ -0,0 +1,12 @@
1
+ core_object_template = {
2
+ "name": "ObjectTemplate",
3
+ "namespace": "Core",
4
+ "include_in_menu": False,
5
+ "icon": "mdi:pencil-ruler",
6
+ "description": "Template to create pre-shaped objects.",
7
+ "label": "Object Templates",
8
+ "display_labels": ["template_name__value"],
9
+ "default_filter": "template_name__value",
10
+ "uniqueness_constraints": [["template_name__value"]],
11
+ "attributes": [{"name": "template_name", "kind": "Text", "optional": False, "unique": True, "order_weight": 1000}],
12
+ }
@@ -0,0 +1,87 @@
1
+ from infrahub.core.constants import (
2
+ BranchSupportType,
3
+ InfrahubKind,
4
+ )
5
+
6
+ core_transform = {
7
+ "name": "Transformation",
8
+ "namespace": "Core",
9
+ "description": "Generic Transformation Object.",
10
+ "include_in_menu": False,
11
+ "icon": "mdi:cog-transfer",
12
+ "label": "Transformation",
13
+ "default_filter": "name__value",
14
+ "order_by": ["name__value"],
15
+ "display_labels": ["label__value"],
16
+ "branch": BranchSupportType.AWARE.value,
17
+ "documentation": "/topics/proposed-change",
18
+ "uniqueness_constraints": [["name__value"]],
19
+ "attributes": [
20
+ {"name": "name", "kind": "Text", "unique": True},
21
+ {"name": "label", "kind": "Text", "optional": True},
22
+ {"name": "description", "kind": "Text", "optional": True},
23
+ {"name": "timeout", "kind": "Number", "default_value": 10},
24
+ ],
25
+ "relationships": [
26
+ {
27
+ "name": "query",
28
+ "peer": InfrahubKind.GRAPHQLQUERY,
29
+ "identifier": "graphql_query__transformation",
30
+ "kind": "Attribute",
31
+ "cardinality": "one",
32
+ "optional": False,
33
+ },
34
+ {
35
+ "name": "repository",
36
+ "peer": InfrahubKind.GENERICREPOSITORY,
37
+ "kind": "Attribute",
38
+ "cardinality": "one",
39
+ "identifier": "repository__transformation",
40
+ "optional": False,
41
+ },
42
+ {
43
+ "name": "tags",
44
+ "peer": InfrahubKind.TAG,
45
+ "kind": "Attribute",
46
+ "optional": True,
47
+ "cardinality": "many",
48
+ },
49
+ ],
50
+ }
51
+
52
+ core_transform_jinja2 = {
53
+ "name": "TransformJinja2",
54
+ "namespace": "Core",
55
+ "description": "A file rendered from a Jinja2 template",
56
+ "include_in_menu": False,
57
+ "label": "Transform Jinja2",
58
+ "default_filter": "name__value",
59
+ "order_by": ["name__value"],
60
+ "display_labels": ["name__value"],
61
+ "inherit_from": [InfrahubKind.TRANSFORM],
62
+ "generate_profile": False,
63
+ "branch": BranchSupportType.AWARE.value,
64
+ "documentation": "/topics/transformation",
65
+ "attributes": [
66
+ {"name": "template_path", "kind": "Text"},
67
+ ],
68
+ }
69
+
70
+ core_transform_python = {
71
+ "name": "TransformPython",
72
+ "namespace": "Core",
73
+ "description": "A transform function written in Python",
74
+ "include_in_menu": False,
75
+ "label": "Transform Python",
76
+ "default_filter": "name__value",
77
+ "order_by": ["name__value"],
78
+ "display_labels": ["name__value"],
79
+ "inherit_from": [InfrahubKind.TRANSFORM],
80
+ "generate_profile": False,
81
+ "branch": BranchSupportType.AWARE.value,
82
+ "documentation": "/topics/transformation",
83
+ "attributes": [
84
+ {"name": "file_path", "kind": "Text"},
85
+ {"name": "class_name", "kind": "Text"},
86
+ ],
87
+ }
@@ -0,0 +1,108 @@
1
+ from infrahub.core.constants import AllowOverrideType, BranchSupportType, EventType, InfrahubKind
2
+
3
+ core_webhook = {
4
+ "name": "Webhook",
5
+ "namespace": "Core",
6
+ "description": "A webhook that connects to an external integration",
7
+ "label": "Webhook",
8
+ "default_filter": "name__value",
9
+ "order_by": ["name__value"],
10
+ "display_labels": ["name__value"],
11
+ "include_in_menu": False,
12
+ "icon": "mdi:webhook",
13
+ "branch": BranchSupportType.AGNOSTIC.value,
14
+ "uniqueness_constraints": [["name__value"]],
15
+ "attributes": [
16
+ {"name": "name", "kind": "Text", "unique": True, "order_weight": 1000},
17
+ {
18
+ "name": "event_type",
19
+ "kind": "Text",
20
+ "enum": ["all"] + EventType.available_types(),
21
+ "default_value": "all",
22
+ "order_weight": 1500,
23
+ "description": "The event type that triggers the webhook",
24
+ },
25
+ {
26
+ "name": "branch_scope",
27
+ "kind": "Dropdown",
28
+ "choices": [
29
+ {
30
+ "name": "all_branches",
31
+ "label": "All Branches",
32
+ "description": "All branches",
33
+ "color": "#fef08a",
34
+ },
35
+ {
36
+ "name": "default_branch",
37
+ "label": "Default Branch",
38
+ "description": "Only the default branch",
39
+ "color": "#86efac",
40
+ },
41
+ {
42
+ "name": "other_branches",
43
+ "label": "Other Branches",
44
+ "description": "All branches except the default branch",
45
+ "color": "#e5e7eb",
46
+ },
47
+ ],
48
+ "default_value": "default_branch",
49
+ "optional": False,
50
+ "order_weight": 2000,
51
+ "allow_override": AllowOverrideType.NONE,
52
+ },
53
+ {"name": "description", "kind": "Text", "optional": True, "order_weight": 2500},
54
+ {"name": "url", "kind": "URL", "order_weight": 3000},
55
+ {
56
+ "name": "validate_certificates",
57
+ "kind": "Boolean",
58
+ "default_value": True,
59
+ "optional": True,
60
+ "order_weight": 5000,
61
+ },
62
+ ],
63
+ }
64
+
65
+ core_standard_webhook = {
66
+ "name": "StandardWebhook",
67
+ "namespace": "Core",
68
+ "description": "A webhook that connects to an external integration",
69
+ "label": "Standard Webhook",
70
+ "default_filter": "name__value",
71
+ "order_by": ["name__value"],
72
+ "display_labels": ["name__value"],
73
+ "include_in_menu": False,
74
+ "icon": "mdi:webhook",
75
+ "branch": BranchSupportType.AGNOSTIC.value,
76
+ "generate_profile": False,
77
+ "inherit_from": [InfrahubKind.WEBHOOK, InfrahubKind.TASKTARGET],
78
+ "attributes": [
79
+ {"name": "shared_key", "kind": "Password", "unique": False, "order_weight": 4000},
80
+ ],
81
+ }
82
+
83
+ core_custom_webhook = {
84
+ "name": "CustomWebhook",
85
+ "namespace": "Core",
86
+ "description": "A webhook that connects to an external integration",
87
+ "label": "Custom Webhook",
88
+ "default_filter": "name__value",
89
+ "order_by": ["name__value"],
90
+ "display_labels": ["name__value"],
91
+ "include_in_menu": False,
92
+ "icon": "mdi:cog-outline",
93
+ "branch": BranchSupportType.AGNOSTIC.value,
94
+ "generate_profile": False,
95
+ "inherit_from": [InfrahubKind.WEBHOOK, InfrahubKind.TASKTARGET],
96
+ "attributes": [],
97
+ "relationships": [
98
+ {
99
+ "name": "transformation",
100
+ "peer": InfrahubKind.TRANSFORMPYTHON,
101
+ "kind": "Attribute",
102
+ "identifier": "webhook___transformation",
103
+ "cardinality": "one",
104
+ "optional": True,
105
+ "order_weight": 7000,
106
+ },
107
+ ],
108
+ }