summaryrefslogtreecommitdiff
path: root/ick2/workapi.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-11-18 21:44:44 +0100
committerLars Wirzenius <liw@liw.fi>2017-11-18 21:44:44 +0100
commita1467ca4dc025337a5c28ad15f9e534df697a444 (patch)
tree0b127c4316168fd1d9399b27ca6a519dc17ad954 /ick2/workapi.py
parent11b88250079142fbb0a29fbd0968725e63301264 (diff)
downloadick2-a1467ca4dc025337a5c28ad15f9e534df697a444.tar.gz
Refactor: move get/update projects to it own class
Diffstat (limited to 'ick2/workapi.py')
-rw-r--r--ick2/workapi.py31
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)