Support "network delete" command in nova network

"network delete" command is not implemented in nova network.
This patch implements it.

Change-Id: I5dac1eed6eb8e67298bb446418835a6ab85c859c
Depends-On: I1b59264cd40aaf1062f4e8db233ccb7fd0e95f0e
partial-Bug: 1543672
This commit is contained in:
Tang Chen 2016-02-10 01:41:45 +08:00
parent d8abec33ad
commit 27a0da65e3
4 changed files with 64 additions and 6 deletions

View File

@ -98,7 +98,7 @@ referring to both Compute and Volume quotas.
* ``limits``: (**Compute**, **Volume**) resource usage limits
* ``mapping``: (**Identity**) a definition to translate identity provider attributes to Identity concepts
* ``module``: internal - installed Python modules in the OSC process
* ``network``: (**Network**) - a virtual network for connecting servers and other resources
* ``network``: (**Compute**, **Network**) - a virtual network for connecting servers and other resources
* ``object``: (**Object Storage**) a single file in the Object Storage
* ``policy``: (**Identity**) determines authorization
* ``port``: (**Network**) - a virtual port for connecting servers and other resources to a network

View File

@ -17,6 +17,7 @@ from openstackclient.common import command
from openstackclient.common import exceptions
from openstackclient.common import utils
from openstackclient.identity import common as identity_common
from openstackclient.network import common
def _format_admin_state(item):
@ -141,11 +142,10 @@ class CreateNetwork(command.ShowOne):
return (columns, data)
class DeleteNetwork(command.Command):
class DeleteNetwork(common.NetworkAndComputeCommand):
"""Delete network(s)"""
def get_parser(self, prog_name):
parser = super(DeleteNetwork, self).get_parser(prog_name)
def update_parser_common(self, parser):
parser.add_argument(
'network',
metavar="<network>",
@ -154,12 +154,19 @@ class DeleteNetwork(command.Command):
)
return parser
def take_action(self, parsed_args):
client = self.app.client_manager.network
def take_action_network(self, client, parsed_args):
for network in parsed_args.network:
obj = client.find_network(network)
client.delete_network(obj)
def take_action_compute(self, client, parsed_args):
for network in parsed_args.network:
network = utils.find_resource(
client.networks,
network,
)
client.networks.delete(network.id)
class ListNetwork(command.Lister):
"""List networks"""

View File

@ -90,6 +90,7 @@ class FakeComputev2Client(object):
def __init__(self, **kwargs):
self.aggregates = mock.Mock()
self.aggregates.resource_class = fakes.FakeResource(None, {})
self.availability_zones = mock.Mock()
self.availability_zones.resource_class = fakes.FakeResource(None, {})
@ -129,6 +130,9 @@ class FakeComputev2Client(object):
self.floating_ips = mock.Mock()
self.floating_ips.resource_class = fakes.FakeResource(None, {})
self.networks = mock.Mock()
self.networks.resource_class = fakes.FakeResource(None, {})
self.auth_token = kwargs['token']
self.management_url = kwargs['endpoint']

View File

@ -17,6 +17,7 @@ import mock
from openstackclient.common import exceptions
from openstackclient.common import utils
from openstackclient.network.v2 import network
from openstackclient.tests.compute.v2 import fakes as compute_fakes
from openstackclient.tests import fakes
from openstackclient.tests.identity.v2_0 import fakes as identity_fakes_v2
from openstackclient.tests.identity.v3 import fakes as identity_fakes_v3
@ -24,6 +25,8 @@ from openstackclient.tests.network.v2 import fakes as network_fakes
from openstackclient.tests import utils as tests_utils
# Tests for Neutron network
#
class TestNetwork(network_fakes.TestNetworkV2):
def setUp(self):
@ -564,3 +567,47 @@ class TestShowNetwork(TestNetwork):
self.assertEqual(tuple(self.columns), columns)
self.assertEqual(list(self.data), list(data))
# Tests for Nova network
#
class TestNetworkCompute(compute_fakes.TestComputev2):
def setUp(self):
super(TestNetworkCompute, self).setUp()
# Get a shortcut to the compute client
self.compute = self.app.client_manager.compute
class TestDeleteNetworkCompute(TestNetworkCompute):
# The network to delete.
_network = network_fakes.FakeNetwork.create_one_network()
def setUp(self):
super(TestDeleteNetworkCompute, self).setUp()
self.app.client_manager.network_endpoint_enabled = False
self.compute.networks.delete.return_value = None
# Return value of utils.find_resource()
self.compute.networks.get.return_value = self._network
# Get the command object to test
self.cmd = network.DeleteNetwork(self.app, None)
def test_network_delete(self):
arglist = [
self._network.name,
]
verifylist = [
('network', [self._network.name]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
self.compute.networks.delete.assert_called_with(self._network.id)
self.assertIsNone(result)