Sync two parameters of cluster-create to OSC

The previous patches have add configuration and extended_properties
to "trove cluster-create"[1][2], this commit add the two paramenters
to OSC, user can pass configuration and extended_properties during
"openstack database cluster create".

[1] https://review.openstack.org/#/c/583125/
[2] https://review.openstack.org/#/c/589047/

Change-Id: Ic8e3ba4e92d3b65fa65875675f58eead5827976a
Signed-off-by: zhanggang <zhanggang@cmss.chinamobile.com>
This commit is contained in:
zhanggang 2018-08-15 16:10:01 +08:00
parent 80ecbbc337
commit 0ce6255bfd
3 changed files with 46 additions and 10 deletions

View File

@ -18,7 +18,10 @@ from osc_lib import utils
import six
from troveclient.i18n import _
from troveclient.v1.shell import _parse_extended_properties
from troveclient.v1.shell import _parse_instance_options
from troveclient.v1.shell import EXT_PROPS_HELP
from troveclient.v1.shell import EXT_PROPS_METAVAR
from troveclient.v1.shell import INSTANCE_HELP
from troveclient.v1.shell import INSTANCE_METAVAR
@ -165,16 +168,37 @@ class CreateDatabaseCluster(command.ShowOne):
help=_('Locality policy to use when creating cluster. '
'Choose one of %(choices)s.'),
)
parser.add_argument(
'--extended-properties',
dest='extended_properties',
metavar=EXT_PROPS_METAVAR,
default=None,
help=EXT_PROPS_HELP,
)
parser.add_argument(
'--configuration',
metavar='<configuration>',
type=str,
default=None,
help=_('ID of the configuration group to attach to the cluster.'),
)
return parser
def take_action(self, parsed_args):
database = self.app.client_manager.database
instances = _parse_instance_options(database, parsed_args.instances)
cluster = database.clusters.create(parsed_args.name,
parsed_args.datastore,
parsed_args.datastore_version,
instances=instances,
locality=parsed_args.locality)
extended_properties = {}
if parsed_args.extended_properties:
extended_properties = _parse_extended_properties(
parsed_args.extended_properties)
cluster = database.clusters.create(
parsed_args.name,
parsed_args.datastore,
parsed_args.datastore_version,
instances=instances,
locality=parsed_args.locality,
extended_properties=extended_properties,
configuration=parsed_args.configuration)
cluster = set_attributes_for_print_detail(cluster)
return zip(*sorted(six.iteritems(cluster)))

View File

@ -140,15 +140,21 @@ class TestDatabaseClusterCreate(TestClusters):
'flavor="03",volume=3']
parsed_instances = [{'flavor': '02', 'volume': 2},
{'flavor': '03', 'volume': 3}]
extended_properties = "foo_properties=foo_value"
parsed_extended_properties = {'foo_properties': 'foo_value'}
mock_parse_instance_opts.return_value = parsed_instances
args = ['test-name', 'vertica', '7.1',
'--instance', instances[0],
'--instance', instances[1]]
'--instance', instances[1],
'--extended-properties', extended_properties,
'--configuration', 'config01']
verifylist = [
('name', 'test-name'),
('datastore', 'vertica'),
('datastore_version', '7.1'),
('instances', instances),
('extended_properties', extended_properties),
('configuration', 'config01'),
]
parsed_args = self.check_parser(self.cmd, args, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@ -156,7 +162,9 @@ class TestDatabaseClusterCreate(TestClusters):
parsed_args.name, parsed_args.datastore,
parsed_args.datastore_version,
instances=parsed_instances,
locality=parsed_args.locality)
locality=parsed_args.locality,
extended_properties=parsed_extended_properties,
configuration=parsed_args.configuration)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)

View File

@ -871,6 +871,11 @@ def _parse_instance_options(cs, instance_options, for_grow=False):
return instances
def _parse_extended_properties(extended_properties):
return dict([(k, v) for (k, v) in [kv.strip().split("=")
for kv in extended_properties.split(",")]])
@utils.arg('name',
metavar='<name>',
type=str,
@ -905,9 +910,8 @@ def do_cluster_create(cs, args):
instances = _parse_instance_options(cs, args.instances)
extended_properties = {}
if args.extended_properties:
extended_properties = dict([(k, v) for (k, v) in
[kv.strip().split("=") for kv in
args.extended_properties.split(",")]])
extended_properties = _parse_extended_properties(
args.extended_properties)
cluster = cs.clusters.create(args.name,
args.datastore,
args.datastore_version,