diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-11-18 21:44:44 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-11-18 21:44:44 +0100 |
commit | a1467ca4dc025337a5c28ad15f9e534df697a444 (patch) | |
tree | 0b127c4316168fd1d9399b27ca6a519dc17ad954 /ick2/workapi.py | |
parent | 11b88250079142fbb0a29fbd0968725e63301264 (diff) | |
download | ick2-a1467ca4dc025337a5c28ad15f9e534df697a444.tar.gz |
Refactor: move get/update projects to it own class
Diffstat (limited to 'ick2/workapi.py')
-rw-r--r-- | ick2/workapi.py | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/ick2/workapi.py b/ick2/workapi.py index 0c3df6e..9d0a582 100644 --- a/ick2/workapi.py +++ b/ick2/workapi.py @@ -21,6 +21,7 @@ class WorkAPI(ick2.APIbase): def __init__(self, state): super().__init__(state) self._workers = Workers(state) + self._projects = Projects(state) self._type_name = 'work' def get_routes(self, path): # pragma: no cover @@ -45,7 +46,7 @@ class WorkAPI(ick2.APIbase): doing = {} else: pipeline['status'] = 'building' - self._update_project(project) + self._projects.update_project(project) build_id = self._start_build(project, pipeline, worker) self._start_log(build_id) @@ -70,19 +71,13 @@ class WorkAPI(ick2.APIbase): return worker_state['doing'] def _pick_triggered_pipeline(self): - projects = self._get_projects() + projects = self._projects.get_projects() for project in projects: for pipeline in project['pipelines']: if pipeline.get('status') == 'triggered': return project, pipeline return None, None - def _get_projects(self): - return self._state.get_resources('projects') - - def _update_project(self, project): - self._state.update_resource('projects', project['project'], project) - def update_work(self, update): if 'worker' not in update: # pragma: no cover raise ick2.BadUpdate('no worker specified') @@ -114,7 +109,7 @@ class WorkAPI(ick2.APIbase): else: doing['step_index'] = index doing['step'] = actions[index] - self._update_project(project) + self._projects.update_project(project) worker_state = { 'worker': update['worker'], @@ -125,7 +120,7 @@ class WorkAPI(ick2.APIbase): assert isinstance(exit_code, int) assert exit_code != 0 pipeline['status'] = 'idle' - self._update_project(project) + self._projects.update_project(project) self._finish_build(update) worker_state = { @@ -145,7 +140,7 @@ class WorkAPI(ick2.APIbase): name, doing.get(name), update[name])) def _get_pipeline(self, project, pipeline): # pragma: no cover - projects = self._get_projects() + projects = self._projects.get_projects() for p in projects: for pl in p['pipelines']: if pl.get('name') == pipeline: @@ -157,7 +152,7 @@ class WorkAPI(ick2.APIbase): build_id = project.get('build_id', 0) build_id += 1 project['build_id'] = build_id - self._update_project(project) + self._projects.update_project(project) build = { 'build_id': build_id, 'log': '/logs/{}'.format(build_id), @@ -224,3 +219,15 @@ class Workers: # pragma: no cover def update_worker(self, worker): self._state.update_resource( 'workers', worker['worker'], worker) + + +class Projects: # pragma: no cover + + def __init__(self, state): + self._state = state + + def get_projects(self): + return self._state.get_resources('projects') + + def update_project(self, project): + self._state.update_resource('projects', project['project'], project) |