Add configuration-attach/detach to OSC
This change adds database support to the python-openstackclient project for the configuration-attach/detach command. The trove command configuration-attach is now: openstack database configuration attach The trove command configuration-detach is now: openstack database configuration detach Partially-Implements: blueprint trove-support-in-python-openstackclient Change-Id: I03c71f6828ff7af8f9caf5c6b383e5e875f348c3
This commit is contained in:
parent
5a6123f94e
commit
ba1535fdf0
@ -0,0 +1,9 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The command ``trove configuration-attach`` is now available
|
||||
to use in the python-openstackclient CLI as ``openstack database
|
||||
configuration attach``
|
||||
The command ``trove configuration-detach`` is now available
|
||||
to use in the python-openstackclient CLI as ``openstack database
|
||||
configuration detach``
|
@ -39,8 +39,10 @@ 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_attach = troveclient.osc.v1.database_configurations:AttachDatabaseConfiguration
|
||||
database_configuration_create = troveclient.osc.v1.database_configurations:CreateDatabaseConfiguration
|
||||
database_configuration_delete = troveclient.osc.v1.database_configurations:DeleteDatabaseConfiguration
|
||||
database_configuration_detach = troveclient.osc.v1.database_configurations:DetachDatabaseConfiguration
|
||||
database_configuration_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurations
|
||||
database_configuration_parameter_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationParameters
|
||||
database_configuration_parameter_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfigurationParameter
|
||||
|
@ -253,3 +253,56 @@ class CreateDatabaseConfiguration(command.ShowOne):
|
||||
datastore_version=parsed_args.datastore_version)
|
||||
config_grp = set_attributes_for_print_detail(config_grp)
|
||||
return zip(*sorted(six.iteritems(config_grp)))
|
||||
|
||||
|
||||
class AttachDatabaseConfiguration(command.Command):
|
||||
|
||||
_description = _("Attaches a configuration group to an instance.")
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(AttachDatabaseConfiguration, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'instance',
|
||||
metavar='<instance>',
|
||||
type=str,
|
||||
help=_('ID or name of the instance'),
|
||||
)
|
||||
parser.add_argument(
|
||||
'configuration',
|
||||
metavar='<configuration>',
|
||||
type=str,
|
||||
help=_('ID or name of the configuration group to attach to the '
|
||||
'instance.'),
|
||||
)
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
manager = self.app.client_manager.database
|
||||
db_instances = manager.instances
|
||||
db_configurations = manager.configurations
|
||||
instance = osc_utils.find_resource(db_instances,
|
||||
parsed_args.instance)
|
||||
configuration = osc_utils.find_resource(
|
||||
db_configurations, parsed_args.configuration)
|
||||
db_instances.modify(instance, configuration)
|
||||
|
||||
|
||||
class DetachDatabaseConfiguration(command.Command):
|
||||
|
||||
_description = _("Detaches a configuration group from an instance.")
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(DetachDatabaseConfiguration, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'instance',
|
||||
metavar='<instance>',
|
||||
type=str,
|
||||
help=_('ID or name of the instance.'),
|
||||
)
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
db_instances = self.app.client_manager.database.instances
|
||||
instance = osc_utils.find_resource(db_instances,
|
||||
parsed_args.instance)
|
||||
db_instances.modify(instance)
|
||||
|
@ -29,6 +29,7 @@ class TestConfigurations(fakes.TestDatabasev1):
|
||||
self.mock_client = self.app.client_manager.database
|
||||
self.configuration_client = (self.app.client_manager.database.
|
||||
configurations)
|
||||
self.instance_client = self.app.client_manager.database.instances
|
||||
self.configuration_params_client = (self.app.client_manager.
|
||||
database.configuration_parameters)
|
||||
|
||||
@ -258,3 +259,37 @@ class TestConfigurationCreate(TestConfigurations):
|
||||
description='cgroup 2',
|
||||
datastore='mysql',
|
||||
datastore_version='5.6')
|
||||
|
||||
|
||||
class TestConfigurationAttach(TestConfigurations):
|
||||
|
||||
def setUp(self):
|
||||
super(TestConfigurationAttach, self).setUp()
|
||||
self.cmd = database_configurations.\
|
||||
AttachDatabaseConfiguration(self.app, None)
|
||||
|
||||
@mock.patch.object(utils, 'find_resource')
|
||||
def test_configuration_attach(self, mock_find):
|
||||
args = ['instance1', 'config1']
|
||||
mock_find.side_effect = ['instance1', 'config1']
|
||||
parsed_args = self.check_parser(self.cmd, args, [])
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
self.instance_client.modify.assert_called_with('instance1', 'config1')
|
||||
self.assertIsNone(result)
|
||||
|
||||
|
||||
class TestConfigurationDetach(TestConfigurations):
|
||||
|
||||
def setUp(self):
|
||||
super(TestConfigurationDetach, self).setUp()
|
||||
self.cmd = database_configurations.\
|
||||
DetachDatabaseConfiguration(self.app, None)
|
||||
|
||||
@mock.patch.object(utils, 'find_resource')
|
||||
def test_configuration_detach(self, mock_find):
|
||||
args = ['instance2']
|
||||
mock_find.return_value = args[0]
|
||||
parsed_args = self.check_parser(self.cmd, args, [])
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
self.instance_client.modify.assert_called_with('instance2')
|
||||
self.assertIsNone(result)
|
||||
|
Loading…
x
Reference in New Issue
Block a user