Allow to specify dict and list properties in cli

Change-Id: I9da3c3b0f9f34429ec40d891f76acee863c4ec79
This commit is contained in:
Mike Fedosin
2016-12-22 11:49:15 +03:00
parent 50e117c20d
commit 8e8d788a84
2 changed files with 129 additions and 5 deletions

View File

@@ -15,13 +15,13 @@
import logging
from osc_lib.command import command
from oslo_utils import strutils
from pprint import pformat
import six
from glareclient.common import utils as glare_utils
from glareclient.osc.v1 import TypeMapperAction
from pprint import pformat
import six
LOG = logging.getLogger(__name__)
@@ -185,7 +185,21 @@ class CreateArtifact(command.Lister):
metavar='<key=value>',
action='append',
default=[],
help='Artifact property.'
help='Simple artifact property.'
)
parser.add_argument(
'--list', '-l',
metavar='<key=value>',
action='append',
default=[],
help='Artifact list property.'
)
parser.add_argument(
'--dict', '-d',
metavar='<key=value>',
action='append',
default=[],
help='Artifact dict property.'
)
return parser
@@ -197,6 +211,19 @@ class CreateArtifact(command.Lister):
key, value = datum.split('=', 1)
prop[key] = value
for datum in parsed_args.list:
key, value = datum.split('=', 1)
value = strutils.split_by_commas(value)
prop[key] = value
for datum in parsed_args.dict:
key, value = datum.split('=', 1)
value = strutils.split_by_commas(value)
prop[key] = {}
for elem in value:
k, v = elem.split(':', 1)
prop[key][k] = v
client = self.app.client_manager.artifact
data = client.artifacts.create(parsed_args.name,
type_name=parsed_args.type_name,
@@ -244,7 +271,21 @@ class UpdateArtifact(command.Lister):
metavar='<key=value>',
action='append',
default=[],
help='Update property values.'
help='Simple artifact property.'
)
parser.add_argument(
'--list', '-l',
metavar='<key=value>',
action='append',
default=[],
help='Artifact list property.'
)
parser.add_argument(
'--dict', '-d',
metavar='<key=value>',
action='append',
default=[],
help='Artifact dict property.'
)
return parser
@@ -256,6 +297,19 @@ class UpdateArtifact(command.Lister):
key, value = datum.split('=', 1)
prop[key] = value
for datum in parsed_args.list:
key, value = datum.split('=', 1)
value = strutils.split_by_commas(value)
prop[key] = value
for datum in parsed_args.dict:
key, value = datum.split('=', 1)
value = strutils.split_by_commas(value)
prop[key] = {}
for elem in value:
k, v = elem.split(':', 1)
prop[key][k] = v
client = self.app.client_manager.artifact
af_id = get_artifact_id(client, parsed_args)
data = client.artifacts.update(