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:
parent
89deaa3c3c
commit
7e8b0c825e
|
@ -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})
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue