Add backup-delete to OSC

This change adds database support to the python-openstackclient
project for the backup-delete command.

The trove command backup-delete is now:
    openstack database backup delete

Change-Id: I869d8649cc83d8c889995a8133e6b91407d7f862
Partially-Implements: trove-support-in-python-openstackclient
This commit is contained in:
zhanggang 2017-12-08 00:34:38 -05:00
parent 854d3e2a31
commit bd401268ac
4 changed files with 63 additions and 0 deletions

View File

@ -0,0 +1,5 @@
---
features:
- |
The command ``trove backup-delete`` is now available to use in
the python-openstackclient CLI as ``openstack database backup delete``

View File

@ -30,6 +30,7 @@ openstack.cli.extension =
database = troveclient.osc.plugin
openstack.database.v1 =
database_backup_delete = troveclient.osc.v1.database_backups:DeleteDatabaseBackup
database_backup_list = troveclient.osc.v1.database_backups:ListDatabaseBackups
database_backup_show = troveclient.osc.v1.database_backups:ShowDatabaseBackup
database_cluster_list = troveclient.osc.v1.database_clusters:ListDatabaseClusters

View File

@ -13,6 +13,7 @@
"""Database v1 Backups action implementations"""
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils as osc_utils
import six
@ -94,3 +95,28 @@ class ShowDatabaseBackup(command.ShowOne):
backup = osc_utils.find_resource(database_backups, parsed_args.backup)
backup = set_attributes_for_print_detail(backup)
return zip(*sorted(six.iteritems(backup)))
class DeleteDatabaseBackup(command.Command):
_description = _("Deletes a backup.")
def get_parser(self, prog_name):
parser = super(DeleteDatabaseBackup, self).get_parser(prog_name)
parser.add_argument(
'backup',
metavar='<backup>',
help=_('ID or name of the backup.')
)
return parser
def take_action(self, parsed_args):
database_backups = self.app.client_manager.database.backups
try:
backup = osc_utils.find_resource(database_backups,
parsed_args.backup)
database_backups.delete(backup)
except Exception as e:
msg = (_("Failed to delete backup %(backup)s: %(e)s")
% {'backup': parsed_args.backup, 'e': e})
raise exceptions.CommandError(msg)

View File

@ -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_backups
from troveclient.tests.osc.v1 import fakes
@ -84,3 +89,29 @@ class TestBackupShow(TestBackups):
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)
class TestDatabaseBackupDelete(TestBackups):
def setUp(self):
super(TestDatabaseBackupDelete, self).setUp()
self.cmd = database_backups.DeleteDatabaseBackup(self.app, None)
@mock.patch.object(utils, 'find_resource')
def test_backup_delete(self, mock_find):
args = ['backup1']
mock_find.return_value = args[0]
parsed_args = self.check_parser(self.cmd, args, [])
result = self.cmd.take_action(parsed_args)
self.backup_client.delete.assert_called_with('backup1')
self.assertIsNone(result)
@mock.patch.object(utils, 'find_resource')
def test_backup_delete_with_exception(self, mock_find):
args = ['fakebackup']
parsed_args = self.check_parser(self.cmd, args, [])
mock_find.side_effect = exceptions.CommandError
self.assertRaises(exceptions.CommandError,
self.cmd.take_action,
parsed_args)