infrahub-server 1.2.0b1__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 (297) 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 +1 -3
  5. infrahub/artifacts/tasks.py +1 -3
  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 +239 -11
  12. infrahub/computed_attribute/tasks.py +77 -442
  13. infrahub/computed_attribute/triggers.py +11 -45
  14. infrahub/config.py +43 -32
  15. infrahub/context.py +14 -0
  16. infrahub/core/account.py +4 -4
  17. infrahub/core/attribute.py +57 -57
  18. infrahub/core/branch/tasks.py +12 -9
  19. infrahub/core/changelog/diff.py +16 -8
  20. infrahub/core/changelog/models.py +189 -26
  21. infrahub/core/constants/__init__.py +5 -1
  22. infrahub/core/constants/infrahubkind.py +2 -0
  23. infrahub/core/constraint/node/runner.py +9 -8
  24. infrahub/core/diff/branch_differ.py +10 -10
  25. infrahub/core/diff/ipam_diff_parser.py +4 -5
  26. infrahub/core/diff/model/diff.py +27 -27
  27. infrahub/core/diff/model/path.py +3 -3
  28. infrahub/core/diff/query/merge.py +20 -17
  29. infrahub/core/diff/query_parser.py +4 -4
  30. infrahub/core/graph/__init__.py +1 -1
  31. infrahub/core/initialization.py +1 -10
  32. infrahub/core/ipam/constants.py +3 -4
  33. infrahub/core/ipam/reconciler.py +12 -12
  34. infrahub/core/ipam/utilization.py +10 -13
  35. infrahub/core/manager.py +34 -34
  36. infrahub/core/merge.py +7 -7
  37. infrahub/core/migrations/__init__.py +2 -3
  38. infrahub/core/migrations/graph/__init__.py +9 -4
  39. infrahub/core/migrations/graph/m017_add_core_profile.py +1 -5
  40. infrahub/core/migrations/graph/m018_uniqueness_nulls.py +4 -4
  41. infrahub/core/migrations/graph/m020_duplicate_edges.py +160 -0
  42. infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py +51 -0
  43. infrahub/core/migrations/graph/{m020_add_generate_template_attr.py → m022_add_generate_template_attr.py} +3 -3
  44. infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py +96 -0
  45. infrahub/core/migrations/query/attribute_add.py +2 -2
  46. infrahub/core/migrations/query/node_duplicate.py +18 -21
  47. infrahub/core/migrations/query/schema_attribute_update.py +2 -2
  48. infrahub/core/migrations/schema/models.py +19 -4
  49. infrahub/core/migrations/schema/tasks.py +2 -2
  50. infrahub/core/migrations/shared.py +16 -16
  51. infrahub/core/models.py +15 -6
  52. infrahub/core/node/__init__.py +29 -28
  53. infrahub/core/node/base.py +2 -4
  54. infrahub/core/node/constraints/attribute_uniqueness.py +2 -2
  55. infrahub/core/node/constraints/grouped_uniqueness.py +99 -47
  56. infrahub/core/node/constraints/interface.py +1 -2
  57. infrahub/core/node/delete_validator.py +3 -5
  58. infrahub/core/node/ipam.py +4 -4
  59. infrahub/core/node/permissions.py +7 -7
  60. infrahub/core/node/resource_manager/ip_address_pool.py +6 -6
  61. infrahub/core/node/resource_manager/ip_prefix_pool.py +6 -6
  62. infrahub/core/node/resource_manager/number_pool.py +3 -3
  63. infrahub/core/path.py +12 -12
  64. infrahub/core/property.py +11 -11
  65. infrahub/core/protocols.py +5 -0
  66. infrahub/core/protocols_base.py +21 -21
  67. infrahub/core/query/__init__.py +33 -33
  68. infrahub/core/query/attribute.py +6 -4
  69. infrahub/core/query/diff.py +3 -3
  70. infrahub/core/query/node.py +82 -32
  71. infrahub/core/query/relationship.py +24 -24
  72. infrahub/core/query/resource_manager.py +2 -0
  73. infrahub/core/query/standard_node.py +3 -3
  74. infrahub/core/query/subquery.py +9 -9
  75. infrahub/core/registry.py +13 -15
  76. infrahub/core/relationship/constraints/count.py +3 -4
  77. infrahub/core/relationship/constraints/peer_kind.py +3 -4
  78. infrahub/core/relationship/constraints/profiles_kind.py +2 -2
  79. infrahub/core/relationship/model.py +40 -46
  80. infrahub/core/schema/attribute_schema.py +9 -9
  81. infrahub/core/schema/basenode_schema.py +93 -44
  82. infrahub/core/schema/computed_attribute.py +3 -3
  83. infrahub/core/schema/definitions/core/__init__.py +13 -19
  84. infrahub/core/schema/definitions/core/account.py +151 -148
  85. infrahub/core/schema/definitions/core/artifact.py +122 -113
  86. infrahub/core/schema/definitions/core/builtin.py +19 -16
  87. infrahub/core/schema/definitions/core/check.py +61 -53
  88. infrahub/core/schema/definitions/core/core.py +17 -0
  89. infrahub/core/schema/definitions/core/generator.py +89 -85
  90. infrahub/core/schema/definitions/core/graphql_query.py +72 -70
  91. infrahub/core/schema/definitions/core/group.py +96 -93
  92. infrahub/core/schema/definitions/core/ipam.py +176 -235
  93. infrahub/core/schema/definitions/core/lineage.py +18 -16
  94. infrahub/core/schema/definitions/core/menu.py +42 -40
  95. infrahub/core/schema/definitions/core/permission.py +144 -142
  96. infrahub/core/schema/definitions/core/profile.py +16 -27
  97. infrahub/core/schema/definitions/core/propose_change.py +88 -79
  98. infrahub/core/schema/definitions/core/propose_change_comment.py +170 -165
  99. infrahub/core/schema/definitions/core/propose_change_validator.py +290 -288
  100. infrahub/core/schema/definitions/core/repository.py +231 -225
  101. infrahub/core/schema/definitions/core/resource_pool.py +156 -166
  102. infrahub/core/schema/definitions/core/template.py +27 -12
  103. infrahub/core/schema/definitions/core/transform.py +85 -76
  104. infrahub/core/schema/definitions/core/webhook.py +127 -101
  105. infrahub/core/schema/definitions/internal.py +16 -16
  106. infrahub/core/schema/dropdown.py +3 -4
  107. infrahub/core/schema/generated/attribute_schema.py +15 -18
  108. infrahub/core/schema/generated/base_node_schema.py +12 -14
  109. infrahub/core/schema/generated/node_schema.py +3 -5
  110. infrahub/core/schema/generated/relationship_schema.py +9 -11
  111. infrahub/core/schema/generic_schema.py +2 -2
  112. infrahub/core/schema/manager.py +20 -9
  113. infrahub/core/schema/node_schema.py +4 -2
  114. infrahub/core/schema/relationship_schema.py +7 -7
  115. infrahub/core/schema/schema_branch.py +276 -138
  116. infrahub/core/schema/schema_branch_computed.py +41 -4
  117. infrahub/core/task/task.py +3 -3
  118. infrahub/core/task/user_task.py +15 -15
  119. infrahub/core/utils.py +20 -18
  120. infrahub/core/validators/__init__.py +1 -3
  121. infrahub/core/validators/aggregated_checker.py +2 -2
  122. infrahub/core/validators/attribute/choices.py +2 -2
  123. infrahub/core/validators/attribute/enum.py +2 -2
  124. infrahub/core/validators/attribute/kind.py +2 -2
  125. infrahub/core/validators/attribute/length.py +2 -2
  126. infrahub/core/validators/attribute/optional.py +2 -2
  127. infrahub/core/validators/attribute/regex.py +2 -2
  128. infrahub/core/validators/attribute/unique.py +2 -2
  129. infrahub/core/validators/checks_runner.py +25 -2
  130. infrahub/core/validators/determiner.py +1 -3
  131. infrahub/core/validators/interface.py +6 -2
  132. infrahub/core/validators/model.py +22 -3
  133. infrahub/core/validators/models/validate_migration.py +17 -4
  134. infrahub/core/validators/node/attribute.py +2 -2
  135. infrahub/core/validators/node/generate_profile.py +2 -2
  136. infrahub/core/validators/node/hierarchy.py +3 -5
  137. infrahub/core/validators/node/inherit_from.py +27 -5
  138. infrahub/core/validators/node/relationship.py +2 -2
  139. infrahub/core/validators/relationship/count.py +4 -4
  140. infrahub/core/validators/relationship/optional.py +2 -2
  141. infrahub/core/validators/relationship/peer.py +2 -2
  142. infrahub/core/validators/shared.py +2 -2
  143. infrahub/core/validators/tasks.py +8 -0
  144. infrahub/core/validators/uniqueness/checker.py +22 -21
  145. infrahub/core/validators/uniqueness/index.py +2 -2
  146. infrahub/core/validators/uniqueness/model.py +11 -11
  147. infrahub/database/__init__.py +26 -22
  148. infrahub/database/metrics.py +7 -1
  149. infrahub/dependencies/builder/constraint/grouped/node_runner.py +1 -3
  150. infrahub/dependencies/component/registry.py +2 -2
  151. infrahub/events/__init__.py +25 -2
  152. infrahub/events/artifact_action.py +13 -25
  153. infrahub/events/branch_action.py +26 -18
  154. infrahub/events/generator.py +71 -0
  155. infrahub/events/group_action.py +10 -24
  156. infrahub/events/models.py +10 -16
  157. infrahub/events/node_action.py +87 -32
  158. infrahub/events/repository_action.py +5 -18
  159. infrahub/events/schema_action.py +4 -9
  160. infrahub/events/utils.py +16 -0
  161. infrahub/events/validator_action.py +55 -0
  162. infrahub/exceptions.py +23 -24
  163. infrahub/generators/models.py +1 -3
  164. infrahub/git/base.py +7 -7
  165. infrahub/git/integrator.py +26 -25
  166. infrahub/git/models.py +22 -9
  167. infrahub/git/repository.py +3 -3
  168. infrahub/git/tasks.py +67 -49
  169. infrahub/git/utils.py +48 -0
  170. infrahub/git/worktree.py +1 -2
  171. infrahub/git_credential/askpass.py +1 -2
  172. infrahub/graphql/analyzer.py +12 -0
  173. infrahub/graphql/app.py +13 -15
  174. infrahub/graphql/context.py +6 -0
  175. infrahub/graphql/initialization.py +3 -0
  176. infrahub/graphql/loaders/node.py +2 -12
  177. infrahub/graphql/loaders/peers.py +77 -0
  178. infrahub/graphql/loaders/shared.py +13 -0
  179. infrahub/graphql/manager.py +13 -10
  180. infrahub/graphql/mutations/artifact_definition.py +5 -5
  181. infrahub/graphql/mutations/computed_attribute.py +4 -5
  182. infrahub/graphql/mutations/graphql_query.py +5 -5
  183. infrahub/graphql/mutations/ipam.py +50 -70
  184. infrahub/graphql/mutations/main.py +164 -141
  185. infrahub/graphql/mutations/menu.py +5 -5
  186. infrahub/graphql/mutations/models.py +2 -4
  187. infrahub/graphql/mutations/node_getter/by_default_filter.py +10 -10
  188. infrahub/graphql/mutations/node_getter/by_hfid.py +1 -3
  189. infrahub/graphql/mutations/node_getter/by_id.py +1 -3
  190. infrahub/graphql/mutations/node_getter/interface.py +1 -2
  191. infrahub/graphql/mutations/proposed_change.py +7 -7
  192. infrahub/graphql/mutations/relationship.py +67 -35
  193. infrahub/graphql/mutations/repository.py +8 -8
  194. infrahub/graphql/mutations/resource_manager.py +3 -3
  195. infrahub/graphql/mutations/schema.py +4 -4
  196. infrahub/graphql/mutations/webhook.py +137 -0
  197. infrahub/graphql/parser.py +4 -4
  198. infrahub/graphql/queries/diff/tree.py +4 -4
  199. infrahub/graphql/queries/ipam.py +2 -2
  200. infrahub/graphql/queries/relationship.py +2 -2
  201. infrahub/graphql/queries/search.py +2 -2
  202. infrahub/graphql/resolvers/many_relationship.py +264 -0
  203. infrahub/graphql/resolvers/resolver.py +13 -110
  204. infrahub/graphql/subscription/graphql_query.py +2 -0
  205. infrahub/graphql/types/event.py +20 -11
  206. infrahub/graphql/types/node.py +2 -2
  207. infrahub/graphql/utils.py +2 -2
  208. infrahub/groups/ancestors.py +29 -0
  209. infrahub/groups/parsers.py +107 -0
  210. infrahub/menu/generator.py +7 -7
  211. infrahub/menu/menu.py +0 -10
  212. infrahub/menu/models.py +117 -16
  213. infrahub/menu/repository.py +111 -0
  214. infrahub/menu/utils.py +5 -8
  215. infrahub/message_bus/messages/__init__.py +1 -11
  216. infrahub/message_bus/messages/check_generator_run.py +2 -0
  217. infrahub/message_bus/messages/finalize_validator_execution.py +3 -0
  218. infrahub/message_bus/messages/request_generatordefinition_check.py +2 -0
  219. infrahub/message_bus/operations/__init__.py +0 -2
  220. infrahub/message_bus/operations/check/generator.py +1 -0
  221. infrahub/message_bus/operations/event/__init__.py +2 -2
  222. infrahub/message_bus/operations/finalize/validator.py +51 -1
  223. infrahub/message_bus/operations/requests/generator_definition.py +19 -19
  224. infrahub/message_bus/operations/requests/proposed_change.py +3 -1
  225. infrahub/pools/number.py +2 -4
  226. infrahub/proposed_change/tasks.py +37 -28
  227. infrahub/pytest_plugin.py +13 -10
  228. infrahub/server.py +1 -2
  229. infrahub/services/adapters/event/__init__.py +1 -1
  230. infrahub/task_manager/event.py +23 -9
  231. infrahub/tasks/artifact.py +2 -4
  232. infrahub/telemetry/__init__.py +0 -0
  233. infrahub/telemetry/constants.py +9 -0
  234. infrahub/telemetry/database.py +86 -0
  235. infrahub/telemetry/models.py +65 -0
  236. infrahub/telemetry/task_manager.py +77 -0
  237. infrahub/{tasks/telemetry.py → telemetry/tasks.py} +49 -56
  238. infrahub/telemetry/utils.py +11 -0
  239. infrahub/trace.py +4 -4
  240. infrahub/transformations/tasks.py +2 -2
  241. infrahub/trigger/catalogue.py +2 -5
  242. infrahub/trigger/constants.py +0 -8
  243. infrahub/trigger/models.py +14 -1
  244. infrahub/trigger/setup.py +90 -0
  245. infrahub/trigger/tasks.py +35 -90
  246. infrahub/utils.py +11 -1
  247. infrahub/validators/__init__.py +0 -0
  248. infrahub/validators/events.py +42 -0
  249. infrahub/validators/tasks.py +41 -0
  250. infrahub/webhook/gather.py +17 -0
  251. infrahub/webhook/models.py +22 -5
  252. infrahub/webhook/tasks.py +44 -19
  253. infrahub/webhook/triggers.py +22 -5
  254. infrahub/workers/infrahub_async.py +2 -2
  255. infrahub/workers/utils.py +2 -2
  256. infrahub/workflows/catalogue.py +28 -20
  257. infrahub/workflows/initialization.py +1 -3
  258. infrahub/workflows/models.py +1 -1
  259. infrahub/workflows/utils.py +10 -1
  260. infrahub_sdk/client.py +27 -8
  261. infrahub_sdk/config.py +3 -0
  262. infrahub_sdk/context.py +13 -0
  263. infrahub_sdk/exceptions.py +6 -0
  264. infrahub_sdk/generator.py +4 -1
  265. infrahub_sdk/graphql.py +45 -13
  266. infrahub_sdk/node.py +69 -20
  267. infrahub_sdk/protocols_base.py +32 -11
  268. infrahub_sdk/query_groups.py +6 -35
  269. infrahub_sdk/schema/__init__.py +55 -26
  270. infrahub_sdk/schema/main.py +8 -0
  271. infrahub_sdk/task/__init__.py +10 -0
  272. infrahub_sdk/task/manager.py +12 -6
  273. infrahub_sdk/testing/schemas/animal.py +9 -0
  274. infrahub_sdk/timestamp.py +12 -4
  275. {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/METADATA +3 -2
  276. {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/RECORD +289 -260
  277. {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/entry_points.txt +1 -0
  278. infrahub_testcontainers/constants.py +2 -0
  279. infrahub_testcontainers/container.py +157 -12
  280. infrahub_testcontainers/docker-compose.test.yml +31 -6
  281. infrahub_testcontainers/helpers.py +18 -73
  282. infrahub_testcontainers/host.py +41 -0
  283. infrahub_testcontainers/measurements.py +93 -0
  284. infrahub_testcontainers/models.py +38 -0
  285. infrahub_testcontainers/performance_test.py +166 -0
  286. infrahub_testcontainers/plugin.py +136 -0
  287. infrahub_testcontainers/prometheus.yml +30 -0
  288. infrahub/message_bus/messages/event_branch_create.py +0 -11
  289. infrahub/message_bus/messages/event_branch_delete.py +0 -11
  290. infrahub/message_bus/messages/event_branch_rebased.py +0 -9
  291. infrahub/message_bus/messages/event_node_mutated.py +0 -15
  292. infrahub/message_bus/messages/event_schema_update.py +0 -9
  293. infrahub/message_bus/operations/event/node.py +0 -20
  294. infrahub/message_bus/operations/event/schema.py +0 -17
  295. infrahub/webhook/constants.py +0 -1
  296. {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/LICENSE.txt +0 -0
  297. {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/WHEEL +0 -0
@@ -1,5 +1,3 @@
1
- from typing import Any
2
-
3
1
  from infrahub.core.constants import (
4
2
  AllowOverrideType,
5
3
  BranchSupportType,
@@ -8,8 +6,16 @@ from infrahub.core.constants import (
8
6
  RepositoryOperationalStatus,
9
7
  RepositorySyncStatus,
10
8
  )
11
- from infrahub.core.schema.attribute_schema import AttributeSchema
12
- from infrahub.core.schema.node_schema import NodeSchema
9
+ from infrahub.core.constants import RelationshipCardinality as Cardinality
10
+ from infrahub.core.constants import RelationshipKind as RelKind
11
+
12
+ from ...attribute_schema import AttributeSchema as Attr
13
+ from ...dropdown import DropdownChoice
14
+ from ...generic_schema import GenericSchema
15
+ from ...node_schema import NodeSchema
16
+ from ...relationship_schema import (
17
+ RelationshipSchema as Rel,
18
+ )
13
19
 
14
20
  core_repository = NodeSchema(
15
21
  name="Repository",
@@ -31,13 +37,13 @@ core_repository = NodeSchema(
31
37
  ],
32
38
  documentation="/topics/repository",
33
39
  attributes=[
34
- AttributeSchema(
40
+ Attr(
35
41
  name="default_branch",
36
42
  kind="Text",
37
43
  default_value="main",
38
44
  order_weight=6000,
39
45
  ),
40
- AttributeSchema(
46
+ Attr(
41
47
  name="commit",
42
48
  kind="Text",
43
49
  optional=True,
@@ -47,234 +53,234 @@ core_repository = NodeSchema(
47
53
  ],
48
54
  )
49
55
 
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": [
56
+ core_read_only_repository = NodeSchema(
57
+ name="ReadOnlyRepository",
58
+ namespace="Core",
59
+ description="A Git Repository integrated with Infrahub, Git-side will not be updated",
60
+ include_in_menu=False,
61
+ label="Read-Only Repository",
62
+ default_filter="name__value",
63
+ order_by=["name__value"],
64
+ display_labels=["name__value"],
65
+ generate_profile=False,
66
+ branch=BranchSupportType.AGNOSTIC,
67
+ inherit_from=[
62
68
  InfrahubKind.LINEAGEOWNER,
63
69
  InfrahubKind.LINEAGESOURCE,
64
70
  InfrahubKind.GENERICREPOSITORY,
65
71
  InfrahubKind.TASKTARGET,
66
72
  ],
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
- },
73
+ documentation="/topics/repository",
74
+ attributes=[
75
+ Attr(
76
+ name="ref",
77
+ kind="Text",
78
+ default_value="main",
79
+ branch=BranchSupportType.AWARE,
80
+ order_weight=6000,
81
+ ),
82
+ Attr(
83
+ name="commit",
84
+ kind="Text",
85
+ optional=True,
86
+ branch=BranchSupportType.AWARE,
87
+ order_weight=7000,
88
+ ),
83
89
  ],
84
- }
90
+ )
85
91
 
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
- },
92
+ core_generic_repository = GenericSchema(
93
+ name="GenericRepository",
94
+ namespace="Core",
95
+ label="Git Repository",
96
+ description="A Git Repository integrated with Infrahub",
97
+ include_in_menu=False,
98
+ default_filter="name__value",
99
+ order_by=["name__value"],
100
+ display_labels=["name__value"],
101
+ icon="mdi:source-repository",
102
+ branch=BranchSupportType.AGNOSTIC,
103
+ uniqueness_constraints=[["name__value"], ["location__value"]],
104
+ documentation="/topics/repository",
105
+ attributes=[
106
+ Attr(
107
+ name="name",
108
+ regex=r"^[^/]*$",
109
+ kind="Text",
110
+ unique=True,
111
+ branch=BranchSupportType.AGNOSTIC,
112
+ order_weight=1000,
113
+ allow_override=AllowOverrideType.NONE,
114
+ ),
115
+ Attr(
116
+ name="description",
117
+ kind="Text",
118
+ optional=True,
119
+ branch=BranchSupportType.AGNOSTIC,
120
+ order_weight=2000,
121
+ allow_override=AllowOverrideType.NONE,
122
+ ),
123
+ Attr(
124
+ name="location",
125
+ kind="Text",
126
+ unique=True,
127
+ branch=BranchSupportType.AGNOSTIC,
128
+ order_weight=3000,
129
+ allow_override=AllowOverrideType.NONE,
130
+ ),
131
+ Attr(
132
+ name="internal_status",
133
+ kind="Dropdown",
134
+ choices=[
135
+ DropdownChoice(
136
+ name=RepositoryInternalStatus.STAGING.value,
137
+ label="Staging",
138
+ description="Repository was recently added to this branch.",
139
+ color="#fef08a",
140
+ ),
141
+ DropdownChoice(
142
+ name=RepositoryInternalStatus.ACTIVE.value,
143
+ label="Active",
144
+ description="Repository is actively being synced for this branch",
145
+ color="#86efac",
146
+ ),
147
+ DropdownChoice(
148
+ name=RepositoryInternalStatus.INACTIVE.value,
149
+ label="Inactive",
150
+ description="Repository is not active on this branch.",
151
+ color="#e5e7eb",
152
+ ),
147
153
  ],
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
- },
154
+ default_value="inactive",
155
+ optional=False,
156
+ branch=BranchSupportType.LOCAL,
157
+ order_weight=7000,
158
+ allow_override=AllowOverrideType.NONE,
159
+ ),
160
+ Attr(
161
+ name="operational_status",
162
+ kind="Dropdown",
163
+ choices=[
164
+ DropdownChoice(
165
+ name=RepositoryOperationalStatus.UNKNOWN.value,
166
+ label="Unknown",
167
+ description="Status of the repository is unknown and mostlikely because it hasn't been synced yet",
168
+ color="#9ca3af",
169
+ ),
170
+ DropdownChoice(
171
+ name=RepositoryOperationalStatus.ONLINE.value,
172
+ label="Online",
173
+ description="Repository connection is working",
174
+ color="#86efac",
175
+ ),
176
+ DropdownChoice(
177
+ name=RepositoryOperationalStatus.ERROR_CRED.value,
178
+ label="Credential Error",
179
+ description="Repository can't be synced due to some credential error(s)",
180
+ color="#f87171",
181
+ ),
182
+ DropdownChoice(
183
+ name=RepositoryOperationalStatus.ERROR_CONNECTION.value,
184
+ label="Connectivity Error",
185
+ description="Repository can't be synced due to some connectivity error(s)",
186
+ color="#f87171",
187
+ ),
188
+ DropdownChoice(
189
+ name=RepositoryOperationalStatus.ERROR.value,
190
+ label="Error",
191
+ description="Repository can't be synced due to an unknown error",
192
+ color="#ef4444",
193
+ ),
188
194
  ],
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
- },
195
+ optional=False,
196
+ branch=BranchSupportType.AGNOSTIC,
197
+ default_value=RepositoryOperationalStatus.UNKNOWN.value,
198
+ order_weight=5000,
199
+ ),
200
+ Attr(
201
+ name="sync_status",
202
+ kind="Dropdown",
203
+ choices=[
204
+ DropdownChoice(
205
+ name=RepositorySyncStatus.UNKNOWN.value,
206
+ label="Unknown",
207
+ description="Status of the repository is unknown and mostlikely because it hasn't been synced yet",
208
+ color="#9ca3af",
209
+ ),
210
+ DropdownChoice(
211
+ name=RepositorySyncStatus.ERROR_IMPORT.value,
212
+ label="Import Error",
213
+ description="Repository import error observed",
214
+ color="#f87171",
215
+ ),
216
+ DropdownChoice(
217
+ name=RepositorySyncStatus.IN_SYNC.value,
218
+ label="In Sync",
219
+ description="The repository is syncing correctly",
220
+ color="#60a5fa",
221
+ ),
222
+ DropdownChoice(
223
+ name=RepositorySyncStatus.SYNCING.value,
224
+ label="Syncing",
225
+ description="A sync job is currently running against the repository.",
226
+ color="#a855f7",
227
+ ),
222
228
  ],
223
- "optional": False,
224
- "branch": BranchSupportType.LOCAL.value,
225
- "default_value": RepositorySyncStatus.UNKNOWN.value,
226
- "order_weight": 6000,
227
- },
229
+ optional=False,
230
+ branch=BranchSupportType.LOCAL,
231
+ default_value=RepositorySyncStatus.UNKNOWN.value,
232
+ order_weight=6000,
233
+ ),
228
234
  ],
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
- },
235
+ relationships=[
236
+ Rel(
237
+ name="credential",
238
+ peer=InfrahubKind.CREDENTIAL,
239
+ identifier="gitrepository__credential",
240
+ kind=RelKind.ATTRIBUTE,
241
+ optional=True,
242
+ cardinality=Cardinality.ONE,
243
+ order_weight=4000,
244
+ ),
245
+ Rel(
246
+ name="tags",
247
+ peer=InfrahubKind.TAG,
248
+ kind=RelKind.ATTRIBUTE,
249
+ optional=True,
250
+ cardinality=Cardinality.MANY,
251
+ order_weight=8000,
252
+ ),
253
+ Rel(
254
+ name="transformations",
255
+ peer=InfrahubKind.TRANSFORM,
256
+ identifier="repository__transformation",
257
+ optional=True,
258
+ cardinality=Cardinality.MANY,
259
+ order_weight=10000,
260
+ ),
261
+ Rel(
262
+ name="queries",
263
+ peer=InfrahubKind.GRAPHQLQUERY,
264
+ identifier="graphql_query__repository",
265
+ optional=True,
266
+ cardinality=Cardinality.MANY,
267
+ order_weight=9000,
268
+ ),
269
+ Rel(
270
+ name="checks",
271
+ peer=InfrahubKind.CHECKDEFINITION,
272
+ identifier="check_definition__repository",
273
+ optional=True,
274
+ cardinality=Cardinality.MANY,
275
+ order_weight=11000,
276
+ ),
277
+ Rel(
278
+ name="generators",
279
+ peer=InfrahubKind.GENERATORDEFINITION,
280
+ identifier="generator_definition__repository",
281
+ optional=True,
282
+ cardinality=Cardinality.MANY,
283
+ order_weight=12000,
284
+ ),
279
285
  ],
280
- }
286
+ )