Skip to content

Commit d9d1809

Browse files
author
Tang Chen
committed
Support "network show" command in nova network
"network show" command is not implemented in nova network. This patch implements it. Change-Id: I1fadd890fe36c4e3ac5c9ed389b20c5b2fff8aca partial-Bug: 1543672
1 parent ddc97c6 commit d9d1809

4 files changed

Lines changed: 153 additions & 5 deletions

File tree

openstackclient/network/v2/network.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ def take_action(self, parsed_args):
316316
return
317317

318318

319-
class ShowNetwork(command.ShowOne):
319+
class ShowNetwork(common.NetworkAndComputeShowOne):
320320
"""Show network details"""
321321

322322
def get_parser(self, prog_name):
@@ -328,9 +328,17 @@ def get_parser(self, prog_name):
328328
)
329329
return parser
330330

331-
def take_action(self, parsed_args):
332-
client = self.app.client_manager.network
331+
def take_action_network(self, client, parsed_args):
333332
obj = client.find_network(parsed_args.network, ignore_missing=False)
334333
columns = _get_columns(obj)
335334
data = utils.get_item_properties(obj, columns, formatters=_formatters)
336335
return (columns, data)
336+
337+
def take_action_compute(self, client, parsed_args):
338+
network = utils.find_resource(
339+
client.networks,
340+
parsed_args.network,
341+
)
342+
columns = sorted(network._info.keys())
343+
data = utils.get_dict_properties(network._info, columns)
344+
return (columns, data)

openstackclient/tests/compute/v2/fakes.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -539,13 +539,42 @@ def create_one_network(attrs={}, methods={}):
539539
:param Dictionary methods:
540540
A dictionary with all methods
541541
:return:
542-
A FakeResource object, with id, label, cidr
542+
A FakeResource object, with id, label, cidr and so on
543543
"""
544544
# Set default attributes.
545545
network_attrs = {
546+
'bridge': 'br100',
547+
'bridge_interface': None,
548+
'broadcast': '10.0.0.255',
549+
'cidr': '10.0.0.0/24',
550+
'cidr_v6': None,
551+
'created_at': '2016-02-11T11:17:37.000000',
552+
'deleted': False,
553+
'deleted_at': None,
554+
'dhcp_server': '10.0.0.1',
555+
'dhcp_start': '10.0.0.2',
556+
'dns1': '8.8.4.4',
557+
'dns2': None,
558+
'enable_dhcp': True,
559+
'gateway': '10.0.0.1',
560+
'gateway_v6': None,
561+
'host': None,
546562
'id': 'network-id-' + uuid.uuid4().hex,
563+
'injected': False,
547564
'label': 'network-label-' + uuid.uuid4().hex,
548-
'cidr': '10.0.0.0/24',
565+
'mtu': None,
566+
'multi_host': False,
567+
'netmask': '255.255.255.0',
568+
'netmask_v6': None,
569+
'priority': None,
570+
'project_id': 'project-id-' + uuid.uuid4().hex,
571+
'rxtx_base': None,
572+
'share_address': False,
573+
'updated_at': None,
574+
'vlan': None,
575+
'vpn_private_address': None,
576+
'vpn_public_address': None,
577+
'vpn_public_port': None,
549578
}
550579

551580
# Overwrite default attributes.

openstackclient/tests/network/v2/test_network.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,3 +654,112 @@ def test_network_list_no_options(self):
654654
self.compute.networks.list.assert_called_with()
655655
self.assertEqual(self.columns, columns)
656656
self.assertEqual(self.data, list(data))
657+
658+
659+
class TestShowNetworkCompute(TestNetworkCompute):
660+
661+
# The network to show.
662+
_network = compute_fakes.FakeNetwork.create_one_network()
663+
664+
columns = (
665+
'bridge',
666+
'bridge_interface',
667+
'broadcast',
668+
'cidr',
669+
'cidr_v6',
670+
'created_at',
671+
'deleted',
672+
'deleted_at',
673+
'dhcp_server',
674+
'dhcp_start',
675+
'dns1',
676+
'dns2',
677+
'enable_dhcp',
678+
'gateway',
679+
'gateway_v6',
680+
'host',
681+
'id',
682+
'injected',
683+
'label',
684+
'mtu',
685+
'multi_host',
686+
'netmask',
687+
'netmask_v6',
688+
'priority',
689+
'project_id',
690+
'rxtx_base',
691+
'share_address',
692+
'updated_at',
693+
'vlan',
694+
'vpn_private_address',
695+
'vpn_public_address',
696+
'vpn_public_port',
697+
)
698+
699+
data = (
700+
_network.bridge,
701+
_network.bridge_interface,
702+
_network.broadcast,
703+
_network.cidr,
704+
_network.cidr_v6,
705+
_network.created_at,
706+
_network.deleted,
707+
_network.deleted_at,
708+
_network.dhcp_server,
709+
_network.dhcp_start,
710+
_network.dns1,
711+
_network.dns2,
712+
_network.enable_dhcp,
713+
_network.gateway,
714+
_network.gateway_v6,
715+
_network.host,
716+
_network.id,
717+
_network.injected,
718+
_network.label,
719+
_network.mtu,
720+
_network.multi_host,
721+
_network.netmask,
722+
_network.netmask_v6,
723+
_network.priority,
724+
_network.project_id,
725+
_network.rxtx_base,
726+
_network.share_address,
727+
_network.updated_at,
728+
_network.vlan,
729+
_network.vpn_private_address,
730+
_network.vpn_public_address,
731+
_network.vpn_public_port,
732+
)
733+
734+
def setUp(self):
735+
super(TestShowNetworkCompute, self).setUp()
736+
737+
self.app.client_manager.network_endpoint_enabled = False
738+
739+
# Return value of utils.find_resource()
740+
self.compute.networks.get.return_value = self._network
741+
742+
# Get the command object to test
743+
self.cmd = network.ShowNetwork(self.app, None)
744+
745+
def test_show_no_options(self):
746+
arglist = []
747+
verifylist = []
748+
749+
# Missing required args should bail here
750+
self.assertRaises(tests_utils.ParserException, self.check_parser,
751+
self.cmd, arglist, verifylist)
752+
753+
def test_show_all_options(self):
754+
arglist = [
755+
self._network.label,
756+
]
757+
verifylist = [
758+
('network', self._network.label),
759+
]
760+
761+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
762+
columns, data = self.cmd.take_action(parsed_args)
763+
764+
self.assertEqual(self.columns, tuple(columns))
765+
self.assertEqual(self.data, data)

releasenotes/notes/bug-1543672-bad2fc4c6c8f3125.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ features:
44
[Bug `1543672 <https://bugs.launchpad.net/python-openstackclient/+bug/1543672>`_]
55
- Command ``network list`` is now available for nova network.
66
[Bug `1543672 <https://bugs.launchpad.net/python-openstackclient/+bug/1543672>`_]
7+
- Command ``network show`` is now available for nova network.
8+
[Bug `1543672 <https://bugs.launchpad.net/python-openstackclient/+bug/1543672>`_]

0 commit comments

Comments
 (0)