schema_args: Do not generate option for read-only properties

The schema_args decorator generates command line options based on the
properties defined in a schema. This commit makes sure read-only
properties are skipped during this process, since trying to modify their
value would result in a Glance error.

Closes-Bug: #1561828
Change-Id: I7ccc628a23c9ebdaeedcb9e6d43559f497ce9555
This commit is contained in:
Cyril Roelandt
2022-09-20 18:05:33 +02:00
parent 9e8fcdb92e
commit 74fa436657
3 changed files with 15 additions and 19 deletions
+8 -1
View File
@@ -191,12 +191,17 @@ class TestUtils(testtools.TestCase):
def schema_getter(_type='string', enum=False):
prop = {
'type': ['null', _type],
'readOnly': True,
'description': 'Test schema',
}
prop_readonly = {
'type': ['null', _type],
'readOnly': True,
'description': 'Test schema read-only',
}
if enum:
prop['enum'] = [None, 'opt-1', 'opt-2']
prop_readonly['enum'] = [None, 'opt-ro-1', 'opt-ro-2']
def actual_getter():
return {
@@ -205,6 +210,7 @@ class TestUtils(testtools.TestCase):
'name': 'test_schema',
'properties': {
'test': prop,
'readonly-test': prop_readonly,
}
}
@@ -214,6 +220,7 @@ class TestUtils(testtools.TestCase):
pass
decorated = utils.schema_args(schema_getter())(dummy_func)
self.assertEqual(len(decorated.__dict__['arguments']), 1)
arg, opts = decorated.__dict__['arguments'][0]
self.assertIn('--test', arg)
self.assertEqual(encodeutils.safe_decode, opts['type'])