diff --git a/openstackclient/network/v2/network_segment_range.py b/openstackclient/network/v2/network_segment_range.py index 75820bc5e..567b5b6eb 100644 --- a/openstackclient/network/v2/network_segment_range.py +++ b/openstackclient/network/v2/network_segment_range.py @@ -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. diff --git a/openstackclient/tests/unit/network/v2/test_network_segment_range.py b/openstackclient/tests/unit/network/v2/test_network_segment_range.py index 63257086c..22e25df13 100644 --- a/openstackclient/tests/unit/network/v2/test_network_segment_range.py +++ b/openstackclient/tests/unit/network/v2/test_network_segment_range.py @@ -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',