summaryrefslogtreecommitdiff
path: root/troveclient
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2017-12-25 17:27:31 +0000
committerGerrit Code Review <review@openstack.org>2017-12-25 17:27:31 +0000
commitb7088004d4d06be1f6ffe50a8d467055649ce748 (patch)
treea54fba62db815568265a029a702d52aa020ab453 /troveclient
parent6d8a3aa8c8ed9a77146fa94ca601129745b919b3 (diff)
parentdd0c859148066d67d0c039e77a8613dd713e12b1 (diff)
downloadpython-troveclient-b7088004d4d06be1f6ffe50a8d467055649ce748.tar.gz
Merge "Add database-create to OSC"
Diffstat (limited to 'troveclient')
-rw-r--r--troveclient/osc/v1/databases.py40
-rw-r--r--troveclient/tests/osc/v1/test_databases.py32
2 files changed, 72 insertions, 0 deletions
diff --git a/troveclient/osc/v1/databases.py b/troveclient/osc/v1/databases.py
index ea68697..7795202 100644
--- a/troveclient/osc/v1/databases.py
+++ b/troveclient/osc/v1/databases.py
@@ -19,6 +19,46 @@ from osc_lib import utils
from troveclient.i18n import _
+class CreateDatabase(command.Command):
+
+ _description = _("Creates a database on an instance.")
+
+ def get_parser(self, prog_name):
+ parser = super(CreateDatabase, self).get_parser(prog_name)
+ parser.add_argument(
+ "instance",
+ metavar="<instance>",
+ help=_("ID or name of the instance."),
+ )
+ parser.add_argument(
+ "name",
+ metavar="<name>",
+ help=_("Name of the database."),
+ )
+ parser.add_argument(
+ "--character_set",
+ metavar="<character_set>",
+ help=_("Optional character set for database."),
+ )
+ parser.add_argument(
+ "--collate",
+ metavar="<collate>",
+ help=_("Optional collation type for database."),
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ manager = self.app.client_manager.database
+ databases = manager.databases
+ instance = utils.find_resource(manager.instances, parsed_args.instance)
+ database_dict = {'name': parsed_args.name}
+ if parsed_args.collate:
+ database_dict['collate'] = parsed_args.collate
+ if parsed_args.character_set:
+ database_dict['character_set'] = parsed_args.character_set
+ databases.create(instance, [database_dict])
+
+
class ListDatabases(command.Lister):
_description = _("Get a list of all Databases from the instance.")
diff --git a/troveclient/tests/osc/v1/test_databases.py b/troveclient/tests/osc/v1/test_databases.py
index f55adf4..da53a2c 100644
--- a/troveclient/tests/osc/v1/test_databases.py
+++ b/troveclient/tests/osc/v1/test_databases.py
@@ -29,6 +29,38 @@ class TestDatabases(fakes.TestDatabasev1):
self.database_client = self.app.client_manager.database.databases
+class TestDatabaseCreate(TestDatabases):
+
+ def setUp(self):
+ super(TestDatabaseCreate, self).setUp()
+ self.cmd = databases.CreateDatabase(self.app, None)
+
+ @mock.patch.object(utils, 'find_resource')
+ def test_database_create(self, mock_find):
+ args = ['instance1', 'db1']
+ mock_find.return_value = args[0]
+ parsed_args = self.check_parser(self.cmd, args, [])
+ result = self.cmd.take_action(parsed_args)
+ self.database_client.create.assert_called_with('instance1',
+ [{'name': 'db1'}])
+ self.assertIsNone(result)
+
+ @mock.patch.object(utils, 'find_resource')
+ def test_database_create_with_optional_args(self, mock_find):
+ args = ['instance2', 'db2',
+ '--character_set', 'utf8',
+ '--collate', 'utf8_general_ci']
+ mock_find.return_value = args[0]
+ parsed_args = self.check_parser(self.cmd, args, [])
+ database_dict = {'name': 'db2',
+ 'collate': 'utf8_general_ci',
+ 'character_set': 'utf8'}
+ result = self.cmd.take_action(parsed_args)
+ self.database_client.create.assert_called_with('instance2',
+ [database_dict])
+ self.assertIsNone(result)
+
+
class TestDatabaseList(TestDatabases):
columns = databases.ListDatabases.columns
values = ('fakedb1',)