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/integrator.py
CHANGED
|
@@ -38,10 +38,12 @@ from pydantic import ValidationError as PydanticValidationError
|
|
|
38
38
|
from typing_extensions import Self
|
|
39
39
|
|
|
40
40
|
from infrahub.core.constants import ArtifactStatus, ContentType, InfrahubKind, RepositorySyncStatus
|
|
41
|
+
from infrahub.core.registry import registry
|
|
42
|
+
from infrahub.events.models import EventMeta
|
|
41
43
|
from infrahub.events.repository_action import CommitUpdatedEvent
|
|
42
44
|
from infrahub.exceptions import CheckError, RepositoryInvalidFileSystemError, TransformError
|
|
43
45
|
from infrahub.git.base import InfrahubRepositoryBase, extract_repo_file_information
|
|
44
|
-
from infrahub.
|
|
46
|
+
from infrahub.log import get_logger
|
|
45
47
|
from infrahub.workflows.utils import add_tags
|
|
46
48
|
|
|
47
49
|
if TYPE_CHECKING:
|
|
@@ -52,10 +54,9 @@ if TYPE_CHECKING:
|
|
|
52
54
|
from infrahub_sdk.schema.repository import InfrahubRepositoryArtifactDefinitionConfig
|
|
53
55
|
from infrahub_sdk.transforms import InfrahubTransform
|
|
54
56
|
|
|
57
|
+
from infrahub.core.checks.models import CheckArtifactCreate
|
|
55
58
|
from infrahub.git.models import RequestArtifactGenerate
|
|
56
|
-
from infrahub.
|
|
57
|
-
|
|
58
|
-
# pylint: disable=too-many-lines
|
|
59
|
+
from infrahub.services import InfrahubServices
|
|
59
60
|
|
|
60
61
|
|
|
61
62
|
class ArtifactGenerateResult(BaseModel):
|
|
@@ -120,7 +121,7 @@ class TransformPythonInformation(BaseModel):
|
|
|
120
121
|
"""Timeout for the function."""
|
|
121
122
|
|
|
122
123
|
|
|
123
|
-
class InfrahubRepositoryIntegrator(InfrahubRepositoryBase):
|
|
124
|
+
class InfrahubRepositoryIntegrator(InfrahubRepositoryBase):
|
|
124
125
|
"""
|
|
125
126
|
This class provides interfaces to read and process information from .infrahub.yml files and can perform
|
|
126
127
|
actions for objects defined within those files.
|
|
@@ -130,20 +131,20 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
130
131
|
"""
|
|
131
132
|
|
|
132
133
|
@classmethod
|
|
133
|
-
async def init(cls,
|
|
134
|
-
service = service or InfrahubServices()
|
|
134
|
+
async def init(cls, service: InfrahubServices, commit: str | None = None, **kwargs: Any) -> Self:
|
|
135
135
|
self = cls(service=service, **kwargs)
|
|
136
|
+
log = get_logger()
|
|
136
137
|
try:
|
|
137
138
|
self.validate_local_directories()
|
|
138
139
|
except RepositoryInvalidFileSystemError:
|
|
139
140
|
await self.ensure_location_is_defined()
|
|
140
141
|
await self.create_locally(infrahub_branch_name=self.infrahub_branch_name, update_commit_value=False)
|
|
141
|
-
|
|
142
|
+
log.info(f"Initialized the local directory for {self.name} because it was missing.")
|
|
142
143
|
|
|
143
144
|
if commit:
|
|
144
145
|
self.get_commit_worktree(commit=commit)
|
|
145
146
|
|
|
146
|
-
|
|
147
|
+
log.debug(
|
|
147
148
|
f"Initiated the object on an existing directory for {self.name}",
|
|
148
149
|
)
|
|
149
150
|
return self
|
|
@@ -181,7 +182,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
181
182
|
branch_name=infrahub_branch_name, commit=commit, config_file=config_file
|
|
182
183
|
)
|
|
183
184
|
|
|
184
|
-
await self.import_all_python_files(
|
|
185
|
+
await self.import_all_python_files( # type: ignore[call-overload]
|
|
185
186
|
branch_name=infrahub_branch_name, commit=commit, config_file=config_file
|
|
186
187
|
)
|
|
187
188
|
await self.import_jinja2_transforms(
|
|
@@ -191,7 +192,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
191
192
|
branch_name=infrahub_branch_name, commit=commit, config_file=config_file
|
|
192
193
|
)
|
|
193
194
|
|
|
194
|
-
except Exception as exc:
|
|
195
|
+
except Exception as exc:
|
|
195
196
|
sync_status = RepositorySyncStatus.ERROR_IMPORT
|
|
196
197
|
error = exc
|
|
197
198
|
|
|
@@ -200,9 +201,13 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
200
201
|
if error:
|
|
201
202
|
raise error
|
|
202
203
|
|
|
204
|
+
infrahub_branch = registry.get_branch_from_registry(branch=infrahub_branch_name)
|
|
203
205
|
await self.service.event.send(
|
|
204
206
|
CommitUpdatedEvent(
|
|
205
|
-
|
|
207
|
+
commit=commit,
|
|
208
|
+
repository_name=self.name,
|
|
209
|
+
repository_id=str(self.id),
|
|
210
|
+
meta=EventMeta.with_dummy_context(branch=infrahub_branch),
|
|
206
211
|
)
|
|
207
212
|
)
|
|
208
213
|
|
|
@@ -230,11 +235,11 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
230
235
|
tracker="mutation-repository-update-admin-status",
|
|
231
236
|
)
|
|
232
237
|
|
|
233
|
-
@task(name="import-jinja2-tansforms", task_run_name="Import Jinja2 transform", cache_policy=NONE)
|
|
238
|
+
@task(name="import-jinja2-tansforms", task_run_name="Import Jinja2 transform", cache_policy=NONE) # type: ignore[arg-type]
|
|
234
239
|
async def import_jinja2_transforms(
|
|
235
240
|
self,
|
|
236
241
|
branch_name: str,
|
|
237
|
-
commit: str, #
|
|
242
|
+
commit: str, # noqa: ARG002
|
|
238
243
|
config_file: InfrahubRepositoryConfig,
|
|
239
244
|
) -> None:
|
|
240
245
|
log = get_run_logger()
|
|
@@ -312,7 +317,6 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
312
317
|
async def compare_jinja2_transform(
|
|
313
318
|
cls, existing_transform: CoreTransformJinja2, local_transform: InfrahubRepositoryJinja2
|
|
314
319
|
) -> bool:
|
|
315
|
-
# pylint: disable=no-member
|
|
316
320
|
if (
|
|
317
321
|
existing_transform.description.value != local_transform.description
|
|
318
322
|
or existing_transform.template_path.value != local_transform.template_path
|
|
@@ -325,7 +329,6 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
325
329
|
async def update_jinja2_transform(
|
|
326
330
|
self, existing_transform: CoreTransformJinja2, local_transform: InfrahubRepositoryJinja2
|
|
327
331
|
) -> None:
|
|
328
|
-
# pylint: disable=no-member
|
|
329
332
|
if existing_transform.description.value != local_transform.description:
|
|
330
333
|
existing_transform.description.value = local_transform.description
|
|
331
334
|
|
|
@@ -337,11 +340,11 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
337
340
|
|
|
338
341
|
await existing_transform.save()
|
|
339
342
|
|
|
340
|
-
@task(name="import-artifact-definitions", task_run_name="Import Artifact Definitions", cache_policy=NONE)
|
|
343
|
+
@task(name="import-artifact-definitions", task_run_name="Import Artifact Definitions", cache_policy=NONE) # type: ignore[arg-type]
|
|
341
344
|
async def import_artifact_definitions(
|
|
342
345
|
self,
|
|
343
346
|
branch_name: str,
|
|
344
|
-
commit: str, #
|
|
347
|
+
commit: str, # noqa: ARG002
|
|
345
348
|
config_file: InfrahubRepositoryConfig,
|
|
346
349
|
) -> None:
|
|
347
350
|
log = get_run_logger()
|
|
@@ -438,7 +441,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
438
441
|
|
|
439
442
|
await existing_artifact_definition.save()
|
|
440
443
|
|
|
441
|
-
@task(name="repository-get-config", task_run_name="get repository config", cache_policy=NONE)
|
|
444
|
+
@task(name="repository-get-config", task_run_name="get repository config", cache_policy=NONE) # type: ignore[arg-type]
|
|
442
445
|
async def get_repository_config(self, branch_name: str, commit: str) -> Optional[InfrahubRepositoryConfig]:
|
|
443
446
|
branch_wt = self.get_worktree(identifier=commit or branch_name)
|
|
444
447
|
log = get_run_logger()
|
|
@@ -467,9 +470,8 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
467
470
|
log.error(f"Unable to load the configuration file {config_file_name}, the format is not valid : {exc}")
|
|
468
471
|
return None
|
|
469
472
|
|
|
470
|
-
@task(name="import-schema-files", task_run_name="Import schema files", cache_policy=NONE)
|
|
473
|
+
@task(name="import-schema-files", task_run_name="Import schema files", cache_policy=NONE) # type: ignore[arg-type]
|
|
471
474
|
async def import_schema_files(self, branch_name: str, commit: str, config_file: InfrahubRepositoryConfig) -> None:
|
|
472
|
-
# pylint: disable=too-many-branches
|
|
473
475
|
log = get_run_logger()
|
|
474
476
|
branch_wt = self.get_worktree(identifier=commit or branch_name)
|
|
475
477
|
|
|
@@ -540,7 +542,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
540
542
|
for schema_file in schemas_data:
|
|
541
543
|
log.info(f"schema '{schema_file.identifier}' loaded successfully!")
|
|
542
544
|
|
|
543
|
-
@task(name="import-graphql-queries", task_run_name="Import GraphQL Queries", cache_policy=NONE)
|
|
545
|
+
@task(name="import-graphql-queries", task_run_name="Import GraphQL Queries", cache_policy=NONE) # type: ignore[arg-type]
|
|
544
546
|
async def import_all_graphql_query(
|
|
545
547
|
self, branch_name: str, commit: str, config_file: InfrahubRepositoryConfig
|
|
546
548
|
) -> None:
|
|
@@ -598,7 +600,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
598
600
|
await obj.save()
|
|
599
601
|
return obj
|
|
600
602
|
|
|
601
|
-
@task(name="import-python-check-definitions", task_run_name="Import Python Check Definitions", cache_policy=NONE)
|
|
603
|
+
@task(name="import-python-check-definitions", task_run_name="Import Python Check Definitions", cache_policy=NONE) # type: ignore[arg-type]
|
|
602
604
|
async def import_python_check_definitions(
|
|
603
605
|
self, branch_name: str, commit: str, config_file: InfrahubRepositoryConfig
|
|
604
606
|
) -> None:
|
|
@@ -669,7 +671,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
669
671
|
log.info(f"CheckDefinition '{check_name!r}' not found locally, deleting")
|
|
670
672
|
await check_definition_in_graph[check_name].delete()
|
|
671
673
|
|
|
672
|
-
@task(name="import-generator-definitions", task_run_name="Import Generator Definitions", cache_policy=NONE)
|
|
674
|
+
@task(name="import-generator-definitions", task_run_name="Import Generator Definitions", cache_policy=NONE) # type: ignore[arg-type]
|
|
673
675
|
async def import_generator_definitions(
|
|
674
676
|
self, branch_name: str, commit: str, config_file: InfrahubRepositoryConfig
|
|
675
677
|
) -> None:
|
|
@@ -748,7 +750,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
748
750
|
if targets:
|
|
749
751
|
generator.targets = targets[0].id
|
|
750
752
|
|
|
751
|
-
if (
|
|
753
|
+
if (
|
|
752
754
|
existing_generator.query.id != generator.query
|
|
753
755
|
or existing_generator.file_path.value != str(generator.file_path)
|
|
754
756
|
or existing_generator.class_name.value != generator.class_name
|
|
@@ -759,7 +761,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
759
761
|
return True
|
|
760
762
|
return False
|
|
761
763
|
|
|
762
|
-
@task(name="import-python-transforms", task_run_name="Import Python Transforms", cache_policy=NONE)
|
|
764
|
+
@task(name="import-python-transforms", task_run_name="Import Python Transforms", cache_policy=NONE) # type: ignore[arg-type]
|
|
763
765
|
async def import_python_transforms(
|
|
764
766
|
self, branch_name: str, commit: str, config_file: InfrahubRepositoryConfig
|
|
765
767
|
) -> None:
|
|
@@ -830,7 +832,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
830
832
|
log.info(f"TransformPython {transform_name!r} not found locally, deleting")
|
|
831
833
|
await transform_definition_in_graph[transform_name].delete()
|
|
832
834
|
|
|
833
|
-
@task(name="check-definition-get", task_run_name="Get Check Definition", cache_policy=NONE)
|
|
835
|
+
@task(name="check-definition-get", task_run_name="Get Check Definition", cache_policy=NONE) # type: ignore[arg-type]
|
|
834
836
|
async def get_check_definition(
|
|
835
837
|
self,
|
|
836
838
|
branch_name: str,
|
|
@@ -863,14 +865,14 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
863
865
|
)
|
|
864
866
|
)
|
|
865
867
|
|
|
866
|
-
except Exception as exc:
|
|
868
|
+
except Exception as exc:
|
|
867
869
|
log.error(
|
|
868
870
|
f"An error occurred while processing the CheckDefinition {check_class.__name__} from {file_path} : {exc} "
|
|
869
871
|
)
|
|
870
872
|
raise
|
|
871
873
|
return checks
|
|
872
874
|
|
|
873
|
-
@task(name="python-transform-get", task_run_name="Get Python Transform", cache_policy=NONE)
|
|
875
|
+
@task(name="python-transform-get", task_run_name="Get Python Transform", cache_policy=NONE) # type: ignore[arg-type]
|
|
874
876
|
async def get_python_transforms(
|
|
875
877
|
self, branch_name: str, module: types.ModuleType, file_path: str, transform: InfrahubPythonTransformConfig
|
|
876
878
|
) -> list[TransformPythonInformation]:
|
|
@@ -896,7 +898,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
896
898
|
)
|
|
897
899
|
)
|
|
898
900
|
|
|
899
|
-
except Exception as exc:
|
|
901
|
+
except Exception as exc:
|
|
900
902
|
log.error(
|
|
901
903
|
f"An error occurred while processing the PythonTransform {transform.name} from {file_path} : {exc} "
|
|
902
904
|
)
|
|
@@ -1003,7 +1005,6 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
1003
1005
|
) -> bool:
|
|
1004
1006
|
"""Compare an existing Python Check Object with a Check Class
|
|
1005
1007
|
and identify if we need to update the object in the database."""
|
|
1006
|
-
# pylint: disable=too-many-boolean-expressions
|
|
1007
1008
|
if (
|
|
1008
1009
|
existing_check.query.id != check.query
|
|
1009
1010
|
or existing_check.file_path.value != check.file_path
|
|
@@ -1072,7 +1073,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
1072
1073
|
await self.import_python_transforms(branch_name=branch_name, commit=commit, config_file=config_file)
|
|
1073
1074
|
await self.import_generator_definitions(branch_name=branch_name, commit=commit, config_file=config_file)
|
|
1074
1075
|
|
|
1075
|
-
@task(name="jinja2-template-render", task_run_name="Render Jinja2 template", cache_policy=NONE)
|
|
1076
|
+
@task(name="jinja2-template-render", task_run_name="Render Jinja2 template", cache_policy=NONE) # type: ignore[arg-type]
|
|
1076
1077
|
async def render_jinja2_template(self, commit: str, location: str, data: dict) -> str:
|
|
1077
1078
|
log = get_run_logger()
|
|
1078
1079
|
commit_worktree = self.get_commit_worktree(commit=commit)
|
|
@@ -1088,7 +1089,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
1088
1089
|
log.error(str(exc), exc_info=True)
|
|
1089
1090
|
raise TransformError(repository_name=self.name, commit=commit, location=location, message=str(exc)) from exc
|
|
1090
1091
|
|
|
1091
|
-
@task(name="python-check-execute", task_run_name="Execute Python Check", cache_policy=NONE)
|
|
1092
|
+
@task(name="python-check-execute", task_run_name="Execute Python Check", cache_policy=NONE) # type: ignore[arg-type]
|
|
1092
1093
|
async def execute_python_check(
|
|
1093
1094
|
self,
|
|
1094
1095
|
branch_name: str,
|
|
@@ -1147,7 +1148,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
1147
1148
|
repository_name=self.name, class_name=class_name, commit=commit, location=location, message=str(exc)
|
|
1148
1149
|
) from exc
|
|
1149
1150
|
|
|
1150
|
-
@task(name="python-transform-execute", task_run_name="Execute Python Transform", cache_policy=NONE)
|
|
1151
|
+
@task(name="python-transform-execute", task_run_name="Execute Python Transform", cache_policy=NONE) # type: ignore[arg-type]
|
|
1151
1152
|
async def execute_python_transform(
|
|
1152
1153
|
self, branch_name: str, commit: str, location: str, client: InfrahubClient, data: Optional[dict] = None
|
|
1153
1154
|
) -> Any:
|
|
@@ -1265,7 +1266,7 @@ class InfrahubRepositoryIntegrator(InfrahubRepositoryBase): # pylint: disable=t
|
|
|
1265
1266
|
return ArtifactGenerateResult(changed=True, checksum=checksum, storage_id=storage_id, artifact_id=artifact.id)
|
|
1266
1267
|
|
|
1267
1268
|
async def render_artifact(
|
|
1268
|
-
self, artifact: CoreArtifact, message: Union[
|
|
1269
|
+
self, artifact: CoreArtifact, message: Union[CheckArtifactCreate, RequestArtifactGenerate]
|
|
1269
1270
|
) -> ArtifactGenerateResult:
|
|
1270
1271
|
response = await self.sdk.query_gql_query(
|
|
1271
1272
|
name=message.query,
|
infrahub/git/repository.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any, Union
|
|
3
|
+
from typing import TYPE_CHECKING, Any, Union
|
|
4
4
|
|
|
5
5
|
from git.exc import BadName, GitCommandError
|
|
6
6
|
from infrahub_sdk.exceptions import GraphQLError
|
|
@@ -10,7 +10,9 @@ from infrahub.core.constants import InfrahubKind, RepositoryInternalStatus
|
|
|
10
10
|
from infrahub.exceptions import RepositoryError
|
|
11
11
|
from infrahub.git.integrator import InfrahubRepositoryIntegrator
|
|
12
12
|
from infrahub.log import get_logger
|
|
13
|
-
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from infrahub.services import InfrahubServices
|
|
14
16
|
|
|
15
17
|
log = get_logger()
|
|
16
18
|
|
|
@@ -24,9 +26,8 @@ class InfrahubRepository(InfrahubRepositoryIntegrator):
|
|
|
24
26
|
|
|
25
27
|
@classmethod
|
|
26
28
|
async def new(
|
|
27
|
-
cls, service: InfrahubServices
|
|
29
|
+
cls, service: InfrahubServices, update_commit_value: bool = True, **kwargs: Any
|
|
28
30
|
) -> InfrahubRepository:
|
|
29
|
-
service = service or InfrahubServices()
|
|
30
31
|
self = cls(service=service, **kwargs)
|
|
31
32
|
await self.create_locally(
|
|
32
33
|
infrahub_branch_name=self.infrahub_branch_name, update_commit_value=update_commit_value
|
|
@@ -208,9 +209,7 @@ class InfrahubReadOnlyRepository(InfrahubRepositoryIntegrator):
|
|
|
208
209
|
ref: str | None = Field(None, description="Ref to track on the external repository")
|
|
209
210
|
|
|
210
211
|
@classmethod
|
|
211
|
-
async def new(cls, service: InfrahubServices
|
|
212
|
-
service = service or InfrahubServices()
|
|
213
|
-
|
|
212
|
+
async def new(cls, service: InfrahubServices, **kwargs: Any) -> InfrahubReadOnlyRepository:
|
|
214
213
|
if "ref" not in kwargs or "infrahub_branch_name" not in kwargs:
|
|
215
214
|
raise ValueError("ref and infrahub_branch_name are mandatory to initialize a new Read-Only repository")
|
|
216
215
|
|
|
@@ -219,7 +218,7 @@ class InfrahubReadOnlyRepository(InfrahubRepositoryIntegrator):
|
|
|
219
218
|
log.info("Created new repository locally.", repository=self.name)
|
|
220
219
|
return self
|
|
221
220
|
|
|
222
|
-
def get_commit_value(self, branch_name: str, remote: bool = False) -> str:
|
|
221
|
+
def get_commit_value(self, branch_name: str, remote: bool = False) -> str: # noqa: ARG002
|
|
223
222
|
"""Always get the latest commit for this repository's ref on the remote"""
|
|
224
223
|
git_repo = self.get_git_repo_main()
|
|
225
224
|
git_repo.remotes.origin.fetch()
|