summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-18 09:03:56 +0000
committerGerrit Code Review <review@openstack.org>2016-02-18 09:03:56 +0000
commit088f2446f28c5a4989afe27dd3ebea2792626f81 (patch)
tree993037cca6ffaebdb1c4893eb489200b507252a6 /openstackclient
parent36b21461d9c09883b7c8c07d51204cd98f90d298 (diff)
parentd9d1809907256497289ae921bca9a7505a95f6ce (diff)
downloadpython-openstackclient-088f2446f28c5a4989afe27dd3ebea2792626f81.tar.gz
Merge "Support "network show" command in nova network"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/v2/network.py14
-rw-r--r--openstackclient/tests/compute/v2/fakes.py33
-rw-r--r--openstackclient/tests/network/v2/test_network.py109
3 files changed, 151 insertions, 5 deletions
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index ed251173..a634378f 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -316,7 +316,7 @@ class SetNetwork(command.Command):
return
-class ShowNetwork(command.ShowOne):
+class ShowNetwork(common.NetworkAndComputeShowOne):
"""Show network details"""
def get_parser(self, prog_name):
@@ -328,9 +328,17 @@ class ShowNetwork(command.ShowOne):
)
return parser
- def take_action(self, parsed_args):
- client = self.app.client_manager.network
+ def take_action_network(self, client, parsed_args):
obj = client.find_network(parsed_args.network, ignore_missing=False)
columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (columns, data)
+
+ def take_action_compute(self, client, parsed_args):
+ network = utils.find_resource(
+ client.networks,
+ parsed_args.network,
+ )
+ columns = sorted(network._info.keys())
+ data = utils.get_dict_properties(network._info, columns)
+ return (columns, data)
diff --git a/openstackclient/tests/compute/v2/fakes.py b/openstackclient/tests/compute/v2/fakes.py
index 26c6eaee..974095ea 100644
--- a/openstackclient/tests/compute/v2/fakes.py
+++ b/openstackclient/tests/compute/v2/fakes.py
@@ -601,13 +601,42 @@ class FakeNetwork(object):
:param Dictionary methods:
A dictionary with all methods
:return:
- A FakeResource object, with id, label, cidr
+ A FakeResource object, with id, label, cidr and so on
"""
# Set default attributes.
network_attrs = {
+ 'bridge': 'br100',
+ 'bridge_interface': None,
+ 'broadcast': '10.0.0.255',
+ 'cidr': '10.0.0.0/24',
+ 'cidr_v6': None,
+ 'created_at': '2016-02-11T11:17:37.000000',
+ 'deleted': False,
+ 'deleted_at': None,
+ 'dhcp_server': '10.0.0.1',
+ 'dhcp_start': '10.0.0.2',
+ 'dns1': '8.8.4.4',
+ 'dns2': None,
+ 'enable_dhcp': True,
+ 'gateway': '10.0.0.1',
+ 'gateway_v6': None,
+ 'host': None,
'id': 'network-id-' + uuid.uuid4().hex,
+ 'injected': False,
'label': 'network-label-' + uuid.uuid4().hex,
- 'cidr': '10.0.0.0/24',
+ 'mtu': None,
+ 'multi_host': False,
+ 'netmask': '255.255.255.0',
+ 'netmask_v6': None,
+ 'priority': None,
+ 'project_id': 'project-id-' + uuid.uuid4().hex,
+ 'rxtx_base': None,
+ 'share_address': False,
+ 'updated_at': None,
+ 'vlan': None,
+ 'vpn_private_address': None,
+ 'vpn_public_address': None,
+ 'vpn_public_port': None,
}
# Overwrite default attributes.
diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/network/v2/test_network.py
index c83e7e84..26a9da40 100644
--- a/openstackclient/tests/network/v2/test_network.py
+++ b/openstackclient/tests/network/v2/test_network.py
@@ -654,3 +654,112 @@ class TestListNetworkCompute(TestNetworkCompute):
self.compute.networks.list.assert_called_with()
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
+
+
+class TestShowNetworkCompute(TestNetworkCompute):
+
+ # The network to show.
+ _network = compute_fakes.FakeNetwork.create_one_network()
+
+ columns = (
+ 'bridge',
+ 'bridge_interface',
+ 'broadcast',
+ 'cidr',
+ 'cidr_v6',
+ 'created_at',
+ 'deleted',
+ 'deleted_at',
+ 'dhcp_server',
+ 'dhcp_start',
+ 'dns1',
+ 'dns2',
+ 'enable_dhcp',
+ 'gateway',
+ 'gateway_v6',
+ 'host',
+ 'id',
+ 'injected',
+ 'label',
+ 'mtu',
+ 'multi_host',
+ 'netmask',
+ 'netmask_v6',
+ 'priority',
+ 'project_id',
+ 'rxtx_base',
+ 'share_address',
+ 'updated_at',
+ 'vlan',
+ 'vpn_private_address',
+ 'vpn_public_address',
+ 'vpn_public_port',
+ )
+
+ data = (
+ _network.bridge,
+ _network.bridge_interface,
+ _network.broadcast,
+ _network.cidr,
+ _network.cidr_v6,
+ _network.created_at,
+ _network.deleted,
+ _network.deleted_at,
+ _network.dhcp_server,
+ _network.dhcp_start,
+ _network.dns1,
+ _network.dns2,
+ _network.enable_dhcp,
+ _network.gateway,
+ _network.gateway_v6,
+ _network.host,
+ _network.id,
+ _network.injected,
+ _network.label,
+ _network.mtu,
+ _network.multi_host,
+ _network.netmask,
+ _network.netmask_v6,
+ _network.priority,
+ _network.project_id,
+ _network.rxtx_base,
+ _network.share_address,
+ _network.updated_at,
+ _network.vlan,
+ _network.vpn_private_address,
+ _network.vpn_public_address,
+ _network.vpn_public_port,
+ )
+
+ def setUp(self):
+ super(TestShowNetworkCompute, self).setUp()
+
+ self.app.client_manager.network_endpoint_enabled = False
+
+ # Return value of utils.find_resource()
+ self.compute.networks.get.return_value = self._network
+
+ # Get the command object to test
+ self.cmd = network.ShowNetwork(self.app, None)
+
+ def test_show_no_options(self):
+ arglist = []
+ verifylist = []
+
+ # Missing required args should bail here
+ self.assertRaises(tests_utils.ParserException, self.check_parser,
+ self.cmd, arglist, verifylist)
+
+ def test_show_all_options(self):
+ arglist = [
+ self._network.label,
+ ]
+ verifylist = [
+ ('network', self._network.label),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.assertEqual(self.columns, tuple(columns))
+ self.assertEqual(self.data, data)