OSC plugin for stack snapshot delete

This change implements "openstack stack snapshot delete" command
Based from the existing heat commands:
   heat snapshot-delete

Change-Id: Iaf701d2e58fe05dfa80b26a809dc21aeff8c1784
Blueprint: heat-support-python-openstackclient
This commit is contained in:
Amey Bhide 2015-11-08 22:12:27 -08:00 committed by Mark Vanderwiel
parent 89deaa3c3c
commit 7e8b0c825e
3 changed files with 56 additions and 0 deletions

View File

@ -176,3 +176,34 @@ class CreateSnapshot(show.ShowOne):
'creation_time'
]
return (columns, utils.get_dict_properties(data, columns))
class DeleteSnapshot(command.Command):
"""Delete stack snapshot."""
log = logging.getLogger(__name__ + ".DeleteSnapshot")
def get_parser(self, prog_name):
parser = super(DeleteSnapshot, self).get_parser(prog_name)
parser.add_argument(
'stack',
metavar='<stack>',
help=_('Name or ID of stack')
)
parser.add_argument(
'snapshot',
metavar='<snapshot>',
help=_('ID of stack snapshot')
)
return parser
def take_action(self, parsed_args):
self.log.debug('take_action(%s)' % parsed_args)
heat_client = self.app.client_manager.orchestration
try:
heat_client.stacks.snapshot_delete(parsed_args.stack,
parsed_args.snapshot)
except heat_exc.HTTPNotFound:
raise exc.CommandError(_('Snapshot ID <%(snapshot_id)s> not found '
'for stack <%(stack_id)s>')
% {'snapshot_id': parsed_args.snapshot,
'stack_id': parsed_args.stack})

View File

@ -145,3 +145,27 @@ class TestSnapshotCreate(TestStack):
exc.CommandError,
self.cmd.take_action,
parsed_args)
class TestSnapshotDelete(TestStack):
def setUp(self):
super(TestSnapshotDelete, self).setUp()
self.cmd = snapshot.DeleteSnapshot(self.app, None)
def test_snapshot_delete(self):
arglist = ['my_stack', 'snapshot_id']
parsed_args = self.check_parser(self.cmd, arglist, [])
self.stack_client.snapshot_delete = mock.Mock()
self.cmd.take_action(parsed_args)
self.stack_client.snapshot_delete.assert_called_with(
'my_stack', 'snapshot_id')
def test_snapshot_delete_not_found(self):
arglist = ['my_stack', 'snapshot_id']
parsed_args = self.check_parser(self.cmd, arglist, [])
self.stack_client.snapshot_delete = mock.Mock(
side_effect=heat_exc.HTTPNotFound())
self.assertRaises(
exc.CommandError,
self.cmd.take_action,
parsed_args)

View File

@ -58,6 +58,7 @@ openstack.orchestration.v1 =
stack_resume = heatclient.osc.v1.stack:ResumeStack
stack_show = heatclient.osc.v1.stack:ShowStack
stack_snapshot_create = heatclient.osc.v1.snapshot:CreateSnapshot
stack_snapshot_delete = heatclient.osc.v1.snapshot:DeleteSnapshot
stack_snapshot_list = heatclient.osc.v1.snapshot:ListSnapshot
stack_snapshot_restore = heatclient.osc.v1.snapshot:RestoreSnapshot
stack_snapshot_show = heatclient.osc.v1.snapshot:ShowSnapshot