Fix: incorrect check when no shared/private input
When neither of "--shared" and "--private" is input, we should not allow to specify "--project". Defaulting the created network segment range to shared is expected. Therefore, "project_id" attr should only be populated on a private range creation. Change-Id: Iab345e1651dd8b7904ff64a20633f194d719bb84 Story: 2005206 Task: 29980
This commit is contained in:
parent
28c06d0688
commit
510e9a7b8e
openstackclient
@ -168,7 +168,7 @@ class CreateNetworkSegmentRange(command.ShowOne):
|
||||
|
||||
identity_client = self.app.client_manager.identity
|
||||
|
||||
if parsed_args.shared and parsed_args.project:
|
||||
if not parsed_args.private and parsed_args.project:
|
||||
msg = _("--project is only allowed with --private")
|
||||
raise exceptions.CommandError(msg)
|
||||
|
||||
@ -202,7 +202,7 @@ class CreateNetworkSegmentRange(command.ShowOne):
|
||||
msg = (_("Failed to create the network segment range for "
|
||||
"project %(project_id)s") % parsed_args.project_id)
|
||||
raise exceptions.CommandError(msg)
|
||||
elif not parsed_args.shared:
|
||||
elif not attrs['shared']:
|
||||
# default to the current project if no project specified and shared
|
||||
# is not specified.
|
||||
# Get the project id from the current auth.
|
||||
|
@ -98,6 +98,27 @@ class TestCreateNetworkSegmentRange(TestNetworkSegmentRange):
|
||||
self.assertRaises(tests_utils.ParserException, self.check_parser,
|
||||
self.cmd, arglist, [])
|
||||
|
||||
def test_create_default_with_project_id(self):
|
||||
arglist = [
|
||||
'--project', self._network_segment_range.project_id,
|
||||
'--network-type', 'vxlan',
|
||||
'--minimum', str(self._network_segment_range.minimum),
|
||||
'--maximum', str(self._network_segment_range.maximum),
|
||||
self._network_segment_range.name,
|
||||
]
|
||||
verifylist = [
|
||||
('project', self._network_segment_range.project_id),
|
||||
('network_type', 'vxlan'),
|
||||
('minimum', self._network_segment_range.minimum),
|
||||
('maximum', self._network_segment_range.maximum),
|
||||
('name', self._network_segment_range.name),
|
||||
]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
self.assertRaises(exceptions.CommandError,
|
||||
self.cmd.take_action,
|
||||
parsed_args)
|
||||
|
||||
def test_create_shared_with_project_id(self):
|
||||
arglist = [
|
||||
'--shared',
|
||||
@ -144,6 +165,34 @@ class TestCreateNetworkSegmentRange(TestNetworkSegmentRange):
|
||||
self.cmd.take_action,
|
||||
parsed_args)
|
||||
|
||||
def test_create_minimum_options(self):
|
||||
arglist = [
|
||||
'--network-type', 'vxlan',
|
||||
'--minimum', str(self._network_segment_range.minimum),
|
||||
'--maximum', str(self._network_segment_range.maximum),
|
||||
self._network_segment_range.name,
|
||||
]
|
||||
verifylist = [
|
||||
('network_type', 'vxlan'),
|
||||
('minimum', self._network_segment_range.minimum),
|
||||
('maximum', self._network_segment_range.maximum),
|
||||
('name', self._network_segment_range.name),
|
||||
]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.network.create_network_segment_range.assert_called_once_with(**{
|
||||
'shared': True,
|
||||
'network_type': 'vxlan',
|
||||
'minimum': self._network_segment_range.minimum,
|
||||
'maximum': self._network_segment_range.maximum,
|
||||
'name': self._network_segment_range.name,
|
||||
})
|
||||
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.data, data)
|
||||
|
||||
def test_create_private_minimum_options(self):
|
||||
arglist = [
|
||||
'--private',
|
||||
|
Loading…
x
Reference in New Issue
Block a user