blob: 7ec97e79239bdbebd7a0760ed078165a39c637cc [file] [log] [blame]
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Module for cron jobs kicked off by suite scheduler."""
# pylint: disable=g-bad-import-order
import jinja2
import os
import webapp2
import constants
import rest_client
import stackdriver_lib
# jinja environment for embedding website.
_JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
extensions=['jinja2.ext.autoescape'],
autoescape=True)
class MainDashboard(webapp2.RequestHandler):
"""Main page for suite scheduler."""
def get(self):
template_values = {'app_id': constants.application_id()}
template = _JINJA_ENVIRONMENT.get_template('www/index.html')
self.response.write(template.render(template_values))
class Logger(webapp2.RequestHandler):
"""Log page for suite scheduler's jobs."""
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
start_time = self.request.get('start_time')
end_time = self.request.get('end_time')
app_id = self.request.get('app_id')
resource = self.request.get('resource')
if not app_id:
app_id = constants.application_id(parse=False)
# In local development server
if app_id is None:
self.response.write('Local development server is probably running, '
'please specify app_id.')
if not (start_time and end_time and resource):
self.response.write('Invalid input parameters \nstart_time: %s\n'
'end_time: %s\nresource: %s\n' % (
start_time, end_time, resource))
stackdriver_logging_client = rest_client.StackdriverRestClient(
rest_client.BaseRestClient(
constants.RestClient.STACKDRIVER_CLIENT.scopes,
constants.RestClient.STACKDRIVER_CLIENT.service_name,
constants.RestClient.STACKDRIVER_CLIENT.service_version))
request = stackdriver_lib.form_logging_client_request(
app_id,
start_time,
end_time,
resource)
logs = stackdriver_logging_client.read_logs(request)
self.response.write(stackdriver_lib.parse_logging_client_response(logs))
app = webapp2.WSGIApplication([
('/', MainDashboard),
('/logger', Logger),
], debug=True)