Skip to content

Commit 0b131fb

Browse files
committed
additional changes
1 parent 37d591e commit 0b131fb

File tree

6 files changed

+134
-6
lines changed

6 files changed

+134
-6
lines changed

infrahub_sdk/client.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,12 @@ def start_tracking(
172172
params: dict[str, Any] | None = None,
173173
delete_unused_nodes: bool = False,
174174
group_type: str | None = None,
175+
group_params: dict[str, Any] | None = None,
175176
) -> Self:
176177
self.mode = InfrahubClientMode.TRACKING
177178
identifier = identifier or self.identifier or "python-sdk"
178179
self.set_context_properties(
179-
identifier=identifier, params=params, delete_unused_nodes=delete_unused_nodes, group_type=group_type
180+
identifier=identifier, params=params, delete_unused_nodes=delete_unused_nodes, group_type=group_type, group_params=group_params
180181
)
181182
return self
182183

@@ -187,14 +188,16 @@ def set_context_properties(
187188
delete_unused_nodes: bool = True,
188189
reset: bool = True,
189190
group_type: str | None = None,
191+
group_params: dict[str, Any] | None = None,
190192
) -> None:
191193
if reset:
192194
if isinstance(self, InfrahubClient):
193195
self.group_context = InfrahubGroupContext(self)
194196
elif isinstance(self, InfrahubClientSync):
195197
self.group_context = InfrahubGroupContextSync(self)
198+
196199
self.group_context.set_properties(
197-
identifier=identifier, params=params, delete_unused_nodes=delete_unused_nodes, group_type=group_type
200+
identifier=identifier, params=params, delete_unused_nodes=delete_unused_nodes, group_type=group_type, group_params=group_params
198201
)
199202

200203
def _graphql_url(

infrahub_sdk/protocols.py

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ class BuiltinIPPrefix(CoreNode):
6868
children: RelationshipManager
6969

7070

71+
class CoreAction(CoreNode):
72+
name: String
73+
description: StringOptional
74+
triggers: RelationshipManager
75+
76+
7177
class CoreArtifactTarget(CoreNode):
7278
artifacts: RelationshipManager
7379

@@ -154,6 +160,10 @@ class CoreMenu(CoreNode):
154160
children: RelationshipManager
155161

156162

163+
class CoreNodeTriggerMatch(CoreNode):
164+
trigger: RelatedNode
165+
166+
157167
class CoreObjectComponentTemplate(CoreNode):
158168
template_name: String
159169

@@ -195,6 +205,14 @@ class CoreTransformation(CoreNode):
195205
tags: RelationshipManager
196206

197207

208+
class CoreTriggerRule(CoreNode):
209+
name: String
210+
description: StringOptional
211+
active: Boolean
212+
branch_scope: Dropdown
213+
action: RelatedNode
214+
215+
198216
class CoreValidator(CoreNode):
199217
label: StringOptional
200218
state: Enum
@@ -328,6 +346,10 @@ class CoreFileThread(CoreThread):
328346
repository: RelatedNode
329347

330348

349+
class CoreGeneratorAction(CoreAction):
350+
generator: RelatedNode
351+
352+
331353
class CoreGeneratorCheck(CoreCheck):
332354
instance: String
333355

@@ -382,6 +404,16 @@ class CoreGraphQLQueryGroup(CoreGroup):
382404
query: RelatedNode
383405

384406

407+
class CoreGroupAction(CoreAction):
408+
add_members: Boolean
409+
group: RelatedNode
410+
411+
412+
class CoreGroupTriggerRule(CoreTriggerRule):
413+
members_added: Boolean
414+
group: RelatedNode
415+
416+
385417
class CoreIPAddressPool(CoreResourcePool, LineageSource):
386418
default_address_type: String
387419
default_prefix_length: IntegerOptional
@@ -401,6 +433,25 @@ class CoreMenuItem(CoreMenu):
401433
pass
402434

403435

436+
class CoreNodeTriggerAttributeMatch(CoreNodeTriggerMatch):
437+
attribute_name: String
438+
value: StringOptional
439+
value_previous: StringOptional
440+
value_match: Dropdown
441+
442+
443+
class CoreNodeTriggerRelationshipMatch(CoreNodeTriggerMatch):
444+
relationship_name: String
445+
added: Boolean
446+
peer: StringOptional
447+
448+
449+
class CoreNodeTriggerRule(CoreTriggerRule):
450+
node_kind: String
451+
mutation_action: Enum
452+
matches: RelationshipManager
453+
454+
404455
class CoreNumberPool(CoreResourcePool, LineageSource):
405456
node: String
406457
node_attribute: String
@@ -448,6 +499,11 @@ class CoreRepository(LineageOwner, LineageSource, CoreGenericRepository, CoreTas
448499
commit: StringOptional
449500

450501

502+
class CoreRepositoryGroup(CoreGroup):
503+
content: Dropdown
504+
repository: RelatedNode
505+
506+
451507
class CoreRepositoryValidator(CoreValidator):
452508
repository: RelatedNode
453509

@@ -545,6 +601,12 @@ class BuiltinIPPrefixSync(CoreNodeSync):
545601
children: RelationshipManagerSync
546602

547603

604+
class CoreActionSync(CoreNodeSync):
605+
name: String
606+
description: StringOptional
607+
triggers: RelationshipManagerSync
608+
609+
548610
class CoreArtifactTargetSync(CoreNodeSync):
549611
artifacts: RelationshipManagerSync
550612

@@ -631,6 +693,10 @@ class CoreMenuSync(CoreNodeSync):
631693
children: RelationshipManagerSync
632694

633695

696+
class CoreNodeTriggerMatchSync(CoreNodeSync):
697+
trigger: RelatedNodeSync
698+
699+
634700
class CoreObjectComponentTemplateSync(CoreNodeSync):
635701
template_name: String
636702

@@ -672,6 +738,14 @@ class CoreTransformationSync(CoreNodeSync):
672738
tags: RelationshipManagerSync
673739

674740

741+
class CoreTriggerRuleSync(CoreNodeSync):
742+
name: String
743+
description: StringOptional
744+
active: Boolean
745+
branch_scope: Dropdown
746+
action: RelatedNodeSync
747+
748+
675749
class CoreValidatorSync(CoreNodeSync):
676750
label: StringOptional
677751
state: Enum
@@ -805,6 +879,10 @@ class CoreFileThreadSync(CoreThreadSync):
805879
repository: RelatedNodeSync
806880

807881

882+
class CoreGeneratorActionSync(CoreActionSync):
883+
generator: RelatedNodeSync
884+
885+
808886
class CoreGeneratorCheckSync(CoreCheckSync):
809887
instance: String
810888

@@ -859,6 +937,16 @@ class CoreGraphQLQueryGroupSync(CoreGroupSync):
859937
query: RelatedNodeSync
860938

861939

940+
class CoreGroupActionSync(CoreActionSync):
941+
add_members: Boolean
942+
group: RelatedNodeSync
943+
944+
945+
class CoreGroupTriggerRuleSync(CoreTriggerRuleSync):
946+
members_added: Boolean
947+
group: RelatedNodeSync
948+
949+
862950
class CoreIPAddressPoolSync(CoreResourcePoolSync, LineageSourceSync):
863951
default_address_type: String
864952
default_prefix_length: IntegerOptional
@@ -878,6 +966,25 @@ class CoreMenuItemSync(CoreMenuSync):
878966
pass
879967

880968

969+
class CoreNodeTriggerAttributeMatchSync(CoreNodeTriggerMatchSync):
970+
attribute_name: String
971+
value: StringOptional
972+
value_previous: StringOptional
973+
value_match: Dropdown
974+
975+
976+
class CoreNodeTriggerRelationshipMatchSync(CoreNodeTriggerMatchSync):
977+
relationship_name: String
978+
added: Boolean
979+
peer: StringOptional
980+
981+
982+
class CoreNodeTriggerRuleSync(CoreTriggerRuleSync):
983+
node_kind: String
984+
mutation_action: Enum
985+
matches: RelationshipManagerSync
986+
987+
881988
class CoreNumberPoolSync(CoreResourcePoolSync, LineageSourceSync):
882989
node: String
883990
node_attribute: String
@@ -925,6 +1032,11 @@ class CoreRepositorySync(LineageOwnerSync, LineageSourceSync, CoreGenericReposit
9251032
commit: StringOptional
9261033

9271034

1035+
class CoreRepositoryGroupSync(CoreGroupSync):
1036+
content: Dropdown
1037+
repository: RelatedNodeSync
1038+
1039+
9281040
class CoreRepositoryValidatorSync(CoreValidatorSync):
9291041
repository: RelatedNodeSync
9301042

infrahub_sdk/query_groups.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from typing import TYPE_CHECKING
3+
from typing import TYPE_CHECKING, Any
44

55
from .constants import InfrahubClientMode
66
from .exceptions import NodeNotFoundError
@@ -25,13 +25,15 @@ def __init__(self) -> None:
2525
self.params: dict[str, str] = {}
2626
self.delete_unused_nodes: bool = False
2727
self.group_type: str = "CoreStandardGroup"
28+
self.group_params: dict[str, Any] = {}
2829

2930
def set_properties(
3031
self,
3132
identifier: str,
3233
params: dict[str, str] | None = None,
3334
delete_unused_nodes: bool = False,
3435
group_type: str | None = None,
36+
group_params: dict[str, Any] | None = None,
3537
) -> None:
3638
"""Setter method to set the values of identifier and params.
3739
@@ -43,6 +45,7 @@ def set_properties(
4345
self.params = params or {}
4446
self.delete_unused_nodes = delete_unused_nodes
4547
self.group_type = group_type or self.group_type
48+
self.group_params = group_params or {}
4649

4750
def _get_params_as_str(self) -> str:
4851
"""Convert the params in dict format, into a string"""
@@ -151,6 +154,7 @@ async def update_group(self) -> None:
151154
name=group_name,
152155
description=description,
153156
members=members,
157+
**self.group_params,
154158
)
155159
await group.save(allow_upsert=True, update_group_context=False)
156160

@@ -243,6 +247,7 @@ def update_group(self) -> None:
243247
name=group_name,
244248
description=description,
245249
members=members,
250+
**self.group_params,
246251
)
247252
group.save(allow_upsert=True, update_group_context=False)
248253

infrahub_sdk/schema/repository.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,12 @@ class InfrahubObjectConfig(InfrahubRepositoryConfigElement):
153153
file_path: Path = Field(..., description="The file within the repository containing object data.")
154154

155155

156+
class InfrahubMenuConfig(InfrahubRepositoryConfigElement):
157+
model_config = ConfigDict(extra="forbid")
158+
name: str = Field(..., description="The name of the menu")
159+
file_path: Path = Field(..., description="The file within the repository containing menu data.")
160+
161+
156162
RESOURCE_MAP: dict[Any, str] = {
157163
InfrahubJinja2TransformConfig: "jinja2_transforms",
158164
InfrahubCheckDefinitionConfig: "check_definitions",
@@ -161,6 +167,7 @@ class InfrahubObjectConfig(InfrahubRepositoryConfigElement):
161167
InfrahubGeneratorDefinitionConfig: "generator_definitions",
162168
InfrahubRepositoryGraphQLConfig: "queries",
163169
InfrahubObjectConfig: "objects",
170+
InfrahubMenuConfig: "menus",
164171
}
165172

166173

@@ -183,7 +190,8 @@ class InfrahubRepositoryConfig(BaseModel):
183190
default_factory=list, description="Generator definitions"
184191
)
185192
queries: list[InfrahubRepositoryGraphQLConfig] = Field(default_factory=list, description="GraphQL Queries")
186-
objects: list[InfrahubObjectConfig] = Field(default_factory=list, description="Objects")
193+
objects: list[Path] = Field(default_factory=list, description="Objects")
194+
menus: list[Path] = Field(default_factory=list, description="Menus")
187195

188196
@field_validator(
189197
"check_definitions",
@@ -192,7 +200,6 @@ class InfrahubRepositoryConfig(BaseModel):
192200
"python_transforms",
193201
"generator_definitions",
194202
"queries",
195-
"objects",
196203
)
197204
@classmethod
198205
def unique_items(cls, v: list[Any]) -> list[Any]:

infrahub_sdk/spec/object.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ async def create_node(
459459
await node.save(allow_upsert=True)
460460

461461
display_label = node.get_human_friendly_id_as_string() or f"{node.get_kind()} : {node.id}"
462-
client.log.info(f"Node: {display_label}")
462+
client.log.info(f"Created node: {display_label}")
463463

464464
for rel in remaining_rels:
465465
context = {}

infrahub_sdk/testing/schemas/car_person.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def schema_person_base(self) -> NodeSchema:
4848
namespace=NAMESPACE,
4949
include_in_menu=True,
5050
label="Person",
51+
default_filter="name__value",
5152
human_friendly_id=["name__value"],
5253
attributes=[
5354
Attr(name="name", kind=AttributeKind.TEXT, unique=True),

0 commit comments

Comments
 (0)