OLD | NEW |
---|---|
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import time | 5 import time |
6 | 6 |
7 from appengine_wrappers import taskqueue | 7 from appengine_wrappers import taskqueue |
8 from commit_tracker import CommitTracker | |
8 from cron_servlet import CronServlet | 9 from cron_servlet import CronServlet |
9 from instance_servlet import InstanceServlet | 10 from instance_servlet import InstanceServlet |
11 from object_store_creator import ObjectStoreCreator | |
10 from patch_servlet import PatchServlet | 12 from patch_servlet import PatchServlet |
11 from refresh_servlet import RefreshServlet | 13 from refresh_servlet import RefreshServlet |
12 from servlet import Servlet, Request, Response | 14 from servlet import Servlet, Request, Response |
13 from test_servlet import TestServlet | 15 from test_servlet import TestServlet |
14 | 16 |
15 | 17 |
16 _DEFAULT_SERVLET = InstanceServlet.GetConstructor() | 18 _DEFAULT_SERVLET = InstanceServlet.GetConstructor() |
17 | 19 |
18 | 20 |
19 _FORCE_CRON_TARGET = 'force_cron' | 21 class _EnqueueServlet(Servlet): |
22 def __init__(self, request): | |
not at google - send to devlin
2014/10/22 18:08:47
Can you do this change in a separate patch?
Ken Rockot(use gerrit already)
2014/10/23 22:36:16
Done.
| |
23 Servlet.__init__(self, request) | |
24 | |
25 def Get(self): | |
26 queue = taskqueue.Queue() | |
27 queue.add(taskqueue.Task(url='/%s' % self._request.path, | |
28 params=self._request.arguments)) | |
29 return Response.Ok('Task enqueued.') | |
30 | |
31 | |
32 class _QueryCommitServlet(Servlet): | |
33 def __init__(self, request): | |
34 Servlet.__init__(self, request) | |
35 | |
36 def Get(self): | |
37 object_store_creator = ObjectStoreCreator(start_empty=False) | |
38 commit_tracker = CommitTracker(object_store_creator) | |
39 return Response.Ok(commit_tracker.Get(self._request.path).Get()) | |
20 | 40 |
21 | 41 |
22 _SERVLETS = { | 42 _SERVLETS = { |
23 'cron': CronServlet, | 43 'cron': CronServlet, |
44 'enqueue': _EnqueueServlet, | |
24 'patch': PatchServlet, | 45 'patch': PatchServlet, |
46 'query_commit': _QueryCommitServlet, | |
25 'refresh': RefreshServlet, | 47 'refresh': RefreshServlet, |
26 'test': TestServlet, | 48 'test': TestServlet, |
27 } | 49 } |
28 | 50 |
29 | 51 |
30 class Handler(Servlet): | 52 class Handler(Servlet): |
31 def Get(self): | 53 def Get(self): |
32 path = self._request.path | 54 path = self._request.path |
33 | 55 |
34 if path.startswith('_'): | 56 if path.startswith('_'): |
35 servlet_path = path[1:] | 57 servlet_path = path[1:] |
36 if not '/' in servlet_path: | 58 if not '/' in servlet_path: |
37 servlet_path += '/' | 59 servlet_path += '/' |
38 servlet_name, servlet_path = servlet_path.split('/', 1) | 60 servlet_name, servlet_path = servlet_path.split('/', 1) |
39 if servlet_name == _FORCE_CRON_TARGET: | |
40 queue = taskqueue.Queue() | |
41 queue.purge() | |
42 time.sleep(2) | |
43 queue.add(taskqueue.Task(url='/_cron')) | |
44 return Response.Ok('Cron job started.') | |
45 if servlet_name == 'enqueue': | |
46 queue = taskqueue.Queue() | |
47 queue.add(taskqueue.Task(url='/%s'%servlet_path)) | |
48 return Response.Ok('Task enqueued.') | |
49 servlet = _SERVLETS.get(servlet_name) | 61 servlet = _SERVLETS.get(servlet_name) |
50 if servlet is None: | 62 if servlet is None: |
51 return Response.NotFound('"%s" servlet not found' % servlet_path) | 63 return Response.NotFound('"%s" servlet not found' % servlet_path) |
52 else: | 64 else: |
53 servlet_path = path | 65 servlet_path = path |
54 servlet = _DEFAULT_SERVLET | 66 servlet = _DEFAULT_SERVLET |
55 | 67 |
56 return servlet(Request(servlet_path, | 68 return servlet(Request(servlet_path, |
57 self._request.host, | 69 self._request.host, |
58 self._request.headers, | 70 self._request.headers, |
59 self._request.arguments)).Get() | 71 self._request.arguments)).Get() |
OLD | NEW |