Merge "Support "network list" command in nova network"
This commit is contained in:
commit
36b21461d9
@ -2,7 +2,7 @@
|
||||
network
|
||||
=======
|
||||
|
||||
Network v2
|
||||
Compute v2, Network v2
|
||||
|
||||
network create
|
||||
--------------
|
||||
|
@ -168,11 +168,10 @@ class DeleteNetwork(common.NetworkAndComputeCommand):
|
||||
client.networks.delete(network.id)
|
||||
|
||||
|
||||
class ListNetwork(command.Lister):
|
||||
class ListNetwork(common.NetworkAndComputeLister):
|
||||
"""List networks"""
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(ListNetwork, self).get_parser(prog_name)
|
||||
def update_parser_common(self, parser):
|
||||
parser.add_argument(
|
||||
'--external',
|
||||
action='store_true',
|
||||
@ -187,9 +186,7 @@ class ListNetwork(command.Lister):
|
||||
)
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
client = self.app.client_manager.network
|
||||
|
||||
def take_action_network(self, client, parsed_args):
|
||||
if parsed_args.long:
|
||||
columns = (
|
||||
'id',
|
||||
@ -231,7 +228,29 @@ class ListNetwork(command.Lister):
|
||||
args = {'router:external': True}
|
||||
else:
|
||||
args = {}
|
||||
|
||||
data = client.networks(**args)
|
||||
|
||||
return (column_headers,
|
||||
(utils.get_item_properties(
|
||||
s, columns,
|
||||
formatters=_formatters,
|
||||
) for s in data))
|
||||
|
||||
def take_action_compute(self, client, parsed_args):
|
||||
columns = (
|
||||
'id',
|
||||
'label',
|
||||
'cidr',
|
||||
)
|
||||
column_headers = (
|
||||
'ID',
|
||||
'Name',
|
||||
'Subnet',
|
||||
)
|
||||
|
||||
data = client.networks.list()
|
||||
|
||||
return (column_headers,
|
||||
(utils.get_item_properties(
|
||||
s, columns,
|
||||
|
@ -587,3 +587,61 @@ class FakeFloatingIP(object):
|
||||
if floating_ips is None:
|
||||
floating_ips = FakeFloatingIP.create_floating_ips(count)
|
||||
return mock.MagicMock(side_effect=floating_ips)
|
||||
|
||||
|
||||
class FakeNetwork(object):
|
||||
"""Fake one or more networks."""
|
||||
|
||||
@staticmethod
|
||||
def create_one_network(attrs={}, methods={}):
|
||||
"""Create a fake network.
|
||||
|
||||
:param Dictionary attrs:
|
||||
A dictionary with all attributes
|
||||
:param Dictionary methods:
|
||||
A dictionary with all methods
|
||||
:return:
|
||||
A FakeResource object, with id, label, cidr
|
||||
"""
|
||||
# Set default attributes.
|
||||
network_attrs = {
|
||||
'id': 'network-id-' + uuid.uuid4().hex,
|
||||
'label': 'network-label-' + uuid.uuid4().hex,
|
||||
'cidr': '10.0.0.0/24',
|
||||
}
|
||||
|
||||
# Overwrite default attributes.
|
||||
network_attrs.update(attrs)
|
||||
|
||||
# Set default methods.
|
||||
network_methods = {
|
||||
'keys': ['id', 'label', 'cidr'],
|
||||
}
|
||||
|
||||
# Overwrite default methods.
|
||||
network_methods.update(methods)
|
||||
|
||||
network = fakes.FakeResource(info=copy.deepcopy(network_attrs),
|
||||
methods=copy.deepcopy(network_methods),
|
||||
loaded=True)
|
||||
|
||||
return network
|
||||
|
||||
@staticmethod
|
||||
def create_networks(attrs={}, methods={}, count=2):
|
||||
"""Create multiple fake networks.
|
||||
|
||||
:param Dictionary attrs:
|
||||
A dictionary with all attributes
|
||||
:param Dictionary methods:
|
||||
A dictionary with all methods
|
||||
:param int count:
|
||||
The number of networks to fake
|
||||
:return:
|
||||
A list of FakeResource objects faking the networks
|
||||
"""
|
||||
networks = []
|
||||
for i in range(0, count):
|
||||
networks.append(FakeNetwork.create_one_network(attrs, methods))
|
||||
|
||||
return networks
|
||||
|
@ -579,7 +579,7 @@ class TestNetworkCompute(compute_fakes.TestComputev2):
|
||||
class TestDeleteNetworkCompute(TestNetworkCompute):
|
||||
|
||||
# The network to delete.
|
||||
_network = network_fakes.FakeNetwork.create_one_network()
|
||||
_network = compute_fakes.FakeNetwork.create_one_network()
|
||||
|
||||
def setUp(self):
|
||||
super(TestDeleteNetworkCompute, self).setUp()
|
||||
@ -596,10 +596,10 @@ class TestDeleteNetworkCompute(TestNetworkCompute):
|
||||
|
||||
def test_network_delete(self):
|
||||
arglist = [
|
||||
self._network.name,
|
||||
self._network.label,
|
||||
]
|
||||
verifylist = [
|
||||
('network', [self._network.name]),
|
||||
('network', [self._network.label]),
|
||||
]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
@ -607,3 +607,50 @@ class TestDeleteNetworkCompute(TestNetworkCompute):
|
||||
|
||||
self.compute.networks.delete.assert_called_with(self._network.id)
|
||||
self.assertIsNone(result)
|
||||
|
||||
|
||||
class TestListNetworkCompute(TestNetworkCompute):
|
||||
|
||||
# The networks going to be listed up.
|
||||
_networks = compute_fakes.FakeNetwork.create_networks(count=3)
|
||||
|
||||
columns = (
|
||||
'ID',
|
||||
'Name',
|
||||
'Subnet',
|
||||
)
|
||||
|
||||
data = []
|
||||
for net in _networks:
|
||||
data.append((
|
||||
net.id,
|
||||
net.label,
|
||||
net.cidr,
|
||||
))
|
||||
|
||||
def setUp(self):
|
||||
super(TestListNetworkCompute, self).setUp()
|
||||
|
||||
self.app.client_manager.network_endpoint_enabled = False
|
||||
|
||||
self.compute.networks.list.return_value = self._networks
|
||||
|
||||
# Get the command object to test
|
||||
self.cmd = network.ListNetwork(self.app, None)
|
||||
|
||||
def test_network_list_no_options(self):
|
||||
arglist = []
|
||||
verifylist = [
|
||||
('external', False),
|
||||
('long', False),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
# In base command class Lister in cliff, abstract method take_action()
|
||||
# returns a tuple containing the column names and an iterable
|
||||
# containing the data to be listed.
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.compute.networks.list.assert_called_with()
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, list(data))
|
||||
|
@ -2,3 +2,5 @@
|
||||
features:
|
||||
- Command ``network delete`` is now available for nova network.
|
||||
[Bug `1543672 <https://bugs.launchpad.net/python-openstackclient/+bug/1543672>`_]
|
||||
- Command ``network list`` is now available for nova network.
|
||||
[Bug `1543672 <https://bugs.launchpad.net/python-openstackclient/+bug/1543672>`_]
|
||||
|
Loading…
x
Reference in New Issue
Block a user