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
+5 -18
View File
@@ -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')