Skip to content
Merged
Changes from 1 commit
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
Prev Previous commit
Next Next commit
improve(network): change to convert security group rules into objects…
… during security group conversion (#85)
  • Loading branch information
platanus-kr committed Oct 14, 2025
commit 986e03b60ceed969a955bba0731f914df8be00de
24 changes: 14 additions & 10 deletions src/openstack_mcp_server/tools/network_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
Router,
RouterInterface,
SecurityGroup,
SecurityGroupRule,
Subnet,
)

Expand Down Expand Up @@ -1280,16 +1281,10 @@ def _convert_to_security_group_model(self, openstack_sg) -> SecurityGroup:
rule_ids: list[str] | None = None
rules = getattr(openstack_sg, "security_group_rules", None)
if rules is not None:
extracted: list[str] = []
for r in rules:
rid = None
if isinstance(r, dict):
rid = r.get("id")
else:
rid = getattr(r, "id", None)
if rid:
extracted.append(str(rid))
rule_ids = extracted
dto_rules = [
self._convert_to_security_group_rule_model(r) for r in rules
]
rule_ids = [str(r.id) for r in dto_rules if getattr(r, "id", None)]

return SecurityGroup(
id=openstack_sg.id,
Expand All @@ -1299,3 +1294,12 @@ def _convert_to_security_group_model(self, openstack_sg) -> SecurityGroup:
project_id=getattr(openstack_sg, "project_id", None),
security_group_rule_ids=rule_ids,
)

def _convert_to_security_group_rule_model(self, rule) -> SecurityGroupRule:
"""
Convert an OpenStack Security Group Rule to a SecurityGroupRule DTO.

:param rule: OpenStack security group rule object or dict
:return: Pydantic SecurityGroupRule model
"""
return SecurityGroupRule.model_validate(rule, from_attributes=True)
Comment thread
halucinor marked this conversation as resolved.
Outdated