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
This commit is contained in:
		| @@ -27,3 +27,8 @@ in the Glance Administration Guide. | ||||
|    For more information, refer to `Manage images | ||||
|    <https://docs.openstack.org/glance/latest/admin/manage-images.html>`_ | ||||
|    in the Glance Administration Guide. | ||||
|  | ||||
| .. note:: | ||||
|  | ||||
|    Boolean properties expect one of the following values: '0', '1', 'f', | ||||
|    'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes' (case-insensitive). | ||||
|   | ||||
| @@ -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 | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -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): | ||||
|   | ||||
| @@ -0,0 +1,12 @@ | ||||
| --- | ||||
| prelude: > | ||||
| fixes: | ||||
|   - | | ||||
|     * Bug 1607317_: metadata def namespace update CLI is not working as expected for parameter "protected" | ||||
|  | ||||
|     .. _1607317: https://code.launchpad.net/bugs/1607317 | ||||
| other: | ||||
|   - | | ||||
|     Boolean arguments now expect one of the following values: '0', '1', 'f', | ||||
|     'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes' | ||||
|     (case-insensitive). This will not change anything for most users. | ||||
		Reference in New Issue
	
	Block a user
	 Cyril Roelandt
					Cyril Roelandt