Skip to content

Commit 56150de

Browse files
tang-chenTerryHowe
andcommitted
Migrate "network list" command to new version using SDK.
This patch makes "network list" 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. Change-Id: I0882501cd7bb2c17917e10a6da4298f1452c9765 Implements: blueprint neutron-client Co-Authored-By: Terry Howe <terrylhowe@gmail.com> Co-Authored-By: Tang Chen <tangchen@cn.fujitsu.com>
1 parent 85d6aee commit 56150de

2 files changed

Lines changed: 74 additions & 64 deletions

File tree

openstackclient/network/v2/network.py

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -188,21 +188,21 @@ def get_parser(self, prog_name):
188188

189189
def take_action(self, parsed_args):
190190
self.log.debug('take_action(%s)' % parsed_args)
191+
self.app.client_manager.network = \
192+
_make_client_sdk(self.app.client_manager)
191193
client = self.app.client_manager.network
192194

193-
data = client.api.network_list(external=parsed_args.external)
194-
195195
if parsed_args.long:
196196
columns = (
197-
'ID',
198-
'Name',
199-
'Status',
200-
'project_id',
201-
'state',
202-
'Shared',
203-
'Subnets',
204-
'provider:network_type',
205-
'router_type',
197+
'id',
198+
'name',
199+
'status',
200+
'tenant_id',
201+
'admin_state_up',
202+
'shared',
203+
'subnets',
204+
'provider_network_type',
205+
'router_external',
206206
)
207207
column_headers = (
208208
'ID',
@@ -216,16 +216,26 @@ def take_action(self, parsed_args):
216216
'Router Type',
217217
)
218218
else:
219-
columns = ('ID', 'Name', 'Subnets')
220-
column_headers = columns
221-
222-
for d in data:
223-
d = _prep_network_detail(d)
219+
columns = (
220+
'id',
221+
'name',
222+
'subnets'
223+
)
224+
column_headers = (
225+
'ID',
226+
'Name',
227+
'Subnets',
228+
)
224229

230+
if parsed_args.external:
231+
args = {'router:external': True}
232+
else:
233+
args = {}
234+
data = client.networks(**args)
225235
return (column_headers,
226-
(utils.get_dict_properties(
236+
(utils.get_item_properties(
227237
s, columns,
228-
formatters={'subnets': utils.format_list},
238+
formatters=_formatters,
229239
) for s in data))
230240

231241

openstackclient/tests/network/v2/test_network.py

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import mock
1616

1717
from openstackclient.common import exceptions
18+
from openstackclient.common import utils
1819
from openstackclient.network.v2 import network
1920
from openstackclient.tests import fakes
2021
from openstackclient.tests.identity.v2_0 import fakes as identity_fakes_v2
@@ -288,17 +289,18 @@ def test_delete(self):
288289
self.assertEqual(None, result)
289290

290291

291-
@mock.patch(
292-
'openstackclient.api.network_v2.APIv2.network_list'
293-
)
292+
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
294293
class TestListNetwork(TestNetwork):
295294

296-
columns = [
295+
# The networks going to be listed up.
296+
_network = network_fakes.FakeNetwork.create_networks(count=3)
297+
298+
columns = (
297299
'ID',
298300
'Name',
299-
'Subnets'
300-
]
301-
columns_long = [
301+
'Subnets',
302+
)
303+
columns_long = (
302304
'ID',
303305
'Name',
304306
'Status',
@@ -308,32 +310,40 @@ class TestListNetwork(TestNetwork):
308310
'Subnets',
309311
'Network Type',
310312
'Router Type',
311-
]
312-
313-
data = [
314-
(FAKE_ID, FAKE_NAME, 'a, b'),
315-
(FAKE_ID, FAKE_NAME, 'a, b'),
316-
]
317-
data_long = [
318-
(FAKE_ID, FAKE_NAME, 'ACTIVE', FAKE_PROJECT,
319-
'UP', '', 'a, b', '', 'External'),
320-
(FAKE_ID, FAKE_NAME, 'ACTIVE', FAKE_PROJECT,
321-
'UP', '', 'a, b', '', 'External'),
322-
]
313+
)
314+
315+
data = []
316+
for net in _network:
317+
data.append((
318+
net.id,
319+
net.name,
320+
utils.format_list(net.subnets),
321+
))
322+
323+
data_long = []
324+
for net in _network:
325+
data_long.append((
326+
net.id,
327+
net.name,
328+
net.status,
329+
net.tenant_id,
330+
network._format_admin_state(net.admin_state_up),
331+
net.shared,
332+
utils.format_list(net.subnets),
333+
net.provider_network_type,
334+
network._format_router_external(net.router_external),
335+
))
323336

324337
def setUp(self):
325338
super(TestListNetwork, self).setUp()
326339

327340
# Get the command object to test
328341
self.cmd = network.ListNetwork(self.app, self.namespace)
329342

330-
self.NETWORK_LIST = [
331-
copy.deepcopy(RECORD),
332-
copy.deepcopy(RECORD),
333-
]
343+
self.network.networks = mock.Mock(return_value=self._network)
334344

335-
def test_network_list_no_options(self, network_list):
336-
network_list.return_value = self.NETWORK_LIST
345+
def test_network_list_no_options(self, _make_client_sdk):
346+
_make_client_sdk.return_value = self.app.client_manager.network
337347

338348
arglist = []
339349
verifylist = [
@@ -345,16 +355,12 @@ def test_network_list_no_options(self, network_list):
345355
# DisplayCommandBase.take_action() returns two tuples
346356
columns, data = self.cmd.take_action(parsed_args)
347357

348-
# Set expected values
349-
network_list.assert_called_with(
350-
external=False,
351-
)
352-
353-
self.assertEqual(tuple(self.columns), columns)
358+
self.network.networks.assert_called_with()
359+
self.assertEqual(self.columns, columns)
354360
self.assertEqual(self.data, list(data))
355361

356-
def test_list_external(self, network_list):
357-
network_list.return_value = self.NETWORK_LIST
362+
def test_list_external(self, _make_client_sdk):
363+
_make_client_sdk.return_value = self.app.client_manager.network
358364

359365
arglist = [
360366
'--external',
@@ -368,16 +374,14 @@ def test_list_external(self, network_list):
368374
# DisplayCommandBase.take_action() returns two tuples
369375
columns, data = self.cmd.take_action(parsed_args)
370376

371-
# Set expected values
372-
network_list.assert_called_with(
373-
external=True,
377+
self.network.networks.assert_called_with(
378+
**{'router:external': True}
374379
)
375-
376-
self.assertEqual(tuple(self.columns), columns)
380+
self.assertEqual(self.columns, columns)
377381
self.assertEqual(self.data, list(data))
378382

379-
def test_network_list_long(self, network_list):
380-
network_list.return_value = self.NETWORK_LIST
383+
def test_network_list_long(self, _make_client_sdk):
384+
_make_client_sdk.return_value = self.app.client_manager.network
381385

382386
arglist = [
383387
'--long',
@@ -391,12 +395,8 @@ def test_network_list_long(self, network_list):
391395
# DisplayCommandBase.take_action() returns two tuples
392396
columns, data = self.cmd.take_action(parsed_args)
393397

394-
# Set expected values
395-
network_list.assert_called_with(
396-
external=False,
397-
)
398-
399-
self.assertEqual(columns, tuple(self.columns_long))
398+
self.network.networks.assert_called_with()
399+
self.assertEqual(self.columns_long, columns)
400400
self.assertEqual(self.data_long, list(data))
401401

402402

0 commit comments

Comments
 (0)