infrahub-server 1.2.0b1__py3-none-any.whl → 1.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- infrahub/api/dependencies.py +6 -6
- infrahub/api/diff/validation_models.py +7 -7
- infrahub/api/schema.py +1 -1
- infrahub/artifacts/models.py +1 -3
- infrahub/artifacts/tasks.py +1 -3
- infrahub/cli/__init__.py +13 -9
- infrahub/cli/constants.py +3 -0
- infrahub/cli/db.py +165 -183
- infrahub/cli/upgrade.py +146 -0
- infrahub/computed_attribute/gather.py +185 -0
- infrahub/computed_attribute/models.py +239 -11
- infrahub/computed_attribute/tasks.py +77 -442
- infrahub/computed_attribute/triggers.py +11 -45
- infrahub/config.py +43 -32
- infrahub/context.py +14 -0
- infrahub/core/account.py +4 -4
- infrahub/core/attribute.py +57 -57
- infrahub/core/branch/tasks.py +12 -9
- infrahub/core/changelog/diff.py +16 -8
- infrahub/core/changelog/models.py +189 -26
- infrahub/core/constants/__init__.py +5 -1
- infrahub/core/constants/infrahubkind.py +2 -0
- infrahub/core/constraint/node/runner.py +9 -8
- infrahub/core/diff/branch_differ.py +10 -10
- infrahub/core/diff/ipam_diff_parser.py +4 -5
- infrahub/core/diff/model/diff.py +27 -27
- infrahub/core/diff/model/path.py +3 -3
- infrahub/core/diff/query/merge.py +20 -17
- infrahub/core/diff/query_parser.py +4 -4
- infrahub/core/graph/__init__.py +1 -1
- infrahub/core/initialization.py +1 -10
- infrahub/core/ipam/constants.py +3 -4
- infrahub/core/ipam/reconciler.py +12 -12
- infrahub/core/ipam/utilization.py +10 -13
- infrahub/core/manager.py +34 -34
- infrahub/core/merge.py +7 -7
- infrahub/core/migrations/__init__.py +2 -3
- infrahub/core/migrations/graph/__init__.py +9 -4
- infrahub/core/migrations/graph/m017_add_core_profile.py +1 -5
- infrahub/core/migrations/graph/m018_uniqueness_nulls.py +4 -4
- infrahub/core/migrations/graph/m020_duplicate_edges.py +160 -0
- infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py +51 -0
- infrahub/core/migrations/graph/{m020_add_generate_template_attr.py → m022_add_generate_template_attr.py} +3 -3
- infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py +96 -0
- infrahub/core/migrations/query/attribute_add.py +2 -2
- infrahub/core/migrations/query/node_duplicate.py +18 -21
- infrahub/core/migrations/query/schema_attribute_update.py +2 -2
- infrahub/core/migrations/schema/models.py +19 -4
- infrahub/core/migrations/schema/tasks.py +2 -2
- infrahub/core/migrations/shared.py +16 -16
- infrahub/core/models.py +15 -6
- infrahub/core/node/__init__.py +29 -28
- infrahub/core/node/base.py +2 -4
- infrahub/core/node/constraints/attribute_uniqueness.py +2 -2
- infrahub/core/node/constraints/grouped_uniqueness.py +99 -47
- infrahub/core/node/constraints/interface.py +1 -2
- infrahub/core/node/delete_validator.py +3 -5
- infrahub/core/node/ipam.py +4 -4
- infrahub/core/node/permissions.py +7 -7
- infrahub/core/node/resource_manager/ip_address_pool.py +6 -6
- infrahub/core/node/resource_manager/ip_prefix_pool.py +6 -6
- infrahub/core/node/resource_manager/number_pool.py +3 -3
- infrahub/core/path.py +12 -12
- infrahub/core/property.py +11 -11
- infrahub/core/protocols.py +5 -0
- infrahub/core/protocols_base.py +21 -21
- infrahub/core/query/__init__.py +33 -33
- infrahub/core/query/attribute.py +6 -4
- infrahub/core/query/diff.py +3 -3
- infrahub/core/query/node.py +82 -32
- infrahub/core/query/relationship.py +24 -24
- infrahub/core/query/resource_manager.py +2 -0
- infrahub/core/query/standard_node.py +3 -3
- infrahub/core/query/subquery.py +9 -9
- infrahub/core/registry.py +13 -15
- infrahub/core/relationship/constraints/count.py +3 -4
- infrahub/core/relationship/constraints/peer_kind.py +3 -4
- infrahub/core/relationship/constraints/profiles_kind.py +2 -2
- infrahub/core/relationship/model.py +40 -46
- infrahub/core/schema/attribute_schema.py +9 -9
- infrahub/core/schema/basenode_schema.py +93 -44
- infrahub/core/schema/computed_attribute.py +3 -3
- infrahub/core/schema/definitions/core/__init__.py +13 -19
- infrahub/core/schema/definitions/core/account.py +151 -148
- infrahub/core/schema/definitions/core/artifact.py +122 -113
- infrahub/core/schema/definitions/core/builtin.py +19 -16
- infrahub/core/schema/definitions/core/check.py +61 -53
- infrahub/core/schema/definitions/core/core.py +17 -0
- infrahub/core/schema/definitions/core/generator.py +89 -85
- infrahub/core/schema/definitions/core/graphql_query.py +72 -70
- infrahub/core/schema/definitions/core/group.py +96 -93
- infrahub/core/schema/definitions/core/ipam.py +176 -235
- infrahub/core/schema/definitions/core/lineage.py +18 -16
- infrahub/core/schema/definitions/core/menu.py +42 -40
- infrahub/core/schema/definitions/core/permission.py +144 -142
- infrahub/core/schema/definitions/core/profile.py +16 -27
- infrahub/core/schema/definitions/core/propose_change.py +88 -79
- infrahub/core/schema/definitions/core/propose_change_comment.py +170 -165
- infrahub/core/schema/definitions/core/propose_change_validator.py +290 -288
- infrahub/core/schema/definitions/core/repository.py +231 -225
- infrahub/core/schema/definitions/core/resource_pool.py +156 -166
- infrahub/core/schema/definitions/core/template.py +27 -12
- infrahub/core/schema/definitions/core/transform.py +85 -76
- infrahub/core/schema/definitions/core/webhook.py +127 -101
- infrahub/core/schema/definitions/internal.py +16 -16
- infrahub/core/schema/dropdown.py +3 -4
- infrahub/core/schema/generated/attribute_schema.py +15 -18
- infrahub/core/schema/generated/base_node_schema.py +12 -14
- infrahub/core/schema/generated/node_schema.py +3 -5
- infrahub/core/schema/generated/relationship_schema.py +9 -11
- infrahub/core/schema/generic_schema.py +2 -2
- infrahub/core/schema/manager.py +20 -9
- infrahub/core/schema/node_schema.py +4 -2
- infrahub/core/schema/relationship_schema.py +7 -7
- infrahub/core/schema/schema_branch.py +276 -138
- infrahub/core/schema/schema_branch_computed.py +41 -4
- infrahub/core/task/task.py +3 -3
- infrahub/core/task/user_task.py +15 -15
- infrahub/core/utils.py +20 -18
- infrahub/core/validators/__init__.py +1 -3
- infrahub/core/validators/aggregated_checker.py +2 -2
- infrahub/core/validators/attribute/choices.py +2 -2
- infrahub/core/validators/attribute/enum.py +2 -2
- infrahub/core/validators/attribute/kind.py +2 -2
- infrahub/core/validators/attribute/length.py +2 -2
- infrahub/core/validators/attribute/optional.py +2 -2
- infrahub/core/validators/attribute/regex.py +2 -2
- infrahub/core/validators/attribute/unique.py +2 -2
- infrahub/core/validators/checks_runner.py +25 -2
- infrahub/core/validators/determiner.py +1 -3
- infrahub/core/validators/interface.py +6 -2
- infrahub/core/validators/model.py +22 -3
- infrahub/core/validators/models/validate_migration.py +17 -4
- infrahub/core/validators/node/attribute.py +2 -2
- infrahub/core/validators/node/generate_profile.py +2 -2
- infrahub/core/validators/node/hierarchy.py +3 -5
- infrahub/core/validators/node/inherit_from.py +27 -5
- infrahub/core/validators/node/relationship.py +2 -2
- infrahub/core/validators/relationship/count.py +4 -4
- infrahub/core/validators/relationship/optional.py +2 -2
- infrahub/core/validators/relationship/peer.py +2 -2
- infrahub/core/validators/shared.py +2 -2
- infrahub/core/validators/tasks.py +8 -0
- infrahub/core/validators/uniqueness/checker.py +22 -21
- infrahub/core/validators/uniqueness/index.py +2 -2
- infrahub/core/validators/uniqueness/model.py +11 -11
- infrahub/database/__init__.py +26 -22
- infrahub/database/metrics.py +7 -1
- infrahub/dependencies/builder/constraint/grouped/node_runner.py +1 -3
- infrahub/dependencies/component/registry.py +2 -2
- infrahub/events/__init__.py +25 -2
- infrahub/events/artifact_action.py +13 -25
- infrahub/events/branch_action.py +26 -18
- infrahub/events/generator.py +71 -0
- infrahub/events/group_action.py +10 -24
- infrahub/events/models.py +10 -16
- infrahub/events/node_action.py +87 -32
- infrahub/events/repository_action.py +5 -18
- infrahub/events/schema_action.py +4 -9
- infrahub/events/utils.py +16 -0
- infrahub/events/validator_action.py +55 -0
- infrahub/exceptions.py +23 -24
- infrahub/generators/models.py +1 -3
- infrahub/git/base.py +7 -7
- infrahub/git/integrator.py +26 -25
- infrahub/git/models.py +22 -9
- infrahub/git/repository.py +3 -3
- infrahub/git/tasks.py +67 -49
- infrahub/git/utils.py +48 -0
- infrahub/git/worktree.py +1 -2
- infrahub/git_credential/askpass.py +1 -2
- infrahub/graphql/analyzer.py +12 -0
- infrahub/graphql/app.py +13 -15
- infrahub/graphql/context.py +6 -0
- infrahub/graphql/initialization.py +3 -0
- infrahub/graphql/loaders/node.py +2 -12
- infrahub/graphql/loaders/peers.py +77 -0
- infrahub/graphql/loaders/shared.py +13 -0
- infrahub/graphql/manager.py +13 -10
- infrahub/graphql/mutations/artifact_definition.py +5 -5
- infrahub/graphql/mutations/computed_attribute.py +4 -5
- infrahub/graphql/mutations/graphql_query.py +5 -5
- infrahub/graphql/mutations/ipam.py +50 -70
- infrahub/graphql/mutations/main.py +164 -141
- infrahub/graphql/mutations/menu.py +5 -5
- infrahub/graphql/mutations/models.py +2 -4
- infrahub/graphql/mutations/node_getter/by_default_filter.py +10 -10
- infrahub/graphql/mutations/node_getter/by_hfid.py +1 -3
- infrahub/graphql/mutations/node_getter/by_id.py +1 -3
- infrahub/graphql/mutations/node_getter/interface.py +1 -2
- infrahub/graphql/mutations/proposed_change.py +7 -7
- infrahub/graphql/mutations/relationship.py +67 -35
- infrahub/graphql/mutations/repository.py +8 -8
- infrahub/graphql/mutations/resource_manager.py +3 -3
- infrahub/graphql/mutations/schema.py +4 -4
- infrahub/graphql/mutations/webhook.py +137 -0
- infrahub/graphql/parser.py +4 -4
- infrahub/graphql/queries/diff/tree.py +4 -4
- infrahub/graphql/queries/ipam.py +2 -2
- infrahub/graphql/queries/relationship.py +2 -2
- infrahub/graphql/queries/search.py +2 -2
- infrahub/graphql/resolvers/many_relationship.py +264 -0
- infrahub/graphql/resolvers/resolver.py +13 -110
- infrahub/graphql/subscription/graphql_query.py +2 -0
- infrahub/graphql/types/event.py +20 -11
- infrahub/graphql/types/node.py +2 -2
- infrahub/graphql/utils.py +2 -2
- infrahub/groups/ancestors.py +29 -0
- infrahub/groups/parsers.py +107 -0
- infrahub/menu/generator.py +7 -7
- infrahub/menu/menu.py +0 -10
- infrahub/menu/models.py +117 -16
- infrahub/menu/repository.py +111 -0
- infrahub/menu/utils.py +5 -8
- infrahub/message_bus/messages/__init__.py +1 -11
- infrahub/message_bus/messages/check_generator_run.py +2 -0
- infrahub/message_bus/messages/finalize_validator_execution.py +3 -0
- infrahub/message_bus/messages/request_generatordefinition_check.py +2 -0
- infrahub/message_bus/operations/__init__.py +0 -2
- infrahub/message_bus/operations/check/generator.py +1 -0
- infrahub/message_bus/operations/event/__init__.py +2 -2
- infrahub/message_bus/operations/finalize/validator.py +51 -1
- infrahub/message_bus/operations/requests/generator_definition.py +19 -19
- infrahub/message_bus/operations/requests/proposed_change.py +3 -1
- infrahub/pools/number.py +2 -4
- infrahub/proposed_change/tasks.py +37 -28
- infrahub/pytest_plugin.py +13 -10
- infrahub/server.py +1 -2
- infrahub/services/adapters/event/__init__.py +1 -1
- infrahub/task_manager/event.py +23 -9
- infrahub/tasks/artifact.py +2 -4
- infrahub/telemetry/__init__.py +0 -0
- infrahub/telemetry/constants.py +9 -0
- infrahub/telemetry/database.py +86 -0
- infrahub/telemetry/models.py +65 -0
- infrahub/telemetry/task_manager.py +77 -0
- infrahub/{tasks/telemetry.py → telemetry/tasks.py} +49 -56
- infrahub/telemetry/utils.py +11 -0
- infrahub/trace.py +4 -4
- infrahub/transformations/tasks.py +2 -2
- infrahub/trigger/catalogue.py +2 -5
- infrahub/trigger/constants.py +0 -8
- infrahub/trigger/models.py +14 -1
- infrahub/trigger/setup.py +90 -0
- infrahub/trigger/tasks.py +35 -90
- infrahub/utils.py +11 -1
- infrahub/validators/__init__.py +0 -0
- infrahub/validators/events.py +42 -0
- infrahub/validators/tasks.py +41 -0
- infrahub/webhook/gather.py +17 -0
- infrahub/webhook/models.py +22 -5
- infrahub/webhook/tasks.py +44 -19
- infrahub/webhook/triggers.py +22 -5
- infrahub/workers/infrahub_async.py +2 -2
- infrahub/workers/utils.py +2 -2
- infrahub/workflows/catalogue.py +28 -20
- infrahub/workflows/initialization.py +1 -3
- infrahub/workflows/models.py +1 -1
- infrahub/workflows/utils.py +10 -1
- infrahub_sdk/client.py +27 -8
- infrahub_sdk/config.py +3 -0
- infrahub_sdk/context.py +13 -0
- infrahub_sdk/exceptions.py +6 -0
- infrahub_sdk/generator.py +4 -1
- infrahub_sdk/graphql.py +45 -13
- infrahub_sdk/node.py +69 -20
- infrahub_sdk/protocols_base.py +32 -11
- infrahub_sdk/query_groups.py +6 -35
- infrahub_sdk/schema/__init__.py +55 -26
- infrahub_sdk/schema/main.py +8 -0
- infrahub_sdk/task/__init__.py +10 -0
- infrahub_sdk/task/manager.py +12 -6
- infrahub_sdk/testing/schemas/animal.py +9 -0
- infrahub_sdk/timestamp.py +12 -4
- {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/METADATA +3 -2
- {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/RECORD +289 -260
- {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/entry_points.txt +1 -0
- infrahub_testcontainers/constants.py +2 -0
- infrahub_testcontainers/container.py +157 -12
- infrahub_testcontainers/docker-compose.test.yml +31 -6
- infrahub_testcontainers/helpers.py +18 -73
- infrahub_testcontainers/host.py +41 -0
- infrahub_testcontainers/measurements.py +93 -0
- infrahub_testcontainers/models.py +38 -0
- infrahub_testcontainers/performance_test.py +166 -0
- infrahub_testcontainers/plugin.py +136 -0
- infrahub_testcontainers/prometheus.yml +30 -0
- infrahub/message_bus/messages/event_branch_create.py +0 -11
- infrahub/message_bus/messages/event_branch_delete.py +0 -11
- infrahub/message_bus/messages/event_branch_rebased.py +0 -9
- infrahub/message_bus/messages/event_node_mutated.py +0 -15
- infrahub/message_bus/messages/event_schema_update.py +0 -9
- infrahub/message_bus/operations/event/node.py +0 -20
- infrahub/message_bus/operations/event/schema.py +0 -17
- infrahub/webhook/constants.py +0 -1
- {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/LICENSE.txt +0 -0
- {infrahub_server-1.2.0b1.dist-info → infrahub_server-1.2.1.dist-info}/WHEEL +0 -0
|
@@ -2,104 +2,107 @@ from infrahub.core.constants import (
|
|
|
2
2
|
BranchSupportType,
|
|
3
3
|
InfrahubKind,
|
|
4
4
|
)
|
|
5
|
+
from infrahub.core.constants import RelationshipCardinality as Cardinality
|
|
6
|
+
from infrahub.core.constants import RelationshipKind as RelKind
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
8
|
+
from ...attribute_schema import AttributeSchema as Attr
|
|
9
|
+
from ...generic_schema import GenericSchema
|
|
10
|
+
from ...node_schema import NodeSchema
|
|
11
|
+
from ...relationship_schema import (
|
|
12
|
+
RelationshipSchema as Rel,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
core_group = GenericSchema(
|
|
16
|
+
name="Group",
|
|
17
|
+
namespace="Core",
|
|
18
|
+
description="Generic Group Object.",
|
|
19
|
+
label="Group",
|
|
20
|
+
default_filter="name__value",
|
|
21
|
+
order_by=["name__value"],
|
|
22
|
+
display_labels=["label__value"],
|
|
23
|
+
include_in_menu=False,
|
|
24
|
+
icon="mdi:group",
|
|
25
|
+
hierarchical=True,
|
|
26
|
+
branch=BranchSupportType.AWARE,
|
|
27
|
+
uniqueness_constraints=[["name__value"]],
|
|
28
|
+
attributes=[
|
|
29
|
+
Attr(name="name", kind="Text", unique=True),
|
|
30
|
+
Attr(name="label", kind="Text", optional=True),
|
|
31
|
+
Attr(name="description", kind="Text", optional=True),
|
|
32
|
+
Attr(name="group_type", kind="Text", enum=["default", "internal"], default_value="default", optional=False),
|
|
30
33
|
],
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
relationships=[
|
|
35
|
+
Rel(
|
|
36
|
+
name="members",
|
|
37
|
+
peer=InfrahubKind.NODE,
|
|
38
|
+
optional=True,
|
|
39
|
+
identifier="group_member",
|
|
40
|
+
cardinality=Cardinality.MANY,
|
|
41
|
+
branch=BranchSupportType.AWARE,
|
|
42
|
+
),
|
|
43
|
+
Rel(
|
|
44
|
+
name="subscribers",
|
|
45
|
+
peer=InfrahubKind.NODE,
|
|
46
|
+
optional=True,
|
|
47
|
+
identifier="group_subscriber",
|
|
48
|
+
cardinality=Cardinality.MANY,
|
|
49
|
+
),
|
|
47
50
|
],
|
|
48
|
-
|
|
51
|
+
)
|
|
49
52
|
|
|
50
|
-
core_standard_group =
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
core_standard_group = NodeSchema(
|
|
54
|
+
name="StandardGroup",
|
|
55
|
+
namespace="Core",
|
|
56
|
+
description="Group of nodes of any kind.",
|
|
57
|
+
include_in_menu=False,
|
|
58
|
+
icon="mdi:account-group",
|
|
59
|
+
label="Standard Group",
|
|
60
|
+
default_filter="name__value",
|
|
61
|
+
order_by=["name__value"],
|
|
62
|
+
display_labels=["name__value"],
|
|
63
|
+
branch=BranchSupportType.AWARE,
|
|
64
|
+
inherit_from=[InfrahubKind.GENERICGROUP],
|
|
65
|
+
generate_profile=False,
|
|
66
|
+
)
|
|
64
67
|
|
|
65
|
-
core_generator_group =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
68
|
+
core_generator_group = NodeSchema(
|
|
69
|
+
name="GeneratorGroup",
|
|
70
|
+
namespace="Core",
|
|
71
|
+
description="Group of nodes that are created by a generator.",
|
|
72
|
+
include_in_menu=False,
|
|
73
|
+
icon="mdi:state-machine",
|
|
74
|
+
label="Generator Group",
|
|
75
|
+
default_filter="name__value",
|
|
76
|
+
order_by=["name__value"],
|
|
77
|
+
display_labels=["name__value"],
|
|
78
|
+
branch=BranchSupportType.LOCAL,
|
|
79
|
+
inherit_from=[InfrahubKind.GENERICGROUP],
|
|
80
|
+
generate_profile=False,
|
|
81
|
+
)
|
|
79
82
|
|
|
80
|
-
core_graphql_query_group =
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
83
|
+
core_graphql_query_group = NodeSchema(
|
|
84
|
+
name="GraphQLQueryGroup",
|
|
85
|
+
namespace="Core",
|
|
86
|
+
description="Group of nodes associated with a given GraphQLQuery.",
|
|
87
|
+
include_in_menu=False,
|
|
88
|
+
icon="mdi:account-group",
|
|
89
|
+
label="GraphQL Query Group",
|
|
90
|
+
default_filter="name__value",
|
|
91
|
+
order_by=["name__value"],
|
|
92
|
+
display_labels=["name__value"],
|
|
93
|
+
branch=BranchSupportType.LOCAL,
|
|
94
|
+
inherit_from=[InfrahubKind.GENERICGROUP],
|
|
95
|
+
generate_profile=False,
|
|
96
|
+
attributes=[
|
|
97
|
+
Attr(name="parameters", kind="JSON", optional=True),
|
|
95
98
|
],
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
relationships=[
|
|
100
|
+
Rel(
|
|
101
|
+
name="query",
|
|
102
|
+
peer=InfrahubKind.GRAPHQLQUERY,
|
|
103
|
+
optional=False,
|
|
104
|
+
cardinality=Cardinality.ONE,
|
|
105
|
+
kind=RelKind.ATTRIBUTE,
|
|
106
|
+
),
|
|
104
107
|
],
|
|
105
|
-
|
|
108
|
+
)
|
|
@@ -4,249 +4,190 @@ from infrahub.core.constants import (
|
|
|
4
4
|
InfrahubKind,
|
|
5
5
|
RelationshipDeleteBehavior,
|
|
6
6
|
)
|
|
7
|
+
from infrahub.core.constants import RelationshipCardinality as Cardinality
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"optional": True,
|
|
33
|
-
"branch": BranchSupportType.AWARE.value,
|
|
34
|
-
"order_weight": 2000,
|
|
35
|
-
},
|
|
9
|
+
from ...attribute_schema import AttributeSchema as Attr
|
|
10
|
+
from ...dropdown import DropdownChoice
|
|
11
|
+
from ...generic_schema import GenericSchema
|
|
12
|
+
from ...node_schema import NodeSchema
|
|
13
|
+
from ...relationship_schema import (
|
|
14
|
+
RelationshipSchema as Rel,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
builtin_ipam = GenericSchema(
|
|
18
|
+
name="IPNamespace",
|
|
19
|
+
namespace="Builtin",
|
|
20
|
+
label="IP Namespace",
|
|
21
|
+
description="A generic container for IP prefixes and IP addresses",
|
|
22
|
+
include_in_menu=False,
|
|
23
|
+
default_filter="name__value",
|
|
24
|
+
order_by=["name__value"],
|
|
25
|
+
display_labels=["name__value"],
|
|
26
|
+
icon="mdi:format-list-group",
|
|
27
|
+
branch=BranchSupportType.AWARE,
|
|
28
|
+
uniqueness_constraints=[["name__value"]],
|
|
29
|
+
generate_profile=False,
|
|
30
|
+
attributes=[
|
|
31
|
+
Attr(name="name", kind="Text", unique=True, branch=BranchSupportType.AWARE, order_weight=1000),
|
|
32
|
+
Attr(name="description", kind="Text", optional=True, branch=BranchSupportType.AWARE, order_weight=2000),
|
|
36
33
|
],
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
relationships=[
|
|
35
|
+
Rel(
|
|
36
|
+
name="ip_prefixes",
|
|
37
|
+
label="IP Prefixes",
|
|
38
|
+
peer=InfrahubKind.IPPREFIX,
|
|
39
|
+
identifier="ip_namespace__ip_prefix",
|
|
40
|
+
optional=True,
|
|
41
|
+
cardinality=Cardinality.MANY,
|
|
42
|
+
on_delete=RelationshipDeleteBehavior.CASCADE,
|
|
43
|
+
allow_override=AllowOverrideType.NONE,
|
|
44
|
+
),
|
|
45
|
+
Rel(
|
|
46
|
+
name="ip_addresses",
|
|
47
|
+
label="IP Addresses",
|
|
48
|
+
peer=InfrahubKind.IPADDRESS,
|
|
49
|
+
identifier="ip_namespace__ip_address",
|
|
50
|
+
optional=True,
|
|
51
|
+
cardinality=Cardinality.MANY,
|
|
52
|
+
on_delete=RelationshipDeleteBehavior.CASCADE,
|
|
53
|
+
allow_override=AllowOverrideType.NONE,
|
|
54
|
+
),
|
|
58
55
|
],
|
|
59
|
-
|
|
56
|
+
)
|
|
60
57
|
|
|
61
|
-
builtin_ip_prefix =
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
"choices": [
|
|
91
|
-
{
|
|
92
|
-
"name": "prefix",
|
|
93
|
-
"label": "Prefix",
|
|
94
|
-
"description": "Prefix serves as container for other prefixes",
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
"name": "address",
|
|
98
|
-
"label": "Address",
|
|
99
|
-
"description": "Prefix serves as subnet for IP addresses",
|
|
100
|
-
},
|
|
58
|
+
builtin_ip_prefix = GenericSchema(
|
|
59
|
+
name="IPPrefix",
|
|
60
|
+
label="IP Prefix",
|
|
61
|
+
namespace="Builtin",
|
|
62
|
+
description="IPv6 or IPv4 prefix also referred as network",
|
|
63
|
+
include_in_menu=False,
|
|
64
|
+
default_filter="prefix__value",
|
|
65
|
+
order_by=["prefix__version", "prefix__binary_address", "prefix__prefixlen"],
|
|
66
|
+
display_labels=["prefix__value"],
|
|
67
|
+
icon="mdi:ip-network",
|
|
68
|
+
branch=BranchSupportType.AWARE,
|
|
69
|
+
hierarchical=True,
|
|
70
|
+
attributes=[
|
|
71
|
+
Attr(name="prefix", kind="IPNetwork", branch=BranchSupportType.AWARE, order_weight=1000),
|
|
72
|
+
Attr(name="description", kind="Text", optional=True, branch=BranchSupportType.AWARE, order_weight=2000),
|
|
73
|
+
Attr(
|
|
74
|
+
name="member_type",
|
|
75
|
+
kind="Dropdown",
|
|
76
|
+
choices=[
|
|
77
|
+
DropdownChoice(
|
|
78
|
+
name="prefix",
|
|
79
|
+
label="Prefix",
|
|
80
|
+
description="Prefix serves as container for other prefixes",
|
|
81
|
+
),
|
|
82
|
+
DropdownChoice(
|
|
83
|
+
name="address",
|
|
84
|
+
label="Address",
|
|
85
|
+
description="Prefix serves as subnet for IP addresses",
|
|
86
|
+
),
|
|
101
87
|
],
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
"name": "utilization",
|
|
123
|
-
"kind": "Number",
|
|
124
|
-
"read_only": True,
|
|
125
|
-
"optional": True,
|
|
126
|
-
"allow_override": AllowOverrideType.NONE,
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"name": "netmask",
|
|
130
|
-
"kind": "Text",
|
|
131
|
-
"read_only": True,
|
|
132
|
-
"optional": True,
|
|
133
|
-
"allow_override": AllowOverrideType.NONE,
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"name": "hostmask",
|
|
137
|
-
"kind": "Text",
|
|
138
|
-
"read_only": True,
|
|
139
|
-
"optional": True,
|
|
140
|
-
"allow_override": AllowOverrideType.NONE,
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
"name": "network_address",
|
|
144
|
-
"kind": "Text",
|
|
145
|
-
"read_only": True,
|
|
146
|
-
"optional": True,
|
|
147
|
-
"allow_override": AllowOverrideType.NONE,
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
"name": "broadcast_address",
|
|
151
|
-
"kind": "Text",
|
|
152
|
-
"read_only": True,
|
|
153
|
-
"optional": True,
|
|
154
|
-
"allow_override": AllowOverrideType.NONE,
|
|
155
|
-
},
|
|
88
|
+
branch=BranchSupportType.AWARE,
|
|
89
|
+
default_value="address",
|
|
90
|
+
order_weight=3000,
|
|
91
|
+
),
|
|
92
|
+
Attr(
|
|
93
|
+
name="is_pool",
|
|
94
|
+
kind="Boolean",
|
|
95
|
+
branch=BranchSupportType.AWARE,
|
|
96
|
+
default_value=False,
|
|
97
|
+
order_weight=4000,
|
|
98
|
+
description="All IP addresses within this prefix are considered usable",
|
|
99
|
+
),
|
|
100
|
+
Attr(name="is_top_level", kind="Boolean", read_only=True, optional=True, allow_override=AllowOverrideType.NONE),
|
|
101
|
+
Attr(name="utilization", kind="Number", read_only=True, optional=True, allow_override=AllowOverrideType.NONE),
|
|
102
|
+
Attr(name="netmask", kind="Text", read_only=True, optional=True, allow_override=AllowOverrideType.NONE),
|
|
103
|
+
Attr(name="hostmask", kind="Text", read_only=True, optional=True, allow_override=AllowOverrideType.NONE),
|
|
104
|
+
Attr(name="network_address", kind="Text", read_only=True, optional=True, allow_override=AllowOverrideType.NONE),
|
|
105
|
+
Attr(
|
|
106
|
+
name="broadcast_address", kind="Text", read_only=True, optional=True, allow_override=AllowOverrideType.NONE
|
|
107
|
+
),
|
|
156
108
|
],
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
109
|
+
relationships=[
|
|
110
|
+
Rel(
|
|
111
|
+
name="ip_namespace",
|
|
112
|
+
label="IP Namespace",
|
|
113
|
+
peer=InfrahubKind.IPNAMESPACE,
|
|
114
|
+
identifier="ip_namespace__ip_prefix",
|
|
115
|
+
optional=True,
|
|
116
|
+
cardinality=Cardinality.ONE,
|
|
117
|
+
allow_override=AllowOverrideType.NONE,
|
|
118
|
+
),
|
|
119
|
+
Rel(
|
|
120
|
+
name="ip_addresses",
|
|
121
|
+
label="IP Addresses",
|
|
122
|
+
peer=InfrahubKind.IPADDRESS,
|
|
123
|
+
identifier="ip_prefix__ip_address",
|
|
124
|
+
optional=True,
|
|
125
|
+
cardinality=Cardinality.MANY,
|
|
126
|
+
allow_override=AllowOverrideType.NONE,
|
|
127
|
+
read_only=True,
|
|
128
|
+
),
|
|
129
|
+
Rel(
|
|
130
|
+
name="resource_pool",
|
|
131
|
+
peer="CoreIPAddressPool",
|
|
132
|
+
identifier="ipaddresspool__resource",
|
|
133
|
+
cardinality=Cardinality.MANY,
|
|
134
|
+
branch=BranchSupportType.AGNOSTIC,
|
|
135
|
+
optional=True,
|
|
136
|
+
read_only=True,
|
|
137
|
+
),
|
|
186
138
|
],
|
|
187
|
-
|
|
139
|
+
)
|
|
188
140
|
|
|
189
|
-
builtin_ip_address =
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
"kind": "IPHost",
|
|
204
|
-
"branch": BranchSupportType.AWARE.value,
|
|
205
|
-
"order_weight": 1000,
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
"name": "description",
|
|
209
|
-
"kind": "Text",
|
|
210
|
-
"optional": True,
|
|
211
|
-
"branch": BranchSupportType.AWARE.value,
|
|
212
|
-
"order_weight": 2000,
|
|
213
|
-
},
|
|
141
|
+
builtin_ip_address = GenericSchema(
|
|
142
|
+
name="IPAddress",
|
|
143
|
+
label="IP Address",
|
|
144
|
+
namespace="Builtin",
|
|
145
|
+
description="IPv6 or IPv4 address",
|
|
146
|
+
include_in_menu=False,
|
|
147
|
+
default_filter="address__value",
|
|
148
|
+
order_by=["address__version", "address__binary_address"],
|
|
149
|
+
display_labels=["address__value"],
|
|
150
|
+
icon="mdi:ip-outline",
|
|
151
|
+
branch=BranchSupportType.AWARE,
|
|
152
|
+
attributes=[
|
|
153
|
+
Attr(name="address", kind="IPHost", branch=BranchSupportType.AWARE, order_weight=1000),
|
|
154
|
+
Attr(name="description", kind="Text", optional=True, branch=BranchSupportType.AWARE, order_weight=2000),
|
|
214
155
|
],
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
156
|
+
relationships=[
|
|
157
|
+
Rel(
|
|
158
|
+
name="ip_namespace",
|
|
159
|
+
label="IP Namespace",
|
|
160
|
+
peer=InfrahubKind.IPNAMESPACE,
|
|
161
|
+
identifier="ip_namespace__ip_address",
|
|
162
|
+
optional=True,
|
|
163
|
+
cardinality=Cardinality.ONE,
|
|
164
|
+
allow_override=AllowOverrideType.NONE,
|
|
165
|
+
),
|
|
166
|
+
Rel(
|
|
167
|
+
name="ip_prefix",
|
|
168
|
+
label="IP Prefix",
|
|
169
|
+
peer=InfrahubKind.IPPREFIX,
|
|
170
|
+
identifier="ip_prefix__ip_address",
|
|
171
|
+
optional=True,
|
|
172
|
+
cardinality=Cardinality.ONE,
|
|
173
|
+
allow_override=AllowOverrideType.NONE,
|
|
174
|
+
read_only=True,
|
|
175
|
+
),
|
|
235
176
|
],
|
|
236
|
-
|
|
177
|
+
)
|
|
237
178
|
|
|
238
|
-
core_ipam_namespace =
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
179
|
+
core_ipam_namespace = NodeSchema(
|
|
180
|
+
name="Namespace",
|
|
181
|
+
namespace="Ipam",
|
|
182
|
+
description="A namespace that segments IPAM",
|
|
183
|
+
label="IPAM Namespace",
|
|
184
|
+
default_filter="name__value",
|
|
185
|
+
human_friendly_id=["name__value"],
|
|
186
|
+
order_by=["name__value"],
|
|
187
|
+
display_labels=["name__value"],
|
|
188
|
+
include_in_menu=False,
|
|
189
|
+
icon="mdi:format-list-group",
|
|
190
|
+
branch=BranchSupportType.AWARE,
|
|
191
|
+
inherit_from=[InfrahubKind.IPNAMESPACE],
|
|
192
|
+
attributes=[Attr(name="default", kind="Boolean", optional=True, read_only=True, order_weight=9000)],
|
|
193
|
+
)
|