summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-11-11 15:55:05 +0000
committerGerrit Code Review <review@openstack.org>2022-11-11 15:55:05 +0000
commitf41f2c388b73c7111eaff4c924b97f149e1fcf26 (patch)
treeaf43eda3b4205a234d36bbf19f891d2f09c628b4
parent4e7f83e887038998af1431bff1b8c1511d84b75a (diff)
parent74fa43665719ddc830999fa15bb052a87d69dd14 (diff)
downloadpython-glanceclient-f41f2c388b73c7111eaff4c924b97f149e1fcf26.tar.gz
Merge "schema_args: Do not generate option for read-only properties"4.2.0
-rw-r--r--glanceclient/common/utils.py2
-rw-r--r--glanceclient/tests/unit/test_utils.py9
-rw-r--r--glanceclient/v2/shell.py23
3 files changed, 15 insertions, 19 deletions
diff --git a/glanceclient/common/utils.py b/glanceclient/common/utils.py
index c3f08de..e131bd9 100644
--- a/glanceclient/common/utils.py
+++ b/glanceclient/common/utils.py
@@ -123,6 +123,8 @@ def schema_args(schema_getter, omit=None):
for name, property in properties.items():
if name in omit:
continue
+ if property.get('readOnly', False):
+ continue
param = '--' + name.replace('_', '-')
kwargs = {}
diff --git a/glanceclient/tests/unit/test_utils.py b/glanceclient/tests/unit/test_utils.py
index 46cefbf..db08a1c 100644
--- a/glanceclient/tests/unit/test_utils.py
+++ b/glanceclient/tests/unit/test_utils.py
@@ -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'])
diff --git a/glanceclient/v2/shell.py b/glanceclient/v2/shell.py
index 773c198..93a9377 100644
--- a/glanceclient/v2/shell.py
+++ b/glanceclient/v2/shell.py
@@ -49,11 +49,7 @@ def get_image_schema():
return IMAGE_SCHEMA
-@utils.schema_args(get_image_schema, omit=['created_at', 'updated_at', 'file',
- 'checksum', 'virtual_size', 'size',
- 'status', 'schema', 'direct_url',
- 'locations', 'self', 'os_hidden',
- 'os_hash_value', 'os_hash_algo'])
+@utils.schema_args(get_image_schema, omit=['locations', 'os_hidden'])
# NOTE(rosmaita): to make this option more intuitive for end users, we
# do not use the Glance image property name 'os_hidden' here. This means
# we must include 'os_hidden' in the 'omit' list above and handle the
@@ -118,11 +114,7 @@ def do_image_create(gc, args):
utils.print_image(image)
-@utils.schema_args(get_image_schema, omit=['created_at', 'updated_at', 'file',
- 'checksum', 'virtual_size', 'size',
- 'status', 'schema', 'direct_url',
- 'locations', 'self', 'os_hidden',
- 'os_hash_value', 'os_hash_algo'])
+@utils.schema_args(get_image_schema, omit=['locations', 'os_hidden'])
# NOTE: --hidden requires special handling; see note at do_image_create
@utils.arg('--hidden', type=strutils.bool_from_string, metavar='[True|False]',
default=None,
@@ -354,12 +346,8 @@ def _validate_backend(backend, gc):
@utils.arg('id', metavar='<IMAGE_ID>', help=_('ID of image to update.'))
-@utils.schema_args(get_image_schema, omit=['id', 'locations', 'created_at',
- 'updated_at', 'file', 'checksum',
- 'virtual_size', 'size', 'status',
- 'schema', 'direct_url', 'tags',
- 'self', 'os_hidden',
- 'os_hash_value', 'os_hash_algo'])
+@utils.schema_args(get_image_schema, omit=['id', 'locations', 'tags',
+ 'os_hidden'])
# NOTE: --hidden requires special handling; see note at do_image_create
@utils.arg('--hidden', type=strutils.bool_from_string, metavar='[True|False]',
default=None,
@@ -1105,8 +1093,7 @@ def do_md_namespace_import(gc, args):
@utils.schema_args(get_namespace_schema, omit=['property_count', 'properties',
'tag_count', 'tags',
'object_count', 'objects',
- 'resource_type_associations',
- 'schema'])
+ 'resource_type_associations'])
def do_md_namespace_update(gc, args):
"""Update an existing metadata definitions namespace."""
schema = gc.schemas.get('metadefs/namespace')