diff options
| author | Zuul <zuul@review.openstack.org> | 2017-12-25 17:27:32 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-12-25 17:27:32 +0000 |
| commit | f5809f58c3606ea707857e31ac54bae618f4c7a6 (patch) | |
| tree | 9a9ee164d234a35813759ff10374ccb026162b02 | |
| parent | b7088004d4d06be1f6ffe50a8d467055649ce748 (diff) | |
| parent | 481e600f35ee923a66c8bdb12389af2ddaf691d7 (diff) | |
| download | python-troveclient-f5809f58c3606ea707857e31ac54bae618f4c7a6.tar.gz | |
Merge "Add configuration-create to OSC"
| -rw-r--r-- | releasenotes/notes/add-configuration-create-to-osc-fd556891b57cce05.yaml | 6 | ||||
| -rw-r--r-- | setup.cfg | 1 | ||||
| -rw-r--r-- | troveclient/osc/v1/database_configurations.py | 50 | ||||
| -rw-r--r-- | troveclient/tests/osc/v1/test_database_configurations.py | 58 |
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`` @@ -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') |
