Skip to content

Commit 64f3f62

Browse files
committed
Fix detach configuration from instance
Change-Id: Id0853dfb207bbd219755d46a9c0d6b4e897bfbeb
1 parent 5ce2e99 commit 64f3f62

4 files changed

Lines changed: 24 additions & 14 deletions

File tree

troveclient/osc/v1/database_configurations.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,6 @@ def take_action(self, parsed_args):
265265

266266

267267
class AttachDatabaseConfiguration(command.Command):
268-
269268
_description = _("Attaches a configuration group to an instance.")
270269

271270
def get_parser(self, prog_name):
@@ -289,11 +288,16 @@ def take_action(self, parsed_args):
289288
manager = self.app.client_manager.database
290289
db_instances = manager.instances
291290
db_configurations = manager.configurations
292-
instance = osc_utils.find_resource(db_instances,
293-
parsed_args.instance)
294-
configuration = osc_utils.find_resource(
295-
db_configurations, parsed_args.configuration)
296-
db_instances.modify(instance, configuration)
291+
292+
instance_id = parsed_args.instance
293+
config_id = parsed_args.configuration
294+
295+
if not uuidutils.is_uuid_like(instance_id):
296+
instance_id = osc_utils.find_resource(db_instances, instance_id)
297+
if not uuidutils.is_uuid_like(config_id):
298+
config_id = osc_utils.find_resource(db_configurations, config_id)
299+
300+
db_instances.update(instance_id, configuration=config_id)
297301

298302

299303
class DetachDatabaseConfiguration(command.Command):
@@ -312,9 +316,12 @@ def get_parser(self, prog_name):
312316

313317
def take_action(self, parsed_args):
314318
db_instances = self.app.client_manager.database.instances
315-
instance = osc_utils.find_resource(db_instances,
316-
parsed_args.instance)
317-
db_instances.modify(instance)
319+
instance_id = parsed_args.instance
320+
321+
if not uuidutils.is_uuid_like(instance_id):
322+
instance_id = osc_utils.find_resource(db_instances, instance_id)
323+
324+
db_instances.update(instance_id, remove_configuration=True)
318325

319326

320327
class ListDatabaseConfigurationInstances(command.Lister):

troveclient/osc/v1/database_instances.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -719,8 +719,8 @@ def get_parser(self, prog_name):
719719
help=_('ID of the configuration reference to attach.'),
720720
)
721721
parser.add_argument(
722-
'--detach_replica_source',
723722
'--detach-replica-source',
723+
'--detach_replica_source',
724724
dest='detach_replica_source',
725725
action="store_true",
726726
default=False,
@@ -729,8 +729,8 @@ def get_parser(self, prog_name):
729729
'in favor of just --detach_replica_source'),
730730
)
731731
parser.add_argument(
732-
'--remove_configuration',
733732
'--remove-configuration',
733+
'--remove_configuration',
734734
dest='remove_configuration',
735735
action="store_true",
736736
default=False,

troveclient/tests/osc/v1/test_database_configurations.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,15 +278,16 @@ def test_configuration_attach(self, mock_find):
278278
mock_find.side_effect = ['instance1', 'config1']
279279
parsed_args = self.check_parser(self.cmd, args, [])
280280
result = self.cmd.take_action(parsed_args)
281-
self.instance_client.modify.assert_called_with('instance1', 'config1')
281+
self.instance_client.update.assert_called_with(
282+
'instance1', configuration='config1')
282283
self.assertIsNone(result)
283284

284285

285286
class TestConfigurationDetach(TestConfigurations):
286287

287288
def setUp(self):
288289
super(TestConfigurationDetach, self).setUp()
289-
self.cmd = database_configurations.\
290+
self.cmd = database_configurations. \
290291
DetachDatabaseConfiguration(self.app, None)
291292

292293
@mock.patch.object(utils, 'find_resource')
@@ -295,7 +296,8 @@ def test_configuration_detach(self, mock_find):
295296
mock_find.return_value = args[0]
296297
parsed_args = self.check_parser(self.cmd, args, [])
297298
result = self.cmd.take_action(parsed_args)
298-
self.instance_client.modify.assert_called_with('instance2')
299+
self.instance_client.update.assert_called_with(
300+
'instance2', remove_configuration=True)
299301
self.assertIsNone(result)
300302

301303

troveclient/v1/instances.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ def create(self, name, flavor_id=None, volume=None, databases=None,
141141
return self._create("/instances", body, "instance")
142142

143143
def modify(self, instance, configuration=None):
144+
"""This method is deprecated, use update instead."""
144145
body = {
145146
"instance": {
146147
}

0 commit comments

Comments
 (0)