summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhanggang <zhanggang@cmss.chinamobile.com>2018-08-15 16:10:01 +0800
committerzhanggang <zhanggang@cmss.chinamobile.com>2018-08-21 19:06:11 +0800
commit0ce6255bfdc01874f1de4ee664a3adc3127d1b3a (patch)
tree743dfac8e66a0136a7b4a2d91195c83ede3b3e79
parent80ecbbc3379d30bc91b2a2f06fc4fbaf84ab6a3f (diff)
downloadpython-troveclient-0ce6255bfdc01874f1de4ee664a3adc3127d1b3a.tar.gz
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>
-rw-r--r--troveclient/osc/v1/database_clusters.py34
-rw-r--r--troveclient/tests/osc/v1/test_database_clusters.py12
-rw-r--r--troveclient/v1/shell.py10
3 files changed, 46 insertions, 10 deletions
diff --git a/troveclient/osc/v1/database_clusters.py b/troveclient/osc/v1/database_clusters.py
index bd73802..eaf36ff 100644
--- a/troveclient/osc/v1/database_clusters.py
+++ b/troveclient/osc/v1/database_clusters.py
@@ -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)))
diff --git a/troveclient/tests/osc/v1/test_database_clusters.py b/troveclient/tests/osc/v1/test_database_clusters.py
index 9eb5f9a..9c11f65 100644
--- a/troveclient/tests/osc/v1/test_database_clusters.py
+++ b/troveclient/tests/osc/v1/test_database_clusters.py
@@ -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)
diff --git a/troveclient/v1/shell.py b/troveclient/v1/shell.py
index aef2529..4f05b87 100644
--- a/troveclient/v1/shell.py
+++ b/troveclient/v1/shell.py
@@ -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,