diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-11-18 21:39:45 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-11-18 21:39:45 +0100 |
commit | 11b88250079142fbb0a29fbd0968725e63301264 (patch) | |
tree | 6d18b310eeba1b35a344c7e75bb471d5b60ea908 /ick2/workapi.py | |
parent | b7a65fc2ea20ea32dca94205618f94aea3939f33 (diff) | |
download | ick2-11b88250079142fbb0a29fbd0968725e63301264.tar.gz |
Refactor: move worker get/update into their own class
Diffstat (limited to 'ick2/workapi.py')
-rw-r--r-- | ick2/workapi.py | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/ick2/workapi.py b/ick2/workapi.py index 3f0b195..0c3df6e 100644 --- a/ick2/workapi.py +++ b/ick2/workapi.py @@ -20,6 +20,7 @@ class WorkAPI(ick2.APIbase): def __init__(self, state): super().__init__(state) + self._workers = Workers(state) self._type_name = 'work' def get_routes(self, path): # pragma: no cover @@ -37,7 +38,7 @@ class WorkAPI(ick2.APIbase): ] def get_work(self, worker): - worker_state = self._get_worker(worker) + worker_state = self._workers.get_worker(worker) if not worker_state.get('doing'): project, pipeline = self._pick_triggered_pipeline() if project is None: @@ -64,22 +65,10 @@ class WorkAPI(ick2.APIbase): 'worker': worker, 'doing': doing, } - self._update_worker(worker_state) + self._workers.update_worker(worker_state) return worker_state['doing'] - def _get_worker(self, worker): # pragma: no cover - try: - return self._state.get_resource('workers', worker) - except ick2.NotFound: - return { - 'worker': worker, - } - - def _update_worker(self, worker_state): - self._state.update_resource( - 'workers', worker_state['worker'], worker_state) - def _pick_triggered_pipeline(self): projects = self._get_projects() for project in projects: @@ -98,7 +87,7 @@ class WorkAPI(ick2.APIbase): if 'worker' not in update: # pragma: no cover raise ick2.BadUpdate('no worker specified') - worker_state = self._get_worker(update['worker']) + worker_state = self._workers.get_worker(update['worker']) doing = worker_state.get('doing', {}) self._check_work_update(doing, update) @@ -131,7 +120,7 @@ class WorkAPI(ick2.APIbase): 'worker': update['worker'], 'doing': doing, } - self._update_worker(worker_state) + self._workers.update_worker(worker_state) elif exit_code is not None: assert isinstance(exit_code, int) assert exit_code != 0 @@ -143,7 +132,7 @@ class WorkAPI(ick2.APIbase): 'worker': update['worker'], 'doing': {}, } - self._update_worker(worker_state) + self._workers.update_worker(worker_state) def _check_work_update(self, doing, update): # pragma: no cover must_match = ['worker', 'project', 'pipeline', 'build_id'] @@ -217,3 +206,21 @@ class WorkAPI(ick2.APIbase): def delete(self, *args, **kwargs): # pragma: no cover pass + + +class Workers: # pragma: no cover + + def __init__(self, state): + self._state = state + + def get_worker(self, name): + try: + return self._state.get_resource('workers', name) + except ick2.NotFound: + return { + 'worker': name, + } + + def update_worker(self, worker): + self._state.update_resource( + 'workers', worker['worker'], worker) |