summaryrefslogtreecommitdiff
path: root/glanceclient
diff options
context:
space:
mode:
authorCyril Roelandt <cyril@redhat.com>2022-09-21 19:38:24 +0200
committerCyril Roelandt <cyril@redhat.com>2022-11-14 17:31:39 +0100
commit88e3b0ad984797ec1f856429698949e4781dff3a (patch)
treec3b5c409f4759e06735fc1ec641e8f1225c6fee4 /glanceclient
parent9e8fcdb92ed41594fe458b0976e9e29387849262 (diff)
downloadpython-glanceclient-88e3b0ad984797ec1f856429698949e4781dff3a.tar.gz
Boolean options: use strict checking
Boolean options (such as "--protected" for glance md-namespace-update) should accept a limited amount of valid values, rather than assuming an "invalid" value means "False". The following values (no matter the case) will now be interpreted as True: ‘t’,’true’, ‘on’, ‘y’, ‘yes’, or ‘1’. The following values (no matter the case) will now be interpreted as False: ‘f’, ‘false’, ‘off’, ‘n’, ‘no’, or ‘0’. Change-Id: I0e7942045d883ac398bab4a7a85f2b4ac9b1ed8c Closes-Bug: #1607317
Diffstat (limited to 'glanceclient')
-rw-r--r--glanceclient/common/utils.py2
-rw-r--r--glanceclient/tests/unit/test_utils.py8
2 files changed, 9 insertions, 1 deletions
diff --git a/glanceclient/common/utils.py b/glanceclient/common/utils.py
index c3f08de..0de575f 100644
--- a/glanceclient/common/utils.py
+++ b/glanceclient/common/utils.py
@@ -103,7 +103,7 @@ def schema_args(schema_getter, omit=None):
typemap = {
'string': encodeutils.safe_decode,
'integer': int,
- 'boolean': strutils.bool_from_string,
+ 'boolean': lambda x: strutils.bool_from_string(x, strict=True),
'array': list
}
diff --git a/glanceclient/tests/unit/test_utils.py b/glanceclient/tests/unit/test_utils.py
index 46cefbf..d10c70d 100644
--- a/glanceclient/tests/unit/test_utils.py
+++ b/glanceclient/tests/unit/test_utils.py
@@ -229,6 +229,14 @@ class TestUtils(testtools.TestCase):
self.assertEqual(encodeutils.safe_decode, opts['type'])
self.assertIn('None, opt-1, opt-2', opts['help'])
+ # Make sure we use strict checking for boolean values.
+ decorated = utils.schema_args(schema_getter('boolean'))(dummy_func)
+ arg, opts = decorated.__dict__['arguments'][0]
+ type_function = opts['type']
+ self.assertEqual(type_function('False'), False)
+ self.assertEqual(type_function('True'), True)
+ self.assertRaises(ValueError, type_function, 'foo')
+
def test_iterable_closes(self):
# Regression test for bug 1461678.
def _iterate(i):