summaryrefslogtreecommitdiff
path: root/controller
diff options
context:
space:
mode:
Diffstat (limited to 'controller')
-rwxr-xr-xcontroller55
1 files changed, 55 insertions, 0 deletions
diff --git a/controller b/controller
index 559ff9d..e8de5fd 100755
--- a/controller
+++ b/controller
@@ -7,15 +7,69 @@ import sys
import bottle
+current_log = ''
+previous_log = ''
+triggered = 0
+
@bottle.route('/')
def root():
+ log('GET /')
return 'This is the root'
@bottle.route('/version')
def version():
+ log('GET /version')
return { 'version': '1.0' }
+@bottle.route('/projects')
+def projects():
+ return {'projects': ['foo']}
+
+@bottle.route('/worker/bar')
+def worker():
+ log('GET /worker/bar')
+ if triggered == 1:
+ return {
+ 'project': 'foo',
+ 'shell': 'ikiwiki --build',
+ }
+ elif triggered == 2:
+ return {
+ 'project': 'foo',
+ 'shell': 'rsync',
+ }
+
+@bottle.route('/projects/foo/logs/current')
+def current():
+ log('GET current log')
+ return current_log
+
+@bottle.route('/projects/foo/logs/previous')
+def previous():
+ log('GET previous log')
+ return previous_log
+
+@bottle.route('/projects/foo/+trigger')
+def current():
+ log('GET +trigger')
+ global triggered
+ triggered = True
+ return
+
+@bottle.post('/worker/bar/snippet')
+def snippet():
+ global current_log, previous_log, triggered
+ log('POST snippet')
+ obj = bottle.request.json
+ log('body: {}'.format(obj))
+ current_log += obj['stdout'] + obj['stderr']
+ if obj['exit-code'] is not None:
+ log('exit-code is {}, not None, rotating logs'.format(obj['exit-code']))
+ previous_log = current_log
+ current_log = ''
+ triggered += 1
+
# Command line args.
@@ -42,4 +96,5 @@ with open(port_file, 'w') as f:
f.write('{}\n'.format(port))
+log('starting daemon on port {}'.format(port))
bottle.run(port=port, quiet=True)