diff options
| author | Zuul <zuul@review.openstack.org> | 2017-12-20 19:52:23 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-12-20 19:52:23 +0000 |
| commit | addd13a3108e6b860907de35e9212803603981fb (patch) | |
| tree | ed60b0a0b1dc5440592ee9bd0798c68d80400da0 /troveclient | |
| parent | 1bf32ef079ef4664815236980363c491c637e9db (diff) | |
| parent | f88012ebecd80fdd1d26e4c4d2c645fe56f92e1c (diff) | |
| download | python-troveclient-addd13a3108e6b860907de35e9212803603981fb.tar.gz | |
Merge "Add instance-delete to OSC"
Diffstat (limited to 'troveclient')
| -rw-r--r-- | troveclient/osc/v1/database_instances.py | 26 | ||||
| -rw-r--r-- | troveclient/tests/osc/v1/test_database_instances.py | 31 |
2 files changed, 57 insertions, 0 deletions
diff --git a/troveclient/osc/v1/database_instances.py b/troveclient/osc/v1/database_instances.py index 933a460..d03c13e 100644 --- a/troveclient/osc/v1/database_instances.py +++ b/troveclient/osc/v1/database_instances.py @@ -13,6 +13,7 @@ """Database v1 Instances action implementations""" from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils as osc_utils import six @@ -133,3 +134,28 @@ class ShowDatabaseInstance(command.ShowOne): instance = osc_utils.find_resource(db_instances, parsed_args.instance) instance = set_attributes_for_print_detail(instance) return zip(*sorted(six.iteritems(instance))) + + +class DeleteDatabaseInstance(command.Command): + + _description = _("Deletes an instance.") + + def get_parser(self, prog_name): + parser = super(DeleteDatabaseInstance, self).get_parser(prog_name) + parser.add_argument( + 'instance', + metavar='<instance>', + help=_('ID or name of the Instance'), + ) + return parser + + def take_action(self, parsed_args): + db_instances = self.app.client_manager.database.instances + try: + instance = osc_utils.find_resource(db_instances, + parsed_args.instance) + db_instances.delete(instance) + except Exception as e: + msg = (_("Failed to delete instance %(instance)s: %(e)s") + % {'instance': parsed_args.instance, 'e': e}) + raise exceptions.CommandError(msg) diff --git a/troveclient/tests/osc/v1/test_database_instances.py b/troveclient/tests/osc/v1/test_database_instances.py index a9de10a..2020212 100644 --- a/troveclient/tests/osc/v1/test_database_instances.py +++ b/troveclient/tests/osc/v1/test_database_instances.py @@ -10,6 +10,11 @@ # License for the specific language governing permissions and limitations # under the License. +import mock + +from osc_lib import exceptions +from osc_lib import utils + from troveclient import common from troveclient.osc.v1 import database_instances from troveclient.tests.osc.v1 import fakes @@ -78,3 +83,29 @@ class TestInstanceShow(TestInstances): columns, data = self.cmd.take_action(parsed_args) self.assertEqual(self.columns, columns) self.assertEqual(self.values, data) + + +class TestDatabaseInstanceDelete(TestInstances): + + def setUp(self): + super(TestDatabaseInstanceDelete, self).setUp() + self.cmd = database_instances.DeleteDatabaseInstance(self.app, None) + + @mock.patch.object(utils, 'find_resource') + def test_instance_delete(self, mock_find): + args = ['instance1'] + mock_find.return_value = args[0] + parsed_args = self.check_parser(self.cmd, args, []) + result = self.cmd.take_action(parsed_args) + self.instance_client.delete.assert_called_with('instance1') + self.assertIsNone(result) + + @mock.patch.object(utils, 'find_resource') + def test_instance_delete_with_exception(self, mock_find): + args = ['fakeinstance'] + parsed_args = self.check_parser(self.cmd, args, []) + + mock_find.side_effect = exceptions.CommandError + self.assertRaises(exceptions.CommandError, + self.cmd.take_action, + parsed_args) |
