diff --git a/karborclient/tests/unit/v1/test_triggers.py b/karborclient/tests/unit/v1/test_triggers.py index 04a03d8..8f3a6c4 100644 --- a/karborclient/tests/unit/v1/test_triggers.py +++ b/karborclient/tests/unit/v1/test_triggers.py @@ -66,7 +66,7 @@ class TriggersTest(base.TestCaseShell): headers={}) @mock.patch('karborclient.common.http.HTTPClient.json_request') - def test_show_plan(self, mock_request): + def test_show_trigger(self, mock_request): mock_request.return_value = mock_request_return cs.triggers.get('1') mock_request.assert_called_with( @@ -82,3 +82,18 @@ class TriggersTest(base.TestCaseShell): 'GET', '/triggers/1', headers={'X-Configuration-Session': 'fake_session_id'}) + + @mock.patch('karborclient.common.http.HTTPClient.json_request') + def test_update_trigger(self, mock_request): + mock_request.return_value = mock_request_return + trigger_id = '123' + data = {"name": "My Trigger", + "properties": {"pattern": "0 10 * * *", "format": "crontab"}} + body = {"trigger_info": data} + cs.triggers.update(trigger_id, data) + mock_request.assert_called_with( + 'PUT', + '/triggers/123', + data=body, + headers={} + ) diff --git a/karborclient/v1/shell.py b/karborclient/v1/shell.py index 0278b64..2782138 100644 --- a/karborclient/v1/shell.py +++ b/karborclient/v1/shell.py @@ -164,7 +164,7 @@ def do_plan_delete(cs, args): help="Id of plan to update.") @utils.arg("--name", metavar="", help="A name to which the plan will be renamed.") -@utils.arg("--resources", metavar="", +@utils.arg("--resources", metavar="", help="Resources to which the plan will be updated.") @utils.arg("--status", metavar="", help="status to which the plan will be updated.") @@ -732,6 +732,22 @@ def _extract_properties(args): return properties +@utils.arg("trigger_id", metavar="", + help="Id of trigger to update.") +@utils.arg("--name", metavar="", + help="A new name to which the trigger will be renamed.") +@utils.arg("--properties", metavar="", + help="Properties of trigger which will be updated.") +def do_trigger_update(cs, args): + """Update a trigger.""" + trigger_info = {} + trigger_properties = _extract_properties(args) + trigger_info['name'] = args.name + trigger_info['properties'] = trigger_properties + trigger = cs.triggers.update(args.trigger_id, trigger_info) + utils.print_dict(trigger.to_dict()) + + @utils.arg('trigger', metavar='', help='ID of trigger.') diff --git a/karborclient/v1/triggers.py b/karborclient/v1/triggers.py index ad19a53..0f4a706 100644 --- a/karborclient/v1/triggers.py +++ b/karborclient/v1/triggers.py @@ -46,6 +46,14 @@ class TriggerManager(base.ManagerWithFind): trigger_id=trigger_id) return self._get(url, response_key="trigger_info", headers=headers) + def update(self, trigger_id, data): + + body = {"trigger_info": data} + + return self._update('/triggers/{trigger_id}' + .format(trigger_id=trigger_id), + body, "trigger_info") + def list(self, detailed=False, search_opts=None, marker=None, limit=None, sort_key=None, sort_dir=None, sort=None): """Lists all triggers."""