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.
- infrahub/api/dependencies.py +6 -6
- infrahub/api/diff/validation_models.py +7 -7
- infrahub/api/schema.py +1 -1
- infrahub/artifacts/models.py +5 -3
- infrahub/artifacts/tasks.py +3 -5
- infrahub/cli/__init__.py +13 -9
- infrahub/cli/constants.py +3 -0
- infrahub/cli/db.py +165 -183
- infrahub/cli/upgrade.py +146 -0
- infrahub/computed_attribute/gather.py +185 -0
- infrahub/computed_attribute/models.py +240 -12
- infrahub/computed_attribute/tasks.py +77 -441
- infrahub/computed_attribute/triggers.py +13 -47
- infrahub/config.py +43 -32
- infrahub/context.py +14 -0
- infrahub/core/account.py +4 -4
- infrahub/core/attribute.py +58 -58
- infrahub/core/branch/tasks.py +74 -22
- infrahub/core/changelog/diff.py +95 -36
- infrahub/core/changelog/models.py +217 -43
- infrahub/core/constants/__init__.py +28 -0
- infrahub/core/constants/infrahubkind.py +2 -0
- infrahub/core/constants/schema.py +2 -0
- infrahub/core/constraint/node/runner.py +9 -8
- infrahub/core/diff/branch_differ.py +10 -10
- infrahub/core/diff/enricher/cardinality_one.py +5 -0
- infrahub/core/diff/enricher/hierarchy.py +17 -4
- infrahub/core/diff/enricher/labels.py +5 -0
- infrahub/core/diff/enricher/path_identifier.py +4 -0
- infrahub/core/diff/ipam_diff_parser.py +4 -5
- infrahub/core/diff/model/diff.py +27 -27
- infrahub/core/diff/model/path.py +32 -9
- infrahub/core/diff/parent_node_adder.py +78 -0
- infrahub/core/diff/payload_builder.py +13 -2
- infrahub/core/diff/query/filters.py +2 -2
- infrahub/core/diff/query/merge.py +20 -17
- infrahub/core/diff/query/save.py +188 -182
- infrahub/core/diff/query/summary_counts_enricher.py +51 -4
- infrahub/core/diff/query_parser.py +4 -4
- infrahub/core/diff/repository/deserializer.py +8 -3
- infrahub/core/diff/repository/repository.py +156 -38
- infrahub/core/diff/tasks.py +4 -4
- infrahub/core/graph/__init__.py +1 -1
- infrahub/core/graph/index.py +3 -0
- infrahub/core/initialization.py +1 -10
- infrahub/core/ipam/constants.py +3 -4
- infrahub/core/ipam/reconciler.py +12 -12
- infrahub/core/ipam/utilization.py +10 -13
- infrahub/core/manager.py +36 -36
- infrahub/core/merge.py +7 -7
- infrahub/core/migrations/__init__.py +2 -3
- infrahub/core/migrations/graph/__init__.py +12 -3
- infrahub/core/migrations/graph/m017_add_core_profile.py +1 -5
- infrahub/core/migrations/graph/m018_uniqueness_nulls.py +4 -4
- infrahub/core/migrations/graph/m019_restore_rels_to_time.py +256 -0
- infrahub/core/migrations/graph/m020_duplicate_edges.py +160 -0
- infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py +51 -0
- infrahub/core/migrations/graph/m022_add_generate_template_attr.py +48 -0
- infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py +96 -0
- infrahub/core/migrations/query/attribute_add.py +2 -2
- infrahub/core/migrations/query/node_duplicate.py +43 -26
- infrahub/core/migrations/query/schema_attribute_update.py +2 -2
- infrahub/core/migrations/schema/models.py +19 -4
- infrahub/core/migrations/schema/node_remove.py +26 -12
- infrahub/core/migrations/schema/tasks.py +2 -2
- infrahub/core/migrations/shared.py +16 -16
- infrahub/core/models.py +15 -6
- infrahub/core/node/__init__.py +43 -39
- infrahub/core/node/base.py +2 -4
- infrahub/core/node/constraints/attribute_uniqueness.py +2 -2
- infrahub/core/node/constraints/grouped_uniqueness.py +99 -47
- infrahub/core/node/constraints/interface.py +1 -2
- infrahub/core/node/delete_validator.py +3 -5
- infrahub/core/node/ipam.py +4 -4
- infrahub/core/node/permissions.py +7 -7
- infrahub/core/node/resource_manager/ip_address_pool.py +6 -6
- infrahub/core/node/resource_manager/ip_prefix_pool.py +6 -6
- infrahub/core/node/resource_manager/number_pool.py +3 -3
- infrahub/core/path.py +12 -12
- infrahub/core/property.py +11 -11
- infrahub/core/protocols.py +7 -0
- infrahub/core/protocols_base.py +21 -21
- infrahub/core/query/__init__.py +33 -33
- infrahub/core/query/attribute.py +6 -4
- infrahub/core/query/diff.py +3 -3
- infrahub/core/query/node.py +82 -32
- infrahub/core/query/relationship.py +228 -40
- infrahub/core/query/resource_manager.py +2 -0
- infrahub/core/query/standard_node.py +3 -3
- infrahub/core/query/subquery.py +9 -9
- infrahub/core/registry.py +13 -15
- infrahub/core/relationship/constraints/count.py +3 -4
- infrahub/core/relationship/constraints/peer_kind.py +3 -4
- infrahub/core/relationship/constraints/profiles_kind.py +2 -2
- infrahub/core/relationship/model.py +51 -59
- infrahub/core/schema/attribute_schema.py +16 -8
- infrahub/core/schema/basenode_schema.py +105 -44
- infrahub/core/schema/computed_attribute.py +3 -3
- infrahub/core/schema/definitions/core/__init__.py +147 -0
- infrahub/core/schema/definitions/core/account.py +171 -0
- infrahub/core/schema/definitions/core/artifact.py +136 -0
- infrahub/core/schema/definitions/core/builtin.py +24 -0
- infrahub/core/schema/definitions/core/check.py +68 -0
- infrahub/core/schema/definitions/core/core.py +17 -0
- infrahub/core/schema/definitions/core/generator.py +100 -0
- infrahub/core/schema/definitions/core/graphql_query.py +79 -0
- infrahub/core/schema/definitions/core/group.py +108 -0
- infrahub/core/schema/definitions/core/ipam.py +193 -0
- infrahub/core/schema/definitions/core/lineage.py +19 -0
- infrahub/core/schema/definitions/core/menu.py +48 -0
- infrahub/core/schema/definitions/core/permission.py +163 -0
- infrahub/core/schema/definitions/core/profile.py +18 -0
- infrahub/core/schema/definitions/core/propose_change.py +97 -0
- infrahub/core/schema/definitions/core/propose_change_comment.py +193 -0
- infrahub/core/schema/definitions/core/propose_change_validator.py +328 -0
- infrahub/core/schema/definitions/core/repository.py +286 -0
- infrahub/core/schema/definitions/core/resource_pool.py +170 -0
- infrahub/core/schema/definitions/core/template.py +27 -0
- infrahub/core/schema/definitions/core/transform.py +96 -0
- infrahub/core/schema/definitions/core/webhook.py +134 -0
- infrahub/core/schema/definitions/internal.py +16 -16
- infrahub/core/schema/dropdown.py +3 -4
- infrahub/core/schema/generated/attribute_schema.py +15 -18
- infrahub/core/schema/generated/base_node_schema.py +12 -14
- infrahub/core/schema/generated/node_schema.py +3 -5
- infrahub/core/schema/generated/relationship_schema.py +9 -11
- infrahub/core/schema/generic_schema.py +2 -2
- infrahub/core/schema/manager.py +20 -9
- infrahub/core/schema/node_schema.py +4 -2
- infrahub/core/schema/relationship_schema.py +14 -6
- infrahub/core/schema/schema_branch.py +292 -144
- infrahub/core/schema/schema_branch_computed.py +41 -4
- infrahub/core/task/task.py +3 -3
- infrahub/core/task/user_task.py +15 -15
- infrahub/core/timestamp.py +3 -3
- infrahub/core/utils.py +20 -18
- infrahub/core/validators/__init__.py +1 -3
- infrahub/core/validators/aggregated_checker.py +2 -2
- infrahub/core/validators/attribute/choices.py +2 -2
- infrahub/core/validators/attribute/enum.py +2 -2
- infrahub/core/validators/attribute/kind.py +2 -2
- infrahub/core/validators/attribute/length.py +2 -2
- infrahub/core/validators/attribute/optional.py +2 -2
- infrahub/core/validators/attribute/regex.py +2 -2
- infrahub/core/validators/attribute/unique.py +2 -2
- infrahub/core/validators/checks_runner.py +25 -2
- infrahub/core/validators/determiner.py +1 -3
- infrahub/core/validators/interface.py +6 -2
- infrahub/core/validators/model.py +22 -3
- infrahub/core/validators/models/validate_migration.py +17 -4
- infrahub/core/validators/node/attribute.py +2 -2
- infrahub/core/validators/node/generate_profile.py +2 -2
- infrahub/core/validators/node/hierarchy.py +3 -5
- infrahub/core/validators/node/inherit_from.py +27 -5
- infrahub/core/validators/node/relationship.py +2 -2
- infrahub/core/validators/relationship/count.py +4 -4
- infrahub/core/validators/relationship/optional.py +2 -2
- infrahub/core/validators/relationship/peer.py +2 -2
- infrahub/core/validators/shared.py +2 -2
- infrahub/core/validators/tasks.py +8 -0
- infrahub/core/validators/uniqueness/checker.py +22 -21
- infrahub/core/validators/uniqueness/index.py +2 -2
- infrahub/core/validators/uniqueness/model.py +11 -11
- infrahub/database/__init__.py +27 -22
- infrahub/database/metrics.py +7 -1
- infrahub/dependencies/builder/constraint/grouped/node_runner.py +1 -3
- infrahub/dependencies/builder/diff/deserializer.py +3 -1
- infrahub/dependencies/builder/diff/enricher/hierarchy.py +3 -1
- infrahub/dependencies/builder/diff/parent_node_adder.py +8 -0
- infrahub/dependencies/component/registry.py +2 -2
- infrahub/events/__init__.py +25 -2
- infrahub/events/artifact_action.py +64 -0
- infrahub/events/branch_action.py +33 -22
- infrahub/events/generator.py +71 -0
- infrahub/events/group_action.py +51 -21
- infrahub/events/models.py +18 -19
- infrahub/events/node_action.py +88 -37
- infrahub/events/repository_action.py +5 -18
- infrahub/events/schema_action.py +4 -9
- infrahub/events/utils.py +16 -0
- infrahub/events/validator_action.py +55 -0
- infrahub/exceptions.py +32 -24
- infrahub/generators/models.py +2 -3
- infrahub/generators/tasks.py +24 -4
- infrahub/git/base.py +7 -7
- infrahub/git/integrator.py +48 -24
- infrahub/git/models.py +101 -9
- infrahub/git/repository.py +3 -3
- infrahub/git/tasks.py +408 -6
- infrahub/git/utils.py +48 -0
- infrahub/git/worktree.py +1 -2
- infrahub/git_credential/askpass.py +1 -2
- infrahub/graphql/analyzer.py +12 -0
- infrahub/graphql/app.py +13 -15
- infrahub/graphql/context.py +39 -0
- infrahub/graphql/initialization.py +3 -0
- infrahub/graphql/loaders/node.py +2 -12
- infrahub/graphql/loaders/peers.py +77 -0
- infrahub/graphql/loaders/shared.py +13 -0
- infrahub/graphql/manager.py +17 -19
- infrahub/graphql/mutations/artifact_definition.py +5 -5
- infrahub/graphql/mutations/branch.py +26 -1
- infrahub/graphql/mutations/computed_attribute.py +9 -5
- infrahub/graphql/mutations/diff.py +23 -11
- infrahub/graphql/mutations/diff_conflict.py +5 -0
- infrahub/graphql/mutations/generator.py +83 -0
- infrahub/graphql/mutations/graphql_query.py +5 -5
- infrahub/graphql/mutations/ipam.py +54 -74
- infrahub/graphql/mutations/main.py +195 -132
- infrahub/graphql/mutations/menu.py +7 -7
- infrahub/graphql/mutations/models.py +2 -4
- infrahub/graphql/mutations/node_getter/by_default_filter.py +10 -10
- infrahub/graphql/mutations/node_getter/by_hfid.py +1 -3
- infrahub/graphql/mutations/node_getter/by_id.py +1 -3
- infrahub/graphql/mutations/node_getter/interface.py +1 -2
- infrahub/graphql/mutations/proposed_change.py +7 -7
- infrahub/graphql/mutations/relationship.py +93 -19
- infrahub/graphql/mutations/repository.py +8 -8
- infrahub/graphql/mutations/resource_manager.py +3 -3
- infrahub/graphql/mutations/schema.py +19 -4
- infrahub/graphql/mutations/webhook.py +137 -0
- infrahub/graphql/parser.py +4 -4
- infrahub/graphql/permissions.py +1 -10
- infrahub/graphql/queries/diff/tree.py +19 -14
- infrahub/graphql/queries/event.py +5 -2
- infrahub/graphql/queries/ipam.py +2 -2
- infrahub/graphql/queries/relationship.py +2 -2
- infrahub/graphql/queries/search.py +2 -2
- infrahub/graphql/resolvers/many_relationship.py +264 -0
- infrahub/graphql/resolvers/resolver.py +13 -110
- infrahub/graphql/schema.py +2 -0
- infrahub/graphql/subscription/graphql_query.py +2 -0
- infrahub/graphql/types/context.py +12 -0
- infrahub/graphql/types/event.py +84 -17
- infrahub/graphql/types/node.py +2 -2
- infrahub/graphql/utils.py +2 -2
- infrahub/groups/ancestors.py +29 -0
- infrahub/groups/parsers.py +107 -0
- infrahub/lock.py +20 -20
- infrahub/menu/constants.py +0 -1
- infrahub/menu/generator.py +9 -21
- infrahub/menu/menu.py +17 -38
- infrahub/menu/models.py +117 -16
- infrahub/menu/repository.py +111 -0
- infrahub/menu/utils.py +5 -8
- infrahub/message_bus/__init__.py +11 -13
- infrahub/message_bus/messages/__init__.py +1 -21
- infrahub/message_bus/messages/check_generator_run.py +3 -3
- infrahub/message_bus/messages/finalize_validator_execution.py +3 -0
- infrahub/message_bus/messages/proposed_change/request_proposedchange_refreshartifacts.py +6 -0
- infrahub/message_bus/messages/request_generatordefinition_check.py +2 -0
- infrahub/message_bus/messages/send_echo_request.py +1 -1
- infrahub/message_bus/operations/__init__.py +1 -10
- infrahub/message_bus/operations/check/__init__.py +2 -2
- infrahub/message_bus/operations/check/generator.py +1 -0
- infrahub/message_bus/operations/event/__init__.py +2 -2
- infrahub/message_bus/operations/event/worker.py +0 -3
- infrahub/message_bus/operations/finalize/validator.py +51 -1
- infrahub/message_bus/operations/requests/__init__.py +0 -2
- infrahub/message_bus/operations/requests/generator_definition.py +21 -23
- infrahub/message_bus/operations/requests/proposed_change.py +14 -10
- infrahub/permissions/globals.py +15 -0
- infrahub/pools/number.py +2 -4
- infrahub/proposed_change/models.py +3 -0
- infrahub/proposed_change/tasks.py +58 -45
- infrahub/pytest_plugin.py +13 -10
- infrahub/server.py +2 -3
- infrahub/services/__init__.py +2 -2
- infrahub/services/adapters/cache/__init__.py +4 -6
- infrahub/services/adapters/cache/nats.py +4 -5
- infrahub/services/adapters/cache/redis.py +3 -7
- infrahub/services/adapters/event/__init__.py +1 -1
- infrahub/services/adapters/message_bus/__init__.py +3 -3
- infrahub/services/adapters/message_bus/local.py +2 -2
- infrahub/services/adapters/message_bus/nats.py +4 -4
- infrahub/services/adapters/message_bus/rabbitmq.py +4 -4
- infrahub/services/adapters/workflow/local.py +2 -2
- infrahub/services/component.py +5 -5
- infrahub/services/protocols.py +7 -7
- infrahub/services/scheduler.py +1 -3
- infrahub/task_manager/event.py +102 -9
- infrahub/task_manager/models.py +27 -7
- infrahub/tasks/artifact.py +7 -6
- infrahub/telemetry/__init__.py +0 -0
- infrahub/telemetry/constants.py +9 -0
- infrahub/telemetry/database.py +86 -0
- infrahub/telemetry/models.py +65 -0
- infrahub/telemetry/task_manager.py +77 -0
- infrahub/{tasks/telemetry.py → telemetry/tasks.py} +49 -56
- infrahub/telemetry/utils.py +11 -0
- infrahub/trace.py +4 -4
- infrahub/transformations/tasks.py +2 -2
- infrahub/trigger/catalogue.py +4 -6
- infrahub/trigger/constants.py +0 -8
- infrahub/trigger/models.py +54 -5
- infrahub/trigger/setup.py +90 -0
- infrahub/trigger/tasks.py +35 -84
- infrahub/utils.py +11 -1
- infrahub/validators/__init__.py +0 -0
- infrahub/validators/events.py +42 -0
- infrahub/validators/tasks.py +41 -0
- infrahub/webhook/gather.py +17 -0
- infrahub/webhook/models.py +176 -44
- infrahub/webhook/tasks.py +154 -155
- infrahub/webhook/triggers.py +31 -7
- infrahub/workers/infrahub_async.py +2 -2
- infrahub/workers/utils.py +2 -2
- infrahub/workflows/catalogue.py +86 -35
- infrahub/workflows/initialization.py +8 -2
- infrahub/workflows/models.py +27 -1
- infrahub/workflows/utils.py +10 -1
- infrahub_sdk/client.py +35 -8
- infrahub_sdk/config.py +3 -0
- infrahub_sdk/context.py +13 -0
- infrahub_sdk/ctl/branch.py +3 -2
- infrahub_sdk/ctl/cli_commands.py +5 -1
- infrahub_sdk/ctl/utils.py +0 -16
- infrahub_sdk/exceptions.py +12 -0
- infrahub_sdk/generator.py +4 -1
- infrahub_sdk/graphql.py +45 -13
- infrahub_sdk/node.py +71 -22
- infrahub_sdk/protocols.py +21 -8
- infrahub_sdk/protocols_base.py +32 -11
- infrahub_sdk/query_groups.py +6 -35
- infrahub_sdk/schema/__init__.py +55 -26
- infrahub_sdk/schema/main.py +8 -0
- infrahub_sdk/task/__init__.py +11 -0
- infrahub_sdk/task/constants.py +3 -0
- infrahub_sdk/task/exceptions.py +25 -0
- infrahub_sdk/task/manager.py +551 -0
- infrahub_sdk/task/models.py +74 -0
- infrahub_sdk/testing/schemas/animal.py +9 -0
- infrahub_sdk/timestamp.py +142 -33
- infrahub_sdk/utils.py +29 -1
- {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/METADATA +8 -6
- {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/RECORD +349 -293
- {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/entry_points.txt +1 -0
- infrahub_testcontainers/constants.py +2 -0
- infrahub_testcontainers/container.py +157 -12
- infrahub_testcontainers/docker-compose.test.yml +31 -6
- infrahub_testcontainers/helpers.py +18 -73
- infrahub_testcontainers/host.py +41 -0
- infrahub_testcontainers/measurements.py +93 -0
- infrahub_testcontainers/models.py +38 -0
- infrahub_testcontainers/performance_test.py +166 -0
- infrahub_testcontainers/plugin.py +136 -0
- infrahub_testcontainers/prometheus.yml +30 -0
- infrahub/core/schema/definitions/core.py +0 -2286
- infrahub/message_bus/messages/check_repository_checkdefinition.py +0 -20
- infrahub/message_bus/messages/check_repository_mergeconflicts.py +0 -16
- infrahub/message_bus/messages/check_repository_usercheck.py +0 -26
- infrahub/message_bus/messages/event_branch_create.py +0 -11
- infrahub/message_bus/messages/event_branch_delete.py +0 -11
- infrahub/message_bus/messages/event_branch_rebased.py +0 -9
- infrahub/message_bus/messages/event_node_mutated.py +0 -15
- infrahub/message_bus/messages/event_schema_update.py +0 -9
- infrahub/message_bus/messages/request_repository_checks.py +0 -12
- infrahub/message_bus/messages/request_repository_userchecks.py +0 -18
- infrahub/message_bus/operations/check/repository.py +0 -293
- infrahub/message_bus/operations/event/node.py +0 -20
- infrahub/message_bus/operations/event/schema.py +0 -17
- infrahub/message_bus/operations/requests/repository.py +0 -133
- infrahub/webhook/constants.py +0 -1
- {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/LICENSE.txt +0 -0
- {infrahub_server-1.2.0rc0.dist-info → infrahub_server-1.2.1.dist-info}/WHEEL +0 -0
infrahub/message_bus/__init__.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
@@ -11,21 +11,19 @@ from infrahub.log import set_log_data
|
|
|
11
11
|
|
|
12
12
|
class Meta(BaseModel):
|
|
13
13
|
request_id: str = ""
|
|
14
|
-
correlation_id:
|
|
15
|
-
reply_to:
|
|
16
|
-
initiator_id:
|
|
14
|
+
correlation_id: str | None = Field(default=None)
|
|
15
|
+
reply_to: str | None = Field(default=None)
|
|
16
|
+
initiator_id: str | None = Field(
|
|
17
17
|
default=None, description="The worker identity of the initial sender of this message"
|
|
18
18
|
)
|
|
19
|
-
retry_count:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
headers: Optional[dict[str, Any]] = Field(default=None)
|
|
23
|
-
validator_execution_id: Optional[str] = Field(
|
|
19
|
+
retry_count: int | None = Field(default=None, description="Indicates how many times this message has been retried.")
|
|
20
|
+
headers: dict[str, Any] | None = Field(default=None)
|
|
21
|
+
validator_execution_id: str | None = Field(
|
|
24
22
|
default=None, description="Validator execution ID related to this message"
|
|
25
23
|
)
|
|
26
|
-
check_execution_id:
|
|
24
|
+
check_execution_id: str | None = Field(default=None, description="Check execution ID related to this message")
|
|
27
25
|
priority: int = Field(default=3, description="Message Priority")
|
|
28
|
-
expiration:
|
|
26
|
+
expiration: int | None = Field(default=None, description="TTL before this message expires in seconds")
|
|
29
27
|
|
|
30
28
|
@classmethod
|
|
31
29
|
def default(cls) -> Meta:
|
|
@@ -89,9 +87,9 @@ class InfrahubResponse(InfrahubMessage):
|
|
|
89
87
|
|
|
90
88
|
passed: bool = True
|
|
91
89
|
routing_key: str
|
|
92
|
-
data:
|
|
90
|
+
data: dict | InfrahubResponseData = Field(default_factory=dict) # type: ignore[arg-type]
|
|
93
91
|
errors: list[str] = Field(default_factory=list)
|
|
94
|
-
initial_message:
|
|
92
|
+
initial_message: dict | None = Field(
|
|
95
93
|
default=None,
|
|
96
94
|
description="Initial message in dict format, the primary goal of this field is to provide additional context when there is an error",
|
|
97
95
|
)
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
from infrahub.message_bus import InfrahubMessage, InfrahubResponse
|
|
2
2
|
|
|
3
3
|
from .check_generator_run import CheckGeneratorRun
|
|
4
|
-
from .check_repository_checkdefinition import CheckRepositoryCheckDefinition
|
|
5
|
-
from .check_repository_mergeconflicts import CheckRepositoryMergeConflicts
|
|
6
|
-
from .check_repository_usercheck import CheckRepositoryUserCheck
|
|
7
|
-
from .event_branch_create import EventBranchCreate
|
|
8
|
-
from .event_branch_delete import EventBranchDelete
|
|
9
4
|
from .event_branch_merge import EventBranchMerge
|
|
10
|
-
from .event_branch_rebased import EventBranchRebased
|
|
11
|
-
from .event_node_mutated import EventNodeMutated
|
|
12
|
-
from .event_schema_update import EventSchemaUpdate
|
|
13
5
|
from .event_worker_newprimaryapi import EventWorkerNewPrimaryAPI
|
|
14
6
|
from .finalize_validator_execution import FinalizeValidatorExecution
|
|
15
7
|
from .git_file_get import GitFileGet, GitFileGetResponse
|
|
@@ -20,21 +12,11 @@ from .refresh_registry_branches import RefreshRegistryBranches
|
|
|
20
12
|
from .refresh_registry_rebasedbranch import RefreshRegistryRebasedBranch
|
|
21
13
|
from .request_generatordefinition_check import RequestGeneratorDefinitionCheck
|
|
22
14
|
from .request_proposedchange_pipeline import RequestProposedChangePipeline
|
|
23
|
-
from .request_repository_checks import RequestRepositoryChecks
|
|
24
|
-
from .request_repository_userchecks import RequestRepositoryUserChecks
|
|
25
15
|
from .send_echo_request import SendEchoRequest, SendEchoRequestResponse
|
|
26
16
|
|
|
27
17
|
MESSAGE_MAP: dict[str, type[InfrahubMessage]] = {
|
|
28
18
|
"check.generator.run": CheckGeneratorRun,
|
|
29
|
-
"check.repository.check_definition": CheckRepositoryCheckDefinition,
|
|
30
|
-
"check.repository.merge_conflicts": CheckRepositoryMergeConflicts,
|
|
31
|
-
"check.repository.user_check": CheckRepositoryUserCheck,
|
|
32
|
-
"event.branch.create": EventBranchCreate,
|
|
33
|
-
"event.branch.delete": EventBranchDelete,
|
|
34
19
|
"event.branch.merge": EventBranchMerge,
|
|
35
|
-
"event.branch.rebased": EventBranchRebased,
|
|
36
|
-
"event.node.mutated": EventNodeMutated,
|
|
37
|
-
"event.schema.update": EventSchemaUpdate,
|
|
38
20
|
"event.worker.new_primary_api": EventWorkerNewPrimaryAPI,
|
|
39
21
|
"finalize.validator.execution": FinalizeValidatorExecution,
|
|
40
22
|
"git.file.get": GitFileGet,
|
|
@@ -45,8 +27,6 @@ MESSAGE_MAP: dict[str, type[InfrahubMessage]] = {
|
|
|
45
27
|
"request.generator_definition.check": RequestGeneratorDefinitionCheck,
|
|
46
28
|
"request.proposed_change.pipeline": RequestProposedChangePipeline,
|
|
47
29
|
"request.proposed_change.refresh_artifacts": RequestProposedChangeRefreshArtifacts,
|
|
48
|
-
"request.repository.checks": RequestRepositoryChecks,
|
|
49
|
-
"request.repository.user_checks": RequestRepositoryUserChecks,
|
|
50
30
|
"send.echo.request": SendEchoRequest,
|
|
51
31
|
}
|
|
52
32
|
|
|
@@ -59,7 +39,7 @@ PRIORITY_MAP = {
|
|
|
59
39
|
"check.artifact.create": 2,
|
|
60
40
|
"check.repository.check_definition": 2,
|
|
61
41
|
"check.repository.merge_conflicts": 2,
|
|
62
|
-
"
|
|
42
|
+
"send.echo.request": 5, # Currently only for testing purposes, will be removed once all message bus have been migrated to prefect
|
|
63
43
|
"event.branch.delete": 5,
|
|
64
44
|
"event.branch.merge": 5,
|
|
65
45
|
"event.schema.update": 5,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
from pydantic import Field
|
|
4
2
|
|
|
3
|
+
from infrahub.context import InfrahubContext
|
|
5
4
|
from infrahub.generators.models import ProposedChangeGeneratorDefinition
|
|
6
5
|
from infrahub.message_bus import InfrahubMessage
|
|
7
6
|
|
|
@@ -10,7 +9,7 @@ class CheckGeneratorRun(InfrahubMessage):
|
|
|
10
9
|
"""A check that runs a generator."""
|
|
11
10
|
|
|
12
11
|
generator_definition: ProposedChangeGeneratorDefinition = Field(..., description="The Generator definition")
|
|
13
|
-
generator_instance:
|
|
12
|
+
generator_instance: str | None = Field(
|
|
14
13
|
default=None, description="The id of the generator instance if it previously existed"
|
|
15
14
|
)
|
|
16
15
|
commit: str = Field(..., description="The commit to target")
|
|
@@ -24,3 +23,4 @@ class CheckGeneratorRun(InfrahubMessage):
|
|
|
24
23
|
variables: dict = Field(..., description="Input variables when running the generator")
|
|
25
24
|
validator_id: str = Field(..., description="The ID of the validator")
|
|
26
25
|
proposed_change: str | None = Field(None, description="The unique ID of the Proposed Change")
|
|
26
|
+
context: InfrahubContext = Field(..., description="The Infrahub context")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from pydantic import Field
|
|
2
2
|
|
|
3
|
+
from infrahub.context import InfrahubContext
|
|
3
4
|
from infrahub.message_bus import InfrahubMessage
|
|
4
5
|
|
|
5
6
|
|
|
@@ -10,3 +11,5 @@ class FinalizeValidatorExecution(InfrahubMessage):
|
|
|
10
11
|
validator_execution_id: str = Field(..., description="The id of current execution of the associated validator")
|
|
11
12
|
start_time: str = Field(..., description="Start time when the message was first created")
|
|
12
13
|
validator_type: str = Field(..., description="The type of validator to complete")
|
|
14
|
+
context: InfrahubContext = Field(..., description="The Infrahub context")
|
|
15
|
+
proposed_change: str = Field(..., description="The ID of the proposed change")
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
from pydantic import Field
|
|
2
|
+
|
|
3
|
+
from infrahub.context import InfrahubContext
|
|
4
|
+
|
|
1
5
|
from .base_with_diff import BaseProposedChangeWithDiffMessage
|
|
2
6
|
|
|
3
7
|
|
|
4
8
|
class RequestProposedChangeRefreshArtifacts(BaseProposedChangeWithDiffMessage):
|
|
5
9
|
"""Sent trigger the refresh of artifacts that are impacted by the proposed change."""
|
|
10
|
+
|
|
11
|
+
context: InfrahubContext = Field(..., description="The context of the task")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from pydantic import ConfigDict, Field
|
|
2
2
|
|
|
3
|
+
from infrahub.context import InfrahubContext
|
|
3
4
|
from infrahub.generators.models import ProposedChangeGeneratorDefinition
|
|
4
5
|
from infrahub.message_bus import InfrahubMessage
|
|
5
6
|
from infrahub.message_bus.types import ProposedChangeBranchDiff
|
|
@@ -16,3 +17,4 @@ class RequestGeneratorDefinitionCheck(InfrahubMessage):
|
|
|
16
17
|
source_branch: str = Field(..., description="The source branch")
|
|
17
18
|
source_branch_sync_with_git: bool = Field(..., description="Indicates if the source branch should sync with git")
|
|
18
19
|
destination_branch: str = Field(..., description="The target branch")
|
|
20
|
+
context: InfrahubContext = Field(..., description="The Infrahub context")
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
import ujson
|
|
4
2
|
from prefect import Flow
|
|
5
3
|
|
|
@@ -19,12 +17,7 @@ from infrahub.tasks.check import set_check_status
|
|
|
19
17
|
|
|
20
18
|
COMMAND_MAP = {
|
|
21
19
|
"check.generator.run": check.generator.run,
|
|
22
|
-
"check.repository.check_definition": check.repository.check_definition,
|
|
23
|
-
"check.repository.merge_conflicts": check.repository.merge_conflicts,
|
|
24
|
-
"check.repository.user_check": check.repository.user_check,
|
|
25
20
|
"event.branch.merge": event.branch.merge,
|
|
26
|
-
"event.node.mutated": event.node.mutated,
|
|
27
|
-
"event.schema.update": event.schema.update,
|
|
28
21
|
"event.worker.new_primary_api": event.worker.new_primary_api,
|
|
29
22
|
"finalize.validator.execution": finalize.validator.execution,
|
|
30
23
|
"git.file.get": git.file.get,
|
|
@@ -35,15 +28,13 @@ COMMAND_MAP = {
|
|
|
35
28
|
"request.generator_definition.check": requests.generator_definition.check,
|
|
36
29
|
"request.proposed_change.pipeline": requests.proposed_change.pipeline,
|
|
37
30
|
"request.proposed_change.refresh_artifacts": requests.proposed_change.refresh_artifacts,
|
|
38
|
-
"request.repository.checks": requests.repository.checks,
|
|
39
|
-
"request.repository.user_checks": requests.repository.user_checks,
|
|
40
31
|
"send.echo.request": send.echo.request,
|
|
41
32
|
}
|
|
42
33
|
|
|
43
34
|
|
|
44
35
|
async def execute_message(
|
|
45
36
|
routing_key: str, message_body: bytes, service: InfrahubServices, skip_flow: bool = False
|
|
46
|
-
) ->
|
|
37
|
+
) -> MessageTTL | None:
|
|
47
38
|
message_data = ujson.loads(message_body)
|
|
48
39
|
message = messages.MESSAGE_MAP[routing_key](**message_data)
|
|
49
40
|
message.set_log_data(routing_key=routing_key)
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
from . import generator
|
|
1
|
+
from . import generator
|
|
2
2
|
|
|
3
|
-
__all__ = ["generator"
|
|
3
|
+
__all__ = ["generator"]
|
|
@@ -72,6 +72,7 @@ async def run(message: messages.CheckGeneratorRun, service: InfrahubServices) ->
|
|
|
72
72
|
convert_query_response=generator_definition.convert_query_response,
|
|
73
73
|
infrahub_node=InfrahubNode,
|
|
74
74
|
)
|
|
75
|
+
generator._init_client.request_context = message.context.to_request_context()
|
|
75
76
|
await generator.run(identifier=generator_definition.name)
|
|
76
77
|
generator_instance.status.value = GeneratorInstanceStatus.READY.value
|
|
77
78
|
except ModuleImportError as exc:
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
from . import branch,
|
|
1
|
+
from . import branch, worker
|
|
2
2
|
|
|
3
|
-
__all__ = ["branch", "
|
|
3
|
+
__all__ = ["branch", "worker"]
|
|
@@ -2,11 +2,8 @@ from prefect import flow
|
|
|
2
2
|
|
|
3
3
|
from infrahub.message_bus import messages
|
|
4
4
|
from infrahub.services import InfrahubServices
|
|
5
|
-
from infrahub.workflows.catalogue import WEBHOOK_CONFIGURE
|
|
6
5
|
|
|
7
6
|
|
|
8
7
|
@flow(name="event-worker-newprimary-api")
|
|
9
8
|
async def new_primary_api(message: messages.EventWorkerNewPrimaryAPI, service: InfrahubServices) -> None:
|
|
10
9
|
service.log.info("api_worker promoted to primary", worker_id=message.worker_id)
|
|
11
|
-
|
|
12
|
-
await service.workflow.submit_workflow(workflow=WEBHOOK_CONFIGURE)
|
|
@@ -1,11 +1,22 @@
|
|
|
1
|
+
from infrahub_sdk.protocols import (
|
|
2
|
+
CoreArtifactValidator,
|
|
3
|
+
CoreDataValidator,
|
|
4
|
+
CoreGeneratorValidator,
|
|
5
|
+
CoreRepositoryValidator,
|
|
6
|
+
CoreSchemaValidator,
|
|
7
|
+
CoreUserValidator,
|
|
8
|
+
CoreValidator,
|
|
9
|
+
)
|
|
1
10
|
from prefect import flow
|
|
2
11
|
|
|
3
12
|
from infrahub import config
|
|
13
|
+
from infrahub.core.constants import InfrahubKind, ValidatorConclusion
|
|
4
14
|
from infrahub.core.timestamp import Timestamp
|
|
5
15
|
from infrahub.log import get_logger
|
|
6
16
|
from infrahub.message_bus import messages
|
|
7
17
|
from infrahub.message_bus.types import KVTTL, MessageTTL
|
|
8
18
|
from infrahub.services import InfrahubServices
|
|
19
|
+
from infrahub.validators.events import send_failed_validator, send_passed_validator
|
|
9
20
|
|
|
10
21
|
log = get_logger()
|
|
11
22
|
|
|
@@ -20,7 +31,8 @@ async def execution(message: messages.FinalizeValidatorExecution, service: Infra
|
|
|
20
31
|
|
|
21
32
|
The message will get rescheduled until the timeout has exceeded or until all checks are accounted for.
|
|
22
33
|
"""
|
|
23
|
-
|
|
34
|
+
validator_type = get_validator_type(validator_type=message.validator_type)
|
|
35
|
+
validator = await service.client.get(kind=validator_type, id=message.validator_id)
|
|
24
36
|
checks_key = f"validator_execution_id:{message.validator_execution_id}:checks"
|
|
25
37
|
current_conclusion = validator.conclusion.value
|
|
26
38
|
if validator.state.value != "in_progress":
|
|
@@ -81,3 +93,41 @@ async def execution(message: messages.FinalizeValidatorExecution, service: Infra
|
|
|
81
93
|
validator.completed_at.value = Timestamp().to_string()
|
|
82
94
|
validator.conclusion.value = conclusion
|
|
83
95
|
await validator.save()
|
|
96
|
+
if validator.conclusion.value == ValidatorConclusion.SUCCESS.value:
|
|
97
|
+
await send_passed_validator(
|
|
98
|
+
service=service, validator=validator, proposed_change_id=message.proposed_change, context=message.context
|
|
99
|
+
)
|
|
100
|
+
else:
|
|
101
|
+
await send_failed_validator(
|
|
102
|
+
service=service, validator=validator, proposed_change_id=message.proposed_change, context=message.context
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def get_validator_type(
|
|
107
|
+
validator_type: str,
|
|
108
|
+
) -> (
|
|
109
|
+
type[CoreArtifactValidator]
|
|
110
|
+
| type[CoreDataValidator]
|
|
111
|
+
| type[CoreGeneratorValidator]
|
|
112
|
+
| type[CoreRepositoryValidator]
|
|
113
|
+
| type[CoreSchemaValidator]
|
|
114
|
+
| type[CoreUserValidator]
|
|
115
|
+
| type[CoreValidator]
|
|
116
|
+
):
|
|
117
|
+
match validator_type:
|
|
118
|
+
case InfrahubKind.USERVALIDATOR:
|
|
119
|
+
validator_kind = CoreUserValidator
|
|
120
|
+
case InfrahubKind.SCHEMAVALIDATOR:
|
|
121
|
+
validator_kind = CoreSchemaValidator
|
|
122
|
+
case InfrahubKind.GENERATORVALIDATOR:
|
|
123
|
+
validator_kind = CoreGeneratorValidator
|
|
124
|
+
case InfrahubKind.REPOSITORYVALIDATOR:
|
|
125
|
+
validator_kind = CoreRepositoryValidator
|
|
126
|
+
case InfrahubKind.DATAVALIDATOR:
|
|
127
|
+
validator_kind = CoreDataValidator
|
|
128
|
+
case InfrahubKind.ARTIFACTVALIDATOR:
|
|
129
|
+
validator_kind = CoreArtifactValidator
|
|
130
|
+
case _:
|
|
131
|
+
validator_kind = CoreValidator
|
|
132
|
+
|
|
133
|
+
return validator_kind
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
from
|
|
2
|
-
|
|
1
|
+
from infrahub_sdk.protocols import CoreGeneratorValidator
|
|
3
2
|
from infrahub_sdk.uuidt import UUIDT
|
|
4
3
|
from prefect import flow
|
|
5
4
|
from prefect.logging import get_run_logger
|
|
6
5
|
|
|
7
|
-
from infrahub.core.constants import InfrahubKind
|
|
6
|
+
from infrahub.core.constants import InfrahubKind
|
|
8
7
|
from infrahub.core.timestamp import Timestamp
|
|
9
8
|
from infrahub.message_bus import InfrahubMessage, Meta, messages
|
|
10
9
|
from infrahub.message_bus.types import KVTTL
|
|
11
10
|
from infrahub.services import InfrahubServices
|
|
11
|
+
from infrahub.validators.tasks import start_validator
|
|
12
12
|
from infrahub.workflows.utils import add_tags
|
|
13
13
|
|
|
14
14
|
|
|
@@ -29,31 +29,26 @@ async def check(message: messages.RequestGeneratorDefinitionCheck, service: Infr
|
|
|
29
29
|
|
|
30
30
|
await proposed_change.validations.fetch()
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
previous_validator: CoreGeneratorValidator | None = None
|
|
33
33
|
for relationship in proposed_change.validations.peers:
|
|
34
34
|
existing_validator = relationship.peer
|
|
35
35
|
if (
|
|
36
36
|
existing_validator.typename == InfrahubKind.GENERATORVALIDATOR
|
|
37
37
|
and existing_validator.definition.id == message.generator_definition.definition_id
|
|
38
38
|
):
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
validator
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"proposed_change": message.proposed_change,
|
|
53
|
-
"definition": message.generator_definition.definition_id,
|
|
54
|
-
},
|
|
55
|
-
)
|
|
56
|
-
await validator.save()
|
|
39
|
+
previous_validator = existing_validator
|
|
40
|
+
|
|
41
|
+
validator = await start_validator(
|
|
42
|
+
service=service,
|
|
43
|
+
validator=previous_validator,
|
|
44
|
+
validator_type=CoreGeneratorValidator,
|
|
45
|
+
proposed_change=message.proposed_change,
|
|
46
|
+
data={
|
|
47
|
+
"label": validator_name,
|
|
48
|
+
"definition": message.generator_definition.definition_id,
|
|
49
|
+
},
|
|
50
|
+
context=message.context,
|
|
51
|
+
)
|
|
57
52
|
|
|
58
53
|
group = await service.client.get(
|
|
59
54
|
kind=InfrahubKind.GENERICGROUP,
|
|
@@ -92,6 +87,7 @@ async def check(message: messages.RequestGeneratorDefinitionCheck, service: Infr
|
|
|
92
87
|
log.info(f"Trigger execution of {message.generator_definition.definition_name} for {member.display_label}")
|
|
93
88
|
events.append(
|
|
94
89
|
messages.CheckGeneratorRun(
|
|
90
|
+
context=message.context,
|
|
95
91
|
generator_definition=message.generator_definition,
|
|
96
92
|
generator_instance=generator_instance,
|
|
97
93
|
commit=repository.source_commit,
|
|
@@ -121,6 +117,8 @@ async def check(message: messages.RequestGeneratorDefinitionCheck, service: Infr
|
|
|
121
117
|
validator_id=validator.id,
|
|
122
118
|
validator_execution_id=validator_execution_id,
|
|
123
119
|
validator_type=InfrahubKind.GENERATORVALIDATOR,
|
|
120
|
+
context=message.context,
|
|
121
|
+
proposed_change=message.proposed_change,
|
|
124
122
|
)
|
|
125
123
|
)
|
|
126
124
|
for event in events:
|
|
@@ -128,7 +126,7 @@ async def check(message: messages.RequestGeneratorDefinitionCheck, service: Infr
|
|
|
128
126
|
await service.message_bus.send(message=event)
|
|
129
127
|
|
|
130
128
|
|
|
131
|
-
def _run_generator(instance_id:
|
|
129
|
+
def _run_generator(instance_id: str | None, managed_branch: bool, impacted_instances: list[str]) -> bool:
|
|
132
130
|
"""Returns a boolean to indicate if a generator instance needs to be executed
|
|
133
131
|
Will return true if:
|
|
134
132
|
* The instance_id wasn't set which could be that it's a new object that doesn't have a previous generator instance
|
|
@@ -11,6 +11,7 @@ from infrahub.core.constants import CheckType, InfrahubKind, RepositoryInternalS
|
|
|
11
11
|
from infrahub.core.diff.coordinator import DiffCoordinator
|
|
12
12
|
from infrahub.core.registry import registry
|
|
13
13
|
from infrahub.dependencies.registry import get_component_registry
|
|
14
|
+
from infrahub.git.models import TriggerRepositoryInternalChecks
|
|
14
15
|
from infrahub.git.repository import InfrahubRepository
|
|
15
16
|
from infrahub.message_bus import InfrahubMessage, messages
|
|
16
17
|
from infrahub.message_bus.types import (
|
|
@@ -29,6 +30,7 @@ from infrahub.proposed_change.models import (
|
|
|
29
30
|
)
|
|
30
31
|
from infrahub.services import InfrahubServices # noqa: TC001
|
|
31
32
|
from infrahub.workflows.catalogue import (
|
|
33
|
+
GIT_REPOSITORY_INTERNAL_CHECKS_TRIGGER,
|
|
32
34
|
REQUEST_ARTIFACT_DEFINITION_CHECK,
|
|
33
35
|
REQUEST_PROPOSED_CHANGE_DATA_INTEGRITY,
|
|
34
36
|
REQUEST_PROPOSED_CHANGE_REPOSITORY_CHECKS,
|
|
@@ -76,17 +78,17 @@ async def pipeline(message: messages.RequestProposedChangePipeline, service: Inf
|
|
|
76
78
|
):
|
|
77
79
|
for repo in repositories:
|
|
78
80
|
if not repo.read_only and repo.internal_status == RepositoryInternalStatus.ACTIVE.value:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
model = TriggerRepositoryInternalChecks(
|
|
82
|
+
proposed_change=message.proposed_change,
|
|
83
|
+
repository=repo.repository_id,
|
|
84
|
+
source_branch=repo.source_branch,
|
|
85
|
+
target_branch=repo.destination_branch,
|
|
86
|
+
)
|
|
87
|
+
await service.workflow.submit_workflow(
|
|
88
|
+
workflow=GIT_REPOSITORY_INTERNAL_CHECKS_TRIGGER,
|
|
89
|
+
context=message.context,
|
|
90
|
+
parameters={"model": model},
|
|
86
91
|
)
|
|
87
|
-
for event in events:
|
|
88
|
-
event.assign_meta(parent=message)
|
|
89
|
-
await service.message_bus.send(message=event)
|
|
90
92
|
return
|
|
91
93
|
|
|
92
94
|
await _gather_repository_repository_diffs(repositories=repositories, service=service)
|
|
@@ -105,6 +107,7 @@ async def pipeline(message: messages.RequestProposedChangePipeline, service: Inf
|
|
|
105
107
|
if message.check_type is CheckType.ARTIFACT:
|
|
106
108
|
events.append(
|
|
107
109
|
messages.RequestProposedChangeRefreshArtifacts(
|
|
110
|
+
context=message.context,
|
|
108
111
|
proposed_change=message.proposed_change,
|
|
109
112
|
source_branch=message.source_branch,
|
|
110
113
|
source_branch_sync_with_git=message.source_branch_sync_with_git,
|
|
@@ -243,6 +246,7 @@ async def refresh_artifacts(message: messages.RequestProposedChangeRefreshArtifa
|
|
|
243
246
|
if select:
|
|
244
247
|
log.info(f"Trigger processing of {artifact_definition.definition_name}")
|
|
245
248
|
model = RequestArtifactDefinitionCheck(
|
|
249
|
+
context=message.context,
|
|
246
250
|
artifact_definition=artifact_definition,
|
|
247
251
|
branch_diff=message.branch_diff,
|
|
248
252
|
proposed_change=message.proposed_change,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from infrahub.core.account import GlobalPermission
|
|
2
|
+
from infrahub.core.constants import GLOBAL_BRANCH_NAME, GlobalPermissions, PermissionDecision
|
|
3
|
+
from infrahub.core.registry import registry
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def define_global_permission_from_branch(permission: GlobalPermissions, branch_name: str) -> GlobalPermission:
|
|
7
|
+
if branch_name in (GLOBAL_BRANCH_NAME, registry.default_branch):
|
|
8
|
+
decision = PermissionDecision.ALLOW_DEFAULT
|
|
9
|
+
else:
|
|
10
|
+
decision = PermissionDecision.ALLOW_OTHER
|
|
11
|
+
|
|
12
|
+
return GlobalPermission(
|
|
13
|
+
action=permission.value,
|
|
14
|
+
decision=decision.value,
|
|
15
|
+
)
|
infrahub/pools/number.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import TYPE_CHECKING
|
|
4
|
+
from typing import TYPE_CHECKING
|
|
5
5
|
|
|
6
6
|
from infrahub.core.query.resource_manager import NumberPoolGetAllocated
|
|
7
7
|
from infrahub.core.registry import registry
|
|
@@ -20,9 +20,7 @@ class UsedNumber:
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class NumberUtilizationGetter:
|
|
23
|
-
def __init__(
|
|
24
|
-
self, db: InfrahubDatabase, pool: CoreNode, branch: Branch, at: Optional[Union[Timestamp, str]] = None
|
|
25
|
-
) -> None:
|
|
23
|
+
def __init__(self, db: InfrahubDatabase, pool: CoreNode, branch: Branch, at: Timestamp | str | None = None) -> None:
|
|
26
24
|
self.db = db
|
|
27
25
|
self.at = at
|
|
28
26
|
self.pool = pool
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from pydantic import BaseModel, ConfigDict, Field
|
|
2
2
|
|
|
3
|
+
from infrahub.context import InfrahubContext
|
|
3
4
|
from infrahub.message_bus.messages.proposed_change.base_with_diff import BaseProposedChangeWithDiffMessage
|
|
4
5
|
from infrahub.message_bus.types import ProposedChangeArtifactDefinition, ProposedChangeBranchDiff
|
|
5
6
|
|
|
@@ -40,3 +41,5 @@ class RequestArtifactDefinitionCheck(BaseModel):
|
|
|
40
41
|
source_branch: str = Field(..., description="The source branch")
|
|
41
42
|
source_branch_sync_with_git: bool = Field(..., description="Indicates if the source branch should sync with git")
|
|
42
43
|
destination_branch: str = Field(..., description="The target branch")
|
|
44
|
+
|
|
45
|
+
context: InfrahubContext = Field(..., description="The context of the task")
|