Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(315)

Side by Side Diff: chrome/common/extensions/docs/server2/instance_servlet.py

Issue 1151283007: Docserver overhaul: Gitiles away from me. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 from branch_utility import BranchUtility 5 from branch_utility import BranchUtility
6 from commit_tracker import CommitTracker 6 from commit_tracker import CommitTracker
7 from compiled_file_system import CompiledFileSystem 7 from compiled_file_system import CompiledFileSystem
8 from environment import IsDevServer, IsReleaseServer 8 from environment import IsDevServer, IsReleaseServer
9 from github_file_system_provider import GithubFileSystemProvider
10 from host_file_system_provider import HostFileSystemProvider 9 from host_file_system_provider import HostFileSystemProvider
11 from third_party.json_schema_compiler.memoize import memoize 10 from third_party.json_schema_compiler.memoize import memoize
12 from render_servlet import RenderServlet 11 from render_servlet import RenderServlet
13 from object_store_creator import ObjectStoreCreator 12 from object_store_creator import ObjectStoreCreator
14 from server_instance import ServerInstance 13 from server_instance import ServerInstance
15 from gcs_file_system_provider import CloudStorageFileSystemProvider 14 from gcs_file_system_provider import CloudStorageFileSystemProvider
16 15
17 16
17 _DEVSERVER_DATASTORE_FILE = 'SERVER_DATA'
Ken Rockot(use gerrit already) 2015/05/26 00:26:24 oops - removing this
18
19
18 class InstanceServletRenderServletDelegate(RenderServlet.Delegate): 20 class InstanceServletRenderServletDelegate(RenderServlet.Delegate):
19 '''AppEngine instances should never need to call out to Gitiles. That should 21 '''AppEngine instances should never need to call out to Gitiles. That should
20 only ever be done by the cronjobs, which then write the result into 22 only ever be done by the cronjobs, which then write the result into
21 DataStore, which is as far as instances look. To enable this, crons can pass 23 DataStore, which is as far as instances look. To enable this, crons can pass
22 a custom (presumably online) ServerInstance into Get(). 24 a custom (presumably online) ServerInstance into Get().
23 25
24 Why? Gitiles is slow and a bit flaky. Refresh jobs failing is annoying but 26 Why? Gitiles is slow and a bit flaky. Refresh jobs failing is annoying but
25 temporary. Instances failing affects users, and is really bad. 27 temporary. Instances failing affects users, and is really bad.
26 28
27 Anyway - to enforce this, we actually don't give instances access to 29 Anyway - to enforce this, we actually don't give instances access to
(...skipping 12 matching lines...) Expand all
40 commit_tracker = CommitTracker(object_store_creator) 42 commit_tracker = CommitTracker(object_store_creator)
41 # In production have offline=True so that we can catch cron errors. In 43 # In production have offline=True so that we can catch cron errors. In
42 # development it's annoying to have to run the cron job, so offline=False. 44 # development it's annoying to have to run the cron job, so offline=False.
43 # Note that offline=True if running on any appengine server due to 45 # Note that offline=True if running on any appengine server due to
44 # http://crbug.com/345361. 46 # http://crbug.com/345361.
45 host_file_system_provider = self._delegate.CreateHostFileSystemProvider( 47 host_file_system_provider = self._delegate.CreateHostFileSystemProvider(
46 object_store_creator, 48 object_store_creator,
47 offline=not (IsDevServer() or IsReleaseServer()), 49 offline=not (IsDevServer() or IsReleaseServer()),
48 pinned_commit=commit_tracker.Get('master').Get(), 50 pinned_commit=commit_tracker.Get('master').Get(),
49 cache_only=True) 51 cache_only=True)
50 github_file_system_provider = self._delegate.CreateGithubFileSystemProvider(
51 object_store_creator)
52 return ServerInstance(object_store_creator, 52 return ServerInstance(object_store_creator,
53 CompiledFileSystem.Factory(object_store_creator), 53 CompiledFileSystem.Factory(object_store_creator),
54 branch_utility, 54 branch_utility,
55 host_file_system_provider, 55 host_file_system_provider,
56 github_file_system_provider,
57 CloudStorageFileSystemProvider(object_store_creator)) 56 CloudStorageFileSystemProvider(object_store_creator))
58 57
59 class InstanceServlet(object): 58 class InstanceServlet(object):
60 '''Servlet for running on normal AppEngine instances. 59 '''Servlet for running on normal AppEngine instances.
61 Create this via GetConstructor() so that cache state can be shared amongst 60 Create this via GetConstructor() so that cache state can be shared amongst
62 them via the memoizing Delegate. 61 them via the memoizing Delegate.
63 ''' 62 '''
64 class Delegate(object): 63 class Delegate(object):
65 '''Allow runtime dependencies to be overriden for testing. 64 '''Allow runtime dependencies to be overriden for testing.
66 ''' 65 '''
67 def CreateBranchUtility(self, object_store_creator): 66 def CreateBranchUtility(self, object_store_creator):
68 return BranchUtility.Create(object_store_creator) 67 return BranchUtility.Create(object_store_creator)
69 68
70 def CreateHostFileSystemProvider(self, object_store_creator, **optargs): 69 def CreateHostFileSystemProvider(self, object_store_creator, **optargs):
71 return HostFileSystemProvider(object_store_creator, **optargs) 70 return HostFileSystemProvider(object_store_creator, **optargs)
72 71
73 def CreateGithubFileSystemProvider(self, object_store_creator): 72 def CreateGithubFileSystemProvider(self, object_store_creator):
74 return GithubFileSystemProvider(object_store_creator) 73 return GithubFileSystemProvider(object_store_creator)
75 74
76 @staticmethod 75 @staticmethod
77 def GetConstructor(delegate_for_test=None): 76 def GetConstructor(delegate_for_test=None):
78 render_servlet_delegate = InstanceServletRenderServletDelegate( 77 render_servlet_delegate = InstanceServletRenderServletDelegate(
79 delegate_for_test or InstanceServlet.Delegate()) 78 delegate_for_test or InstanceServlet.Delegate())
80 return lambda request: RenderServlet(request, render_servlet_delegate) 79 return lambda request: RenderServlet(request, render_servlet_delegate)
81 80
82 # NOTE: if this were a real Servlet it would implement a Get() method, but 81 # NOTE: if this were a real Servlet it would implement a Get() method, but
83 # GetConstructor returns an appropriate lambda function (Request -> Servlet). 82 # GetConstructor returns an appropriate lambda function (Request -> Servlet).
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698