Skip to content

Commit d548942

Browse files
author
Jas
committed
Add port list command
This patch adds the ability to list all created ports Change-Id: Ie1a48c203cabc96346a4950f21b83493d58a66a5 Partial-bug: #1519909 Partially-implements: blueprint neutron-client
1 parent fc24f37 commit d548942

5 files changed

Lines changed: 90 additions & 0 deletions

File tree

doc/source/command-objects/port.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,16 @@ Delete port(s)
9898
9999
Port(s) to delete (name or ID)
100100
101+
port list
102+
---------
103+
104+
List ports
105+
106+
.. program:: port list
107+
.. code:: bash
108+
109+
os port list
110+
101111
port show
102112
---------
103113

openstackclient/network/v2/port.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,33 @@ def take_action(self, parsed_args):
238238
client.delete_port(res)
239239

240240

241+
class ListPort(command.Lister):
242+
"""List ports"""
243+
244+
def take_action(self, parsed_args):
245+
client = self.app.client_manager.network
246+
247+
columns = (
248+
'id',
249+
'name',
250+
'mac_address',
251+
'fixed_ips',
252+
)
253+
column_headers = (
254+
'ID',
255+
'Name',
256+
'MAC Address',
257+
'Fixed IP Addresses',
258+
)
259+
260+
data = client.ports()
261+
return (column_headers,
262+
(utils.get_item_properties(
263+
s, columns,
264+
formatters=_formatters,
265+
) for s in data))
266+
267+
241268
class ShowPort(command.ShowOne):
242269
"""Display port details"""
243270

openstackclient/tests/network/v2/test_port.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,47 @@ def test_delete(self):
199199
self.assertIsNone(result)
200200

201201

202+
class TestListPort(TestPort):
203+
204+
_ports = network_fakes.FakePort.create_ports(count=3)
205+
206+
columns = (
207+
'ID',
208+
'Name',
209+
'MAC Address',
210+
'Fixed IP Addresses',
211+
)
212+
213+
data = []
214+
for prt in _ports:
215+
data.append((
216+
prt.id,
217+
prt.name,
218+
prt.mac_address,
219+
utils.format_list_of_dicts(prt.fixed_ips),
220+
))
221+
222+
def setUp(self):
223+
super(TestListPort, self).setUp()
224+
225+
# Get the command object to test
226+
self.cmd = port.ListPort(self.app, self.namespace)
227+
228+
self.network.ports = mock.Mock(return_value=self._ports)
229+
230+
def test_port_list_no_options(self):
231+
arglist = []
232+
verifylist = []
233+
234+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
235+
236+
columns, data = self.cmd.take_action(parsed_args)
237+
238+
self.network.ports.assert_called_with()
239+
self.assertEqual(self.columns, columns)
240+
self.assertEqual(self.data, list(data))
241+
242+
202243
class TestShowPort(TestPort):
203244

204245
# The port to show.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Add support for the ``port list`` command.
5+
[Bug `1519909 <https://bugs.launchpad.net/python-openstackclient/+bug/1519909>`_]

setup.cfg

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,27 +326,34 @@ openstack.network.v2 =
326326
ip_floating_delete = openstackclient.network.v2.floating_ip:DeleteFloatingIP
327327
ip_floating_list = openstackclient.network.v2.floating_ip:ListFloatingIP
328328
ip_floating_show = openstackclient.network.v2.floating_ip:ShowFloatingIP
329+
329330
network_create = openstackclient.network.v2.network:CreateNetwork
330331
network_delete = openstackclient.network.v2.network:DeleteNetwork
331332
network_list = openstackclient.network.v2.network:ListNetwork
332333
network_set = openstackclient.network.v2.network:SetNetwork
333334
network_show = openstackclient.network.v2.network:ShowNetwork
335+
334336
port_create = openstackclient.network.v2.port:CreatePort
335337
port_delete = openstackclient.network.v2.port:DeletePort
338+
port_list = openstackclient.network.v2.port:ListPort
336339
port_show = openstackclient.network.v2.port:ShowPort
340+
337341
router_create = openstackclient.network.v2.router:CreateRouter
338342
router_delete = openstackclient.network.v2.router:DeleteRouter
339343
router_list = openstackclient.network.v2.router:ListRouter
340344
router_set = openstackclient.network.v2.router:SetRouter
341345
router_show = openstackclient.network.v2.router:ShowRouter
346+
342347
security_group_delete = openstackclient.network.v2.security_group:DeleteSecurityGroup
343348
security_group_list = openstackclient.network.v2.security_group:ListSecurityGroup
344349
security_group_set = openstackclient.network.v2.security_group:SetSecurityGroup
345350
security_group_rule_delete = openstackclient.network.v2.security_group_rule:DeleteSecurityGroupRule
346351
security_group_rule_show = openstackclient.network.v2.security_group_rule:ShowSecurityGroupRule
352+
347353
subnet_delete = openstackclient.network.v2.subnet:DeleteSubnet
348354
subnet_list = openstackclient.network.v2.subnet:ListSubnet
349355
subnet_show = openstackclient.network.v2.subnet:ShowSubnet
356+
350357
subnet_pool_delete = openstackclient.network.v2.subnet_pool:DeleteSubnetPool
351358
subnet_pool_list = openstackclient.network.v2.subnet_pool:ListSubnetPool
352359
subnet_pool_show = openstackclient.network.v2.subnet_pool:ShowSubnetPool

0 commit comments

Comments
 (0)