Repository: aurora Updated Branches: refs/heads/master f9b60c6a2 -> f3da5aea2
Handle UpdateConfigError when starting a job update. Bugs closed: AURORA-1299 Reviewed at https://reviews.apache.org/r/33740/ Project: http://git-wip-us.apache.org/repos/asf/aurora/repo Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/f3da5aea Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/f3da5aea Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/f3da5aea Branch: refs/heads/master Commit: f3da5aea2230787c1809749954ff1c27ae08785f Parents: f9b60c6 Author: Bill Farner <wfar...@apache.org> Authored: Fri May 1 09:22:32 2015 -0700 Committer: Bill Farner <wfar...@apache.org> Committed: Fri May 1 09:22:32 2015 -0700 ---------------------------------------------------------------------- src/main/python/apache/aurora/client/cli/update.py | 8 +++++++- .../python/apache/aurora/client/cli/test_supdate.py | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/aurora/blob/f3da5aea/src/main/python/apache/aurora/client/cli/update.py ---------------------------------------------------------------------- diff --git a/src/main/python/apache/aurora/client/cli/update.py b/src/main/python/apache/aurora/client/cli/update.py index 9f190a6..8296db5 100644 --- a/src/main/python/apache/aurora/client/cli/update.py +++ b/src/main/python/apache/aurora/client/cli/update.py @@ -19,10 +19,12 @@ import json import textwrap from collections import namedtuple +from apache.aurora.client.api import AuroraClientAPI from apache.aurora.client.base import combine_messages, get_update_page from apache.aurora.client.cli import ( EXIT_API_ERROR, EXIT_COMMAND_FAILURE, + EXIT_INVALID_CONFIGURATION, EXIT_INVALID_PARAMETER, EXIT_OK, Noun, @@ -155,7 +157,11 @@ class StartUpdate(Verb): "Cron jobs may only be updated with \"aurora cron schedule\" command") api = context.get_api(config.cluster()) - resp = api.start_job_update(config, context.options.message, instances) + try: + resp = api.start_job_update(config, context.options.message, instances) + except AuroraClientAPI.UpdateConfigError as e: + raise context.CommandError(EXIT_INVALID_CONFIGURATION, e.message) + context.log_response_and_raise(resp, err_code=EXIT_API_ERROR, err_msg="Failed to start update due to error:") http://git-wip-us.apache.org/repos/asf/aurora/blob/f3da5aea/src/test/python/apache/aurora/client/cli/test_supdate.py ---------------------------------------------------------------------- diff --git a/src/test/python/apache/aurora/client/cli/test_supdate.py b/src/test/python/apache/aurora/client/cli/test_supdate.py index ccbcae6..6fb1f71 100644 --- a/src/test/python/apache/aurora/client/cli/test_supdate.py +++ b/src/test/python/apache/aurora/client/cli/test_supdate.py @@ -90,6 +90,7 @@ class TestStartUpdate(AuroraClientCommandTest): @classmethod def create_mock_config(cls, is_cron=False): + # TODO(wfarner): Consider using a real AuroraConfig object for this. mock_config = create_autospec(spec=AuroraConfig, spec_set=True, instance=True) raw_config = Job(cron_schedule='something' if is_cron else Empty) mock_config.raw = Mock(return_value=raw_config) @@ -167,6 +168,21 @@ class TestStartUpdate(AuroraClientCommandTest): assert self._fake_context.get_out() == ["Noop update."] assert self._fake_context.get_err() == [] + def test_update_pulse_interval_too_small(self): + mock_config = self.create_mock_config() + self._fake_context.get_job_config = Mock(return_value=mock_config) + + error = Context.CommandError(100, 'something failed') + self._mock_api.start_job_update.side_effect = error + + with pytest.raises(Context.CommandError) as e: + self._command.execute(self._fake_context) + + assert e.value == error + assert self._mock_api.start_job_update.mock_calls == [ + call(ANY, None, None) + ] + class TestListUpdates(AuroraClientCommandTest):