Migrate "network create" command to use SDK.
This patch makes "network create" 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: I06559c675be1188747257f72f18d6b4d420d0285 Implements: blueprint neutron-client Co-Authored-By: Terry Howe <terrylhowe@gmail.com> Co-Authored-By: Tang Chen <tangchen@cn.fujitsu.com>
This commit is contained in:
parent
56150de224
commit
0b4fb0bb66
openstackclient
@ -114,15 +114,14 @@ class CreateNetwork(show.ShowOne):
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug('take_action(%s)' % parsed_args)
|
||||
self.app.client_manager.network = \
|
||||
_make_client_sdk(self.app.client_manager)
|
||||
client = self.app.client_manager.network
|
||||
body = self.get_body(parsed_args)
|
||||
create_method = getattr(client, "create_network")
|
||||
data = create_method(body)['network']
|
||||
if data:
|
||||
data = _prep_network_detail(data)
|
||||
else:
|
||||
data = {'': ''}
|
||||
return zip(*sorted(six.iteritems(data)))
|
||||
obj = client.create_network(**body)
|
||||
columns = sorted(obj.keys())
|
||||
data = utils.get_item_properties(obj, columns, formatters=_formatters)
|
||||
return (tuple(columns), data)
|
||||
|
||||
def get_body(self, parsed_args):
|
||||
body = {'name': str(parsed_args.name),
|
||||
@ -137,7 +136,7 @@ class CreateNetwork(show.ShowOne):
|
||||
parsed_args.project_domain,
|
||||
).id
|
||||
body['tenant_id'] = project_id
|
||||
return {'network': body}
|
||||
return body
|
||||
|
||||
|
||||
class DeleteNetwork(command.Command):
|
||||
|
@ -71,13 +71,38 @@ class TestNetwork(network_fakes.TestNetworkV2):
|
||||
self.api = self.app.client_manager.network.api
|
||||
|
||||
|
||||
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
|
||||
class TestCreateNetworkIdentityV3(TestNetwork):
|
||||
|
||||
# The new network created.
|
||||
_network = network_fakes.FakeNetwork.create_one_network(
|
||||
attrs={'tenant_id': identity_fakes_v3.project_id}
|
||||
)
|
||||
|
||||
columns = (
|
||||
'admin_state_up',
|
||||
'id',
|
||||
'name',
|
||||
'router_external',
|
||||
'status',
|
||||
'subnets',
|
||||
'tenant_id',
|
||||
)
|
||||
|
||||
data = (
|
||||
network._format_admin_state(_network.admin_state_up),
|
||||
_network.id,
|
||||
_network.name,
|
||||
network._format_router_external(_network.router_external),
|
||||
_network.status,
|
||||
utils.format_list(_network.subnets),
|
||||
_network.tenant_id,
|
||||
)
|
||||
|
||||
def setUp(self):
|
||||
super(TestCreateNetworkIdentityV3, self).setUp()
|
||||
|
||||
self.new_network = mock.Mock(return_value=copy.deepcopy(RESPONSE))
|
||||
self.network.create_network = self.new_network
|
||||
self.network.create_network = mock.Mock(return_value=self._network)
|
||||
|
||||
# Get the command object to test
|
||||
self.cmd = network.CreateNetwork(self.app, self.namespace)
|
||||
@ -106,89 +131,117 @@ class TestCreateNetworkIdentityV3(TestNetwork):
|
||||
loaded=True,
|
||||
)
|
||||
|
||||
def test_create_no_options(self):
|
||||
def test_create_no_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
arglist = [
|
||||
FAKE_NAME,
|
||||
self._network.name,
|
||||
]
|
||||
verifylist = [
|
||||
('name', FAKE_NAME),
|
||||
('name', self._network.name),
|
||||
('admin_state', True),
|
||||
('shared', None),
|
||||
('project', None),
|
||||
]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = list(self.cmd.take_action(parsed_args))
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.network.create_network.assert_called_with({
|
||||
RESOURCE: {
|
||||
'admin_state_up': True,
|
||||
'name': FAKE_NAME,
|
||||
}
|
||||
self.network.create_network.assert_called_with(**{
|
||||
'admin_state_up': True,
|
||||
'name': self._network.name,
|
||||
})
|
||||
self.assertEqual(FILTERED, result)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_all_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_create_all_options(self):
|
||||
arglist = [
|
||||
"--disable",
|
||||
"--share",
|
||||
"--project", identity_fakes_v3.project_name,
|
||||
"--project-domain", identity_fakes_v3.domain_name,
|
||||
FAKE_NAME,
|
||||
self._network.name,
|
||||
]
|
||||
verifylist = [
|
||||
('admin_state', False),
|
||||
('shared', True),
|
||||
('project', identity_fakes_v3.project_name),
|
||||
('project_domain', identity_fakes_v3.domain_name),
|
||||
('name', FAKE_NAME),
|
||||
('name', self._network.name),
|
||||
]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = list(self.cmd.take_action(parsed_args))
|
||||
columns, data = (self.cmd.take_action(parsed_args))
|
||||
|
||||
self.network.create_network.assert_called_with({
|
||||
RESOURCE: {
|
||||
'admin_state_up': False,
|
||||
'name': FAKE_NAME,
|
||||
'shared': True,
|
||||
'tenant_id': identity_fakes_v3.project_id,
|
||||
}
|
||||
self.network.create_network.assert_called_with(**{
|
||||
'admin_state_up': False,
|
||||
'name': self._network.name,
|
||||
'shared': True,
|
||||
'tenant_id': identity_fakes_v3.project_id,
|
||||
})
|
||||
self.assertEqual(FILTERED, result)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_other_options(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_create_other_options(self):
|
||||
arglist = [
|
||||
"--enable",
|
||||
"--no-share",
|
||||
FAKE_NAME,
|
||||
self._network.name,
|
||||
]
|
||||
verifylist = [
|
||||
('admin_state', True),
|
||||
('shared', False),
|
||||
('name', FAKE_NAME),
|
||||
('name', self._network.name),
|
||||
]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = list(self.cmd.take_action(parsed_args))
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.network.create_network.assert_called_with({
|
||||
RESOURCE: {
|
||||
'admin_state_up': True,
|
||||
'name': FAKE_NAME,
|
||||
'shared': False,
|
||||
}
|
||||
self.network.create_network.assert_called_with(**{
|
||||
'admin_state_up': True,
|
||||
'name': self._network.name,
|
||||
'shared': False,
|
||||
})
|
||||
self.assertEqual(FILTERED, result)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
|
||||
@mock.patch('openstackclient.network.v2.network._make_client_sdk')
|
||||
class TestCreateNetworkIdentityV2(TestNetwork):
|
||||
|
||||
# The new network created.
|
||||
_network = network_fakes.FakeNetwork.create_one_network(
|
||||
attrs={'tenant_id': identity_fakes_v2.project_id}
|
||||
)
|
||||
|
||||
columns = (
|
||||
'admin_state_up',
|
||||
'id',
|
||||
'name',
|
||||
'router_external',
|
||||
'status',
|
||||
'subnets',
|
||||
'tenant_id',
|
||||
)
|
||||
|
||||
data = (
|
||||
network._format_admin_state(_network.admin_state_up),
|
||||
_network.id,
|
||||
_network.name,
|
||||
network._format_router_external(_network.router_external),
|
||||
_network.status,
|
||||
utils.format_list(_network.subnets),
|
||||
_network.tenant_id,
|
||||
)
|
||||
|
||||
def setUp(self):
|
||||
super(TestCreateNetworkIdentityV2, self).setUp()
|
||||
|
||||
self.new_network = mock.Mock(return_value=copy.deepcopy(RESPONSE))
|
||||
self.network.create_network = self.new_network
|
||||
self.network.create_network = mock.Mock(return_value=self._network)
|
||||
|
||||
# Get the command object to test
|
||||
self.cmd = network.CreateNetwork(self.app, self.namespace)
|
||||
@ -211,42 +264,45 @@ class TestCreateNetworkIdentityV2(TestNetwork):
|
||||
|
||||
# There is no DomainManager Mock in fake identity v2.
|
||||
|
||||
def test_create_with_project_identityv2(self):
|
||||
def test_create_with_project_identityv2(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
arglist = [
|
||||
"--project", identity_fakes_v2.project_name,
|
||||
FAKE_NAME,
|
||||
self._network.name,
|
||||
]
|
||||
verifylist = [
|
||||
('admin_state', True),
|
||||
('shared', None),
|
||||
('name', FAKE_NAME),
|
||||
('name', self._network.name),
|
||||
('project', identity_fakes_v2.project_name),
|
||||
]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
result = list(self.cmd.take_action(parsed_args))
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.network.create_network.assert_called_with({
|
||||
RESOURCE: {
|
||||
'admin_state_up': True,
|
||||
'name': FAKE_NAME,
|
||||
'tenant_id': identity_fakes_v2.project_id,
|
||||
}
|
||||
self.network.create_network.assert_called_with(**{
|
||||
'admin_state_up': True,
|
||||
'name': self._network.name,
|
||||
'tenant_id': identity_fakes_v2.project_id,
|
||||
})
|
||||
self.assertEqual(FILTERED, result)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_with_domain_identityv2(self, _make_client_sdk):
|
||||
_make_client_sdk.return_value = self.app.client_manager.network
|
||||
|
||||
def test_create_with_domain_identityv2(self):
|
||||
arglist = [
|
||||
"--project", identity_fakes_v3.project_name,
|
||||
"--project-domain", identity_fakes_v3.domain_name,
|
||||
FAKE_NAME,
|
||||
self._network.name,
|
||||
]
|
||||
verifylist = [
|
||||
('admin_state', True),
|
||||
('shared', None),
|
||||
('project', identity_fakes_v3.project_name),
|
||||
('project_domain', identity_fakes_v3.domain_name),
|
||||
('name', FAKE_NAME),
|
||||
('name', self._network.name),
|
||||
]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
Loading…
x
Reference in New Issue
Block a user