Skip to content

Commit a1e3056

Browse files
committed
Add option to allow filtering by mac-address on port list
Added support to allow filtering ports via --mac-address option to the port list command. Change-Id: I903e443f2f9057571d46520c4cafb88d1972c0cb Partial-bug: #1634333 Partially-Implements: blueprint network-commands-options
1 parent 5e3ec1b commit a1e3056

4 files changed

Lines changed: 42 additions & 2 deletions

File tree

doc/source/command-objects/port.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ List ports
127127
[--device-owner <device-owner>]
128128
[--router <router> | --server <server>]
129129
[--network <network>]
130+
[--mac-address <mac-address>]
130131
[--long]
131132
132133
.. option:: --device-owner <device-owner>
@@ -146,6 +147,10 @@ List ports
146147
147148
List only ports attached to this network (name or ID)
148149
150+
.. option:: --mac-address <mac-address>
151+
152+
List only ports with this MAC address
153+
149154
.. option:: --long
150155
151156
List additional fields in output

openstackclient/network/v2/port.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,11 @@ def get_parser(self, prog_name):
384384
metavar='<server>',
385385
help=_("List only ports attached to this server (name or ID)"),
386386
)
387+
parser.add_argument(
388+
'--mac-address',
389+
metavar='<mac-address>',
390+
help=_("List only ports with this MAC address")
391+
)
387392
parser.add_argument(
388393
'--long',
389394
action='store_true',
@@ -429,6 +434,8 @@ def take_action(self, parsed_args):
429434
network = network_client.find_network(parsed_args.network,
430435
ignore_missing=False)
431436
filters['network_id'] = network.id
437+
if parsed_args.mac_address:
438+
filters['mac_address'] = parsed_args.mac_address
432439

433440
data = network_client.ports(**filters)
434441

openstackclient/tests/unit/network/v2/test_port.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,12 +530,14 @@ def test_port_list_all_opt(self):
530530
'--device-owner', self._ports[0].device_owner,
531531
'--router', 'fake-router-name',
532532
'--network', 'fake-network-name',
533+
'--mac-address', self._ports[0].mac_address,
533534
]
534535

535536
verifylist = [
536537
('device_owner', self._ports[0].device_owner),
537538
('router', 'fake-router-name'),
538-
('network', 'fake-network-name')
539+
('network', 'fake-network-name'),
540+
('mac_address', self._ports[0].mac_address)
539541
]
540542

541543
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -545,7 +547,27 @@ def test_port_list_all_opt(self):
545547
self.network.ports.assert_called_once_with(**{
546548
'device_owner': self._ports[0].device_owner,
547549
'device_id': 'fake-router-id',
548-
'network_id': 'fake-network-id'
550+
'network_id': 'fake-network-id',
551+
'mac_address': self._ports[0].mac_address
552+
})
553+
self.assertEqual(self.columns, columns)
554+
self.assertEqual(self.data, list(data))
555+
556+
def test_port_list_mac_address_opt(self):
557+
arglist = [
558+
'--mac-address', self._ports[0].mac_address,
559+
]
560+
561+
verifylist = [
562+
('mac_address', self._ports[0].mac_address)
563+
]
564+
565+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
566+
567+
columns, data = self.cmd.take_action(parsed_args)
568+
569+
self.network.ports.assert_called_once_with(**{
570+
'mac_address': self._ports[0].mac_address
549571
})
550572
self.assertEqual(self.columns, columns)
551573
self.assertEqual(self.data, list(data))
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
features:
3+
- |
4+
Add support to allow filtering ports via ``--mac-address``
5+
option to the ``port list`` command.
6+
[Bug `1634333 <https://bugs.launchpad.net/bugs/1634333>`_]

0 commit comments

Comments
 (0)