Add CLI for Action Plan Cancel
This patch CLI for for action plan cancel watcher action plan cancel <action-plan-uuid> Change-Id: I9c8d53107b1926d6ce4532d7c696dc36c84c6cf8 Partially-Implements: blueprint cancel-action-plan
This commit is contained in:
@@ -54,6 +54,7 @@ openstack.infra_optim.v1 =
|
|||||||
optimize_actionplan_create = watcherclient.v1.action_plan_shell:CreateActionPlan
|
optimize_actionplan_create = watcherclient.v1.action_plan_shell:CreateActionPlan
|
||||||
optimize_actionplan_update = watcherclient.v1.action_plan_shell:UpdateActionPlan
|
optimize_actionplan_update = watcherclient.v1.action_plan_shell:UpdateActionPlan
|
||||||
optimize_actionplan_start = watcherclient.v1.action_plan_shell:StartActionPlan
|
optimize_actionplan_start = watcherclient.v1.action_plan_shell:StartActionPlan
|
||||||
|
optimize_actionplan_cancel = watcherclient.v1.action_plan_shell:CancelActionPlan
|
||||||
|
|
||||||
optimize_action_show = watcherclient.v1.action_shell:ShowAction
|
optimize_action_show = watcherclient.v1.action_shell:ShowAction
|
||||||
optimize_action_list = watcherclient.v1.action_shell:ListAction
|
optimize_action_list = watcherclient.v1.action_shell:ListAction
|
||||||
@@ -90,6 +91,7 @@ watcherclient.v1 =
|
|||||||
actionplan_update = watcherclient.v1.action_plan_shell:UpdateActionPlan
|
actionplan_update = watcherclient.v1.action_plan_shell:UpdateActionPlan
|
||||||
actionplan_start = watcherclient.v1.action_plan_shell:StartActionPlan
|
actionplan_start = watcherclient.v1.action_plan_shell:StartActionPlan
|
||||||
actionplan_delete = watcherclient.v1.action_plan_shell:DeleteActionPlan
|
actionplan_delete = watcherclient.v1.action_plan_shell:DeleteActionPlan
|
||||||
|
actionplan_cancel = watcherclient.v1.action_plan_shell:CancelActionPlan
|
||||||
|
|
||||||
action_show = watcherclient.v1.action_shell:ShowAction
|
action_show = watcherclient.v1.action_shell:ShowAction
|
||||||
action_list = watcherclient.v1.action_shell:ListAction
|
action_list = watcherclient.v1.action_shell:ListAction
|
||||||
|
@@ -257,3 +257,25 @@ class ActionPlanShellTest(base.CommandTestCase):
|
|||||||
|
|
||||||
self.assertEqual(1, exit_code)
|
self.assertEqual(1, exit_code)
|
||||||
self.assertEqual('', result)
|
self.assertEqual('', result)
|
||||||
|
|
||||||
|
def test_do_action_plan_cancel(self):
|
||||||
|
action_plan = resource.ActionPlan(mock.Mock(), ACTION_PLAN_1)
|
||||||
|
self.m_action_plan_mgr.cancel.return_value = action_plan
|
||||||
|
|
||||||
|
exit_code, result = self.run_cmd(
|
||||||
|
'actionplan cancel 5869da81-4876-4687-a1ed-12cd64cf53d9')
|
||||||
|
|
||||||
|
self.assertEqual(0, exit_code)
|
||||||
|
self.assertEqual(
|
||||||
|
self.resource_as_dict(action_plan, self.FIELDS, self.FIELD_LABELS),
|
||||||
|
result)
|
||||||
|
self.m_action_plan_mgr.cancel.assert_called_once_with(
|
||||||
|
'5869da81-4876-4687-a1ed-12cd64cf53d9')
|
||||||
|
|
||||||
|
def test_do_action_plan_cancel_not_uuid(self):
|
||||||
|
exit_code, result = self.run_cmd(
|
||||||
|
'actionplan cancel not_uuid',
|
||||||
|
formatting=None)
|
||||||
|
|
||||||
|
self.assertEqual(1, exit_code)
|
||||||
|
self.assertEqual('', result)
|
||||||
|
@@ -89,3 +89,12 @@ class ActionPlanManager(base.Manager):
|
|||||||
def start(self, action_plan_id):
|
def start(self, action_plan_id):
|
||||||
patch = [{'op': 'replace', 'value': 'PENDING', 'path': '/state'}]
|
patch = [{'op': 'replace', 'value': 'PENDING', 'path': '/state'}]
|
||||||
return self._update(self._path(action_plan_id), patch)
|
return self._update(self._path(action_plan_id), patch)
|
||||||
|
|
||||||
|
def cancel(self, action_plan_id):
|
||||||
|
action_plan = self.get(action_plan_id)
|
||||||
|
if action_plan.state == "ONGOING":
|
||||||
|
patch = [{'op': 'replace', 'value': 'CANCELLING',
|
||||||
|
'path': '/state'}]
|
||||||
|
else:
|
||||||
|
patch = [{'op': 'replace', 'value': 'CANCELLED', 'path': '/state'}]
|
||||||
|
return self._update(self._path(action_plan_id), patch)
|
||||||
|
@@ -301,3 +301,29 @@ class DeleteActionPlan(command.Command):
|
|||||||
raise exceptions.ValidationError()
|
raise exceptions.ValidationError()
|
||||||
|
|
||||||
client.action_plan.delete(action_plan)
|
client.action_plan.delete(action_plan)
|
||||||
|
|
||||||
|
|
||||||
|
class CancelActionPlan(command.ShowOne):
|
||||||
|
"""Cancel action plan command."""
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super(CancelActionPlan, self).get_parser(prog_name)
|
||||||
|
parser.add_argument(
|
||||||
|
'action_plan',
|
||||||
|
metavar='<action-plan>',
|
||||||
|
help=_("UUID of the action_plan."))
|
||||||
|
|
||||||
|
return parser
|
||||||
|
|
||||||
|
def take_action(self, parsed_args):
|
||||||
|
client = getattr(self.app.client_manager, "infra-optim")
|
||||||
|
|
||||||
|
if not uuidutils.is_uuid_like(parsed_args.action_plan):
|
||||||
|
raise exceptions.ValidationError()
|
||||||
|
|
||||||
|
action_plan = client.action_plan.cancel(parsed_args.action_plan)
|
||||||
|
|
||||||
|
columns = res_fields.ACTION_PLAN_FIELDS
|
||||||
|
column_headers = res_fields.ACTION_PLAN_FIELD_LABELS
|
||||||
|
|
||||||
|
return column_headers, utils.get_item_properties(action_plan, columns)
|
||||||
|
Reference in New Issue
Block a user