blob: 7ec97e79239bdbebd7a0760ed078165a39c637cc [file] [log] [blame]
Xixuan Wu27a61f82017-09-14 11:42:37 -07001# Copyright 2017 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Module for cron jobs kicked off by suite scheduler."""
6# pylint: disable=g-bad-import-order
7
8import jinja2
9import os
10import webapp2
11
12import constants
Xixuan Wu8c173c32017-11-06 11:23:06 -080013import rest_client
14import stackdriver_lib
Xixuan Wu27a61f82017-09-14 11:42:37 -070015
16
17# jinja environment for embedding website.
18_JINJA_ENVIRONMENT = jinja2.Environment(
19 loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
20 extensions=['jinja2.ext.autoescape'],
21 autoescape=True)
22
23
24class MainDashboard(webapp2.RequestHandler):
25 """Main page for suite scheduler."""
26
27 def get(self):
28 template_values = {'app_id': constants.application_id()}
29 template = _JINJA_ENVIRONMENT.get_template('www/index.html')
30 self.response.write(template.render(template_values))
31
32
Xixuan Wu69a5e782017-11-06 14:32:05 -080033class Logger(webapp2.RequestHandler):
34 """Log page for suite scheduler's jobs."""
Xixuan Wu8c173c32017-11-06 11:23:06 -080035
36 def get(self):
37 self.response.headers['Content-Type'] = 'text/plain'
38 start_time = self.request.get('start_time')
39 end_time = self.request.get('end_time')
40 app_id = self.request.get('app_id')
41 resource = self.request.get('resource')
42 if not app_id:
43 app_id = constants.application_id(parse=False)
44
45 # In local development server
46 if app_id is None:
47 self.response.write('Local development server is probably running, '
48 'please specify app_id.')
49
50 if not (start_time and end_time and resource):
51 self.response.write('Invalid input parameters \nstart_time: %s\n'
52 'end_time: %s\nresource: %s\n' % (
53 start_time, end_time, resource))
54
55 stackdriver_logging_client = rest_client.StackdriverRestClient(
56 rest_client.BaseRestClient(
57 constants.RestClient.STACKDRIVER_CLIENT.scopes,
58 constants.RestClient.STACKDRIVER_CLIENT.service_name,
59 constants.RestClient.STACKDRIVER_CLIENT.service_version))
60 request = stackdriver_lib.form_logging_client_request(
61 app_id,
62 start_time,
63 end_time,
64 resource)
65 logs = stackdriver_logging_client.read_logs(request)
66 self.response.write(stackdriver_lib.parse_logging_client_response(logs))
67
68
Xixuan Wu27a61f82017-09-14 11:42:37 -070069app = webapp2.WSGIApplication([
70 ('/', MainDashboard),
Xixuan Wu69a5e782017-11-06 14:32:05 -080071 ('/logger', Logger),
Xixuan Wu27a61f82017-09-14 11:42:37 -070072], debug=True)