Add database-create to OSC
This change adds database support to the python-openstackclient project for the database-create command. The trove command database-create is now: openstack database db create Change-Id: I6ef3a6f61be4d4ec94d8b3d9edd09398ac8d6939 Partially-Implements: blueprint trove-support-in-python-openstackclient
This commit is contained in:
parent
f92e624653
commit
dd0c859148
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The command ``trove database-create`` is now available to use in
|
||||||
|
the python-openstackclient CLI as ``openstack database db create``
|
@ -40,6 +40,7 @@ openstack.database.v1 =
|
|||||||
database_configuration_parameter_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationParameters
|
database_configuration_parameter_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationParameters
|
||||||
database_configuration_parameter_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfigurationParameter
|
database_configuration_parameter_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfigurationParameter
|
||||||
database_configuration_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfiguration
|
database_configuration_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfiguration
|
||||||
|
database_db_create = troveclient.osc.v1.databases:CreateDatabase
|
||||||
database_db_delete = troveclient.osc.v1.databases:DeleteDatabase
|
database_db_delete = troveclient.osc.v1.databases:DeleteDatabase
|
||||||
database_db_list = troveclient.osc.v1.databases:ListDatabases
|
database_db_list = troveclient.osc.v1.databases:ListDatabases
|
||||||
database_flavor_list = troveclient.osc.v1.database_flavors:ListDatabaseFlavors
|
database_flavor_list = troveclient.osc.v1.database_flavors:ListDatabaseFlavors
|
||||||
|
@ -19,6 +19,46 @@ from osc_lib import utils
|
|||||||
from troveclient.i18n import _
|
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):
|
class ListDatabases(command.Lister):
|
||||||
|
|
||||||
_description = _("Get a list of all Databases from the instance.")
|
_description = _("Get a list of all Databases from the instance.")
|
||||||
|
@ -29,6 +29,38 @@ class TestDatabases(fakes.TestDatabasev1):
|
|||||||
self.database_client = self.app.client_manager.database.databases
|
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):
|
class TestDatabaseList(TestDatabases):
|
||||||
columns = databases.ListDatabases.columns
|
columns = databases.ListDatabases.columns
|
||||||
values = ('fakedb1',)
|
values = ('fakedb1',)
|
||||||
|
Loading…
Reference in New Issue
Block a user