From 3364855a2283b57ccd09ea6b98ca45aba5dbcccd Mon Sep 17 00:00:00 2001 From: Tang Chen <tangchen@cn.fujitsu.com> Date: Mon, 14 Dec 2015 20:54:03 +0800 Subject: [PATCH] Router: Add "router delete" command using SDK This patch adds "router delete" command to osc using sdk. Change-Id: I47d0ca7f7984942ffceaeb1c9ac69efd09145f40 Implements: blueprint neutron-client Partial-bug: #1519503 --- doc/source/command-objects/router.rst | 16 ++++++++++ openstackclient/network/v2/router.py | 25 ++++++++++++++++ .../tests/network/v2/test_router.py | 29 +++++++++++++++++++ setup.cfg | 1 + 4 files changed, 71 insertions(+) diff --git a/doc/source/command-objects/router.rst b/doc/source/command-objects/router.rst index 9e1e72911a..c3a952e9dd 100644 --- a/doc/source/command-objects/router.rst +++ b/doc/source/command-objects/router.rst @@ -44,6 +44,22 @@ Create new router New router name +router delete +-------------- + +Delete router(s) + +.. program:: router delete +.. code:: bash + + os router delete + <router> [<router> ...] + +.. _router_delete-router: +.. describe:: <router> + + Router(s) to delete (name or ID) + router list ----------- diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py index 755bf10059..0042e93f73 100644 --- a/openstackclient/network/v2/router.py +++ b/openstackclient/network/v2/router.py @@ -16,6 +16,7 @@ import json import logging +from cliff import command from cliff import lister from cliff import show @@ -117,6 +118,30 @@ class CreateRouter(show.ShowOne): return (tuple(columns), data) +class DeleteRouter(command.Command): + """Delete router(s)""" + + log = logging.getLogger(__name__ + '.DeleteRouter') + + def get_parser(self, prog_name): + parser = super(DeleteRouter, self).get_parser(prog_name) + parser.add_argument( + 'router', + metavar="<router>", + nargs="+", + help=("Router(s) to delete (name or ID)") + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + client = self.app.client_manager.network + for router in parsed_args.router: + obj = client.find_router(router) + client.delete_router(obj) + return + + class ListRouter(lister.Lister): """List routers""" diff --git a/openstackclient/tests/network/v2/test_router.py b/openstackclient/tests/network/v2/test_router.py index 5170826cbd..ccda9d2dc2 100644 --- a/openstackclient/tests/network/v2/test_router.py +++ b/openstackclient/tests/network/v2/test_router.py @@ -88,6 +88,35 @@ class TestCreateRouter(TestRouter): self.assertEqual(self.data, data) +class TestDeleteRouter(TestRouter): + + # The router to delete. + _router = network_fakes.FakeRouter.create_one_router() + + def setUp(self): + super(TestDeleteRouter, self).setUp() + + self.network.delete_router = mock.Mock(return_value=None) + + self.network.find_router = mock.Mock(return_value=self._router) + + # Get the command object to test + self.cmd = router.DeleteRouter(self.app, self.namespace) + + def test_delete(self): + arglist = [ + self._router.name, + ] + verifylist = [ + ('router', [self._router.name]), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + self.network.delete_router.assert_called_with(self._router) + self.assertEqual(None, result) + + class TestListRouter(TestRouter): # The routers going to be listed up. diff --git a/setup.cfg b/setup.cfg index 535e4fdf95..ee6192a72b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -333,6 +333,7 @@ openstack.network.v2 = network_set = openstackclient.network.v2.network:SetNetwork network_show = openstackclient.network.v2.network:ShowNetwork router_create = openstackclient.network.v2.router:CreateRouter + router_delete = openstackclient.network.v2.router:DeleteRouter router_list = openstackclient.network.v2.router:ListRouter openstack.object_store.v1 =