Skip to content

Commit

Permalink
[copr-mocks-frontend] logging + command-line args (input file with im…
Browse files Browse the repository at this point in the history
…port tasks & output file with distgit responses)
  • Loading branch information
clime committed Mar 3, 2016
1 parent 00948b6 commit 499ae0a
Showing 1 changed file with 58 additions and 4 deletions.
62 changes: 58 additions & 4 deletions mocks/frontend/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,27 @@

import flask
import json
import logging
import sys

app = flask.Flask(__name__)
log = logging.getLogger(__name__)

task_dict = {}
with open('data/import-tasks.json', 'r') as f:
task_queue = json.loads(f.read())
for task in task_queue:
task_dict[task['task_id']] = task
distgit_responses = []


# http://flask.pocoo.org/snippets/67/
def shutdown_server():
func = flask.request.environ.get('werkzeug.server.shutdown')
if func is None:
raise RuntimeError('Not running with the Werkzeug Server')
func()


@app.errorhandler(Exception)
def exception_handler(error):
log.exception(repr(error))


@app.route('/backend/importing/')
Expand All @@ -20,9 +33,50 @@ def dist_git_importing_queue():

@app.route('/backend/import-completed/', methods=['POST', 'PUT'])
def dist_git_upload_completed():
distgit_responses.append(flask.request.json)
task_dict.pop(flask.request.json['task_id'])
if not task_dict:
dump_responses()
shutdown_server()
return flask.jsonify({'updated': True})


def dump_responses():
if len(sys.argv) > 2:
filename = sys.argv[2]
else:
filename = 'data/distgit-responses.json'
with open(filename, 'w') as f:
f.write(json.dumps(distgit_responses))


def setup_logging():
formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(name)s][%(module)s:%(lineno)d] %(message)s')

file_handler = logging.FileHandler('/var/log/copr/copr-mocks-frontend.log')
file_handler.setFormatter(formatter)
stream_handler = logging.StreamHandler(sys.stdout)

werkzeug_log = logging.getLogger('werkzeug')
werkzeug_log.addHandler(file_handler)

log.setLevel(logging.DEBUG)
log.addHandler(file_handler)
log.addHandler(stream_handler)


def load_import_tasks():
if len(sys.argv) > 1:
filename = sys.argv[1]
else:
filename = 'data/import-tasks.json'
with open(filename, 'r') as f:
task_queue = json.loads(f.read())
for task in task_queue:
task_dict[task['task_id']] = task


if __name__ == '__main__':
setup_logging()
load_import_tasks()
app.run()

0 comments on commit 499ae0a

Please sign in to comment.