Skip to content

Commit b71f2f9

Browse files
committed
Update schema branch to allow profiles for builtins
1 parent dded3a4 commit b71f2f9

File tree

2 files changed

+70
-9
lines changed

2 files changed

+70
-9
lines changed

backend/infrahub/core/schema/schema_branch.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,18 +2205,16 @@ def manage_profile_schemas(self) -> None:
22052205
self.set(name=core_profile_schema_definition.kind, schema=core_profile_schema_definition)
22062206

22072207
profile_schema_kinds = set()
2208-
restricted_namespace_profiles_to_create = (InfrahubKind.TAG, InfrahubKind.IPPREFIX, InfrahubKind.IPADDRESS)
22092208
for node_name in self.node_names + self.generic_names_without_templates:
22102209
node = self.get(name=node_name, duplicate=False)
22112210
if (
2212-
node.namespace in RESTRICTED_NAMESPACES
2211+
(node.namespace in RESTRICTED_NAMESPACES and node.namespace != "Builtin")
22132212
or not node.generate_profile
22142213
or node.state == HashableModelState.ABSENT
22152214
):
2216-
if node.kind not in restricted_namespace_profiles_to_create:
2217-
with contextlib.suppress(SchemaNotFoundError):
2218-
self.delete(name=self._get_profile_kind(node_kind=node.kind))
2219-
continue
2215+
with contextlib.suppress(SchemaNotFoundError):
2216+
self.delete(name=self._get_profile_kind(node_kind=node.kind))
2217+
continue
22202218

22212219
profile = self.generate_profile_from_node(node=node)
22222220
self.add_relationships_to_profile(profile=profile, node=node)
@@ -2256,9 +2254,14 @@ def manage_profile_relationships(self) -> None:
22562254
for node_name in self.node_names + self.generic_names:
22572255
node = self.get(name=node_name, duplicate=False)
22582256

2259-
if node.namespace in RESTRICTED_NAMESPACES and node.kind not in (
2260-
InfrahubKind.IPRANGEAVAILABLE,
2261-
InfrahubKind.IPPREFIXAVAILABLE,
2257+
if (
2258+
node.namespace in RESTRICTED_NAMESPACES
2259+
and node.namespace != "Builtin"
2260+
and node.kind
2261+
not in (
2262+
InfrahubKind.IPRANGEAVAILABLE,
2263+
InfrahubKind.IPPREFIXAVAILABLE,
2264+
)
22622265
):
22632266
continue
22642267

schema/schema.graphql

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ interface BuiltinIPAddress {
358358
ip_namespace: NestedEdgedBuiltinIPNamespace!
359359
ip_prefix: NestedEdgedBuiltinIPPrefix!
360360
member_of_groups(description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], group_type__is_protected: Boolean, group_type__owner__id: ID, group_type__source__id: ID, group_type__value: String, group_type__values: [String], ids: [ID], isnull: Boolean, label__is_protected: Boolean, label__owner__id: ID, label__source__id: ID, label__value: String, label__values: [String], limit: Int, name__is_protected: Boolean, name__owner__id: ID, name__source__id: ID, name__value: String, name__values: [String], offset: Int, order: OrderInput): NestedPaginatedCoreGroup!
361+
profiles(ids: [ID], isnull: Boolean, limit: Int, offset: Int, order: OrderInput, profile_name__is_protected: Boolean, profile_name__owner__id: ID, profile_name__source__id: ID, profile_name__value: String, profile_name__values: [String], profile_priority__is_protected: Boolean, profile_priority__owner__id: ID, profile_priority__source__id: ID, profile_priority__value: BigInt, profile_priority__values: [BigInt]): NestedPaginatedCoreProfile!
361362
subscriber_of_groups(description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], group_type__is_protected: Boolean, group_type__owner__id: ID, group_type__source__id: ID, group_type__value: String, group_type__values: [String], ids: [ID], isnull: Boolean, label__is_protected: Boolean, label__owner__id: ID, label__source__id: ID, label__value: String, label__values: [String], limit: Int, name__is_protected: Boolean, name__owner__id: ID, name__source__id: ID, name__value: String, name__values: [String], offset: Int, order: OrderInput): NestedPaginatedCoreGroup!
362363
}
363364

@@ -374,6 +375,7 @@ input BuiltinIPAddressUpdateInput {
374375
id: String
375376
ip_namespace: RelatedNodeInput
376377
member_of_groups: [RelatedNodeInput]
378+
profiles: [RelatedNodeInput]
377379
subscriber_of_groups: [RelatedNodeInput]
378380
}
379381

@@ -389,6 +391,7 @@ interface BuiltinIPNamespace {
389391
ip_prefixes(broadcast_address__is_protected: Boolean, broadcast_address__owner__id: ID, broadcast_address__source__id: ID, broadcast_address__value: String, broadcast_address__values: [String], description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], hostmask__is_protected: Boolean, hostmask__owner__id: ID, hostmask__source__id: ID, hostmask__value: String, hostmask__values: [String], ids: [ID], is_pool__is_protected: Boolean, is_pool__owner__id: ID, is_pool__source__id: ID, is_pool__value: Boolean, is_pool__values: [Boolean], is_top_level__is_protected: Boolean, is_top_level__owner__id: ID, is_top_level__source__id: ID, is_top_level__value: Boolean, is_top_level__values: [Boolean], isnull: Boolean, limit: Int, member_type__is_protected: Boolean, member_type__owner__id: ID, member_type__source__id: ID, member_type__value: String, member_type__values: [String], netmask__is_protected: Boolean, netmask__owner__id: ID, netmask__source__id: ID, netmask__value: String, netmask__values: [String], network_address__is_protected: Boolean, network_address__owner__id: ID, network_address__source__id: ID, network_address__value: String, network_address__values: [String], offset: Int, order: OrderInput, prefix__is_protected: Boolean, prefix__owner__id: ID, prefix__source__id: ID, prefix__value: String, prefix__values: [String], utilization__is_protected: Boolean, utilization__owner__id: ID, utilization__source__id: ID, utilization__value: BigInt, utilization__values: [BigInt]): NestedPaginatedBuiltinIPPrefix!
390392
member_of_groups(description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], group_type__is_protected: Boolean, group_type__owner__id: ID, group_type__source__id: ID, group_type__value: String, group_type__values: [String], ids: [ID], isnull: Boolean, label__is_protected: Boolean, label__owner__id: ID, label__source__id: ID, label__value: String, label__values: [String], limit: Int, name__is_protected: Boolean, name__owner__id: ID, name__source__id: ID, name__value: String, name__values: [String], offset: Int, order: OrderInput): NestedPaginatedCoreGroup!
391393
name: TextAttribute
394+
profiles(ids: [ID], isnull: Boolean, limit: Int, offset: Int, order: OrderInput, profile_name__is_protected: Boolean, profile_name__owner__id: ID, profile_name__source__id: ID, profile_name__value: String, profile_name__values: [String], profile_priority__is_protected: Boolean, profile_priority__owner__id: ID, profile_priority__source__id: ID, profile_priority__value: BigInt, profile_priority__values: [BigInt]): NestedPaginatedCoreProfile!
392395
subscriber_of_groups(description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], group_type__is_protected: Boolean, group_type__owner__id: ID, group_type__source__id: ID, group_type__value: String, group_type__values: [String], ids: [ID], isnull: Boolean, label__is_protected: Boolean, label__owner__id: ID, label__source__id: ID, label__value: String, label__values: [String], limit: Int, name__is_protected: Boolean, name__owner__id: ID, name__source__id: ID, name__value: String, name__values: [String], offset: Int, order: OrderInput): NestedPaginatedCoreGroup!
393396
}
394397

@@ -406,6 +409,7 @@ input BuiltinIPNamespaceUpdateInput {
406409
ip_prefixes: [RelatedIPPrefixNodeInput]
407410
member_of_groups: [RelatedNodeInput]
408411
name: TextAttributeUpdate
412+
profiles: [RelatedNodeInput]
409413
subscriber_of_groups: [RelatedNodeInput]
410414
}
411415

@@ -433,6 +437,7 @@ interface BuiltinIPPrefix {
433437
network_address: TextAttribute
434438
parent: NestedEdgedBuiltinIPPrefix!
435439
prefix: IPNetwork
440+
profiles(ids: [ID], include_descendants: Boolean, isnull: Boolean, limit: Int, offset: Int, order: OrderInput, profile_name__is_protected: Boolean, profile_name__owner__id: ID, profile_name__source__id: ID, profile_name__value: String, profile_name__values: [String], profile_priority__is_protected: Boolean, profile_priority__owner__id: ID, profile_priority__source__id: ID, profile_priority__value: BigInt, profile_priority__values: [BigInt]): NestedPaginatedCoreProfile!
436441
resource_pool(default_address_type__is_protected: Boolean, default_address_type__owner__id: ID, default_address_type__source__id: ID, default_address_type__value: String, default_address_type__values: [String], default_prefix_length__is_protected: Boolean, default_prefix_length__owner__id: ID, default_prefix_length__source__id: ID, default_prefix_length__value: BigInt, default_prefix_length__values: [BigInt], description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], ids: [ID], include_descendants: Boolean, isnull: Boolean, limit: Int, name__is_protected: Boolean, name__owner__id: ID, name__source__id: ID, name__value: String, name__values: [String], offset: Int, order: OrderInput): NestedPaginatedCoreIPAddressPool!
437442
subscriber_of_groups(description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], group_type__is_protected: Boolean, group_type__owner__id: ID, group_type__source__id: ID, group_type__value: String, group_type__values: [String], ids: [ID], include_descendants: Boolean, isnull: Boolean, label__is_protected: Boolean, label__owner__id: ID, label__source__id: ID, label__value: String, label__values: [String], limit: Int, name__is_protected: Boolean, name__owner__id: ID, name__source__id: ID, name__value: String, name__values: [String], offset: Int, order: OrderInput): NestedPaginatedCoreGroup!
438443
utilization: NumberAttribute
@@ -454,6 +459,7 @@ input BuiltinIPPrefixUpdateInput {
454459
member_of_groups: [RelatedNodeInput]
455460
member_type: TextAttributeUpdate
456461
prefix: TextAttributeUpdate
462+
profiles: [RelatedNodeInput]
457463
subscriber_of_groups: [RelatedNodeInput]
458464
}
459465

@@ -472,6 +478,7 @@ type BuiltinTag implements CoreNode {
472478
member_of_groups(description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], group_type__is_protected: Boolean, group_type__owner__id: ID, group_type__source__id: ID, group_type__value: String, group_type__values: [String], ids: [ID], isnull: Boolean, label__is_protected: Boolean, label__owner__id: ID, label__source__id: ID, label__value: String, label__values: [String], limit: Int, name__is_protected: Boolean, name__owner__id: ID, name__source__id: ID, name__value: String, name__values: [String], offset: Int, order: OrderInput): NestedPaginatedCoreGroup!
473479
"""None (required)"""
474480
name: TextAttribute
481+
profiles(ids: [ID], isnull: Boolean, limit: Int, offset: Int, order: OrderInput, profile_name__is_protected: Boolean, profile_name__owner__id: ID, profile_name__source__id: ID, profile_name__value: String, profile_name__values: [String], profile_priority__is_protected: Boolean, profile_priority__owner__id: ID, profile_priority__source__id: ID, profile_priority__value: BigInt, profile_priority__values: [BigInt]): NestedPaginatedCoreProfile!
475482
subscriber_of_groups(description__is_protected: Boolean, description__owner__id: ID, description__source__id: ID, description__value: String, description__values: [String], group_type__is_protected: Boolean, group_type__owner__id: ID, group_type__source__id: ID, group_type__value: String, group_type__values: [String], ids: [ID], isnull: Boolean, label__is_protected: Boolean, label__owner__id: ID, label__source__id: ID, label__value: String, label__values: [String], limit: Int, name__is_protected: Boolean, name__owner__id: ID, name__source__id: ID, name__value: String, name__values: [String], offset: Int, order: OrderInput): NestedPaginatedCoreGroup!
476483
}
477484

@@ -488,6 +495,7 @@ input BuiltinTagCreateInput {
488495
id: String
489496
member_of_groups: [RelatedNodeInput]
490497
name: TextAttributeCreate
498+
profiles: [RelatedNodeInput]
491499
subscriber_of_groups: [RelatedNodeInput]
492500
}
493501

@@ -512,6 +520,7 @@ input BuiltinTagUpdateInput {
512520
id: String
513521
member_of_groups: [RelatedNodeInput]
514522
name: TextAttributeUpdate
523+
profiles: [RelatedNodeInput]
515524
subscriber_of_groups: [RelatedNodeInput]
516525
}
517526

@@ -529,6 +538,7 @@ input BuiltinTagUpsertInput {
529538
id: String
530539
member_of_groups: [RelatedNodeInput]
531540
name: TextAttributeUpdate
541+
profiles: [RelatedNodeInput]
532542
subscriber_of_groups: [RelatedNodeInput]
533543
}
534544

@@ -11164,6 +11174,18 @@ type Query {
1116411174
offset: Int
1116511175
order: OrderInput
1116611176
partial_match: Boolean
11177+
profiles__ids: [ID]
11178+
profiles__isnull: Boolean
11179+
profiles__profile_name__is_protected: Boolean
11180+
profiles__profile_name__owner__id: ID
11181+
profiles__profile_name__source__id: ID
11182+
profiles__profile_name__value: String
11183+
profiles__profile_name__values: [String]
11184+
profiles__profile_priority__is_protected: Boolean
11185+
profiles__profile_priority__owner__id: ID
11186+
profiles__profile_priority__source__id: ID
11187+
profiles__profile_priority__value: BigInt
11188+
profiles__profile_priority__values: [BigInt]
1116711189
subscriber_of_groups__description__value: String
1116811190
subscriber_of_groups__description__values: [String]
1116911191
subscriber_of_groups__group_type__value: String
@@ -11293,6 +11315,18 @@ type Query {
1129311315
offset: Int
1129411316
order: OrderInput
1129511317
partial_match: Boolean
11318+
profiles__ids: [ID]
11319+
profiles__isnull: Boolean
11320+
profiles__profile_name__is_protected: Boolean
11321+
profiles__profile_name__owner__id: ID
11322+
profiles__profile_name__source__id: ID
11323+
profiles__profile_name__value: String
11324+
profiles__profile_name__values: [String]
11325+
profiles__profile_priority__is_protected: Boolean
11326+
profiles__profile_priority__owner__id: ID
11327+
profiles__profile_priority__source__id: ID
11328+
profiles__profile_priority__value: BigInt
11329+
profiles__profile_priority__values: [BigInt]
1129611330
subscriber_of_groups__description__value: String
1129711331
subscriber_of_groups__description__values: [String]
1129811332
subscriber_of_groups__group_type__value: String
@@ -11529,6 +11563,18 @@ type Query {
1152911563
prefix__source__id: ID
1153011564
prefix__value: String
1153111565
prefix__values: [String]
11566+
profiles__ids: [ID]
11567+
profiles__isnull: Boolean
11568+
profiles__profile_name__is_protected: Boolean
11569+
profiles__profile_name__owner__id: ID
11570+
profiles__profile_name__source__id: ID
11571+
profiles__profile_name__value: String
11572+
profiles__profile_name__values: [String]
11573+
profiles__profile_priority__is_protected: Boolean
11574+
profiles__profile_priority__owner__id: ID
11575+
profiles__profile_priority__source__id: ID
11576+
profiles__profile_priority__value: BigInt
11577+
profiles__profile_priority__values: [BigInt]
1153211578
resource_pool__default_address_type__is_protected: Boolean
1153311579
resource_pool__default_address_type__owner__id: ID
1153411580
resource_pool__default_address_type__source__id: ID
@@ -11622,6 +11668,18 @@ type Query {
1162211668
offset: Int
1162311669
order: OrderInput
1162411670
partial_match: Boolean
11671+
profiles__ids: [ID]
11672+
profiles__isnull: Boolean
11673+
profiles__profile_name__is_protected: Boolean
11674+
profiles__profile_name__owner__id: ID
11675+
profiles__profile_name__source__id: ID
11676+
profiles__profile_name__value: String
11677+
profiles__profile_name__values: [String]
11678+
profiles__profile_priority__is_protected: Boolean
11679+
profiles__profile_priority__owner__id: ID
11680+
profiles__profile_priority__source__id: ID
11681+
profiles__profile_priority__value: BigInt
11682+
profiles__profile_priority__values: [BigInt]
1162511683
subscriber_of_groups__description__value: String
1162611684
subscriber_of_groups__description__values: [String]
1162711685
subscriber_of_groups__group_type__value: String

0 commit comments

Comments
 (0)