summaryrefslogtreecommitdiff
path: root/glanceclient/v2/shell.py
diff options
context:
space:
mode:
authorWayne Okuma <wayne.okuma@hp.com>2014-12-02 14:32:58 -0800
committerWayne Okuma <wayne.okuma@hp.com>2015-07-16 14:00:50 -0700
commitc0e90fa2bdaa58249f01acbc6eb3edc36f83a740 (patch)
treed51436af67ee0ea9b556d79bb77b963703db517d /glanceclient/v2/shell.py
parent16ab18b64d44a3eb1767308b4b25ac7a6a6c1aee (diff)
downloadpython-glanceclient-c0e90fa2bdaa58249f01acbc6eb3edc36f83a740.tar.gz
Support for Metadata Definition Catalog for Tags
This set provides API and shell commands support for: - CRUD on metadef_tags; Change-Id: I09bdf43edee6fff615d223f1a6df7c15a1e40565 Implements: blueprint metadefs-tags-cli DocImpact
Diffstat (limited to 'glanceclient/v2/shell.py')
-rw-r--r--glanceclient/v2/shell.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/glanceclient/v2/shell.py b/glanceclient/v2/shell.py
index a56e552..5da4444 100644
--- a/glanceclient/v2/shell.py
+++ b/glanceclient/v2/shell.py
@@ -417,6 +417,10 @@ def _namespace_show(namespace, max_column_width=None):
objects = [obj['name'] for obj in namespace['objects']]
namespace['objects'] = objects
+ if 'tags' in namespace:
+ tags = [tag['name'] for tag in namespace['tags']]
+ namespace['tags'] = tags
+
if max_column_width:
utils.print_dict(namespace, max_column_width)
else:
@@ -775,6 +779,116 @@ def do_md_object_list(gc, args):
utils.print_list(objects, columns, field_settings=column_settings)
+def _tag_show(tag, max_column_width=None):
+ tag = dict(tag) # Warlock objects are compatible with dicts
+ if max_column_width:
+ utils.print_dict(tag, max_column_width)
+ else:
+ utils.print_dict(tag)
+
+
+@utils.arg('namespace', metavar='<NAMESPACE>',
+ help='Name of the namespace the tag will belong to.')
+@utils.arg('--name', metavar='<NAME>', required=True,
+ help='The name of the new tag to add.')
+def do_md_tag_create(gc, args):
+ """Add a new metadata definitions tag inside a namespace."""
+ name = args.name.strip()
+ if name:
+ new_tag = gc.metadefs_tag.create(args.namespace, name)
+ _tag_show(new_tag)
+ else:
+ utils.exit('Please supply at least one non-blank tag name.')
+
+
+@utils.arg('namespace', metavar='<NAMESPACE>',
+ help='Name of the namespace the tags will belong to.')
+@utils.arg('--names', metavar='<NAMES>', required=True,
+ help='A comma separated list of tag names.')
+@utils.arg('--delim', metavar='<DELIM>', required=False,
+ help='The delimiter used to separate the names'
+ ' (if none is provided then the default is a comma).')
+def do_md_tag_create_multiple(gc, args):
+ """Create new metadata definitions tags inside a namespace."""
+ delim = args.delim or ','
+
+ tags = []
+ names_list = args.names.split(delim)
+ for name in names_list:
+ name = name.strip()
+ if name:
+ tags.append(name)
+
+ if not tags:
+ utils.exit('Please supply at least one tag name. For example: '
+ '--names Tag1')
+
+ fields = {'tags': tags}
+ new_tags = gc.metadefs_tag.create_multiple(args.namespace, **fields)
+ columns = ['name']
+ column_settings = {
+ "description": {
+ "max_width": 50,
+ "align": "l"
+ }
+ }
+ utils.print_list(new_tags, columns, field_settings=column_settings)
+
+
+@utils.arg('namespace', metavar='<NAMESPACE>',
+ help='Name of the namespace to which the tag belongs.')
+@utils.arg('tag', metavar='<TAG>', help='Name of the old tag.')
+@utils.arg('--name', metavar='<NAME>', default=None, required=True,
+ help='New name of the new tag.')
+def do_md_tag_update(gc, args):
+ """Rename a metadata definitions tag inside a namespace."""
+ name = args.name.strip()
+ if name:
+ fields = {'name': name}
+ new_tag = gc.metadefs_tag.update(args.namespace, args.tag,
+ **fields)
+ _tag_show(new_tag)
+ else:
+ utils.exit('Please supply at least one non-blank tag name.')
+
+
+@utils.arg('namespace', metavar='<NAMESPACE>',
+ help='Name of the namespace to which the tag belongs.')
+@utils.arg('tag', metavar='<TAG>', help='Name of the tag.')
+def do_md_tag_show(gc, args):
+ """Describe a specific metadata definitions tag inside a namespace."""
+ tag = gc.metadefs_tag.get(args.namespace, args.tag)
+ _tag_show(tag)
+
+
+@utils.arg('namespace', metavar='<NAMESPACE>',
+ help='Name of the namespace to which the tag belongs.')
+@utils.arg('tag', metavar='<TAG>', help='Name of the tag.')
+def do_md_tag_delete(gc, args):
+ """Delete a specific metadata definitions tag inside a namespace."""
+ gc.metadefs_tag.delete(args.namespace, args.tag)
+
+
+@utils.arg('namespace', metavar='<NAMESPACE>', help='Name of namespace.')
+def do_md_namespace_tags_delete(gc, args):
+ """Delete all metadata definitions tags inside a specific namespace."""
+ gc.metadefs_tag.delete_all(args.namespace)
+
+
+@utils.arg('namespace', metavar='<NAMESPACE>', help='Name of namespace.')
+def do_md_tag_list(gc, args):
+ """List metadata definitions tags inside a specific namespace."""
+ tags = gc.metadefs_tag.list(args.namespace)
+ columns = ['name']
+ column_settings = {
+ "description": {
+ "max_width": 50,
+ "align": "l"
+ }
+ }
+ utils.print_list(tags, columns, field_settings=column_settings)
+
+
@utils.arg('--sort-key', default='status',
choices=tasks.SORT_KEY_VALUES,
help='Sort task list by specified field.')