summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReedip <reedip.banerjee@nectechnologies.in>2016-09-17 13:09:42 +0530
committerReedip <reedip.banerjee@nectechnologies.in>2016-09-19 09:25:10 +0000
commit554607eb3dab879da8e172eacb72930e54f0acf4 (patch)
tree2e21a5e23dfc84fc5318b7de7ad8a12e1aeb8e6a
parent7e990ba1e2ae0ecb804287212797ebad84d7b56b (diff)
downloadpython-openstackclient-554607eb3dab879da8e172eacb72930e54f0acf4.tar.gz
Provide support to list ports by network
The new --network option provides a list of ports connected with the current network. Change-Id: I6a45184887b3e65f792391cb7e91f4ad85f29e03 Partial-Bug:#1562067 Partially-Implements: blueprint network-commands-options
-rw-r--r--doc/source/command-objects/port.rst5
-rw-r--r--openstackclient/network/v2/port.py8
-rw-r--r--openstackclient/tests/unit/network/v2/test_port.py11
-rw-r--r--releasenotes/notes/add-network-list-option-to-ports-9d101344ddeb3e64.yaml7
4 files changed, 29 insertions, 2 deletions
diff --git a/doc/source/command-objects/port.rst b/doc/source/command-objects/port.rst
index 771f2f8d..04cf59a2 100644
--- a/doc/source/command-objects/port.rst
+++ b/doc/source/command-objects/port.rst
@@ -116,6 +116,7 @@ List ports
os port list
[--device-owner <device-owner>]
[--router <router> | --server <server>]
+ [--network <network>]
.. option:: --device-owner <device-owner>
@@ -130,6 +131,10 @@ List ports
List only ports attached to this server (name or ID)
+.. option:: --network <network>
+
+ List only ports attached to this network (name or ID)
+
port set
--------
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py
index d7268573..0df78e43 100644
--- a/openstackclient/network/v2/port.py
+++ b/openstackclient/network/v2/port.py
@@ -345,6 +345,10 @@ class ListPort(command.Lister):
"This is the entity that uses the port (for example, "
"network:dhcp).")
)
+ parser.add_argument(
+ '--network',
+ metavar='<network>',
+ help=_("List only ports connected to this network (name or ID)"))
device_group = parser.add_mutually_exclusive_group()
device_group.add_argument(
'--router',
@@ -387,6 +391,10 @@ class ListPort(command.Lister):
server = utils.find_resource(compute_client.servers,
parsed_args.server)
filters['device_id'] = server.id
+ if parsed_args.network:
+ network = network_client.find_network(parsed_args.network,
+ ignore_missing=False)
+ filters['network_id'] = network.id
data = network_client.ports(**filters)
diff --git a/openstackclient/tests/unit/network/v2/test_port.py b/openstackclient/tests/unit/network/v2/test_port.py
index afa67bba..271e8160 100644
--- a/openstackclient/tests/unit/network/v2/test_port.py
+++ b/openstackclient/tests/unit/network/v2/test_port.py
@@ -337,7 +337,11 @@ class TestListPort(TestPort):
fake_router = network_fakes.FakeRouter.create_one_router({
'id': 'fake-router-id',
})
+ fake_network = network_fakes.FakeNetwork.create_one_network({
+ 'id': 'fake-network-id',
+ })
self.network.find_router = mock.Mock(return_value=fake_router)
+ self.network.find_network = mock.Mock(return_value=fake_network)
self.app.client_manager.compute = mock.Mock()
def test_port_list_no_options(self):
@@ -414,11 +418,13 @@ class TestListPort(TestPort):
arglist = [
'--device-owner', self._ports[0].device_owner,
'--router', 'fake-router-name',
+ '--network', 'fake-network-name',
]
verifylist = [
('device_owner', self._ports[0].device_owner),
- ('router', 'fake-router-name')
+ ('router', 'fake-router-name'),
+ ('network', 'fake-network-name')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -427,7 +433,8 @@ class TestListPort(TestPort):
self.network.ports.assert_called_once_with(**{
'device_owner': self._ports[0].device_owner,
- 'device_id': 'fake-router-id'
+ 'device_id': 'fake-router-id',
+ 'network_id': 'fake-network-id'
})
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
diff --git a/releasenotes/notes/add-network-list-option-to-ports-9d101344ddeb3e64.yaml b/releasenotes/notes/add-network-list-option-to-ports-9d101344ddeb3e64.yaml
new file mode 100644
index 00000000..478b29a3
--- /dev/null
+++ b/releasenotes/notes/add-network-list-option-to-ports-9d101344ddeb3e64.yaml
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ Ports can now be listed as per the networks they are
+ connected to by using the ``--network`` option with
+ the ``port list`` CLI.
+ [ Blueprint `network-commands-options <https://blueprints.launchpad.net/python-openstackclient/+spec/network-commands-options>`_]