diff options
| author | Zuul <zuul@review.openstack.org> | 2017-12-25 17:27:31 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-12-25 17:27:31 +0000 |
| commit | b7088004d4d06be1f6ffe50a8d467055649ce748 (patch) | |
| tree | a54fba62db815568265a029a702d52aa020ab453 /troveclient | |
| parent | 6d8a3aa8c8ed9a77146fa94ca601129745b919b3 (diff) | |
| parent | dd0c859148066d67d0c039e77a8613dd713e12b1 (diff) | |
| download | python-troveclient-b7088004d4d06be1f6ffe50a8d467055649ce748.tar.gz | |
Merge "Add database-create to OSC"
Diffstat (limited to 'troveclient')
| -rw-r--r-- | troveclient/osc/v1/databases.py | 40 | ||||
| -rw-r--r-- | troveclient/tests/osc/v1/test_databases.py | 32 |
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',) |
