Skip to content

Commit 45c644d

Browse files
tang-chenTerryHowe
andcommitted
Migrate "network set" command to use SDK.
This patch makes "network set" 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: I794ac4b82d9200747298f1a9ee44611140e9b6d0 Implements: blueprint neutron-client Co-Authored-By: Terry Howe <terrylhowe@gmail.com> Co-Authored-By: Tang Chen <tangchen@cn.fujitsu.com>
1 parent 511e862 commit 45c644d

2 files changed

Lines changed: 40 additions & 31 deletions

File tree

openstackclient/network/v2/network.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
from openstackclient.common import exceptions
2626
from openstackclient.common import utils
2727
from openstackclient.identity import common as identity_common
28-
from openstackclient.network import common
2928

3029

3130
def _format_admin_state(item):
@@ -288,21 +287,23 @@ def get_parser(self, prog_name):
288287

289288
def take_action(self, parsed_args):
290289
self.log.debug('take_action(%s)' % parsed_args)
290+
self.app.client_manager.network = \
291+
_make_client_sdk(self.app.client_manager)
291292
client = self.app.client_manager.network
292-
_id = common.find(client, 'network', 'networks',
293-
parsed_args.identifier)
294-
body = {}
293+
obj = client.find_network(parsed_args.identifier, ignore_missing=False)
294+
295295
if parsed_args.name is not None:
296-
body['name'] = str(parsed_args.name)
296+
obj.name = str(parsed_args.name)
297297
if parsed_args.admin_state is not None:
298-
body['admin_state_up'] = parsed_args.admin_state
298+
obj.admin_state_up = parsed_args.admin_state
299299
if parsed_args.shared is not None:
300-
body['shared'] = parsed_args.shared
301-
if body == {}:
300+
obj.shared = parsed_args.shared
301+
302+
if not obj.is_dirty:
302303
msg = "Nothing specified to be set"
303304
raise exceptions.CommandError(msg)
304-
update_method = getattr(client, "update_network")
305-
update_method(_id, {'network': body})
305+
306+
client.update_network(obj)
306307
return
307308

308309

openstackclient/tests/network/v2/test_network.py

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -458,31 +458,35 @@ def test_network_list_long(self, _make_client_sdk):
458458
self.assertEqual(self.data_long, list(data))
459459

460460

461+
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
461462
class TestSetNetwork(TestNetwork):
462463

464+
# The network to set.
465+
_network = network_fakes.FakeNetwork.create_one_network()
466+
463467
def setUp(self):
464468
super(TestSetNetwork, self).setUp()
465469

466-
self.network.update_network = mock.Mock(
467-
return_value=None
468-
)
470+
self.network.update_network = mock.Mock(return_value=None)
469471

470-
self.network.list_networks = mock.Mock(
471-
return_value={RESOURCES: [copy.deepcopy(RECORD)]}
472-
)
472+
self.network.find_network = mock.Mock(return_value=self._network)
473473

474474
# Get the command object to test
475475
self.cmd = network.SetNetwork(self.app, self.namespace)
476476

477-
def test_set_this(self):
477+
def test_set_this(self, _make_client_sdk):
478+
_make_client_sdk.return_value = self.app.client_manager.network
479+
480+
self._network.is_dirty = True
481+
478482
arglist = [
479-
FAKE_NAME,
483+
self._network.name,
480484
'--enable',
481485
'--name', 'noob',
482486
'--share',
483487
]
484488
verifylist = [
485-
('identifier', FAKE_NAME),
489+
('identifier', self._network.name),
486490
('admin_state', True),
487491
('name', 'noob'),
488492
('shared', True),
@@ -491,34 +495,38 @@ def test_set_this(self):
491495
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
492496
result = self.cmd.take_action(parsed_args)
493497

494-
exp = {'admin_state_up': True, 'name': 'noob', 'shared': True}
495-
exp_record = {RESOURCE: exp}
496-
self.network.update_network.assert_called_with(FAKE_ID, exp_record)
498+
self.network.update_network.assert_called_with(self._network)
497499
self.assertEqual(None, result)
498500

499-
def test_set_that(self):
501+
def test_set_that(self, _make_client_sdk):
502+
_make_client_sdk.return_value = self.app.client_manager.network
503+
504+
self._network.is_dirty = True
505+
500506
arglist = [
501-
FAKE_NAME,
507+
self._network.name,
502508
'--disable',
503509
'--no-share',
504510
]
505511
verifylist = [
506-
('identifier', FAKE_NAME),
512+
('identifier', self._network.name),
507513
('admin_state', False),
508514
('shared', False),
509515
]
510516

511517
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
512518
result = self.cmd.take_action(parsed_args)
513519

514-
exp = {'admin_state_up': False, 'shared': False}
515-
exp_record = {RESOURCE: exp}
516-
self.network.update_network.assert_called_with(FAKE_ID, exp_record)
520+
self.network.update_network.assert_called_with(self._network)
517521
self.assertEqual(None, result)
518522

519-
def test_set_nothing(self):
520-
arglist = [FAKE_NAME, ]
521-
verifylist = [('identifier', FAKE_NAME), ]
523+
def test_set_nothing(self, _make_client_sdk):
524+
_make_client_sdk.return_value = self.app.client_manager.network
525+
526+
self._network.is_dirty = False
527+
528+
arglist = [self._network.name, ]
529+
verifylist = [('identifier', self._network.name), ]
522530

523531
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
524532
self.assertRaises(exceptions.CommandError, self.cmd.take_action,

0 commit comments

Comments
 (0)