summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-06-29 17:28:39 +0000
committerGerrit Code Review <review@openstack.org>2016-06-29 17:28:39 +0000
commit4b61efe3f9f6158c6062ff3c56bb5116b7f08d87 (patch)
tree21ab16bbb5e9372b13609d0b03c6439d4c453036
parent4b38753a929461cf2c20cd17e576b5e4b9314777 (diff)
parentc7fb3b36556a6e7622dd7b2bf2ddb5209e518773 (diff)
downloadpython-openstackclient-4b61efe3f9f6158c6062ff3c56bb5116b7f08d87.tar.gz
Merge "Add "--device-owner" option to "port list""
-rw-r--r--doc/source/command-objects/port.rst12
-rw-r--r--openstackclient/network/v2/port.py14
-rw-r--r--openstackclient/tests/network/v2/test_port.py41
-rw-r--r--releasenotes/notes/bp-neutron-client-a0552f8ca909b665.yaml3
4 files changed, 66 insertions, 4 deletions
diff --git a/doc/source/command-objects/port.rst b/doc/source/command-objects/port.rst
index 880161f9..9d93ee62 100644
--- a/doc/source/command-objects/port.rst
+++ b/doc/source/command-objects/port.rst
@@ -45,7 +45,8 @@ Create new port
.. option:: --device-owner <device-owner>
- Device owner of this port
+ Device owner of this port. This is the entity that uses
+ the port (for example, network:dhcp).
.. option:: --vnic-type <vnic-type>
@@ -113,8 +114,14 @@ List ports
.. code:: bash
os port list
+ [--device-owner <device-owner>]
[--router <router>]
+.. option:: --device-owner <device-owner>
+
+ List only ports with the specified device owner. This is
+ the entity that uses the port (for example, network:dhcp).
+
.. option:: --router <router>
List only ports attached to this router (name or ID)
@@ -154,7 +161,8 @@ Set port properties
.. option:: --device-owner <device-owner>
- Device owner of this port
+ Device owner of this port. This is the entity that uses
+ the port (for example, network:dhcp).
.. option:: --vnic-type <vnic-type>
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py
index 5d1431b5..2a069f09 100644
--- a/openstackclient/network/v2/port.py
+++ b/openstackclient/network/v2/port.py
@@ -196,7 +196,8 @@ def _add_updatable_args(parser):
parser.add_argument(
'--device-owner',
metavar='<device-owner>',
- help=_("Device owner of this port")
+ help=_("Device owner of this port. This is the entity that uses "
+ "the port (for example, network:dhcp).")
)
parser.add_argument(
'--vnic-type',
@@ -337,6 +338,13 @@ class ListPort(command.Lister):
def get_parser(self, prog_name):
parser = super(ListPort, self).get_parser(prog_name)
parser.add_argument(
+ '--device-owner',
+ metavar='<device-owner>',
+ help=_("List only ports with the specified device owner. "
+ "This is the entity that uses the port (for example, "
+ "network:dhcp).")
+ )
+ parser.add_argument(
'--router',
metavar='<router>',
dest='router',
@@ -361,10 +369,12 @@ class ListPort(command.Lister):
)
filters = {}
+ if parsed_args.device_owner is not None:
+ filters['device_owner'] = parsed_args.device_owner
if parsed_args.router:
_router = client.find_router(parsed_args.router,
ignore_missing=False)
- filters = {'device_id': _router.id}
+ filters['device_id'] = _router.id
data = client.ports(**filters)
diff --git a/openstackclient/tests/network/v2/test_port.py b/openstackclient/tests/network/v2/test_port.py
index a998585e..871fe872 100644
--- a/openstackclient/tests/network/v2/test_port.py
+++ b/openstackclient/tests/network/v2/test_port.py
@@ -369,6 +369,47 @@ class TestListPort(TestPort):
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
+ def test_port_list_device_owner_opt(self):
+ arglist = [
+ '--device-owner', self._ports[0].device_owner,
+ ]
+
+ verifylist = [
+ ('device_owner', self._ports[0].device_owner)
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.ports.assert_called_once_with(**{
+ 'device_owner': self._ports[0].device_owner
+ })
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_port_list_all_opt(self):
+ arglist = [
+ '--device-owner', self._ports[0].device_owner,
+ '--router', 'fake-router-name',
+ ]
+
+ verifylist = [
+ ('device_owner', self._ports[0].device_owner),
+ ('router', 'fake-router-name')
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.ports.assert_called_once_with(**{
+ 'device_owner': self._ports[0].device_owner,
+ 'device_id': 'fake-router-id'
+ })
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
class TestSetPort(TestPort):
diff --git a/releasenotes/notes/bp-neutron-client-a0552f8ca909b665.yaml b/releasenotes/notes/bp-neutron-client-a0552f8ca909b665.yaml
index 8402e2c9..d3d3d336 100644
--- a/releasenotes/notes/bp-neutron-client-a0552f8ca909b665.yaml
+++ b/releasenotes/notes/bp-neutron-client-a0552f8ca909b665.yaml
@@ -7,3 +7,6 @@ features:
- Add ``geneve`` choice to the ``network create`` command
``--provider-network-type`` option.
[Blueprint :oscbp:`neutron-client`]
+ - Add ``--device-owner`` option to the ``port list`` command
+ to enable listing ports based on device owner.
+ [Blueprint :oscbp:`neutron-client`]