summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2021-07-09 20:31:43 +1200
committerLingxian Kong <anlin.kong@gmail.com>2021-07-09 20:47:13 +1200
commit64f3f62368e3f278ce235d1cd22bc3b280d1f860 (patch)
tree3a4109130529ec5c84c2bb09fa8e9850ebad418d
parent5ce2e998b9cee78121f14cbdf5e06382928e79c9 (diff)
downloadpython-troveclient-64f3f62368e3f278ce235d1cd22bc3b280d1f860.tar.gz
Fix detach configuration from instancexena-em7.1.1
Change-Id: Id0853dfb207bbd219755d46a9c0d6b4e897bfbeb
-rw-r--r--troveclient/osc/v1/database_configurations.py25
-rw-r--r--troveclient/osc/v1/database_instances.py4
-rw-r--r--troveclient/tests/osc/v1/test_database_configurations.py8
-rw-r--r--troveclient/v1/instances.py1
4 files changed, 24 insertions, 14 deletions
diff --git a/troveclient/osc/v1/database_configurations.py b/troveclient/osc/v1/database_configurations.py
index 69a8bf0..72becd9 100644
--- a/troveclient/osc/v1/database_configurations.py
+++ b/troveclient/osc/v1/database_configurations.py
@@ -265,7 +265,6 @@ class CreateDatabaseConfiguration(command.ShowOne):
class AttachDatabaseConfiguration(command.Command):
-
_description = _("Attaches a configuration group to an instance.")
def get_parser(self, prog_name):
@@ -289,11 +288,16 @@ class AttachDatabaseConfiguration(command.Command):
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)
+
+ instance_id = parsed_args.instance
+ config_id = parsed_args.configuration
+
+ if not uuidutils.is_uuid_like(instance_id):
+ instance_id = osc_utils.find_resource(db_instances, instance_id)
+ if not uuidutils.is_uuid_like(config_id):
+ config_id = osc_utils.find_resource(db_configurations, config_id)
+
+ db_instances.update(instance_id, configuration=config_id)
class DetachDatabaseConfiguration(command.Command):
@@ -312,9 +316,12 @@ class DetachDatabaseConfiguration(command.Command):
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)
+ instance_id = parsed_args.instance
+
+ if not uuidutils.is_uuid_like(instance_id):
+ instance_id = osc_utils.find_resource(db_instances, instance_id)
+
+ db_instances.update(instance_id, remove_configuration=True)
class ListDatabaseConfigurationInstances(command.Lister):
diff --git a/troveclient/osc/v1/database_instances.py b/troveclient/osc/v1/database_instances.py
index 5e54898..b93323c 100644
--- a/troveclient/osc/v1/database_instances.py
+++ b/troveclient/osc/v1/database_instances.py
@@ -719,8 +719,8 @@ class UpdateDatabaseInstance(command.Command):
help=_('ID of the configuration reference to attach.'),
)
parser.add_argument(
- '--detach_replica_source',
'--detach-replica-source',
+ '--detach_replica_source',
dest='detach_replica_source',
action="store_true",
default=False,
@@ -729,8 +729,8 @@ class UpdateDatabaseInstance(command.Command):
'in favor of just --detach_replica_source'),
)
parser.add_argument(
- '--remove_configuration',
'--remove-configuration',
+ '--remove_configuration',
dest='remove_configuration',
action="store_true",
default=False,
diff --git a/troveclient/tests/osc/v1/test_database_configurations.py b/troveclient/tests/osc/v1/test_database_configurations.py
index f97302c..f1408c2 100644
--- a/troveclient/tests/osc/v1/test_database_configurations.py
+++ b/troveclient/tests/osc/v1/test_database_configurations.py
@@ -278,7 +278,8 @@ class TestConfigurationAttach(TestConfigurations):
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.instance_client.update.assert_called_with(
+ 'instance1', configuration='config1')
self.assertIsNone(result)
@@ -286,7 +287,7 @@ class TestConfigurationDetach(TestConfigurations):
def setUp(self):
super(TestConfigurationDetach, self).setUp()
- self.cmd = database_configurations.\
+ self.cmd = database_configurations. \
DetachDatabaseConfiguration(self.app, None)
@mock.patch.object(utils, 'find_resource')
@@ -295,7 +296,8 @@ class TestConfigurationDetach(TestConfigurations):
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.instance_client.update.assert_called_with(
+ 'instance2', remove_configuration=True)
self.assertIsNone(result)
diff --git a/troveclient/v1/instances.py b/troveclient/v1/instances.py
index 359deb1..75638d7 100644
--- a/troveclient/v1/instances.py
+++ b/troveclient/v1/instances.py
@@ -141,6 +141,7 @@ class Instances(base.ManagerWithFind):
return self._create("/instances", body, "instance")
def modify(self, instance, configuration=None):
+ """This method is deprecated, use update instead."""
body = {
"instance": {
}