summaryrefslogtreecommitdiff
path: root/troveclient
diff options
context:
space:
mode:
Diffstat (limited to 'troveclient')
-rw-r--r--troveclient/osc/v1/database_instances.py23
-rw-r--r--troveclient/tests/osc/v1/test_database_instances.py18
2 files changed, 41 insertions, 0 deletions
diff --git a/troveclient/osc/v1/database_instances.py b/troveclient/osc/v1/database_instances.py
index c94b1df..96ec7c7 100644
--- a/troveclient/osc/v1/database_instances.py
+++ b/troveclient/osc/v1/database_instances.py
@@ -632,3 +632,26 @@ class UpdateDatabaseInstance(command.Command):
parsed_args.name,
parsed_args.detach_replica_source,
parsed_args.remove_configuration)
+
+
+class DetachDatabaseInstanceReplica(command.Command):
+
+ _description = _("Detaches a replica instance "
+ "from its replication source.")
+
+ def get_parser(self, prog_name):
+ parser = super(DetachDatabaseInstanceReplica, 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.edit(instance, detach_replica_source=True)
diff --git a/troveclient/tests/osc/v1/test_database_instances.py b/troveclient/tests/osc/v1/test_database_instances.py
index cf9fdcd..524e30c 100644
--- a/troveclient/tests/osc/v1/test_database_instances.py
+++ b/troveclient/tests/osc/v1/test_database_instances.py
@@ -339,3 +339,21 @@ class TestDatabaseInstanceUpdate(TestInstances):
'new_instance_name',
True, True)
self.assertIsNone(result)
+
+
+class TestInstanceReplicaDetach(TestInstances):
+
+ def setUp(self):
+ super(TestInstanceReplicaDetach, self).setUp()
+ self.cmd = database_instances.DetachDatabaseInstanceReplica(
+ self.app, None)
+
+ @mock.patch.object(utils, 'find_resource')
+ def test_instance_replica_detach(self, mock_find):
+ args = ['instance']
+ mock_find.return_value = args[0]
+ parsed_args = self.check_parser(self.cmd, args, [])
+ result = self.cmd.take_action(parsed_args)
+ self.instance_client.edit.assert_called_with(
+ 'instance', detach_replica_source=True)
+ self.assertIsNone(result)