Skip to content

Commit 2a2cb4f

Browse files
tang-chenTerryHowe
andcommitted
Migrate "network show" command to use SDK.
This patch makes "network show" command use sdk. Since we have to keep the other commands runnable with the old network client, we use a temporary method to create sdk network client. And as a result, the tests need to patch a method to fake the temporary method, which will be removed at last. There are two same test cases in the unit tests. This patch will remove one. And since the output has changed, we also need to fix function test cases. Change-Id: I4c06b4efad2db430767bbaa882b0876df3ab483a Implements: blueprint neutron-client Co-Authored-By: Terry Howe <terrylhowe@gmail.com> Co-Authored-By: Tang Chen <tangchen@cn.fujitsu.com>
1 parent 45c644d commit 2a2cb4f

3 files changed

Lines changed: 57 additions & 45 deletions

File tree

functional/tests/network/v2/test_network.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ def test_network_list(self):
4040

4141
def test_network_set(self):
4242
raw_output = self.openstack('network set --disable ' + self.NAME)
43-
opts = self.get_show_opts(['name', 'state'])
43+
opts = self.get_show_opts(['name', 'admin_state_up'])
4444
raw_output = self.openstack('network show ' + self.NAME + opts)
45-
self.assertEqual(self.NAME + "\nDOWN\n", raw_output)
45+
self.assertEqual("DOWN\n" + self.NAME + "\n", raw_output)
4646

4747
def test_network_show(self):
4848
opts = self.get_show_opts(self.FIELDS)

openstackclient/network/v2/network.py

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
"""Network action implementations"""
1515

1616
import logging
17-
import six
1817

1918
from cliff import command
2019
from cliff import lister
@@ -48,22 +47,6 @@ def _make_client_sdk(instance):
4847
return conn.network
4948

5049

51-
def _prep_network_detail(net):
52-
"""Prepare network object for output"""
53-
if 'subnets' in net:
54-
net['subnets'] = utils.format_list(net['subnets'])
55-
if 'admin_state_up' in net:
56-
net['state'] = 'UP' if net['admin_state_up'] else 'DOWN'
57-
net.pop('admin_state_up')
58-
if 'router:external' in net:
59-
net['router_type'] = 'External' if net['router:external'] \
60-
else 'Internal'
61-
net.pop('router:external')
62-
if 'tenant_id' in net:
63-
net['project_id'] = net.pop('tenant_id')
64-
return net
65-
66-
6750
class CreateNetwork(show.ShowOne):
6851
"""Create new network"""
6952

@@ -323,10 +306,10 @@ def get_parser(self, prog_name):
323306

324307
def take_action(self, parsed_args):
325308
self.log.debug('take_action(%s)' % parsed_args)
309+
self.app.client_manager.network = \
310+
_make_client_sdk(self.app.client_manager)
326311
client = self.app.client_manager.network
327-
net = client.api.find_attr(
328-
'networks',
329-
parsed_args.identifier,
330-
)
331-
data = _prep_network_detail(net)
332-
return zip(*sorted(six.iteritems(data)))
312+
obj = client.find_network(parsed_args.identifier, ignore_missing=False)
313+
columns = sorted(obj.keys())
314+
data = utils.get_item_properties(obj, columns, formatters=_formatters)
315+
return (tuple(columns), data)

openstackclient/tests/network/v2/test_network.py

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from openstackclient.tests.identity.v2_0 import fakes as identity_fakes_v2
2222
from openstackclient.tests.identity.v3 import fakes as identity_fakes_v3
2323
from openstackclient.tests.network.v2 import fakes as network_fakes
24+
from openstackclient.tests import utils as tests_utils
2425

2526
RESOURCE = 'network'
2627
RESOURCES = 'networks'
@@ -533,39 +534,67 @@ def test_set_nothing(self, _make_client_sdk):
533534
parsed_args)
534535

535536

536-
@mock.patch(
537-
'openstackclient.api.network_v2.APIv2.find_attr'
538-
)
537+
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
539538
class TestShowNetwork(TestNetwork):
540539

540+
# The network to set.
541+
_network = network_fakes.FakeNetwork.create_one_network()
542+
543+
columns = (
544+
'admin_state_up',
545+
'id',
546+
'name',
547+
'router_external',
548+
'status',
549+
'subnets',
550+
'tenant_id',
551+
)
552+
553+
data = (
554+
network._format_admin_state(_network.admin_state_up),
555+
_network.id,
556+
_network.name,
557+
network._format_router_external(_network.router_external),
558+
_network.status,
559+
utils.format_list(_network.subnets),
560+
_network.tenant_id,
561+
)
562+
541563
def setUp(self):
542564
super(TestShowNetwork, self).setUp()
543565

566+
self.network.find_network = mock.Mock(return_value=self._network)
567+
544568
# Get the command object to test
545569
self.cmd = network.ShowNetwork(self.app, self.namespace)
546570

547-
def test_show_no_options(self, find_attr):
571+
def test_show_no_options(self, _make_client_sdk):
572+
_make_client_sdk.return_value = self.app.client_manager.network
573+
574+
arglist = []
575+
verifylist = []
576+
577+
try:
578+
# Missing required args should bail here
579+
self.check_parser(self.cmd, arglist, verifylist)
580+
except tests_utils.ParserException:
581+
pass
582+
583+
def test_show_all_options(self, _make_client_sdk):
584+
_make_client_sdk.return_value = self.app.client_manager.network
585+
548586
arglist = [
549-
FAKE_NAME,
587+
self._network.name,
550588
]
551589
verifylist = [
552-
('identifier', FAKE_NAME),
590+
('identifier', self._network.name),
553591
]
554-
find_attr.return_value = copy.deepcopy(RECORD)
555592

556593
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
557-
result = list(self.cmd.take_action(parsed_args))
558-
559-
find_attr.assert_called_with('networks', FAKE_NAME)
560-
self.assertEqual(FILTERED, result)
561-
562-
def test_show_all_options(self, find_attr):
563-
arglist = [FAKE_NAME]
564-
verifylist = [('identifier', FAKE_NAME)]
565-
find_attr.return_value = copy.deepcopy(RECORD)
594+
columns, data = self.cmd.take_action(parsed_args)
566595

567-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
568-
result = list(self.cmd.take_action(parsed_args))
596+
self.network.find_network.assert_called_with(self._network.name,
597+
ignore_missing=False)
569598

570-
find_attr.assert_called_with('networks', FAKE_NAME)
571-
self.assertEqual(FILTERED, result)
599+
self.assertEqual(tuple(self.columns), columns)
600+
self.assertEqual(list(self.data), list(data))

0 commit comments

Comments
 (0)