Skip to content

Commit 510e9a7

Browse files
committed
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
1 parent 28c06d0 commit 510e9a7

2 files changed

Lines changed: 51 additions & 2 deletions

File tree

openstackclient/network/v2/network_segment_range.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ def take_action(self, parsed_args):
168168

169169
identity_client = self.app.client_manager.identity
170170

171-
if parsed_args.shared and parsed_args.project:
171+
if not parsed_args.private and parsed_args.project:
172172
msg = _("--project is only allowed with --private")
173173
raise exceptions.CommandError(msg)
174174

@@ -202,7 +202,7 @@ def take_action(self, parsed_args):
202202
msg = (_("Failed to create the network segment range for "
203203
"project %(project_id)s") % parsed_args.project_id)
204204
raise exceptions.CommandError(msg)
205-
elif not parsed_args.shared:
205+
elif not attrs['shared']:
206206
# default to the current project if no project specified and shared
207207
# is not specified.
208208
# Get the project id from the current auth.

openstackclient/tests/unit/network/v2/test_network_segment_range.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,27 @@ def test_create_invalid_network_type(self):
9898
self.assertRaises(tests_utils.ParserException, self.check_parser,
9999
self.cmd, arglist, [])
100100

101+
def test_create_default_with_project_id(self):
102+
arglist = [
103+
'--project', self._network_segment_range.project_id,
104+
'--network-type', 'vxlan',
105+
'--minimum', str(self._network_segment_range.minimum),
106+
'--maximum', str(self._network_segment_range.maximum),
107+
self._network_segment_range.name,
108+
]
109+
verifylist = [
110+
('project', self._network_segment_range.project_id),
111+
('network_type', 'vxlan'),
112+
('minimum', self._network_segment_range.minimum),
113+
('maximum', self._network_segment_range.maximum),
114+
('name', self._network_segment_range.name),
115+
]
116+
117+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
118+
self.assertRaises(exceptions.CommandError,
119+
self.cmd.take_action,
120+
parsed_args)
121+
101122
def test_create_shared_with_project_id(self):
102123
arglist = [
103124
'--shared',
@@ -144,6 +165,34 @@ def test_create_tunnel_with_physical_network(self):
144165
self.cmd.take_action,
145166
parsed_args)
146167

168+
def test_create_minimum_options(self):
169+
arglist = [
170+
'--network-type', 'vxlan',
171+
'--minimum', str(self._network_segment_range.minimum),
172+
'--maximum', str(self._network_segment_range.maximum),
173+
self._network_segment_range.name,
174+
]
175+
verifylist = [
176+
('network_type', 'vxlan'),
177+
('minimum', self._network_segment_range.minimum),
178+
('maximum', self._network_segment_range.maximum),
179+
('name', self._network_segment_range.name),
180+
]
181+
182+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
183+
columns, data = self.cmd.take_action(parsed_args)
184+
185+
self.network.create_network_segment_range.assert_called_once_with(**{
186+
'shared': True,
187+
'network_type': 'vxlan',
188+
'minimum': self._network_segment_range.minimum,
189+
'maximum': self._network_segment_range.maximum,
190+
'name': self._network_segment_range.name,
191+
})
192+
193+
self.assertEqual(self.columns, columns)
194+
self.assertEqual(self.data, data)
195+
147196
def test_create_private_minimum_options(self):
148197
arglist = [
149198
'--private',

0 commit comments

Comments
 (0)