Skip to content

Commit df9138e

Browse files
committed
fix(network): revert filter to network, port (#60)
1 parent 83e471c commit df9138e

File tree

2 files changed

+66
-23
lines changed

2 files changed

+66
-23
lines changed

src/openstack_mcp_server/tools/network_tools.py

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -73,23 +73,14 @@ def get_networks(
7373
filters["status"] = status_filter.upper()
7474

7575
if shared_only:
76-
filters["shared"] = True
76+
filters["is_shared"] = True
7777

78-
server_filters = self._sanitize_server_filters(filters)
79-
networks = conn.network.networks(**server_filters)
78+
networks = conn.network.networks(**filters)
8079

81-
results = [
80+
return [
8281
self._convert_to_network_model(network) for network in networks
8382
]
8483

85-
if status_filter:
86-
status_upper = status_filter.upper()
87-
results = [
88-
n for n in results if (n.status or "").upper() == status_upper
89-
]
90-
91-
return results
92-
9384
def create_network(
9485
self,
9586
name: str,
@@ -464,16 +455,9 @@ def get_ports(
464455
if network_id:
465456
filters["network_id"] = network_id
466457

467-
server_filters = self._sanitize_server_filters(filters)
468-
ports = conn.network.ports(**server_filters)
458+
ports = conn.network.ports(**filters)
469459

470-
results = [self._convert_to_port_model(port) for port in ports]
471-
if status_filter:
472-
status_upper = status_filter.upper()
473-
results = [
474-
p for p in results if (p.status or "").upper() == status_upper
475-
]
476-
return results
460+
return [self._convert_to_port_model(port) for port in ports]
477461

478462
def get_port_allowed_address_pairs(self, port_id: str) -> list[dict]:
479463
"""

tests/tools/test_network_tools.py

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,9 @@ def test_get_networks_with_status_filter(
155155
assert result[0].id == "net-active"
156156
assert result[0].status == "ACTIVE"
157157

158-
mock_conn.network.networks.assert_called_once_with()
158+
mock_conn.network.networks.assert_called_once_with(
159+
status="ACTIVE",
160+
)
159161

160162
def test_get_networks_shared_only(
161163
self,
@@ -202,9 +204,37 @@ def test_get_networks_shared_only(
202204
assert result[0].is_shared is True
203205

204206
mock_conn.network.networks.assert_called_once_with(
205-
shared=True,
207+
is_shared=True,
206208
)
207209

210+
def test_get_networks_status_filter_case_insensitive(
211+
self,
212+
mock_openstack_connect_network,
213+
):
214+
mock_conn = mock_openstack_connect_network
215+
216+
mock_network = Mock()
217+
mock_network.id = "net-active"
218+
mock_network.name = "active-network"
219+
mock_network.status = "ACTIVE"
220+
mock_network.description = None
221+
mock_network.is_admin_state_up = True
222+
mock_network.is_shared = False
223+
mock_network.mtu = None
224+
mock_network.provider_network_type = None
225+
mock_network.provider_physical_network = None
226+
mock_network.provider_segmentation_id = None
227+
mock_network.project_id = None
228+
229+
mock_conn.network.networks.return_value = [mock_network]
230+
231+
tools = self.get_network_tools()
232+
res = tools.get_networks(status_filter="active")
233+
234+
assert len(res) == 1
235+
assert res[0].status == "ACTIVE"
236+
mock_conn.network.networks.assert_called_once_with(status="ACTIVE")
237+
208238
def test_create_network_success(self, mock_openstack_connect_network):
209239
"""Test creating a network successfully."""
210240
mock_conn = mock_openstack_connect_network
@@ -517,6 +547,7 @@ def test_get_ports_with_filters(self, mock_openstack_connect_network):
517547
]
518548

519549
mock_conn.network.ports.assert_called_once_with(
550+
status="ACTIVE",
520551
device_id="device-1",
521552
network_id="net-1",
522553
)
@@ -568,6 +599,34 @@ def test_create_port_success(self, mock_openstack_connect_network):
568599

569600
mock_conn.network.create_port.assert_called_once()
570601

602+
def test_get_ports_status_filter_only(
603+
self, mock_openstack_connect_network
604+
):
605+
mock_conn = mock_openstack_connect_network
606+
607+
port = Mock()
608+
port.id = "port-1"
609+
port.name = "p1"
610+
port.status = "DOWN"
611+
port.description = None
612+
port.project_id = None
613+
port.network_id = "net-1"
614+
port.admin_state_up = True
615+
port.is_admin_state_up = True
616+
port.device_id = None
617+
port.device_owner = None
618+
port.mac_address = "fa:16:3e:00:00:03"
619+
port.fixed_ips = []
620+
port.security_group_ids = None
621+
622+
mock_conn.network.ports.return_value = [port]
623+
624+
tools = self.get_network_tools()
625+
res = tools.get_ports(status_filter="down")
626+
assert len(res) == 1
627+
assert res[0].status == "DOWN"
628+
mock_conn.network.ports.assert_called_once_with(status="DOWN")
629+
571630
def test_get_port_detail_success(self, mock_openstack_connect_network):
572631
mock_conn = mock_openstack_connect_network
573632

0 commit comments

Comments
 (0)