Skip to content

Commit b70afef

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add "router remove port" to osc"
2 parents 0ea80a9 + 8ecdc57 commit b70afef

5 files changed

Lines changed: 95 additions & 1 deletion

File tree

doc/source/command-objects/router.rst

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Network v2
66

77
router add port
88
---------------
9+
910
Add a port to a router
1011

1112
.. program:: router add port
@@ -102,6 +103,29 @@ List routers
102103
103104
List additional fields in output
104105
106+
router remove port
107+
------------------
108+
109+
Remove a port from a router
110+
111+
.. program:: router remove port
112+
.. code:: bash
113+
114+
os router remove port
115+
<router>
116+
<port>
117+
118+
.. _router_remove_port:
119+
120+
.. describe:: <router>
121+
122+
Router from which port will be removed (name or ID)
123+
124+
.. describe:: <port>
125+
126+
Port to be removed (name or ID)
127+
128+
105129
router set
106130
----------
107131
@@ -167,4 +191,4 @@ Display router details
167191
.. _router_show-router:
168192
.. describe:: <router>
169193
170-
Router to display (name or ID)
194+
Router to display (name or ID)

openstackclient/network/v2/router.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,30 @@ def take_action(self, parsed_args):
244244
) for s in data))
245245

246246

247+
class RemovePortFromRouter(command.Command):
248+
"""Remove a port from a router"""
249+
250+
def get_parser(self, prog_name):
251+
parser = super(RemovePortFromRouter, self).get_parser(prog_name)
252+
parser.add_argument(
253+
'router',
254+
metavar='<router>',
255+
help="Router from which port will be removed (name or ID)",
256+
)
257+
parser.add_argument(
258+
'port',
259+
metavar='<port>',
260+
help="Port to be removed (name or ID).",
261+
)
262+
return parser
263+
264+
def take_action(self, parsed_args):
265+
client = self.app.client_manager.network
266+
port = client.find_port(parsed_args.port, ignore_missing=False)
267+
client.router_remove_interface(client.find_router(
268+
parsed_args.router, ignore_missing=False), port_id=port.id)
269+
270+
247271
class SetRouter(command.Command):
248272
"""Set router properties"""
249273

openstackclient/tests/network/v2/test_router.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,46 @@ def test_router_list_long(self):
267267
self.assertEqual(self.data_long, list(data))
268268

269269

270+
class TestRemovePortFromRouter(TestRouter):
271+
'''Remove port from a Router '''
272+
273+
_port = network_fakes.FakePort.create_one_port()
274+
_router = network_fakes.FakeRouter.create_one_router(
275+
attrs={'port': _port.id})
276+
277+
def setUp(self):
278+
super(TestRemovePortFromRouter, self).setUp()
279+
self.network.router_remove_interface = mock.Mock()
280+
self.cmd = router.RemovePortFromRouter(self.app, self.namespace)
281+
self.network.find_router = mock.Mock(return_value=self._router)
282+
self.network.find_port = mock.Mock(return_value=self._port)
283+
284+
def test_remove_port_no_option(self):
285+
arglist = []
286+
verifylist = []
287+
288+
# Missing required args should bail here
289+
self.assertRaises(tests_utils.ParserException, self.check_parser,
290+
self.cmd, arglist, verifylist)
291+
292+
def test_remove_port_required_options(self):
293+
arglist = [
294+
self._router.id,
295+
self._router.port,
296+
]
297+
verifylist = [
298+
('router', self._router.id),
299+
('port', self._router.port),
300+
]
301+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
302+
303+
result = self.cmd.take_action(parsed_args)
304+
305+
self.network.router_remove_interface.assert_called_with(
306+
self._router, **{'port_id': self._router.port})
307+
self.assertIsNone(result)
308+
309+
270310
class TestSetRouter(TestRouter):
271311

272312
# The router to set.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Add ``router remove port`` command
5+
[Bug `1546849 <https://bugs.launchpad.net/bugs/1546849>`_]

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ openstack.network.v2 =
342342
router_create = openstackclient.network.v2.router:CreateRouter
343343
router_delete = openstackclient.network.v2.router:DeleteRouter
344344
router_list = openstackclient.network.v2.router:ListRouter
345+
router_remove_port = openstackclient.network.v2.router:RemovePortFromRouter
345346
router_set = openstackclient.network.v2.router:SetRouter
346347
router_show = openstackclient.network.v2.router:ShowRouter
347348

0 commit comments

Comments
 (0)