summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2017-12-25 17:27:32 +0000
committerGerrit Code Review <review@openstack.org>2017-12-25 17:27:32 +0000
commitf5809f58c3606ea707857e31ac54bae618f4c7a6 (patch)
tree9a9ee164d234a35813759ff10374ccb026162b02
parentb7088004d4d06be1f6ffe50a8d467055649ce748 (diff)
parent481e600f35ee923a66c8bdb12389af2ddaf691d7 (diff)
downloadpython-troveclient-f5809f58c3606ea707857e31ac54bae618f4c7a6.tar.gz
Merge "Add configuration-create to OSC"
-rw-r--r--releasenotes/notes/add-configuration-create-to-osc-fd556891b57cce05.yaml6
-rw-r--r--setup.cfg1
-rw-r--r--troveclient/osc/v1/database_configurations.py50
-rw-r--r--troveclient/tests/osc/v1/test_database_configurations.py58
4 files changed, 115 insertions, 0 deletions
diff --git a/releasenotes/notes/add-configuration-create-to-osc-fd556891b57cce05.yaml b/releasenotes/notes/add-configuration-create-to-osc-fd556891b57cce05.yaml
new file mode 100644
index 0000000..6d61d03
--- /dev/null
+++ b/releasenotes/notes/add-configuration-create-to-osc-fd556891b57cce05.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ The command ``trove configuration-create`` is now available
+ to use in the python-openstackclient CLI as ``openstack
+ database configuration create``
diff --git a/setup.cfg b/setup.cfg
index f2845ce..6670d97 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -38,6 +38,7 @@ openstack.database.v1 =
database_cluster_delete = troveclient.osc.v1.database_clusters:DeleteDatabaseCluster
database_cluster_list = troveclient.osc.v1.database_clusters:ListDatabaseClusters
database_cluster_show = troveclient.osc.v1.database_clusters:ShowDatabaseCluster
+ database_configuration_create = troveclient.osc.v1.database_configurations:CreateDatabaseConfiguration
database_configuration_delete = troveclient.osc.v1.database_configurations:DeleteDatabaseConfiguration
database_configuration_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurations
database_configuration_parameter_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationParameters
diff --git a/troveclient/osc/v1/database_configurations.py b/troveclient/osc/v1/database_configurations.py
index b9639f0..3a587eb 100644
--- a/troveclient/osc/v1/database_configurations.py
+++ b/troveclient/osc/v1/database_configurations.py
@@ -203,3 +203,53 @@ class DeleteDatabaseConfiguration(command.Command):
msg = (_("Failed to delete configuration %(c_group)s: %(e)s")
% {'c_group': parsed_args.configuration_group, 'e': e})
raise exceptions.CommandError(msg)
+
+
+class CreateDatabaseConfiguration(command.ShowOne):
+
+ _description = _("Creates a configuration group.")
+
+ def get_parser(self, prog_name):
+ parser = super(CreateDatabaseConfiguration, self).get_parser(prog_name)
+ parser.add_argument(
+ 'name',
+ metavar='<name>',
+ help=_('Name of the configuration group.'),
+ )
+ parser.add_argument(
+ 'values',
+ metavar='<values>',
+ help=_('Dictionary of the values to set.'),
+ )
+ parser.add_argument(
+ '--datastore',
+ metavar='<datastore>',
+ default=None,
+ help=_('Datastore assigned to the configuration group. Required '
+ 'if default datastore is not configured.'),
+ )
+ parser.add_argument(
+ '--datastore_version',
+ metavar='<datastore_version>',
+ default=None,
+ help=_('Datastore version ID assigned to the '
+ 'configuration group.'),
+ )
+ parser.add_argument(
+ '--description',
+ metavar='<description>',
+ default=None,
+ help=_('An optional description for the configuration group.'),
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ db_configurations = self.app.client_manager.database.configurations
+ config_grp = db_configurations.create(
+ parsed_args.name,
+ parsed_args.values,
+ description=parsed_args.description,
+ datastore=parsed_args.datastore,
+ datastore_version=parsed_args.datastore_version)
+ config_grp = set_attributes_for_print_detail(config_grp)
+ return zip(*sorted(six.iteritems(config_grp)))
diff --git a/troveclient/tests/osc/v1/test_database_configurations.py b/troveclient/tests/osc/v1/test_database_configurations.py
index 636ff6f..b603a2c 100644
--- a/troveclient/tests/osc/v1/test_database_configurations.py
+++ b/troveclient/tests/osc/v1/test_database_configurations.py
@@ -200,3 +200,61 @@ class TestDatabaseConfigurationDelete(TestConfigurations):
self.assertRaises(exceptions.CommandError,
self.cmd.take_action,
parsed_args)
+
+
+class TestConfigurationCreate(TestConfigurations):
+
+ values = ('2015-05-16T10:24:28', 'mysql', '5.6', '', 'c-123',
+ 'test_config', '2015-05-16T10:24:29', '{"max_connections": 5}')
+
+ def setUp(self):
+ super(TestConfigurationCreate, self).setUp()
+ self.cmd = database_configurations.\
+ CreateDatabaseConfiguration(self.app, None)
+ self.data = self.fake_configurations.get_configurations_c_123()
+ self.configuration_client.create.return_value = self.data
+ self.columns = (
+ 'created',
+ 'datastore_name',
+ 'datastore_version_name',
+ 'description',
+ 'id',
+ 'name',
+ 'updated',
+ 'values',
+ )
+
+ def test_configuration_create_return_value(self):
+ args = ['c-123', '{"max_connections": 5}',
+ '--description', 'test_config',
+ '--datastore', 'mysql',
+ '--datastore_version', '5.6']
+ parsed_args = self.check_parser(self.cmd, args, [])
+ columns, data = self.cmd.take_action(parsed_args)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.values, data)
+
+ def test_configuration_create(self):
+ args = ['cgroup1', '{"param1": 1, "param2": 2}']
+ parsed_args = self.check_parser(self.cmd, args, [])
+ self.cmd.take_action(parsed_args)
+ self.configuration_client.create.assert_called_with(
+ 'cgroup1',
+ '{"param1": 1, "param2": 2}',
+ description=None,
+ datastore=None,
+ datastore_version=None)
+
+ def test_configuration_create_with_optional_args(self):
+ args = ['cgroup2', '{"param3": 3, "param4": 4}',
+ '--description', 'cgroup 2',
+ '--datastore', 'mysql',
+ '--datastore_version', '5.6']
+ parsed_args = self.check_parser(self.cmd, args, [])
+ self.cmd.take_action(parsed_args)
+ self.configuration_client.create.assert_called_with(
+ 'cgroup2',
+ '{"param3": 3, "param4": 4}',
+ description='cgroup 2',
+ datastore='mysql',
+ datastore_version='5.6')