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:
parent
80ecbbc337
commit
0ce6255bfd
troveclient
@ -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)))
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user