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:
parent
d8abec33ad
commit
27a0da65e3
doc/source
openstackclient
@ -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
|
||||
|
@ -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"""
|
||||
|
@ -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']
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user