infrahub-server 1.3.0b6__tar.gz → 1.3.1__tar.gz
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_server-1.3.0b6 → infrahub_server-1.3.1}/PKG-INFO +1 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/db.py +7 -5
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/upgrade.py +6 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/attribute.py +5 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/coordinator.py +8 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/field_specifiers.py +1 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/merge.py +2 -2
- infrahub_server-1.3.1/backend/infrahub/core/graph/__init__.py +1 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/__init__.py +2 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m012_convert_account_generic.py +1 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py +2 -2
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m029_duplicates_cleanup.py +2 -2
- infrahub_server-1.3.1/backend/infrahub/core/migrations/graph/m031_check_number_attributes.py +102 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/attribute_rename.py +1 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/__init__.py +5 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/delete.py +3 -3
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/attribute_parameters.py +12 -5
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/basenode_schema.py +107 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/schema_branch.py +17 -5
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/min_max.py +7 -2
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/app.py +5 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/message_bus/nats.py +5 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/scheduler.py +5 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/pyproject.toml +1 -3
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/__init__.py +2 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/node.py +21 -2
- infrahub_server-1.3.0b6/backend/infrahub/core/graph/__init__.py +0 -1
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/LICENSE.txt +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/README.md +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/gather.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/parsers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/actions/triggers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/artifact.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/auth.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/dependencies.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/diff/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/diff/diff.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/diff/validation_models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/exception_handlers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/file.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/internal.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/menu.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/oauth2.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/oidc.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/static/redoc.standalone.js +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/static/swagger-ui-bundle.js +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/static/swagger-ui.css +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/storage.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/api/transformation.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/artifacts/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/artifacts/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/artifacts/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/auth.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/branch/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/branch/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/branch/triggers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/context.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/events.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/git_agent.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/patch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/server.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/cli/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/components.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/gather.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/computed_attribute/triggers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/config.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/constants/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/constants/database.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/context.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/account.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/branch/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/branch/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/branch/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/changelog/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/changelog/diff.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/changelog/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/database.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/infrahubkind.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/relationship_label.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constants/schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constraint/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constraint/node/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/constraint/node/runner.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/convert_object_type/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/convert_object_type/conversion.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/convert_object_type/schema_mapping.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/artifacts/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/artifacts/calculator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/branch_differ.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/calculator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/combiner.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/conflict_transferer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/conflicts_enricher.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/conflicts_extractor.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/data_check_synchronizer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/aggregated.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/cardinality_one.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/hierarchy.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/labels.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/path_identifier.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/enricher/summary_counts.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/ipam_diff_parser.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/merger/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/merger/merger.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/merger/model.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/merger/serializer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/model/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/model/diff.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/model/field_specifiers_map.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/model/path.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/parent_node_adder.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/payload_builder.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/all_conflicts.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/artifact.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/delete_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/diff_get.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/diff_summary.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/drop_nodes.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/field_summary.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/filters.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/get_conflict_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/has_conflicts_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/merge_tracking_id.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/roots_metadata.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/save.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/summary_counts_enricher.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/time_range_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query/update_conflict_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/query_parser.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/repository/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/repository/deserializer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/repository/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/diff/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/enums.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/graph/constraints.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/graph/index.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/graph/schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/initialization.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/integrity/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/integrity/object_conflict/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/integrity/object_conflict/conflict_recorder.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/kinds_getter.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/model.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/reconciler.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/size.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/ipam/utilization.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/merge.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m001_add_version_to_graph.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m002_attribute_is_default.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m003_relationship_parent_optional.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m004_add_attr_documentation.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m005_add_rel_read_only.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m006_add_rel_on_delete.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m007_add_rel_allow_override.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m008_add_human_friendly_id.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m009_add_generate_profile_attr.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m010_add_generate_profile_attr_generic.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m011_remove_profile_relationship_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m013_convert_git_password_credential.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m014_remove_index_attr_value.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m015_diff_format_update.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m016_diff_delete_bug_fix.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m017_add_core_profile.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m018_uniqueness_nulls.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m019_restore_rels_to_time.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m020_duplicate_edges.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m022_add_generate_template_attr.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m024_missing_hierarchy_backfill.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m025_uniqueness_nulls.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m026_0000_prefix_fix.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m027_delete_isolated_nodes.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m028_delete_diffs.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/m030_illegal_edges.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/attribute_add.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/delete_element_in_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/node_duplicate.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/relationship_duplicate.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/query/schema_attribute_update.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/attribute_name_update.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/node_attribute_add.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/node_attribute_remove.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/node_kind_update.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/node_remove.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/placeholder_dummy.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/schema/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/shared.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/base.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/constraints/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/constraints/attribute_uniqueness.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/constraints/grouped_uniqueness.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/constraints/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/create.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/delete_validator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/ipam.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/permissions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/resource_manager/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/resource_manager/ip_address_pool.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/resource_manager/ip_prefix_pool.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/resource_manager/number_pool.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/node/standard.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/path.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/property.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/protocols.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/protocols_base.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/attribute.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/branch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/diff.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/ipam.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/node.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/resource_manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/standard_node.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/subquery.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/task.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/task_log.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/query/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/registry.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/count.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/peer_kind.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/peer_parent.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/peer_relatives.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/constraints/profiles_kind.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/relationship/model.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/root.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/attribute_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/computed_attribute.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/account.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/artifact.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/builtin.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/check.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/core.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/generator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/graphql_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/group.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/ipam.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/lineage.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/menu.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/permission.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/profile.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/propose_change.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/propose_change_comment.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/propose_change_validator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/resource_pool.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/template.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/transform.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/core/webhook.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/deprecated.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/definitions/internal.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/dropdown.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/attribute_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/base_node_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/genericnode_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/node_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generated/relationship_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/generic_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/node_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/profile_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/relationship_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/schema_branch_computed.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/template_schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/task/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/task/task.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/task/task_log.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/task/user_task.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/timestamp.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/aggregated_checker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/choices.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/enum.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/kind.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/length.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/number_pool.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/optional.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/regex.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/attribute/unique.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/checks_runner.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/determiner.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/enum.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/model.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/models/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/models/validate_migration.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/models/violation.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/attribute.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/generate_profile.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/hierarchy.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/inherit_from.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/node/relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/relationship/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/relationship/count.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/relationship/optional.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/relationship/peer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/shared.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/checker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/index.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/model.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/validators/uniqueness/query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/index.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/memgraph.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/metrics.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/neo4j.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/database/validation.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/grouped/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/grouped/node_runner.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/node/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/node/grouped_uniqueness.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/node/uniqueness.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/count.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_kind.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_parent.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/peer_relatives.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/relationship_manager/profiles_kind.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/aggregated.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_choices.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_enum.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_kind.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_length.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_optional.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_regex.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/attribute_uniqueness.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/generate_profile.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/inherit_from.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/node_attribute.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/node_relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/relationship_count.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/relationship_optional.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/relationship_peer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/constraint/schema/uniqueness.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/calculator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/combiner.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/conflict_transferer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/conflicts_enricher.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/conflicts_extractor.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/coordinator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/data_check_conflict_recorder.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/data_check_synchronizer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/deserializer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/diff_merger.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/aggregated.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/cardinality_one.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/hierarchy.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/labels.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/path_identifier.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/enricher/summary_counts.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/ipam_diff_parser.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/parent_node_adder.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/diff/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/ip/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/ip/kinds_getter.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/node/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/builder/node/delete_validator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/component/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/component/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/component/registry.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/dependencies/registry.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/artifact_action.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/branch_action.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/generator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/group_action.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/node_action.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/repository_action.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/schema_action.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/events/validator_action.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/generators/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/generators/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/generators/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/base.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/directory.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/integrator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git/worktree.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git_credential/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git_credential/askpass.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/git_credential/helper.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/analyzer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/api/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/api/dependencies.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/api/endpoints.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/anonymous_checker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/checker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/default_branch_checker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/merge_operation_checker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/object_permission_checker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/auth/query_permission_checker/super_admin_checker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/context.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/directives.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/enums.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/initialization.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/loaders/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/loaders/node.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/loaders/peers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/loaders/shared.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/metrics.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/account.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/action.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/artifact_definition.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/attribute.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/branch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/computed_attribute.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/convert_object_type.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/diff.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/diff_conflict.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/generator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/graphql_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/ipam.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/main.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/menu.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/by_default_filter.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/by_hfid.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/by_id.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/node_getter/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/proposed_change.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/resource_manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/mutations/webhook.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/parser.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/permissions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/account.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/branch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/convert_object_type_mapping.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/diff/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/diff/tree.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/event.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/internal.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/ipam.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/resource_manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/search.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/status.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/queries/task.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/resolvers/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/resolvers/many_relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/resolvers/resolver.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/resolvers/single_relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/subscription/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/subscription/events.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/subscription/graphql_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/attribute.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/branch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/common.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/context.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/enums.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/event.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/node.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/permission.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/standard_node.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/task.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/types/task_log.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/graphql/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/ancestors.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/parsers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/groups/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/helpers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/lock.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/log.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/generator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/menu.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/menu/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/git_file_get.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/git_repository_connectivity.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/refresh_git_fetch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/refresh_registry_branches.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/refresh_registry_rebasedbranch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/messages/send_echo_request.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/git/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/git/file.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/git/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/refresh/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/refresh/registry.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/send/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/operations/send/echo.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/message_bus/types.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/middleware.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/edge_adder.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/edge_deleter.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/edge_updater.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/plan_reader.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/plan_writer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/queries/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/queries/base.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/queries/delete_duplicated_edges.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/runner.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/vertex_adder.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/vertex_deleter.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/patch/vertex_updater.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/backend.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/globals.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/local_backend.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/report.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/permissions/types.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/address.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/number.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/prefix.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/registration.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pools/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/app.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/database.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/events.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/prefect_server/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/branch_diff.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/proposed_change/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/pytest_plugin.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/schema/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/schema/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/schema/triggers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/serve/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/serve/gunicorn_config.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/serve/log.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/serve/worker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/server.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/cache/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/cache/nats.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/cache/redis.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/event/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/http/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/http/httpx.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/message_bus/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/message_bus/local.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/message_bus/rabbitmq.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/workflow/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/workflow/local.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/adapters/workflow/worker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/component.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/services/protocols.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/storage.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/event.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/task_manager/task.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/artifact.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/check.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/dummy.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/keepalive.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/recurring.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/tasks/registry.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/database.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/task_manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/telemetry/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trace.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/transformations/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/transformations/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/transformations/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/transformations/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/catalogue.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/setup.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/trigger/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/types.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/validators/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/validators/events.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/validators/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/visuals.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/gather.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/tasks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/webhook/triggers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/worker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workers/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workers/infrahub_async.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workers/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/catalogue.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/initialization.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/workflows/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/_importer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/analyzer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/async_typer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/batch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/branch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/checks.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/client.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/config.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/context.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/branch.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/check.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/cli.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/cli_commands.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/client.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/config.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/exporter.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/generator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/importer.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/menu.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/object.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/parameters.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/render.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/schema.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/transform.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/ctl/validate.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/data.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/diff.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/generator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/graphql.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/groups.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/jinja2.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/attribute.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/parsers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/property.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/related_node.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/node/relationship.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/object_store.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/operation.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/playback.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_base.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_generator/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_generator/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_generator/generator.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/protocols_generator/template.j2 +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/base.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/check.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/graphql_query.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/jinja2_transform.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/items/python_transform.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/loader.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/plugin.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/pytest_plugin/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/queries.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/query_groups.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/recorder.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/schema/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/schema/main.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/schema/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/spec/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/spec/menu.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/spec/object.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/store.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/manager.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/task/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/template/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/template/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/template/filters.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/template/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/docker.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/repository.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/schemas/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/schemas/animal.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/testing/schemas/car_person.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/timestamp.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/topological_sort.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/exceptions.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/exporter/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/exporter/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/exporter/json.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/importer/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/importer/interface.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/importer/json.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transfer/schema_sorter.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/transforms.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/types.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/utils.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/uuidt.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_sdk/infrahub_sdk/yaml.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/__init__.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/constants.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/container.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/docker-compose-cluster.test.yml +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/docker-compose.test.yml +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/haproxy.cfg +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/helpers.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/host.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/measurements.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/models.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/performance_test.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/plugin.py +0 -0
- {infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/python_testcontainers/infrahub_testcontainers/prometheus.yml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: infrahub-server
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: Infrahub is taking a new approach to Infrastructure Management by providing a new generation of datastore to organize and control all the data that defines how an infrastructure should run.
|
|
5
5
|
License: AGPL-3.0-only
|
|
6
6
|
Author: OpsMill
|
|
@@ -287,10 +287,10 @@ async def index(
|
|
|
287
287
|
await dbdriver.close()
|
|
288
288
|
|
|
289
289
|
|
|
290
|
-
async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check: bool = False) ->
|
|
290
|
+
async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check: bool = False) -> bool:
|
|
291
291
|
"""Apply the latest migrations to the database, this function will print the status directly in the console.
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
Returns a boolean indicating whether a migration failed or if all migrations succeeded.
|
|
294
294
|
|
|
295
295
|
Args:
|
|
296
296
|
db: The database object.
|
|
@@ -306,14 +306,14 @@ async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check
|
|
|
306
306
|
|
|
307
307
|
if not migrations:
|
|
308
308
|
rprint(f"Database up-to-date (v{root_node.graph_version}), no migration to execute.")
|
|
309
|
-
return
|
|
309
|
+
return True
|
|
310
310
|
|
|
311
311
|
rprint(
|
|
312
312
|
f"Database needs to be updated (v{root_node.graph_version} -> v{GRAPH_VERSION}), {len(migrations)} migrations pending"
|
|
313
313
|
)
|
|
314
314
|
|
|
315
315
|
if check:
|
|
316
|
-
return
|
|
316
|
+
return True
|
|
317
317
|
|
|
318
318
|
for migration in migrations:
|
|
319
319
|
execution_result = await migration.execute(db=db)
|
|
@@ -333,7 +333,9 @@ async def migrate_database(db: InfrahubDatabase, initialize: bool = False, check
|
|
|
333
333
|
if validation_result and not validation_result.success:
|
|
334
334
|
for error in validation_result.errors:
|
|
335
335
|
rprint(f" {error}")
|
|
336
|
-
|
|
336
|
+
return False
|
|
337
|
+
|
|
338
|
+
return True
|
|
337
339
|
|
|
338
340
|
|
|
339
341
|
async def initialize_internal_schema() -> None:
|
|
@@ -75,7 +75,12 @@ async def upgrade_cmd(
|
|
|
75
75
|
# -------------------------------------------
|
|
76
76
|
# Upgrade Infrahub Database and Schema
|
|
77
77
|
# -------------------------------------------
|
|
78
|
-
|
|
78
|
+
|
|
79
|
+
if not await migrate_database(db=dbdriver, initialize=False, check=check):
|
|
80
|
+
# A migration failed, stop the upgrade process
|
|
81
|
+
rprint("Upgrade cancelled due to migration failure.")
|
|
82
|
+
await dbdriver.close()
|
|
83
|
+
return
|
|
79
84
|
|
|
80
85
|
await initialize_internal_schema()
|
|
81
86
|
await update_core_schema(db=dbdriver, service=service, initialize=False)
|
|
@@ -31,6 +31,7 @@ from infrahub.helpers import hash_password
|
|
|
31
31
|
|
|
32
32
|
from ..types import ATTRIBUTE_TYPES, LARGE_ATTRIBUTE_TYPES
|
|
33
33
|
from .constants.relationship_label import RELATIONSHIP_TO_NODE_LABEL, RELATIONSHIP_TO_VALUE_LABEL
|
|
34
|
+
from .schema.attribute_parameters import NumberAttributeParameters
|
|
34
35
|
|
|
35
36
|
if TYPE_CHECKING:
|
|
36
37
|
from infrahub.core.branch import Branch
|
|
@@ -255,6 +256,10 @@ class BaseAttribute(FlagPropertyMixin, NodePropertyMixin):
|
|
|
255
256
|
if len(value) > max_length:
|
|
256
257
|
raise ValidationError({name: f"{value} must have a maximum length of {max_length!r}"})
|
|
257
258
|
|
|
259
|
+
# Some invalid values may exist due to https://github.com/opsmill/infrahub/issues/6714.
|
|
260
|
+
if config.SETTINGS.main.schema_strict_mode and isinstance(schema.parameters, NumberAttributeParameters):
|
|
261
|
+
schema.parameters.check_valid_value(value=value, name=name)
|
|
262
|
+
|
|
258
263
|
if schema.enum:
|
|
259
264
|
try:
|
|
260
265
|
schema.convert_value_to_enum(value)
|
|
@@ -4,7 +4,10 @@ from dataclasses import dataclass, field
|
|
|
4
4
|
from typing import TYPE_CHECKING, Iterable, Literal, Sequence, overload
|
|
5
5
|
from uuid import uuid4
|
|
6
6
|
|
|
7
|
+
from prefect import flow
|
|
8
|
+
|
|
7
9
|
from infrahub import lock
|
|
10
|
+
from infrahub.core.branch import Branch # noqa: TC001
|
|
8
11
|
from infrahub.core.timestamp import Timestamp
|
|
9
12
|
from infrahub.exceptions import ValidationError
|
|
10
13
|
from infrahub.log import get_logger
|
|
@@ -22,7 +25,6 @@ from .model.path import (
|
|
|
22
25
|
)
|
|
23
26
|
|
|
24
27
|
if TYPE_CHECKING:
|
|
25
|
-
from infrahub.core.branch import Branch
|
|
26
28
|
from infrahub.core.node import Node
|
|
27
29
|
|
|
28
30
|
from .calculator import DiffCalculator
|
|
@@ -301,6 +303,11 @@ class DiffCoordinator:
|
|
|
301
303
|
force_branch_refresh: Literal[False] = ...,
|
|
302
304
|
) -> tuple[EnrichedDiffs | EnrichedDiffsMetadata, set[NodeIdentifier]]: ...
|
|
303
305
|
|
|
306
|
+
@flow( # type: ignore[misc]
|
|
307
|
+
name="update-diff",
|
|
308
|
+
flow_run_name="Update diff for {base_branch.name} - {diff_branch.name}: ({from_time}-{to_time}),tracking_id={tracking_id}",
|
|
309
|
+
validate_parameters=False,
|
|
310
|
+
)
|
|
304
311
|
async def _update_diffs(
|
|
305
312
|
self,
|
|
306
313
|
base_branch: Branch,
|
|
@@ -15,7 +15,7 @@ class EnrichedDiffFieldSpecifiersQuery(Query):
|
|
|
15
15
|
async def query_init(self, db: InfrahubDatabase, **kwargs: Any) -> None: # noqa: ARG002
|
|
16
16
|
self.params["diff_id"] = self.diff_id
|
|
17
17
|
query = """
|
|
18
|
-
CALL {
|
|
18
|
+
CALL () {
|
|
19
19
|
MATCH (root:DiffRoot {uuid: $diff_id})-[:DIFF_HAS_NODE]->(node:DiffNode)-[:DIFF_HAS_ATTRIBUTE]->(attr:DiffAttribute)
|
|
20
20
|
WHERE (root.is_merged IS NULL OR root.is_merged <> TRUE)
|
|
21
21
|
RETURN node.uuid AS node_uuid, node.kind AS node_kind, attr.name AS field_name
|
|
@@ -710,14 +710,14 @@ class DiffMergeRollbackQuery(Query):
|
|
|
710
710
|
// ---------------------------
|
|
711
711
|
// reset to times on target branch
|
|
712
712
|
// ---------------------------
|
|
713
|
-
CALL {
|
|
713
|
+
CALL () {
|
|
714
714
|
OPTIONAL MATCH ()-[r_to {to: $at, branch: $target_branch}]-()
|
|
715
715
|
SET r_to.to = NULL
|
|
716
716
|
}
|
|
717
717
|
// ---------------------------
|
|
718
718
|
// reset from times on target branch
|
|
719
719
|
// ---------------------------
|
|
720
|
-
CALL {
|
|
720
|
+
CALL () {
|
|
721
721
|
OPTIONAL MATCH ()-[r_from {from: $at, branch: $target_branch}]-()
|
|
722
722
|
DELETE r_from
|
|
723
723
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GRAPH_VERSION = 31
|
{infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/migrations/graph/__init__.py
RENAMED
|
@@ -32,6 +32,7 @@ from .m027_delete_isolated_nodes import Migration027
|
|
|
32
32
|
from .m028_delete_diffs import Migration028
|
|
33
33
|
from .m029_duplicates_cleanup import Migration029
|
|
34
34
|
from .m030_illegal_edges import Migration030
|
|
35
|
+
from .m031_check_number_attributes import Migration031
|
|
35
36
|
|
|
36
37
|
if TYPE_CHECKING:
|
|
37
38
|
from infrahub.core.root import Root
|
|
@@ -69,6 +70,7 @@ MIGRATIONS: list[type[GraphMigration | InternalSchemaMigration | ArbitraryMigrat
|
|
|
69
70
|
Migration028,
|
|
70
71
|
Migration029,
|
|
71
72
|
Migration030,
|
|
73
|
+
Migration031,
|
|
72
74
|
]
|
|
73
75
|
|
|
74
76
|
|
|
@@ -61,7 +61,7 @@ class Migration012RenameTypeAttributeData(AttributeRenameQuery):
|
|
|
61
61
|
def render_match(self) -> str:
|
|
62
62
|
query = """
|
|
63
63
|
// Find all the active nodes
|
|
64
|
-
CALL {
|
|
64
|
+
CALL () {
|
|
65
65
|
MATCH (node:%(node_kind)s)
|
|
66
66
|
WHERE exists((node)-[:HAS_ATTRIBUTE]-(:Attribute { name: $prev_attr.name }))
|
|
67
67
|
AND NOT exists((node)-[:HAS_ATTRIBUTE]-(:Attribute { name: $new_attr.name }))
|
|
@@ -52,7 +52,7 @@ class DedupCardinalityOneRelsQuery(Query):
|
|
|
52
52
|
# of a one-to-many BIDIR relationship.
|
|
53
53
|
query = """
|
|
54
54
|
|
|
55
|
-
CALL {
|
|
55
|
+
CALL () {
|
|
56
56
|
MATCH (rel_node: Relationship)-[edge:IS_RELATED]->(n: Node)<-[edge_2:IS_RELATED]-(rel_node_2: Relationship {name: rel_node.name})
|
|
57
57
|
WHERE rel_node.name in $rel_one_identifiers_inbound[n.kind]
|
|
58
58
|
AND edge.branch = edge_2.branch
|
|
@@ -64,7 +64,7 @@ class DedupCardinalityOneRelsQuery(Query):
|
|
|
64
64
|
DETACH DELETE rel_node
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
CALL {
|
|
67
|
+
CALL () {
|
|
68
68
|
MATCH (rel_node_3: Relationship)<-[edge_3:IS_RELATED]-(n: Node)-[edge_4:IS_RELATED]->(rel_node_4: Relationship {name: rel_node_3.name})
|
|
69
69
|
WHERE rel_node_3.name in $rel_one_identifiers_outbound[n.kind]
|
|
70
70
|
AND edge_3.branch = edge_4.branch
|
|
@@ -535,12 +535,12 @@ class PerformHardDeletes(Query):
|
|
|
535
535
|
|
|
536
536
|
async def query_init(self, db: InfrahubDatabase, **kwargs: dict[str, Any]) -> None: # noqa: ARG002
|
|
537
537
|
query = """
|
|
538
|
-
CALL {
|
|
538
|
+
CALL () {
|
|
539
539
|
MATCH (n)
|
|
540
540
|
WHERE n.to_delete = TRUE
|
|
541
541
|
DETACH DELETE n
|
|
542
542
|
}
|
|
543
|
-
CALL {
|
|
543
|
+
CALL () {
|
|
544
544
|
MATCH ()-[e]-()
|
|
545
545
|
WHERE e.to_delete = TRUE
|
|
546
546
|
DELETE e
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Sequence
|
|
4
|
+
|
|
5
|
+
from infrahub import config
|
|
6
|
+
from infrahub.core import registry
|
|
7
|
+
from infrahub.core.branch import Branch
|
|
8
|
+
from infrahub.core.constants import SchemaPathType
|
|
9
|
+
from infrahub.core.initialization import initialization
|
|
10
|
+
from infrahub.core.migrations.shared import InternalSchemaMigration, MigrationResult, SchemaMigration
|
|
11
|
+
from infrahub.core.path import SchemaPath
|
|
12
|
+
from infrahub.core.schema import GenericSchema, NodeSchema
|
|
13
|
+
from infrahub.core.schema.attribute_parameters import NumberAttributeParameters
|
|
14
|
+
from infrahub.core.validators.attribute.min_max import AttributeNumberChecker
|
|
15
|
+
from infrahub.core.validators.enum import ConstraintIdentifier
|
|
16
|
+
from infrahub.core.validators.model import SchemaConstraintValidatorRequest
|
|
17
|
+
from infrahub.lock import initialize_lock
|
|
18
|
+
from infrahub.log import get_logger
|
|
19
|
+
from infrahub.types import Number
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from infrahub.database import InfrahubDatabase
|
|
23
|
+
|
|
24
|
+
log = get_logger()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class Migration031(InternalSchemaMigration):
|
|
28
|
+
"""
|
|
29
|
+
Some nodes with invalid number attributes may have been created as min/max/excluded_values were not working properly.
|
|
30
|
+
This migration indicates corrupted nodes. If strict mode is disabled, both this migration and min/max/excludes_values constraints are disabled,
|
|
31
|
+
so that users can carry one with their corrupted data without any failure.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
name: str = "031_check_number_attributes"
|
|
35
|
+
minimum_version: int = 30
|
|
36
|
+
migrations: Sequence[SchemaMigration] = []
|
|
37
|
+
|
|
38
|
+
async def execute(self, db: InfrahubDatabase) -> MigrationResult:
|
|
39
|
+
"""Retrieve all number attributes that have a min/max/excluded_values
|
|
40
|
+
For any of these attributes, check if corresponding existing nodes are valid."""
|
|
41
|
+
|
|
42
|
+
if not config.SETTINGS.main.schema_strict_mode:
|
|
43
|
+
return MigrationResult()
|
|
44
|
+
|
|
45
|
+
# load schemas from database into registry
|
|
46
|
+
initialize_lock()
|
|
47
|
+
await initialization(db=db)
|
|
48
|
+
|
|
49
|
+
node_id_to_error_message = {}
|
|
50
|
+
|
|
51
|
+
branches = await Branch.get_list(db=db)
|
|
52
|
+
for branch in branches: # noqa
|
|
53
|
+
schema_branch = await registry.schema.load_schema_from_db(db=db, branch=branch)
|
|
54
|
+
for node_schema_kind in schema_branch.node_names:
|
|
55
|
+
schema = schema_branch.get_node(name=node_schema_kind, duplicate=False)
|
|
56
|
+
if not isinstance(schema, (NodeSchema, GenericSchema)):
|
|
57
|
+
continue
|
|
58
|
+
|
|
59
|
+
for attr in schema.attributes:
|
|
60
|
+
if attr.kind != Number.label:
|
|
61
|
+
continue
|
|
62
|
+
|
|
63
|
+
# Check if the attribute has a min/max/excluded_values being violated
|
|
64
|
+
if isinstance(attr.parameters, NumberAttributeParameters) and (
|
|
65
|
+
attr.parameters.min_value is not None
|
|
66
|
+
or attr.parameters.max_value is not None
|
|
67
|
+
or attr.parameters.excluded_values
|
|
68
|
+
):
|
|
69
|
+
request = SchemaConstraintValidatorRequest(
|
|
70
|
+
branch=branch,
|
|
71
|
+
constraint_name=ConstraintIdentifier.ATTRIBUTE_PARAMETERS_MIN_VALUE_UPDATE.value,
|
|
72
|
+
node_schema=schema,
|
|
73
|
+
schema_path=SchemaPath(
|
|
74
|
+
path_type=SchemaPathType.ATTRIBUTE, schema_kind=schema.kind, field_name=attr.name
|
|
75
|
+
),
|
|
76
|
+
schema_branch=db.schema.get_schema_branch(name=registry.default_branch),
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
constraint_checker = AttributeNumberChecker(db=db, branch=branch)
|
|
80
|
+
grouped_data_paths = await constraint_checker.check(request)
|
|
81
|
+
data_paths = grouped_data_paths[0].get_all_data_paths()
|
|
82
|
+
for data_path in data_paths:
|
|
83
|
+
# Avoid having duplicated error messages for nodes present on multiple branches.
|
|
84
|
+
if data_path.node_id not in node_id_to_error_message:
|
|
85
|
+
node_id_to_error_message[data_path.node_id] = (
|
|
86
|
+
f"Node {data_path.node_id} on branch {branch.name} "
|
|
87
|
+
f"has an invalid Number attribute {data_path.field_name}: {data_path.value}"
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
if len(node_id_to_error_message) == 0:
|
|
91
|
+
return MigrationResult()
|
|
92
|
+
|
|
93
|
+
error_str = (
|
|
94
|
+
"Following nodes attributes values must be updated to not violate corresponding min_value, "
|
|
95
|
+
"max_value or excluded_values schema constraints"
|
|
96
|
+
)
|
|
97
|
+
errors_messages = list(node_id_to_error_message.values())
|
|
98
|
+
return MigrationResult(errors=[error_str] + errors_messages)
|
|
99
|
+
|
|
100
|
+
async def validate_migration(self, db: InfrahubDatabase) -> MigrationResult: # noqa: ARG002
|
|
101
|
+
result = MigrationResult()
|
|
102
|
+
return result
|
|
@@ -38,7 +38,7 @@ class AttributeRenameQuery(Query):
|
|
|
38
38
|
def render_match(self) -> str:
|
|
39
39
|
query = """
|
|
40
40
|
// Find all the active nodes
|
|
41
|
-
CALL {
|
|
41
|
+
CALL () {
|
|
42
42
|
MATCH (node:%(node_kind)s)
|
|
43
43
|
WHERE exists((node)-[:HAS_ATTRIBUTE]-(:Attribute { name: $prev_attr.name }))
|
|
44
44
|
RETURN node
|
|
@@ -70,7 +70,9 @@ log = get_logger()
|
|
|
70
70
|
|
|
71
71
|
class Node(BaseNode, metaclass=BaseNodeMeta):
|
|
72
72
|
@classmethod
|
|
73
|
-
def __init_subclass_with_meta__(
|
|
73
|
+
def __init_subclass_with_meta__(
|
|
74
|
+
cls, _meta: BaseNodeOptions | None = None, default_filter: None = None, **options: dict[str, Any]
|
|
75
|
+
) -> None:
|
|
74
76
|
if not _meta:
|
|
75
77
|
_meta = BaseNodeOptions(cls)
|
|
76
78
|
|
|
@@ -959,6 +961,8 @@ class Node(BaseNode, metaclass=BaseNodeMeta):
|
|
|
959
961
|
if relationship.kind == RelationshipKind.PARENT:
|
|
960
962
|
return relationship.name
|
|
961
963
|
|
|
964
|
+
return None
|
|
965
|
+
|
|
962
966
|
async def get_object_template(self, db: InfrahubDatabase) -> CoreObjectTemplate | None:
|
|
963
967
|
object_template: RelationshipManager = getattr(self, OBJECT_TEMPLATE_RELATIONSHIP_NAME, None)
|
|
964
968
|
return (
|
|
@@ -21,7 +21,7 @@ class DeleteAfterTimeQuery(Query):
|
|
|
21
21
|
// ---------------------
|
|
22
22
|
// Reset edges with to time after timestamp
|
|
23
23
|
// ---------------------
|
|
24
|
-
CALL {
|
|
24
|
+
CALL () {
|
|
25
25
|
OPTIONAL MATCH (p)-[r]-(q)
|
|
26
26
|
WHERE r.to > $timestamp
|
|
27
27
|
SET r.to = NULL
|
|
@@ -33,7 +33,7 @@ class DeleteAfterTimeQuery(Query):
|
|
|
33
33
|
// ---------------------
|
|
34
34
|
// Delete edges with from time after timestamp timestamp
|
|
35
35
|
// ---------------------
|
|
36
|
-
CALL {
|
|
36
|
+
CALL () {
|
|
37
37
|
OPTIONAL MATCH (p)-[r]->(q)
|
|
38
38
|
WHERE r.from > $timestamp
|
|
39
39
|
DELETE r
|
|
@@ -49,7 +49,7 @@ class DeleteAfterTimeQuery(Query):
|
|
|
49
49
|
// ---------------------
|
|
50
50
|
// Delete edges with from time after timestamp timestamp
|
|
51
51
|
// ---------------------
|
|
52
|
-
CALL {
|
|
52
|
+
CALL () {
|
|
53
53
|
OPTIONAL MATCH (p)-[r]->(q)
|
|
54
54
|
WHERE r.from > $timestamp
|
|
55
55
|
DELETE r
|
|
@@ -8,6 +8,7 @@ from pydantic import ConfigDict, Field, model_validator
|
|
|
8
8
|
from infrahub import config
|
|
9
9
|
from infrahub.core.constants.schema import UpdateSupport
|
|
10
10
|
from infrahub.core.models import HashableModel
|
|
11
|
+
from infrahub.exceptions import ValidationError
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
def get_attribute_parameters_class_for_kind(kind: str) -> type[AttributeParameters]:
|
|
@@ -124,16 +125,22 @@ class NumberAttributeParameters(AttributeParameters):
|
|
|
124
125
|
return ranges
|
|
125
126
|
|
|
126
127
|
def is_valid_value(self, value: int) -> bool:
|
|
127
|
-
|
|
128
|
+
try:
|
|
129
|
+
self.check_valid_value(value=value, name="UNUSED")
|
|
130
|
+
except ValidationError:
|
|
128
131
|
return False
|
|
132
|
+
return True
|
|
133
|
+
|
|
134
|
+
def check_valid_value(self, value: int, name: str) -> None:
|
|
135
|
+
if self.min_value is not None and value < self.min_value:
|
|
136
|
+
raise ValidationError({name: f"{value} is lower than the minimum allowed value {self.min_value!r}"})
|
|
129
137
|
if self.max_value is not None and value > self.max_value:
|
|
130
|
-
|
|
138
|
+
raise ValidationError({name: f"{value} is higher than the maximum allowed value {self.max_value!r}"})
|
|
131
139
|
if value in self.get_excluded_single_values():
|
|
132
|
-
|
|
140
|
+
raise ValidationError({name: f"{value} is in the excluded values"})
|
|
133
141
|
for start, end in self.get_excluded_ranges():
|
|
134
142
|
if start <= value <= end:
|
|
135
|
-
|
|
136
|
-
return True
|
|
143
|
+
raise ValidationError({name: f"{value} is in an the excluded range {start}-{end}"})
|
|
137
144
|
|
|
138
145
|
|
|
139
146
|
class NumberPoolParameters(AttributeParameters):
|
{infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/basenode_schema.py
RENAMED
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import hashlib
|
|
4
4
|
import keyword
|
|
5
5
|
import os
|
|
6
|
+
from collections import defaultdict
|
|
6
7
|
from dataclasses import asdict, dataclass
|
|
7
8
|
from enum import Enum
|
|
8
9
|
from typing import TYPE_CHECKING, Any, Callable, Iterable, Literal, overload
|
|
@@ -10,7 +11,7 @@ from typing import TYPE_CHECKING, Any, Callable, Iterable, Literal, overload
|
|
|
10
11
|
from infrahub_sdk.utils import compare_lists, intersection
|
|
11
12
|
from pydantic import field_validator
|
|
12
13
|
|
|
13
|
-
from infrahub.core.constants import RelationshipCardinality, RelationshipKind
|
|
14
|
+
from infrahub.core.constants import HashableModelState, RelationshipCardinality, RelationshipKind
|
|
14
15
|
from infrahub.core.models import HashableModel, HashableModelDiff
|
|
15
16
|
|
|
16
17
|
from .attribute_schema import AttributeSchema, get_attribute_schema_class_for_kind
|
|
@@ -514,7 +515,86 @@ class BaseNodeSchema(GeneratedBaseNodeSchema):
|
|
|
514
515
|
return UniquenessConstraintType.SUBSET_OF_HFID
|
|
515
516
|
return UniquenessConstraintType.STANDARD
|
|
516
517
|
|
|
518
|
+
def _update_schema_paths(
|
|
519
|
+
self, schema_paths_list: list[str], field_name_update_map: dict[str, str], deleted_field_names: set[str]
|
|
520
|
+
) -> list[str]:
|
|
521
|
+
"""
|
|
522
|
+
For each schema_path (eg name__value, device__name_value), update the field name if the current name is
|
|
523
|
+
in field_name_update_map, remove the path if the field name is in deleted_field_names
|
|
524
|
+
"""
|
|
525
|
+
updated_element_list = []
|
|
526
|
+
for schema_path in schema_paths_list:
|
|
527
|
+
split_path = schema_path.split("__", maxsplit=1)
|
|
528
|
+
current_field_name = split_path[0]
|
|
529
|
+
if current_field_name in deleted_field_names:
|
|
530
|
+
continue
|
|
531
|
+
new_field_name = field_name_update_map.get(current_field_name)
|
|
532
|
+
if not new_field_name:
|
|
533
|
+
updated_element_list.append(schema_path)
|
|
534
|
+
continue
|
|
535
|
+
rest_of_path = f"__{split_path[1]}" if len(split_path) > 1 else ""
|
|
536
|
+
new_element_str = f"{new_field_name}{rest_of_path}"
|
|
537
|
+
updated_element_list.append(new_element_str)
|
|
538
|
+
return updated_element_list
|
|
539
|
+
|
|
540
|
+
def handle_field_renames_and_deletes(self, other: BaseNodeSchema) -> None:
|
|
541
|
+
properties_to_update = [self.uniqueness_constraints, self.human_friendly_id, self.display_labels, self.order_by]
|
|
542
|
+
if not any(p for p in properties_to_update):
|
|
543
|
+
return
|
|
544
|
+
|
|
545
|
+
deleted_names: set[str] = set()
|
|
546
|
+
field_names_by_id = defaultdict(list)
|
|
547
|
+
for field in self.attributes + self.relationships:
|
|
548
|
+
if not field.id:
|
|
549
|
+
continue
|
|
550
|
+
field_names_by_id[field.id].append(field.name)
|
|
551
|
+
for field in other.attributes + other.relationships:
|
|
552
|
+
# identify fields deleted in the other schema
|
|
553
|
+
if field.state is HashableModelState.ABSENT:
|
|
554
|
+
deleted_names.add(field.name)
|
|
555
|
+
if not field.id:
|
|
556
|
+
continue
|
|
557
|
+
if field.name not in field_names_by_id[field.id]:
|
|
558
|
+
field_names_by_id[field.id].append(field.name)
|
|
559
|
+
# identify fields renamed from this schema to the other schema
|
|
560
|
+
renamed_field_name_map = {v[0]: v[-1] for v in field_names_by_id.values() if len(v) > 1}
|
|
561
|
+
|
|
562
|
+
if self.uniqueness_constraints:
|
|
563
|
+
updated_constraints = []
|
|
564
|
+
for constraint in self.uniqueness_constraints:
|
|
565
|
+
updated_constraint = self._update_schema_paths(
|
|
566
|
+
schema_paths_list=constraint,
|
|
567
|
+
field_name_update_map=renamed_field_name_map,
|
|
568
|
+
deleted_field_names=deleted_names,
|
|
569
|
+
)
|
|
570
|
+
if updated_constraint:
|
|
571
|
+
updated_constraints.append(updated_constraint)
|
|
572
|
+
self.uniqueness_constraints = updated_constraints
|
|
573
|
+
if self.human_friendly_id:
|
|
574
|
+
self.human_friendly_id = self._update_schema_paths(
|
|
575
|
+
schema_paths_list=self.human_friendly_id,
|
|
576
|
+
field_name_update_map=renamed_field_name_map,
|
|
577
|
+
deleted_field_names=deleted_names,
|
|
578
|
+
)
|
|
579
|
+
if self.display_labels:
|
|
580
|
+
self.display_labels = self._update_schema_paths(
|
|
581
|
+
schema_paths_list=self.display_labels,
|
|
582
|
+
field_name_update_map=renamed_field_name_map,
|
|
583
|
+
deleted_field_names=deleted_names,
|
|
584
|
+
)
|
|
585
|
+
if self.order_by:
|
|
586
|
+
self.order_by = self._update_schema_paths(
|
|
587
|
+
schema_paths_list=self.order_by,
|
|
588
|
+
field_name_update_map=renamed_field_name_map,
|
|
589
|
+
deleted_field_names=deleted_names,
|
|
590
|
+
)
|
|
591
|
+
|
|
517
592
|
def update(self, other: HashableModel) -> Self:
|
|
593
|
+
# handle renamed/deleted field updates for schema properties here
|
|
594
|
+
# so that they can still be overridden during the call to `update()` below
|
|
595
|
+
if isinstance(other, BaseNodeSchema):
|
|
596
|
+
self.handle_field_renames_and_deletes(other=other)
|
|
597
|
+
|
|
518
598
|
super().update(other=other)
|
|
519
599
|
|
|
520
600
|
# Allow to specify empty string to remove existing fields values
|
|
@@ -551,6 +631,24 @@ class SchemaAttributePath:
|
|
|
551
631
|
attribute_schema: AttributeSchema | None = None
|
|
552
632
|
attribute_property_name: str | None = None
|
|
553
633
|
|
|
634
|
+
def __str__(self) -> str:
|
|
635
|
+
return self.to_string()
|
|
636
|
+
|
|
637
|
+
def to_string(self, field_name_override: str | None = None) -> str:
|
|
638
|
+
str_path = ""
|
|
639
|
+
if self.relationship_schema:
|
|
640
|
+
str_path += field_name_override or self.relationship_schema.name
|
|
641
|
+
if self.attribute_schema:
|
|
642
|
+
if str_path:
|
|
643
|
+
str_path += "__"
|
|
644
|
+
attr_name = self.attribute_schema.name
|
|
645
|
+
else:
|
|
646
|
+
attr_name = field_name_override or self.attribute_schema.name
|
|
647
|
+
str_path += attr_name
|
|
648
|
+
if self.attribute_property_name:
|
|
649
|
+
str_path += f"__{self.attribute_property_name}"
|
|
650
|
+
return str_path
|
|
651
|
+
|
|
554
652
|
@property
|
|
555
653
|
def is_type_attribute(self) -> bool:
|
|
556
654
|
return bool(self.attribute_schema and not self.related_schema and not self.relationship_schema)
|
|
@@ -563,6 +661,14 @@ class SchemaAttributePath:
|
|
|
563
661
|
def has_property(self) -> bool:
|
|
564
662
|
return bool(self.attribute_property_name)
|
|
565
663
|
|
|
664
|
+
@property
|
|
665
|
+
def field_name(self) -> str | None:
|
|
666
|
+
if self.relationship_schema:
|
|
667
|
+
return self.relationship_schema.name
|
|
668
|
+
if self.attribute_schema:
|
|
669
|
+
return self.attribute_schema.name
|
|
670
|
+
return None
|
|
671
|
+
|
|
566
672
|
@property
|
|
567
673
|
def active_relationship_schema(self) -> RelationshipSchema:
|
|
568
674
|
if self.relationship_schema:
|
{infrahub_server-1.3.0b6 → infrahub_server-1.3.1}/backend/infrahub/core/schema/schema_branch.py
RENAMED
|
@@ -710,7 +710,9 @@ class SchemaBranch:
|
|
|
710
710
|
):
|
|
711
711
|
unique_attrs_in_constraints.add(schema_attribute_path.attribute_schema.name)
|
|
712
712
|
|
|
713
|
-
unique_attrs_in_attrs = {
|
|
713
|
+
unique_attrs_in_attrs = {
|
|
714
|
+
attr_schema.name for attr_schema in node_schema.unique_attributes if not attr_schema.inherited
|
|
715
|
+
}
|
|
714
716
|
if unique_attrs_in_attrs == unique_attrs_in_constraints:
|
|
715
717
|
continue
|
|
716
718
|
|
|
@@ -822,11 +824,16 @@ class SchemaBranch:
|
|
|
822
824
|
) from exc
|
|
823
825
|
|
|
824
826
|
def _is_attr_combination_unique(
|
|
825
|
-
self, attrs_paths: list[str], uniqueness_constraints: list[list[str]] | None
|
|
827
|
+
self, attrs_paths: list[str], uniqueness_constraints: list[list[str]] | None, unique_attribute_names: list[str]
|
|
826
828
|
) -> bool:
|
|
827
829
|
"""
|
|
828
|
-
Return whether at least one combination of any length of `attrs_paths` is
|
|
830
|
+
Return whether at least one combination of any length of `attrs_paths` is unique
|
|
829
831
|
"""
|
|
832
|
+
if unique_attribute_names:
|
|
833
|
+
for attr_path in attrs_paths:
|
|
834
|
+
for unique_attr_name in unique_attribute_names:
|
|
835
|
+
if attr_path.startswith(unique_attr_name):
|
|
836
|
+
return True
|
|
830
837
|
|
|
831
838
|
if not uniqueness_constraints:
|
|
832
839
|
return False
|
|
@@ -868,9 +875,14 @@ class SchemaBranch:
|
|
|
868
875
|
if config.SETTINGS.main.schema_strict_mode:
|
|
869
876
|
# For every relationship referred within hfid, check whether the combination of attributes is unique is the peer schema node
|
|
870
877
|
for related_schema, attrs_paths in rel_schemas_to_paths.values():
|
|
871
|
-
if not self._is_attr_combination_unique(
|
|
878
|
+
if not self._is_attr_combination_unique(
|
|
879
|
+
attrs_paths=attrs_paths,
|
|
880
|
+
uniqueness_constraints=related_schema.uniqueness_constraints,
|
|
881
|
+
unique_attribute_names=[a.name for a in related_schema.unique_attributes],
|
|
882
|
+
):
|
|
872
883
|
raise ValidationError(
|
|
873
|
-
f"HFID of {node_schema.kind} refers peer {related_schema.kind}
|
|
884
|
+
f"HFID of {node_schema.kind} refers to peer {related_schema.kind}"
|
|
885
|
+
f" with a non-unique combination of attributes {attrs_paths}"
|
|
874
886
|
)
|
|
875
887
|
|
|
876
888
|
def validate_required_relationships(self) -> None:
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING, Any
|
|
4
4
|
|
|
5
|
+
from infrahub import config
|
|
5
6
|
from infrahub.core.constants import PathType
|
|
6
7
|
from infrahub.core.path import DataPath, GroupedDataPaths
|
|
7
8
|
from infrahub.core.schema.attribute_parameters import NumberAttributeParameters
|
|
@@ -87,6 +88,10 @@ class AttributeNumberChecker(ConstraintCheckerInterface):
|
|
|
87
88
|
return "attribute.number.update"
|
|
88
89
|
|
|
89
90
|
def supports(self, request: SchemaConstraintValidatorRequest) -> bool:
|
|
91
|
+
# Some invalid values may exist due to https://github.com/opsmill/infrahub/issues/6714.
|
|
92
|
+
if not config.SETTINGS.main.schema_strict_mode:
|
|
93
|
+
return False
|
|
94
|
+
|
|
90
95
|
return request.constraint_name in (
|
|
91
96
|
ConstraintIdentifier.ATTRIBUTE_PARAMETERS_MIN_VALUE_UPDATE.value,
|
|
92
97
|
ConstraintIdentifier.ATTRIBUTE_PARAMETERS_MAX_VALUE_UPDATE.value,
|
|
@@ -94,7 +99,6 @@ class AttributeNumberChecker(ConstraintCheckerInterface):
|
|
|
94
99
|
)
|
|
95
100
|
|
|
96
101
|
async def check(self, request: SchemaConstraintValidatorRequest) -> list[GroupedDataPaths]:
|
|
97
|
-
grouped_data_paths_list: list[GroupedDataPaths] = []
|
|
98
102
|
if not request.schema_path.field_name:
|
|
99
103
|
raise ValueError("field_name is not defined")
|
|
100
104
|
attribute_schema = request.node_schema.get_attribute(name=request.schema_path.field_name)
|
|
@@ -106,8 +110,9 @@ class AttributeNumberChecker(ConstraintCheckerInterface):
|
|
|
106
110
|
and attribute_schema.parameters.max_value is None
|
|
107
111
|
and attribute_schema.parameters.excluded_values is None
|
|
108
112
|
):
|
|
109
|
-
return
|
|
113
|
+
return []
|
|
110
114
|
|
|
115
|
+
grouped_data_paths_list: list[GroupedDataPaths] = []
|
|
111
116
|
for query_class in self.query_classes:
|
|
112
117
|
# TODO add exception handling
|
|
113
118
|
query = await query_class.init(
|
|
@@ -88,6 +88,8 @@ GQL_STOP = "stop"
|
|
|
88
88
|
ContextValue = Any | Callable[[HTTPConnection], Any]
|
|
89
89
|
RootValue = Any
|
|
90
90
|
|
|
91
|
+
subscription_tasks = set()
|
|
92
|
+
|
|
91
93
|
|
|
92
94
|
class InfrahubGraphQLApp:
|
|
93
95
|
def __init__(
|
|
@@ -446,7 +448,9 @@ class InfrahubGraphQLApp:
|
|
|
446
448
|
|
|
447
449
|
asyncgen = cast(AsyncGenerator[Any, None], result)
|
|
448
450
|
subscriptions[operation_id] = asyncgen
|
|
449
|
-
asyncio.create_task(self._observe_subscription(asyncgen, operation_id, websocket))
|
|
451
|
+
task = asyncio.create_task(self._observe_subscription(asyncgen, operation_id, websocket))
|
|
452
|
+
subscription_tasks.add(task)
|
|
453
|
+
task.add_done_callback(subscription_tasks.discard)
|
|
450
454
|
return []
|
|
451
455
|
|
|
452
456
|
async def _observe_subscription(
|