summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/source/command-objects/port.rst5
-rw-r--r--openstackclient/network/v2/port.py11
-rw-r--r--openstackclient/tests/unit/network/v2/test_port.py41
-rw-r--r--releasenotes/notes/bug-1613995-10bb3895d702c063.yaml7
4 files changed, 64 insertions, 0 deletions
diff --git a/doc/source/command-objects/port.rst b/doc/source/command-objects/port.rst
index e3e783ad..980f77b9 100644
--- a/doc/source/command-objects/port.rst
+++ b/doc/source/command-objects/port.rst
@@ -117,6 +117,7 @@ List ports
[--device-owner <device-owner>]
[--router <router> | --server <server>]
[--network <network>]
+ [--long]
.. option:: --device-owner <device-owner>
@@ -135,6 +136,10 @@ List ports
List only ports attached to this network (name or ID)
+.. option:: --long
+
+ List additional fields in output
+
port set
--------
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py
index 92b286a9..abdc5f05 100644
--- a/openstackclient/network/v2/port.py
+++ b/openstackclient/network/v2/port.py
@@ -360,6 +360,12 @@ class ListPort(command.Lister):
metavar='<server>',
help=_("List only ports attached to this server (name or ID)"),
)
+ parser.add_argument(
+ '--long',
+ action='store_true',
+ default=False,
+ help=_("List additional fields in output")
+ )
return parser
def take_action(self, parsed_args):
@@ -371,15 +377,20 @@ class ListPort(command.Lister):
'name',
'mac_address',
'fixed_ips',
+ 'status',
)
column_headers = (
'ID',
'Name',
'MAC Address',
'Fixed IP Addresses',
+ 'Status',
)
filters = {}
+ if parsed_args.long:
+ columns += ('security_groups', 'device_owner',)
+ column_headers += ('Security Groups', 'Device Owner',)
if parsed_args.device_owner is not None:
filters['device_owner'] = parsed_args.device_owner
if parsed_args.router:
diff --git a/openstackclient/tests/unit/network/v2/test_port.py b/openstackclient/tests/unit/network/v2/test_port.py
index a2aceab1..bfc26bf4 100644
--- a/openstackclient/tests/unit/network/v2/test_port.py
+++ b/openstackclient/tests/unit/network/v2/test_port.py
@@ -317,6 +317,17 @@ class TestListPort(TestPort):
'Name',
'MAC Address',
'Fixed IP Addresses',
+ 'Status',
+ )
+
+ columns_long = (
+ 'ID',
+ 'Name',
+ 'MAC Address',
+ 'Fixed IP Addresses',
+ 'Status',
+ 'Security Groups',
+ 'Device Owner',
)
data = []
@@ -326,6 +337,19 @@ class TestListPort(TestPort):
prt.name,
prt.mac_address,
utils.format_list_of_dicts(prt.fixed_ips),
+ prt.status,
+ ))
+
+ data_long = []
+ for prt in _ports:
+ data_long.append((
+ prt.id,
+ prt.name,
+ prt.mac_address,
+ utils.format_list_of_dicts(prt.fixed_ips),
+ prt.status,
+ utils.format_list(prt.security_groups),
+ prt.device_owner,
))
def setUp(self):
@@ -439,6 +463,23 @@ class TestListPort(TestPort):
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
+ def test_list_port_with_long(self):
+ arglist = [
+ '--long',
+ ]
+
+ verifylist = [
+ ('long', True),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.ports.assert_called_once_with()
+ self.assertEqual(self.columns_long, columns)
+ self.assertEqual(self.data_long, list(data))
+
class TestSetPort(TestPort):
diff --git a/releasenotes/notes/bug-1613995-10bb3895d702c063.yaml b/releasenotes/notes/bug-1613995-10bb3895d702c063.yaml
new file mode 100644
index 00000000..466f950a
--- /dev/null
+++ b/releasenotes/notes/bug-1613995-10bb3895d702c063.yaml
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ Add a new column ``status`` and ``--long`` option to the result of the
+ ``os port list`` command.
+ [Bug `1613995 <https://bugs.launchpad.net/bugs/1613995>`_]
+ [Bug `1614321 <https://bugs.launchpad.net/bugs/1614321>`_]