Skip to content

Commit b33ee3d

Browse files
committed
remove assert in favor an if/else
the assert usage in the NonNegativeAction has the potential to allow unexpected behavior when the python is byte-compiled with optimization turned on. Changes * remove assert in favor of if/else in NonNegativeAction class * add type specifier to parser arguments for non-negative actions * correct tests for new int based values Change-Id: I093e7440b8beff4f179e2c4ed81daff82704c40e Closes-Bug: #1576375
1 parent 9d7ccd9 commit b33ee3d

3 files changed

Lines changed: 18 additions & 15 deletions

File tree

openstackclient/common/parseractions.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,8 @@ class NonNegativeAction(argparse.Action):
155155
"""
156156

157157
def __call__(self, parser, namespace, values, option_string=None):
158-
try:
159-
assert(int(values) >= 0)
158+
if int(values) >= 0:
160159
setattr(namespace, self.dest, values)
161-
except Exception:
160+
else:
162161
msg = "%s expected a non-negative integer" % (str(option_string))
163162
raise argparse.ArgumentTypeError(msg)

openstackclient/network/v2/subnet_pool.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,18 +91,21 @@ def _add_prefix_options(parser, for_create=False):
9191
parser.add_argument(
9292
'--default-prefix-length',
9393
metavar='<default-prefix-length>',
94+
type=int,
9495
action=parseractions.NonNegativeAction,
9596
help=_("Set subnet pool default prefix length")
9697
)
9798
parser.add_argument(
9899
'--min-prefix-length',
99100
metavar='<min-prefix-length>',
100101
action=parseractions.NonNegativeAction,
102+
type=int,
101103
help=_("Set subnet pool minimum prefix length")
102104
)
103105
parser.add_argument(
104106
'--max-prefix-length',
105107
metavar='<max-prefix-length>',
108+
type=int,
106109
action=parseractions.NonNegativeAction,
107110
help=_("Set subnet pool maximum prefix length")
108111
)

openstackclient/tests/network/v2/test_subnet_pool.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,10 @@ def test_create_prefixlen_options(self):
153153
self._subnet_pool.name,
154154
]
155155
verifylist = [
156-
('default_prefix_length', self._subnet_pool.default_prefixlen),
157-
('max_prefix_length', self._subnet_pool.max_prefixlen),
158-
('min_prefix_length', self._subnet_pool.min_prefixlen),
156+
('default_prefix_length',
157+
int(self._subnet_pool.default_prefixlen)),
158+
('max_prefix_length', int(self._subnet_pool.max_prefixlen)),
159+
('min_prefix_length', int(self._subnet_pool.min_prefixlen)),
159160
('name', self._subnet_pool.name),
160161
('prefixes', ['10.0.10.0/24']),
161162
]
@@ -164,9 +165,9 @@ def test_create_prefixlen_options(self):
164165
columns, data = (self.cmd.take_action(parsed_args))
165166

166167
self.network.create_subnet_pool.assert_called_once_with(**{
167-
'default_prefixlen': self._subnet_pool.default_prefixlen,
168-
'max_prefixlen': self._subnet_pool.max_prefixlen,
169-
'min_prefixlen': self._subnet_pool.min_prefixlen,
168+
'default_prefixlen': int(self._subnet_pool.default_prefixlen),
169+
'max_prefixlen': int(self._subnet_pool.max_prefixlen),
170+
'min_prefixlen': int(self._subnet_pool.min_prefixlen),
170171
'prefixes': ['10.0.10.0/24'],
171172
'name': self._subnet_pool.name,
172173
})
@@ -397,8 +398,8 @@ def test_set_this(self):
397398
]
398399
verifylist = [
399400
('name', 'noob'),
400-
('default_prefix_length', '8'),
401-
('min_prefix_length', '8'),
401+
('default_prefix_length', 8),
402+
('min_prefix_length', 8),
402403
('subnet_pool', self._subnet_pool.name),
403404
]
404405
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -407,8 +408,8 @@ def test_set_this(self):
407408

408409
attrs = {
409410
'name': 'noob',
410-
'default_prefixlen': '8',
411-
'min_prefixlen': '8',
411+
'default_prefixlen': 8,
412+
'min_prefixlen': 8,
412413
}
413414
self.network.update_subnet_pool.assert_called_once_with(
414415
self._subnet_pool, **attrs)
@@ -423,7 +424,7 @@ def test_set_that(self):
423424
]
424425
verifylist = [
425426
('prefixes', ['10.0.1.0/24', '10.0.2.0/24']),
426-
('max_prefix_length', '16'),
427+
('max_prefix_length', 16),
427428
('subnet_pool', self._subnet_pool.name),
428429
]
429430
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -434,7 +435,7 @@ def test_set_that(self):
434435
prefixes.extend(self._subnet_pool.prefixes)
435436
attrs = {
436437
'prefixes': prefixes,
437-
'max_prefixlen': '16',
438+
'max_prefixlen': 16,
438439
}
439440
self.network.update_subnet_pool.assert_called_once_with(
440441
self._subnet_pool, **attrs)

0 commit comments

Comments
 (0)