infrahub-server 1.1.6__py3-none-any.whl → 1.2.0rc0__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/artifact.py +16 -4
- infrahub/api/dependencies.py +8 -0
- infrahub/api/oauth2.py +0 -1
- infrahub/api/oidc.py +0 -1
- infrahub/api/query.py +18 -7
- infrahub/api/schema.py +32 -6
- infrahub/api/transformation.py +12 -5
- infrahub/{message_bus/messages/check_artifact_create.py → artifacts/models.py} +2 -4
- infrahub/{message_bus/operations/check/artifact.py → artifacts/tasks.py} +26 -25
- infrahub/cli/__init__.py +0 -2
- infrahub/cli/db.py +6 -7
- infrahub/cli/events.py +8 -3
- infrahub/cli/git_agent.py +9 -7
- infrahub/cli/tasks.py +4 -6
- infrahub/computed_attribute/tasks.py +63 -17
- infrahub/computed_attribute/triggers.py +90 -0
- infrahub/config.py +1 -1
- infrahub/context.py +39 -0
- infrahub/core/account.py +5 -8
- infrahub/core/attribute.py +53 -21
- infrahub/core/branch/models.py +4 -4
- infrahub/core/branch/tasks.py +89 -130
- infrahub/core/changelog/__init__.py +0 -0
- infrahub/core/changelog/diff.py +232 -0
- infrahub/core/changelog/models.py +488 -0
- infrahub/core/constants/__init__.py +19 -2
- infrahub/core/constants/infrahubkind.py +1 -0
- infrahub/core/diff/combiner.py +12 -8
- infrahub/core/diff/coordinator.py +49 -70
- infrahub/core/diff/data_check_synchronizer.py +86 -7
- infrahub/core/diff/enricher/aggregated.py +3 -3
- infrahub/core/diff/enricher/cardinality_one.py +2 -7
- infrahub/core/diff/enricher/hierarchy.py +5 -3
- infrahub/core/diff/enricher/labels.py +14 -4
- infrahub/core/diff/enricher/path_identifier.py +3 -9
- infrahub/core/diff/enricher/summary_counts.py +3 -1
- infrahub/core/diff/merger/merger.py +8 -4
- infrahub/core/diff/model/path.py +47 -29
- infrahub/core/diff/query/all_conflicts.py +6 -3
- infrahub/core/diff/query/artifact.py +1 -1
- infrahub/core/diff/query/delete_query.py +1 -1
- infrahub/core/diff/query/diff_get.py +3 -2
- infrahub/core/diff/query/diff_summary.py +1 -1
- infrahub/core/diff/query/field_specifiers.py +3 -1
- infrahub/core/diff/query/field_summary.py +3 -2
- infrahub/core/diff/query/filters.py +12 -1
- infrahub/core/diff/query/get_conflict_query.py +1 -1
- infrahub/core/diff/query/has_conflicts_query.py +6 -3
- infrahub/core/diff/query/merge.py +3 -3
- infrahub/core/diff/query/{drop_tracking_id.py → merge_tracking_id.py} +4 -4
- infrahub/core/diff/query/roots_metadata.py +9 -2
- infrahub/core/diff/query/save.py +151 -66
- infrahub/core/diff/query/summary_counts_enricher.py +220 -0
- infrahub/core/diff/query/time_range_query.py +3 -2
- infrahub/core/diff/query/update_conflict_query.py +1 -1
- infrahub/core/diff/query_parser.py +49 -24
- infrahub/core/diff/repository/deserializer.py +24 -25
- infrahub/core/diff/repository/repository.py +76 -20
- infrahub/core/diff/tasks.py +9 -8
- infrahub/core/enums.py +1 -1
- infrahub/core/integrity/object_conflict/conflict_recorder.py +1 -1
- infrahub/core/ipam/reconciler.py +1 -1
- infrahub/core/ipam/tasks.py +2 -3
- infrahub/core/manager.py +18 -13
- infrahub/core/merge.py +5 -2
- infrahub/core/migrations/graph/m001_add_version_to_graph.py +1 -1
- infrahub/core/migrations/graph/m002_attribute_is_default.py +2 -2
- infrahub/core/migrations/graph/m003_relationship_parent_optional.py +2 -2
- infrahub/core/migrations/graph/m004_add_attr_documentation.py +1 -1
- infrahub/core/migrations/graph/m005_add_rel_read_only.py +1 -1
- infrahub/core/migrations/graph/m006_add_rel_on_delete.py +1 -1
- infrahub/core/migrations/graph/m007_add_rel_allow_override.py +1 -1
- infrahub/core/migrations/graph/m008_add_human_friendly_id.py +1 -1
- infrahub/core/migrations/graph/m009_add_generate_profile_attr.py +1 -1
- infrahub/core/migrations/graph/m010_add_generate_profile_attr_generic.py +1 -1
- infrahub/core/migrations/graph/m011_remove_profile_relationship_schema.py +2 -2
- infrahub/core/migrations/graph/m012_convert_account_generic.py +12 -23
- infrahub/core/migrations/graph/m013_convert_git_password_credential.py +7 -11
- infrahub/core/migrations/graph/m014_remove_index_attr_value.py +2 -2
- infrahub/core/migrations/graph/m015_diff_format_update.py +1 -1
- infrahub/core/migrations/graph/m016_diff_delete_bug_fix.py +1 -1
- infrahub/core/migrations/graph/m017_add_core_profile.py +1 -1
- infrahub/core/migrations/graph/m018_uniqueness_nulls.py +2 -2
- infrahub/core/migrations/query/attribute_add.py +1 -1
- infrahub/core/migrations/query/attribute_rename.py +1 -1
- infrahub/core/migrations/query/delete_element_in_schema.py +1 -1
- infrahub/core/migrations/query/node_duplicate.py +1 -1
- infrahub/core/migrations/query/relationship_duplicate.py +1 -1
- infrahub/core/migrations/query/schema_attribute_update.py +1 -1
- infrahub/core/migrations/schema/node_attribute_remove.py +1 -1
- infrahub/core/migrations/schema/node_remove.py +1 -1
- infrahub/core/migrations/schema/tasks.py +5 -5
- infrahub/core/migrations/shared.py +4 -4
- infrahub/core/models.py +7 -8
- infrahub/core/node/__init__.py +161 -40
- infrahub/core/node/base.py +1 -1
- infrahub/core/node/constraints/grouped_uniqueness.py +9 -2
- infrahub/core/node/delete_validator.py +4 -4
- infrahub/core/node/ipam.py +13 -8
- infrahub/core/node/permissions.py +4 -0
- infrahub/core/node/resource_manager/ip_prefix_pool.py +8 -5
- infrahub/core/node/standard.py +3 -5
- infrahub/core/property.py +1 -1
- infrahub/core/protocols.py +4 -0
- infrahub/core/protocols_base.py +4 -2
- infrahub/core/query/__init__.py +2 -5
- infrahub/core/query/attribute.py +9 -9
- infrahub/core/query/branch.py +5 -5
- infrahub/core/query/delete.py +1 -1
- infrahub/core/query/diff.py +45 -7
- infrahub/core/query/ipam.py +4 -4
- infrahub/core/query/node.py +19 -14
- infrahub/core/query/relationship.py +10 -11
- infrahub/core/query/resource_manager.py +13 -11
- infrahub/core/query/standard_node.py +6 -6
- infrahub/core/query/task.py +3 -3
- infrahub/core/query/task_log.py +1 -1
- infrahub/core/query/utils.py +5 -5
- infrahub/core/registry.py +0 -2
- infrahub/core/relationship/constraints/count.py +1 -1
- infrahub/core/relationship/constraints/peer_kind.py +1 -1
- infrahub/core/relationship/model.py +66 -26
- infrahub/core/schema/__init__.py +6 -4
- infrahub/core/schema/basenode_schema.py +1 -3
- infrahub/core/schema/definitions/core.py +14 -2
- infrahub/core/schema/definitions/internal.py +16 -0
- infrahub/core/schema/generated/genericnode_schema.py +5 -0
- infrahub/core/schema/generated/node_schema.py +5 -0
- infrahub/core/schema/generic_schema.py +5 -1
- infrahub/core/schema/manager.py +45 -42
- infrahub/core/schema/node_schema.py +4 -0
- infrahub/core/schema/profile_schema.py +4 -0
- infrahub/core/schema/relationship_schema.py +2 -2
- infrahub/core/schema/schema_branch.py +248 -14
- infrahub/core/schema/template_schema.py +36 -0
- infrahub/core/task/user_task.py +7 -5
- infrahub/core/timestamp.py +1 -1
- infrahub/core/utils.py +3 -2
- infrahub/core/validators/attribute/choices.py +1 -1
- infrahub/core/validators/attribute/enum.py +1 -1
- infrahub/core/validators/attribute/kind.py +1 -1
- infrahub/core/validators/attribute/length.py +1 -1
- infrahub/core/validators/attribute/optional.py +1 -1
- infrahub/core/validators/attribute/regex.py +1 -1
- infrahub/core/validators/attribute/unique.py +1 -1
- infrahub/core/validators/checks_runner.py +37 -0
- infrahub/core/validators/node/generate_profile.py +1 -1
- infrahub/core/validators/node/hierarchy.py +1 -1
- infrahub/core/validators/query.py +1 -1
- infrahub/core/validators/relationship/count.py +1 -1
- infrahub/core/validators/relationship/optional.py +1 -1
- infrahub/core/validators/relationship/peer.py +1 -1
- infrahub/core/validators/tasks.py +8 -6
- infrahub/core/validators/uniqueness/query.py +20 -17
- infrahub/database/__init__.py +15 -2
- infrahub/database/memgraph.py +1 -1
- infrahub/dependencies/builder/constraint/grouped/node_runner.py +0 -2
- infrahub/dependencies/builder/diff/combiner.py +1 -1
- infrahub/dependencies/builder/diff/conflicts_enricher.py +1 -1
- infrahub/dependencies/builder/diff/coordinator.py +0 -2
- infrahub/dependencies/builder/diff/deserializer.py +1 -1
- infrahub/dependencies/builder/diff/enricher/summary_counts.py +1 -1
- infrahub/events/branch_action.py +47 -21
- infrahub/events/group_action.py +73 -0
- infrahub/events/models.py +159 -51
- infrahub/events/node_action.py +74 -8
- infrahub/events/repository_action.py +8 -8
- infrahub/events/schema_action.py +21 -8
- infrahub/generators/tasks.py +12 -13
- infrahub/git/base.py +3 -5
- infrahub/git/constants.py +0 -1
- infrahub/git/integrator.py +36 -35
- infrahub/git/repository.py +7 -8
- infrahub/git/tasks.py +43 -107
- infrahub/git_credential/helper.py +2 -3
- infrahub/graphql/analyzer.py +572 -11
- infrahub/graphql/app.py +34 -26
- infrahub/graphql/auth/query_permission_checker/anonymous_checker.py +5 -5
- infrahub/graphql/auth/query_permission_checker/default_branch_checker.py +4 -4
- infrahub/graphql/auth/query_permission_checker/merge_operation_checker.py +4 -4
- infrahub/graphql/auth/query_permission_checker/object_permission_checker.py +28 -35
- infrahub/graphql/auth/query_permission_checker/super_admin_checker.py +5 -5
- infrahub/graphql/enums.py +1 -1
- infrahub/graphql/initialization.py +5 -1
- infrahub/graphql/loaders/node.py +2 -2
- infrahub/graphql/manager.py +59 -54
- infrahub/graphql/mutations/account.py +20 -13
- infrahub/graphql/mutations/artifact_definition.py +16 -12
- infrahub/graphql/mutations/branch.py +61 -40
- infrahub/graphql/mutations/computed_attribute.py +19 -13
- infrahub/graphql/mutations/diff.py +37 -9
- infrahub/graphql/mutations/diff_conflict.py +9 -8
- infrahub/graphql/mutations/graphql_query.py +19 -11
- infrahub/graphql/mutations/ipam.py +21 -19
- infrahub/graphql/mutations/main.py +197 -44
- infrahub/graphql/mutations/menu.py +8 -8
- infrahub/graphql/mutations/proposed_change.py +36 -28
- infrahub/graphql/mutations/relationship.py +302 -105
- infrahub/graphql/mutations/repository.py +41 -35
- infrahub/graphql/mutations/resource_manager.py +26 -26
- infrahub/graphql/mutations/schema.py +51 -33
- infrahub/graphql/mutations/tasks.py +16 -10
- infrahub/graphql/parser.py +1 -1
- infrahub/graphql/permissions.py +6 -4
- infrahub/graphql/queries/account.py +22 -18
- infrahub/graphql/queries/branch.py +6 -4
- infrahub/graphql/queries/diff/tree.py +48 -42
- infrahub/graphql/queries/event.py +112 -0
- infrahub/graphql/queries/internal.py +3 -3
- infrahub/graphql/queries/ipam.py +23 -18
- infrahub/graphql/queries/relationship.py +11 -10
- infrahub/graphql/queries/resource_manager.py +43 -27
- infrahub/graphql/queries/search.py +9 -8
- infrahub/graphql/queries/status.py +12 -9
- infrahub/graphql/queries/task.py +11 -9
- infrahub/graphql/resolvers/resolver.py +69 -43
- infrahub/graphql/resolvers/single_relationship.py +16 -10
- infrahub/graphql/schema.py +2 -0
- infrahub/graphql/subscription/__init__.py +1 -1
- infrahub/graphql/subscription/events.py +1 -1
- infrahub/graphql/subscription/graphql_query.py +8 -8
- infrahub/graphql/types/branch.py +2 -2
- infrahub/graphql/types/common.py +6 -1
- infrahub/graphql/types/enums.py +2 -0
- infrahub/graphql/types/event.py +100 -0
- infrahub/graphql/types/interface.py +2 -2
- infrahub/graphql/types/node.py +3 -3
- infrahub/graphql/types/permission.py +2 -2
- infrahub/graphql/types/relationship.py +3 -3
- infrahub/graphql/types/standard_node.py +9 -11
- infrahub/graphql/utils.py +28 -182
- infrahub/groups/tasks.py +2 -3
- infrahub/lock.py +1 -1
- infrahub/menu/constants.py +1 -0
- infrahub/menu/generator.py +14 -3
- infrahub/menu/menu.py +116 -127
- infrahub/menu/models.py +4 -4
- infrahub/message_bus/messages/__init__.py +0 -4
- infrahub/message_bus/messages/event_branch_merge.py +3 -0
- infrahub/message_bus/messages/request_proposedchange_pipeline.py +2 -0
- infrahub/message_bus/operations/__init__.py +3 -5
- infrahub/message_bus/operations/check/__init__.py +2 -2
- infrahub/message_bus/operations/check/generator.py +1 -3
- infrahub/message_bus/operations/check/repository.py +1 -1
- infrahub/message_bus/operations/event/branch.py +7 -3
- infrahub/message_bus/operations/event/schema.py +1 -1
- infrahub/message_bus/operations/finalize/validator.py +1 -1
- infrahub/message_bus/operations/git/file.py +2 -2
- infrahub/message_bus/operations/git/repository.py +1 -1
- infrahub/message_bus/operations/requests/__init__.py +0 -2
- infrahub/message_bus/operations/requests/generator_definition.py +1 -1
- infrahub/message_bus/operations/requests/proposed_change.py +26 -11
- infrahub/message_bus/operations/requests/repository.py +2 -2
- infrahub/message_bus/operations/send/echo.py +1 -1
- infrahub/message_bus/types.py +1 -1
- infrahub/permissions/__init__.py +2 -1
- infrahub/permissions/types.py +26 -0
- infrahub/pools/prefix.py +29 -165
- infrahub/prefect_server/__init__.py +0 -0
- infrahub/prefect_server/app.py +18 -0
- infrahub/prefect_server/database.py +20 -0
- infrahub/prefect_server/events.py +28 -0
- infrahub/prefect_server/models.py +46 -0
- infrahub/proposed_change/models.py +15 -1
- infrahub/proposed_change/tasks.py +173 -35
- infrahub/pytest_plugin.py +4 -4
- infrahub/server.py +12 -11
- infrahub/services/__init__.py +147 -62
- infrahub/services/adapters/cache/__init__.py +7 -5
- infrahub/services/adapters/cache/nats.py +40 -22
- infrahub/services/adapters/cache/redis.py +0 -4
- infrahub/services/adapters/event/__init__.py +10 -18
- infrahub/services/adapters/http/__init__.py +0 -5
- infrahub/services/adapters/http/httpx.py +22 -15
- infrahub/services/adapters/message_bus/__init__.py +23 -6
- infrahub/services/adapters/message_bus/local.py +8 -6
- infrahub/services/adapters/message_bus/nats.py +12 -6
- infrahub/services/adapters/message_bus/rabbitmq.py +22 -9
- infrahub/services/adapters/workflow/__init__.py +11 -8
- infrahub/services/adapters/workflow/local.py +28 -7
- infrahub/services/adapters/workflow/worker.py +23 -7
- infrahub/services/component.py +38 -35
- infrahub/services/scheduler.py +32 -29
- infrahub/storage.py +2 -4
- infrahub/task_manager/constants.py +1 -1
- infrahub/task_manager/event.py +182 -0
- infrahub/task_manager/models.py +125 -1
- infrahub/task_manager/task.py +1 -1
- infrahub/tasks/artifact.py +14 -16
- infrahub/tasks/registry.py +1 -1
- infrahub/tasks/telemetry.py +13 -14
- infrahub/transformations/tasks.py +3 -5
- infrahub/trigger/__init__.py +0 -0
- infrahub/trigger/catalogue.py +15 -0
- infrahub/trigger/constants.py +9 -0
- infrahub/trigger/models.py +69 -0
- infrahub/trigger/tasks.py +85 -0
- infrahub/types.py +1 -1
- infrahub/utils.py +1 -1
- infrahub/webhook/constants.py +0 -2
- infrahub/webhook/models.py +8 -2
- infrahub/webhook/tasks.py +20 -73
- infrahub/webhook/triggers.py +20 -0
- infrahub/workers/infrahub_async.py +36 -25
- infrahub/workers/utils.py +63 -0
- infrahub/workflows/catalogue.py +13 -37
- infrahub/workflows/initialization.py +6 -8
- infrahub/workflows/models.py +3 -5
- infrahub/workflows/utils.py +1 -1
- infrahub_sdk/ctl/check.py +3 -3
- infrahub_sdk/ctl/cli_commands.py +11 -10
- infrahub_sdk/ctl/exceptions.py +0 -6
- infrahub_sdk/ctl/exporter.py +1 -1
- infrahub_sdk/ctl/generator.py +5 -5
- infrahub_sdk/ctl/importer.py +3 -2
- infrahub_sdk/ctl/menu.py +1 -1
- infrahub_sdk/ctl/object.py +1 -1
- infrahub_sdk/ctl/repository.py +23 -15
- infrahub_sdk/ctl/schema.py +2 -2
- infrahub_sdk/ctl/utils.py +4 -3
- infrahub_sdk/ctl/validate.py +2 -1
- infrahub_sdk/exceptions.py +6 -0
- infrahub_sdk/generator.py +3 -0
- infrahub_sdk/node.py +2 -2
- infrahub_sdk/schema/__init__.py +14 -2
- infrahub_sdk/schema/main.py +7 -0
- infrahub_sdk/utils.py +11 -1
- infrahub_sdk/yaml.py +2 -3
- {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0rc0.dist-info}/METADATA +46 -12
- {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0rc0.dist-info}/RECORD +338 -321
- infrahub_testcontainers/container.py +14 -6
- infrahub_testcontainers/docker-compose.test.yml +24 -5
- infrahub_testcontainers/haproxy.cfg +43 -0
- infrahub_testcontainers/helpers.py +85 -1
- infrahub/core/branch/constants.py +0 -2
- infrahub/graphql/query.py +0 -52
- infrahub/message_bus/messages/request_artifactdefinition_check.py +0 -17
- infrahub/message_bus/operations/requests/artifact_definition.py +0 -148
- infrahub/schema/constants.py +0 -1
- infrahub/schema/tasks.py +0 -76
- infrahub/services/adapters/database/__init__.py +0 -9
- infrahub_sdk/ctl/_file.py +0 -13
- /infrahub/{schema → artifacts}/__init__.py +0 -0
- {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0rc0.dist-info}/LICENSE.txt +0 -0
- {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0rc0.dist-info}/WHEEL +0 -0
- {infrahub_server-1.1.6.dist-info → infrahub_server-1.2.0rc0.dist-info}/entry_points.txt +0 -0
infrahub/git/tasks.py
CHANGED
|
@@ -1,30 +1,22 @@
|
|
|
1
|
-
from datetime import timedelta
|
|
2
|
-
|
|
3
1
|
from infrahub_sdk import InfrahubClient
|
|
4
2
|
from infrahub_sdk.protocols import CoreArtifact, CoreArtifactDefinition, CoreRepository
|
|
5
3
|
from prefect import flow, task
|
|
6
|
-
from prefect.automations import AutomationCore
|
|
7
4
|
from prefect.cache_policies import NONE
|
|
8
|
-
from prefect.client.orchestration import get_client
|
|
9
|
-
from prefect.client.schemas.filters import DeploymentFilter, DeploymentFilterName
|
|
10
|
-
from prefect.events.actions import RunDeployment
|
|
11
|
-
from prefect.events.schemas.automations import EventTrigger, Posture
|
|
12
5
|
from prefect.logging import get_run_logger
|
|
13
6
|
|
|
14
7
|
from infrahub import lock
|
|
8
|
+
from infrahub.context import InfrahubContext
|
|
15
9
|
from infrahub.core.constants import InfrahubKind, RepositoryInternalStatus
|
|
16
10
|
from infrahub.core.registry import registry
|
|
17
11
|
from infrahub.exceptions import RepositoryError
|
|
18
12
|
from infrahub.message_bus import Meta, messages
|
|
19
|
-
from infrahub.services import
|
|
13
|
+
from infrahub.services import InfrahubServices
|
|
20
14
|
from infrahub.worker import WORKER_IDENTITY
|
|
21
|
-
from infrahub.workflows.catalogue import COMPUTED_ATTRIBUTE_SETUP_PYTHON
|
|
22
15
|
|
|
23
16
|
from ..log import get_log_data
|
|
24
17
|
from ..tasks.artifact import define_artifact
|
|
25
18
|
from ..workflows.catalogue import REQUEST_ARTIFACT_DEFINITION_GENERATE, REQUEST_ARTIFACT_GENERATE
|
|
26
19
|
from ..workflows.utils import add_branch_tag, add_tags
|
|
27
|
-
from .constants import AUTOMATION_NAME
|
|
28
20
|
from .models import (
|
|
29
21
|
GitDiffNamesOnly,
|
|
30
22
|
GitDiffNamesOnlyResponse,
|
|
@@ -43,8 +35,7 @@ from .repository import InfrahubReadOnlyRepository, InfrahubRepository, get_init
|
|
|
43
35
|
name="git-repository-add-read-write",
|
|
44
36
|
flow_run_name="Adding repository {model.repository_name} in branch {model.infrahub_branch_name}",
|
|
45
37
|
)
|
|
46
|
-
async def add_git_repository(model: GitRepositoryAdd) -> None:
|
|
47
|
-
service = services.service
|
|
38
|
+
async def add_git_repository(model: GitRepositoryAdd, service: InfrahubServices) -> None:
|
|
48
39
|
await add_tags(branches=[model.infrahub_branch_name], nodes=[model.repository_id])
|
|
49
40
|
|
|
50
41
|
async with lock.registry.get(name=model.repository_name, namespace="repository"):
|
|
@@ -56,8 +47,9 @@ async def add_git_repository(model: GitRepositoryAdd) -> None:
|
|
|
56
47
|
infrahub_branch_name=model.infrahub_branch_name,
|
|
57
48
|
internal_status=model.internal_status,
|
|
58
49
|
default_branch_name=model.default_branch_name,
|
|
50
|
+
service=service,
|
|
59
51
|
)
|
|
60
|
-
await repo.import_objects_from_files(
|
|
52
|
+
await repo.import_objects_from_files( # type: ignore[call-overload]
|
|
61
53
|
infrahub_branch_name=model.infrahub_branch_name, git_branch_name=model.default_branch_name
|
|
62
54
|
)
|
|
63
55
|
if model.internal_status == RepositoryInternalStatus.ACTIVE.value:
|
|
@@ -73,15 +65,14 @@ async def add_git_repository(model: GitRepositoryAdd) -> None:
|
|
|
73
65
|
infrahub_branch_name=model.infrahub_branch_name,
|
|
74
66
|
infrahub_branch_id=model.infrahub_branch_id,
|
|
75
67
|
)
|
|
76
|
-
await service.send(message=notification)
|
|
68
|
+
await service.message_bus.send(message=notification)
|
|
77
69
|
|
|
78
70
|
|
|
79
71
|
@flow(
|
|
80
72
|
name="git-repository-add-read-only",
|
|
81
73
|
flow_run_name="Adding read only repository {model.repository_name} in branch {model.infrahub_branch_name}",
|
|
82
74
|
)
|
|
83
|
-
async def add_git_repository_read_only(model: GitRepositoryAddReadOnly) -> None:
|
|
84
|
-
service = services.service
|
|
75
|
+
async def add_git_repository_read_only(model: GitRepositoryAddReadOnly, service: InfrahubServices) -> None:
|
|
85
76
|
await add_tags(branches=[model.infrahub_branch_name], nodes=[model.repository_id])
|
|
86
77
|
|
|
87
78
|
async with lock.registry.get(name=model.repository_name, namespace="repository"):
|
|
@@ -92,8 +83,9 @@ async def add_git_repository_read_only(model: GitRepositoryAddReadOnly) -> None:
|
|
|
92
83
|
client=service.client,
|
|
93
84
|
ref=model.ref,
|
|
94
85
|
infrahub_branch_name=model.infrahub_branch_name,
|
|
86
|
+
service=service,
|
|
95
87
|
)
|
|
96
|
-
await repo.import_objects_from_files(infrahub_branch_name=model.infrahub_branch_name)
|
|
88
|
+
await repo.import_objects_from_files(infrahub_branch_name=model.infrahub_branch_name) # type: ignore[call-overload]
|
|
97
89
|
if model.internal_status == RepositoryInternalStatus.ACTIVE.value:
|
|
98
90
|
await repo.sync_from_remote()
|
|
99
91
|
|
|
@@ -107,13 +99,12 @@ async def add_git_repository_read_only(model: GitRepositoryAddReadOnly) -> None:
|
|
|
107
99
|
infrahub_branch_name=model.infrahub_branch_name,
|
|
108
100
|
infrahub_branch_id=model.infrahub_branch_id,
|
|
109
101
|
)
|
|
110
|
-
await service.send(message=notification)
|
|
102
|
+
await service.message_bus.send(message=notification)
|
|
111
103
|
|
|
112
104
|
|
|
113
105
|
@flow(name="git-repositories-create-branch", flow_run_name="Create branch '{branch}' in Git Repositories")
|
|
114
|
-
async def create_branch(branch: str, branch_id: str) -> None:
|
|
106
|
+
async def create_branch(branch: str, branch_id: str, service: InfrahubServices) -> None:
|
|
115
107
|
"""Request to the creation of git branches in available repositories."""
|
|
116
|
-
service = services.service
|
|
117
108
|
await add_tags(branches=[branch])
|
|
118
109
|
repositories: list[CoreRepository] = await service.client.filters(kind=CoreRepository)
|
|
119
110
|
batch = await service.client.create_batch()
|
|
@@ -126,6 +117,7 @@ async def create_branch(branch: str, branch_id: str) -> None:
|
|
|
126
117
|
repository_name=repository.name.value,
|
|
127
118
|
repository_id=repository.id,
|
|
128
119
|
repository_location=repository.location.value,
|
|
120
|
+
service=service,
|
|
129
121
|
)
|
|
130
122
|
|
|
131
123
|
async for _, _ in batch.execute():
|
|
@@ -133,9 +125,7 @@ async def create_branch(branch: str, branch_id: str) -> None:
|
|
|
133
125
|
|
|
134
126
|
|
|
135
127
|
@flow(name="git_repositories_sync", flow_run_name="Sync Git Repositories")
|
|
136
|
-
async def sync_remote_repositories() -> None:
|
|
137
|
-
service = services.service
|
|
138
|
-
|
|
128
|
+
async def sync_remote_repositories(service: InfrahubServices) -> None:
|
|
139
129
|
log = get_run_logger()
|
|
140
130
|
|
|
141
131
|
branches = await service.client.branch.all()
|
|
@@ -178,7 +168,7 @@ async def sync_remote_repositories() -> None:
|
|
|
178
168
|
internal_status=active_internal_status,
|
|
179
169
|
default_branch_name=repository_data.repository.default_branch.value,
|
|
180
170
|
)
|
|
181
|
-
await repo.import_objects_from_files(
|
|
171
|
+
await repo.import_objects_from_files( # type: ignore[call-overload]
|
|
182
172
|
git_branch_name=registry.default_branch, infrahub_branch_name=infrahub_branch
|
|
183
173
|
)
|
|
184
174
|
except RepositoryError as exc:
|
|
@@ -197,12 +187,12 @@ async def sync_remote_repositories() -> None:
|
|
|
197
187
|
infrahub_branch_name=infrahub_branch,
|
|
198
188
|
infrahub_branch_id=branches[infrahub_branch].id,
|
|
199
189
|
)
|
|
200
|
-
await service.send(message=message)
|
|
190
|
+
await service.message_bus.send(message=message)
|
|
201
191
|
except RepositoryError as exc:
|
|
202
192
|
log.info(exc.message)
|
|
203
193
|
|
|
204
194
|
|
|
205
|
-
@task(
|
|
195
|
+
@task( # type: ignore[arg-type]
|
|
206
196
|
name="git-branch-create",
|
|
207
197
|
task_run_name="Create branch '{branch}' in repository {repository_name}",
|
|
208
198
|
cache_policy=NONE,
|
|
@@ -214,11 +204,11 @@ async def git_branch_create(
|
|
|
214
204
|
repository_id: str,
|
|
215
205
|
repository_name: str,
|
|
216
206
|
repository_location: str,
|
|
207
|
+
service: InfrahubServices,
|
|
217
208
|
) -> None:
|
|
218
|
-
service = services.service
|
|
219
209
|
log = get_run_logger()
|
|
220
210
|
repo = await InfrahubRepository.init(
|
|
221
|
-
id=repository_id, name=repository_name, location=repository_location, client=client
|
|
211
|
+
id=repository_id, name=repository_name, location=repository_location, client=client, service=service
|
|
222
212
|
)
|
|
223
213
|
|
|
224
214
|
async with lock.registry.get(name=repository_name, namespace="repository"):
|
|
@@ -234,13 +224,12 @@ async def git_branch_create(
|
|
|
234
224
|
infrahub_branch_name=branch,
|
|
235
225
|
infrahub_branch_id=branch_id,
|
|
236
226
|
)
|
|
237
|
-
await service.send(message=message)
|
|
227
|
+
await service.message_bus.send(message=message)
|
|
238
228
|
log.debug("Sent message to all workers to fetch the latest version of the repository (RefreshGitFetch)")
|
|
239
229
|
|
|
240
230
|
|
|
241
231
|
@flow(name="artifact-definition-generate", flow_run_name="Generate all artifacts")
|
|
242
|
-
async def generate_artifact_definition(branch: str) -> None:
|
|
243
|
-
service = services.service
|
|
232
|
+
async def generate_artifact_definition(branch: str, context: InfrahubContext, service: InfrahubServices) -> None:
|
|
244
233
|
await add_branch_tag(branch_name=branch)
|
|
245
234
|
|
|
246
235
|
artifact_definitions = await service.client.all(kind=CoreArtifactDefinition, branch=branch, include=["id"])
|
|
@@ -252,14 +241,12 @@ async def generate_artifact_definition(branch: str) -> None:
|
|
|
252
241
|
artifact_definition_name=artifact_definition.name.value,
|
|
253
242
|
)
|
|
254
243
|
await service.workflow.submit_workflow(
|
|
255
|
-
workflow=REQUEST_ARTIFACT_DEFINITION_GENERATE, parameters={"model": model}
|
|
244
|
+
workflow=REQUEST_ARTIFACT_DEFINITION_GENERATE, context=context, parameters={"model": model}
|
|
256
245
|
)
|
|
257
246
|
|
|
258
247
|
|
|
259
248
|
@flow(name="artifact-generate", flow_run_name="Generate artifact {model.artifact_name}")
|
|
260
|
-
async def generate_artifact(model: RequestArtifactGenerate) -> None:
|
|
261
|
-
service = services.service
|
|
262
|
-
|
|
249
|
+
async def generate_artifact(model: RequestArtifactGenerate, service: InfrahubServices) -> None:
|
|
263
250
|
await add_tags(branches=[model.branch_name], nodes=[model.target_id])
|
|
264
251
|
log = get_run_logger()
|
|
265
252
|
repo = await get_initialized_repo(
|
|
@@ -270,14 +257,14 @@ async def generate_artifact(model: RequestArtifactGenerate) -> None:
|
|
|
270
257
|
commit=model.commit,
|
|
271
258
|
)
|
|
272
259
|
|
|
273
|
-
artifact = await define_artifact(
|
|
260
|
+
artifact = await define_artifact(model=model, service=service)
|
|
274
261
|
|
|
275
262
|
try:
|
|
276
263
|
result = await repo.render_artifact(artifact=artifact, message=model)
|
|
277
264
|
log.debug(
|
|
278
265
|
f"Generated artifact | changed: {result.changed} | {result.checksum} | {result.storage_id}",
|
|
279
266
|
)
|
|
280
|
-
except Exception:
|
|
267
|
+
except Exception:
|
|
281
268
|
log.exception("Failed to generate artifact")
|
|
282
269
|
artifact.status.value = "Error"
|
|
283
270
|
await artifact.save()
|
|
@@ -288,9 +275,10 @@ async def generate_artifact(model: RequestArtifactGenerate) -> None:
|
|
|
288
275
|
name="request_artifact_definitions_generate",
|
|
289
276
|
flow_run_name="Trigger Generation of Artifacts for {model.artifact_definition_name}",
|
|
290
277
|
)
|
|
291
|
-
async def generate_request_artifact_definition(
|
|
292
|
-
|
|
293
|
-
|
|
278
|
+
async def generate_request_artifact_definition(
|
|
279
|
+
model: RequestArtifactDefinitionGenerate, context: InfrahubContext, service: InfrahubServices
|
|
280
|
+
) -> None:
|
|
281
|
+
await add_tags(branches=[model.branch])
|
|
294
282
|
|
|
295
283
|
artifact_definition = await service.client.get(
|
|
296
284
|
kind=CoreArtifactDefinition, id=model.artifact_definition_id, branch=model.branch
|
|
@@ -359,14 +347,12 @@ async def generate_request_artifact_definition(model: RequestArtifactDefinitionG
|
|
|
359
347
|
)
|
|
360
348
|
|
|
361
349
|
await service.workflow.submit_workflow(
|
|
362
|
-
workflow=REQUEST_ARTIFACT_GENERATE, parameters={"model": request_artifact_generate_model}
|
|
350
|
+
workflow=REQUEST_ARTIFACT_GENERATE, context=context, parameters={"model": request_artifact_generate_model}
|
|
363
351
|
)
|
|
364
352
|
|
|
365
353
|
|
|
366
354
|
@flow(name="git-repository-pull-read-only", flow_run_name="Pull latest commit on {model.repository_name}")
|
|
367
|
-
async def pull_read_only(model: GitRepositoryPullReadOnly) -> None:
|
|
368
|
-
service = services.service
|
|
369
|
-
|
|
355
|
+
async def pull_read_only(model: GitRepositoryPullReadOnly, service: InfrahubServices) -> None:
|
|
370
356
|
await add_tags(branches=[model.infrahub_branch_name], nodes=[model.repository_id])
|
|
371
357
|
log = get_run_logger()
|
|
372
358
|
|
|
@@ -383,6 +369,7 @@ async def pull_read_only(model: GitRepositoryPullReadOnly) -> None:
|
|
|
383
369
|
client=service.client,
|
|
384
370
|
ref=model.ref,
|
|
385
371
|
infrahub_branch_name=model.infrahub_branch_name,
|
|
372
|
+
service=service,
|
|
386
373
|
)
|
|
387
374
|
except RepositoryError:
|
|
388
375
|
init_failed = True
|
|
@@ -395,9 +382,10 @@ async def pull_read_only(model: GitRepositoryPullReadOnly) -> None:
|
|
|
395
382
|
client=service.client,
|
|
396
383
|
ref=model.ref,
|
|
397
384
|
infrahub_branch_name=model.infrahub_branch_name,
|
|
385
|
+
service=service,
|
|
398
386
|
)
|
|
399
387
|
|
|
400
|
-
await repo.import_objects_from_files(infrahub_branch_name=model.infrahub_branch_name, commit=model.commit)
|
|
388
|
+
await repo.import_objects_from_files(infrahub_branch_name=model.infrahub_branch_name, commit=model.commit) # type: ignore[call-overload]
|
|
401
389
|
await repo.sync_from_remote(commit=model.commit)
|
|
402
390
|
|
|
403
391
|
# Tell workers to fetch to stay in sync
|
|
@@ -410,16 +398,14 @@ async def pull_read_only(model: GitRepositoryPullReadOnly) -> None:
|
|
|
410
398
|
infrahub_branch_name=model.infrahub_branch_name,
|
|
411
399
|
infrahub_branch_id=model.infrahub_branch_id,
|
|
412
400
|
)
|
|
413
|
-
await service.send(message=message)
|
|
401
|
+
await service.message_bus.send(message=message)
|
|
414
402
|
|
|
415
403
|
|
|
416
404
|
@flow(
|
|
417
405
|
name="git-repository-merge",
|
|
418
406
|
flow_run_name="Merge {model.source_branch} > {model.destination_branch} in git repository",
|
|
419
407
|
)
|
|
420
|
-
async def merge_git_repository(model: GitRepositoryMerge) -> None:
|
|
421
|
-
service = services.service
|
|
422
|
-
|
|
408
|
+
async def merge_git_repository(model: GitRepositoryMerge, service: InfrahubServices) -> None:
|
|
423
409
|
await add_tags(branches=[model.source_branch, model.destination_branch], nodes=[model.repository_id])
|
|
424
410
|
|
|
425
411
|
repo = await InfrahubRepository.init(
|
|
@@ -427,6 +413,7 @@ async def merge_git_repository(model: GitRepositoryMerge) -> None:
|
|
|
427
413
|
name=model.repository_name,
|
|
428
414
|
client=service.client,
|
|
429
415
|
default_branch_name=model.default_branch,
|
|
416
|
+
service=service,
|
|
430
417
|
)
|
|
431
418
|
|
|
432
419
|
if model.internal_status == RepositoryInternalStatus.STAGING.value:
|
|
@@ -455,71 +442,20 @@ async def merge_git_repository(model: GitRepositoryMerge) -> None:
|
|
|
455
442
|
infrahub_branch_name=model.destination_branch,
|
|
456
443
|
infrahub_branch_id=model.destination_branch_id,
|
|
457
444
|
)
|
|
458
|
-
await service.send(message=message)
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
@flow(name="git-commit-automation-setup", flow_run_name="Setup git commit updated event in task-manager")
|
|
462
|
-
async def setup_commit_automation() -> None:
|
|
463
|
-
log = get_run_logger()
|
|
464
|
-
|
|
465
|
-
async with get_client(sync_client=False) as client:
|
|
466
|
-
deployments = {
|
|
467
|
-
item.name: item
|
|
468
|
-
for item in await client.read_deployments(
|
|
469
|
-
deployment_filter=DeploymentFilter(
|
|
470
|
-
name=DeploymentFilterName(any_=[COMPUTED_ATTRIBUTE_SETUP_PYTHON.name])
|
|
471
|
-
)
|
|
472
|
-
)
|
|
473
|
-
}
|
|
474
|
-
if COMPUTED_ATTRIBUTE_SETUP_PYTHON.name not in deployments:
|
|
475
|
-
raise ValueError("Unable to find the deployment for COMPUTED_ATTRIBUTE_SETUP_PYTHON")
|
|
476
|
-
|
|
477
|
-
deployment_id_computed_attribute_setup_python = deployments[COMPUTED_ATTRIBUTE_SETUP_PYTHON.name].id
|
|
478
|
-
|
|
479
|
-
schema_update_automation = await client.find_automation(id_or_name=AUTOMATION_NAME)
|
|
480
|
-
|
|
481
|
-
automation = AutomationCore(
|
|
482
|
-
name=AUTOMATION_NAME,
|
|
483
|
-
description="Trigger actions on schema update event",
|
|
484
|
-
enabled=True,
|
|
485
|
-
trigger=EventTrigger(
|
|
486
|
-
posture=Posture.Reactive,
|
|
487
|
-
expect={"infrahub.repository.update_commit"},
|
|
488
|
-
within=timedelta(0),
|
|
489
|
-
threshold=1,
|
|
490
|
-
),
|
|
491
|
-
actions=[
|
|
492
|
-
RunDeployment(
|
|
493
|
-
source="selected",
|
|
494
|
-
deployment_id=deployment_id_computed_attribute_setup_python,
|
|
495
|
-
parameters={
|
|
496
|
-
"branch_name": "{{ event.resource['infrahub.branch.name'] }}",
|
|
497
|
-
"commit": "{{ event.payload['commit'] }}",
|
|
498
|
-
},
|
|
499
|
-
job_variables={},
|
|
500
|
-
),
|
|
501
|
-
],
|
|
502
|
-
)
|
|
503
|
-
|
|
504
|
-
if schema_update_automation:
|
|
505
|
-
await client.update_automation(automation_id=schema_update_automation.id, automation=automation)
|
|
506
|
-
log.info(f"{AUTOMATION_NAME} Updated")
|
|
507
|
-
else:
|
|
508
|
-
await client.create_automation(automation=automation)
|
|
509
|
-
log.info(f"{AUTOMATION_NAME} Created")
|
|
445
|
+
await service.message_bus.send(message=message)
|
|
510
446
|
|
|
511
447
|
|
|
512
448
|
@flow(name="git-repository-import-object", flow_run_name="Import objects from git repository")
|
|
513
|
-
async def import_objects_from_git_repository(model: GitRepositoryImportObjects) -> None:
|
|
449
|
+
async def import_objects_from_git_repository(model: GitRepositoryImportObjects, service: InfrahubServices) -> None:
|
|
514
450
|
await add_branch_tag(model.infrahub_branch_name)
|
|
515
451
|
repo = await get_initialized_repo(
|
|
516
452
|
repository_id=model.repository_id,
|
|
517
453
|
name=model.repository_name,
|
|
518
|
-
service=
|
|
454
|
+
service=service,
|
|
519
455
|
repository_kind=model.repository_kind,
|
|
520
456
|
commit=model.commit,
|
|
521
457
|
)
|
|
522
|
-
await repo.import_objects_from_files(infrahub_branch_name=model.infrahub_branch_name, commit=model.commit)
|
|
458
|
+
await repo.import_objects_from_files(infrahub_branch_name=model.infrahub_branch_name, commit=model.commit) # type: ignore[call-overload]
|
|
523
459
|
|
|
524
460
|
|
|
525
461
|
@flow(
|
|
@@ -527,9 +463,9 @@ async def import_objects_from_git_repository(model: GitRepositoryImportObjects)
|
|
|
527
463
|
flow_run_name="Collecting modifications between commits {model.first_commit} and {model.second_commit}",
|
|
528
464
|
persist_result=True,
|
|
529
465
|
)
|
|
530
|
-
async def git_repository_diff_names_only(
|
|
531
|
-
|
|
532
|
-
|
|
466
|
+
async def git_repository_diff_names_only(
|
|
467
|
+
model: GitDiffNamesOnly, service: InfrahubServices
|
|
468
|
+
) -> GitDiffNamesOnlyResponse:
|
|
533
469
|
repo = await get_initialized_repo(
|
|
534
470
|
repository_id=model.repository_id,
|
|
535
471
|
name=model.repository_name,
|
|
@@ -67,10 +67,9 @@ def get(
|
|
|
67
67
|
print(f"password={repo.credential.peer.password.value}")
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
# pylint: disable=unused-argument
|
|
71
70
|
@app.command()
|
|
72
71
|
def store(
|
|
73
|
-
input_str: str = typer.Argument(None),
|
|
74
|
-
config_file: str = typer.Argument("infrahub.toml", envvar="INFRAHUB_CONFIG"),
|
|
72
|
+
input_str: str = typer.Argument(None), # noqa: ARG001
|
|
73
|
+
config_file: str = typer.Argument("infrahub.toml", envvar="INFRAHUB_CONFIG"), # noqa: ARG001
|
|
75
74
|
) -> None:
|
|
76
75
|
raise typer.Exit()
|