Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CoreStandardGroups created or updated by a generator in Infrahub are now stored as a member of the CoreGeneratorGroup. Previously they were being stored as children of the CoreGeneratorGroup.
41 changes: 6 additions & 35 deletions infrahub_sdk/query_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
self.related_node_ids: list[str] = []
self.related_group_ids: list[str] = []
self.unused_member_ids: list[str] | None = None
self.unused_child_ids: list[str] | None = None
self.previous_members: list[RelatedNodeBase] | None = None
self.previous_children: list[RelatedNodeBase] | None = None
self.identifier: str | None = None
Expand Down Expand Up @@ -88,15 +87,14 @@
async def get_group(self, store_peers: bool = False) -> InfrahubNode | None:
group_name = self._generate_group_name()
try:
group = await self.client.get(kind=self.group_type, name__value=group_name, include=["members", "children"])
group = await self.client.get(kind=self.group_type, name__value=group_name, include=["members"])

Check warning on line 90 in infrahub_sdk/query_groups.py

View check run for this annotation

Codecov / codecov/patch

infrahub_sdk/query_groups.py#L90

Added line #L90 was not covered by tests
except NodeNotFoundError:
return None

if not store_peers:
return group

self.previous_members = group.members.peers # type: ignore[attr-defined]
self.previous_children = group.children.peers # type: ignore[attr-defined]
return group

async def delete_unused(self) -> None:
Expand All @@ -105,11 +103,6 @@
if member.id in self.unused_member_ids and member.typename:
await self.client.delete(kind=member.typename, id=member.id)

if self.previous_children and self.unused_child_ids:
for child in self.previous_children:
if child.id in self.unused_child_ids and child.typename:
await self.client.delete(kind=child.typename, id=child.id)

async def add_related_nodes(self, ids: list[str], update_group_context: bool | None = None) -> None:
"""
Add related Nodes IDs to the context.
Expand Down Expand Up @@ -140,15 +133,9 @@
"""
Create or update (using upsert) a CoreStandardGroup to store all the Nodes and Groups used during an execution.
"""
children: list[str] = []
members: list[str] = []

if self.related_group_ids:
children = self.related_group_ids
if self.related_node_ids:
members = self.related_node_ids
members: list[str] = self.related_group_ids + self.related_node_ids

Check warning on line 136 in infrahub_sdk/query_groups.py

View check run for this annotation

Codecov / codecov/patch

infrahub_sdk/query_groups.py#L136

Added line #L136 was not covered by tests

if not children and not members:
if not members:
return

group_name = self._generate_group_name()
Expand All @@ -164,7 +151,6 @@
name=group_name,
description=description,
members=members,
children=children,
)
await group.save(allow_upsert=True, update_group_context=False)

Expand All @@ -173,7 +159,6 @@

# Calculate how many nodes should be deleted
self.unused_member_ids = set(existing_group.members.peer_ids) - set(members) # type: ignore
self.unused_child_ids = set(existing_group.children.peer_ids) - set(children) # type: ignore

if not self.delete_unused_nodes:
return
Expand All @@ -194,15 +179,14 @@
def get_group(self, store_peers: bool = False) -> InfrahubNodeSync | None:
group_name = self._generate_group_name()
try:
group = self.client.get(kind=self.group_type, name__value=group_name, include=["members", "children"])
group = self.client.get(kind=self.group_type, name__value=group_name, include=["members"])

Check warning on line 182 in infrahub_sdk/query_groups.py

View check run for this annotation

Codecov / codecov/patch

infrahub_sdk/query_groups.py#L182

Added line #L182 was not covered by tests
except NodeNotFoundError:
return None

if not store_peers:
return group

self.previous_members = group.members.peers # type: ignore[attr-defined]
self.previous_children = group.children.peers # type: ignore[attr-defined]
return group

def delete_unused(self) -> None:
Expand All @@ -211,11 +195,6 @@
if member.id in self.unused_member_ids and member.typename:
self.client.delete(kind=member.typename, id=member.id)

if self.previous_children and self.unused_child_ids:
for child in self.previous_children:
if child.id in self.unused_child_ids and child.typename:
self.client.delete(kind=child.typename, id=child.id)

def add_related_nodes(self, ids: list[str], update_group_context: bool | None = None) -> None:
"""
Add related Nodes IDs to the context.
Expand Down Expand Up @@ -246,15 +225,9 @@
"""
Create or update (using upsert) a CoreStandardGroup to store all the Nodes and Groups used during an execution.
"""
children: list[str] = []
members: list[str] = []

if self.related_group_ids:
children = self.related_group_ids
if self.related_node_ids:
members = self.related_node_ids
members: list[str] = self.related_node_ids + self.related_group_ids

Check warning on line 228 in infrahub_sdk/query_groups.py

View check run for this annotation

Codecov / codecov/patch

infrahub_sdk/query_groups.py#L228

Added line #L228 was not covered by tests

if not children and not members:
if not members:
return

group_name = self._generate_group_name()
Expand All @@ -270,7 +243,6 @@
name=group_name,
description=description,
members=members,
children=children,
)
group.save(allow_upsert=True, update_group_context=False)

Expand All @@ -279,7 +251,6 @@

# Calculate how many nodes should be deleted
self.unused_member_ids = set(existing_group.members.peer_ids) - set(members) # type: ignore
self.unused_child_ids = set(existing_group.children.peer_ids) - set(children) # type: ignore

if not self.delete_unused_nodes:
return
Expand Down