Chromium Code Reviews| Index: chrome/common/extensions/docs/server2/admin_servlets.py |
| diff --git a/chrome/common/extensions/docs/server2/handler.py b/chrome/common/extensions/docs/server2/admin_servlets.py |
| similarity index 51% |
| copy from chrome/common/extensions/docs/server2/handler.py |
| copy to chrome/common/extensions/docs/server2/admin_servlets.py |
| index a0e044e753aab96ad34bc124736999020b42f372..b569f5d8ae318091c025a45caa7f677ad24ed098 100644 |
| --- a/chrome/common/extensions/docs/server2/handler.py |
| +++ b/chrome/common/extensions/docs/server2/admin_servlets.py |
| @@ -1,24 +1,15 @@ |
| -# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +# Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| -import time |
| - |
| from appengine_wrappers import taskqueue |
| from commit_tracker import CommitTracker |
| -from cron_servlet import CronServlet |
| -from instance_servlet import InstanceServlet |
| +from future import All |
| from object_store_creator import ObjectStoreCreator |
| -from patch_servlet import PatchServlet |
| -from refresh_servlet import RefreshServlet |
| -from servlet import Servlet, Request, Response |
| -from test_servlet import TestServlet |
| - |
| - |
| -_DEFAULT_SERVLET = InstanceServlet.GetConstructor() |
| +from servlet import Servlet, Response |
| -class _EnqueueServlet(Servlet): |
| +class EnqueueServlet(Servlet): |
| '''This Servlet can be used to manually enqueue tasks on the default |
| taskqueue. Useful for when an admin wants to manually force a specific |
| DataSource refresh, but the refresh operation takes longer than the 60 sec |
| @@ -41,7 +32,7 @@ class _EnqueueServlet(Servlet): |
| return Response.Ok('Task enqueued.') |
| -class _QueryCommitServlet(Servlet): |
| +class QueryCommitServlet(Servlet): |
| '''Provides read access to the commit ID cache within the server. For example: |
| /_query_commit/master |
| @@ -57,36 +48,40 @@ class _QueryCommitServlet(Servlet): |
| def Get(self): |
| object_store_creator = ObjectStoreCreator(start_empty=False) |
| commit_tracker = CommitTracker(object_store_creator) |
| - return Response.Ok(commit_tracker.Get(self._request.path).Get()) |
| + def generate_response(result): |
| + commit_id, history = result |
| + history_log = ''.join('%s: %s<br>' % (entry.datetime, entry.commit_id) |
| + for entry in reversed(history)) |
| + response = 'Current commit: %s<br><br>Most recent commits:<br>%s' % ( |
| + commit_id, history_log) |
| + return response |
| + |
| + commit_name = self._request.path |
| + id_future = commit_tracker.Get(commit_name) |
| + history_future = commit_tracker.GetHistory(commit_name) |
| + return Response.Ok( |
| + All((id_future, history_future)).Then(generate_response).Get()) |
| + |
| + |
| +class ResetCommitServlet(Servlet): |
| + '''Writes a new commit ID to the commit cache. For example: |
| -_SERVLETS = { |
| - 'cron': CronServlet, |
| - 'enqueue': _EnqueueServlet, |
| - 'patch': PatchServlet, |
| - 'query_commit': _QueryCommitServlet, |
| - 'refresh': RefreshServlet, |
| - 'test': TestServlet, |
| -} |
| + /_reset_commit/master/123456 |
| + will reset the 'master' commit ID to '123456'. The provided commit MUST be |
| + in the named commit's recent history or it will be ignored. |
| + ''' |
| + def __init__(self, request): |
| + Servlet.__init__(self, request) |
| -class Handler(Servlet): |
| def Get(self): |
| - path = self._request.path |
| - |
| - if path.startswith('_'): |
| - servlet_path = path[1:] |
| - if not '/' in servlet_path: |
| - servlet_path += '/' |
| - servlet_name, servlet_path = servlet_path.split('/', 1) |
| - servlet = _SERVLETS.get(servlet_name) |
| - if servlet is None: |
| - return Response.NotFound('"%s" servlet not found' % servlet_path) |
| - else: |
| - servlet_path = path |
| - servlet = _DEFAULT_SERVLET |
| - |
| - return servlet(Request(servlet_path, |
| - self._request.host, |
| - self._request.headers, |
| - self._request.arguments)).Get() |
| + object_store_creator = ObjectStoreCreator(start_empty=False) |
| + commit_tracker = CommitTracker(object_store_creator) |
| + commit_name, commit_id = self._request.path.split('/') |
|
not at google - send to devlin
2014/11/19 19:32:41
You might want to use .split('/', 1) so that this
Ken Rockot(use gerrit already)
2015/02/02 23:57:44
Done.
|
| + history = commit_tracker.GetHistory(commit_name).Get() |
| + if not any(entry.commit_id == commit_id for entry in history): |
| + return Response.NotFound('Commit %s not found.' % commit_id) |
|
not at google - send to devlin
2014/11/19 19:32:41
Nit, but I don't think 404 is actually the right e
Ken Rockot(use gerrit already)
2015/02/02 23:57:44
Done. 400 seems like the only reasonable option.
|
| + commit_tracker.Set(commit_name, commit_id).Get() |
| + return Response.Ok('Commit "%s" updated to %s' % (commit_name, commit_id)) |
| + |