| OLD | NEW |
| 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 |
| 18 class InstanceServletRenderServletDelegate(RenderServlet.Delegate): | 17 class InstanceServletRenderServletDelegate(RenderServlet.Delegate): |
| 19 '''AppEngine instances should never need to call out to Gitiles. That should | 18 '''AppEngine instances should never need to call out to Gitiles. That should |
| (...skipping 20 matching lines...) Expand all Loading... |
| 40 commit_tracker = CommitTracker(object_store_creator) | 39 commit_tracker = CommitTracker(object_store_creator) |
| 41 # In production have offline=True so that we can catch cron errors. In | 40 # 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. | 41 # 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 | 42 # Note that offline=True if running on any appengine server due to |
| 44 # http://crbug.com/345361. | 43 # http://crbug.com/345361. |
| 45 host_file_system_provider = self._delegate.CreateHostFileSystemProvider( | 44 host_file_system_provider = self._delegate.CreateHostFileSystemProvider( |
| 46 object_store_creator, | 45 object_store_creator, |
| 47 offline=not (IsDevServer() or IsReleaseServer()), | 46 offline=not (IsDevServer() or IsReleaseServer()), |
| 48 pinned_commit=commit_tracker.Get('master').Get(), | 47 pinned_commit=commit_tracker.Get('master').Get(), |
| 49 cache_only=True) | 48 cache_only=True) |
| 50 github_file_system_provider = self._delegate.CreateGithubFileSystemProvider( | |
| 51 object_store_creator) | |
| 52 return ServerInstance(object_store_creator, | 49 return ServerInstance(object_store_creator, |
| 53 CompiledFileSystem.Factory(object_store_creator), | 50 CompiledFileSystem.Factory(object_store_creator), |
| 54 branch_utility, | 51 branch_utility, |
| 55 host_file_system_provider, | 52 host_file_system_provider, |
| 56 github_file_system_provider, | |
| 57 CloudStorageFileSystemProvider(object_store_creator)) | 53 CloudStorageFileSystemProvider(object_store_creator)) |
| 58 | 54 |
| 59 class InstanceServlet(object): | 55 class InstanceServlet(object): |
| 60 '''Servlet for running on normal AppEngine instances. | 56 '''Servlet for running on normal AppEngine instances. |
| 61 Create this via GetConstructor() so that cache state can be shared amongst | 57 Create this via GetConstructor() so that cache state can be shared amongst |
| 62 them via the memoizing Delegate. | 58 them via the memoizing Delegate. |
| 63 ''' | 59 ''' |
| 64 class Delegate(object): | 60 class Delegate(object): |
| 65 '''Allow runtime dependencies to be overriden for testing. | 61 '''Allow runtime dependencies to be overriden for testing. |
| 66 ''' | 62 ''' |
| 67 def CreateBranchUtility(self, object_store_creator): | 63 def CreateBranchUtility(self, object_store_creator): |
| 68 return BranchUtility.Create(object_store_creator) | 64 return BranchUtility.Create(object_store_creator) |
| 69 | 65 |
| 70 def CreateHostFileSystemProvider(self, object_store_creator, **optargs): | 66 def CreateHostFileSystemProvider(self, object_store_creator, **optargs): |
| 71 return HostFileSystemProvider(object_store_creator, **optargs) | 67 return HostFileSystemProvider(object_store_creator, **optargs) |
| 72 | 68 |
| 73 def CreateGithubFileSystemProvider(self, object_store_creator): | 69 def CreateGithubFileSystemProvider(self, object_store_creator): |
| 74 return GithubFileSystemProvider(object_store_creator) | 70 return GithubFileSystemProvider(object_store_creator) |
| 75 | 71 |
| 76 @staticmethod | 72 @staticmethod |
| 77 def GetConstructor(delegate_for_test=None): | 73 def GetConstructor(delegate_for_test=None): |
| 78 render_servlet_delegate = InstanceServletRenderServletDelegate( | 74 render_servlet_delegate = InstanceServletRenderServletDelegate( |
| 79 delegate_for_test or InstanceServlet.Delegate()) | 75 delegate_for_test or InstanceServlet.Delegate()) |
| 80 return lambda request: RenderServlet(request, render_servlet_delegate) | 76 return lambda request: RenderServlet(request, render_servlet_delegate) |
| 81 | 77 |
| 82 # NOTE: if this were a real Servlet it would implement a Get() method, but | 78 # NOTE: if this were a real Servlet it would implement a Get() method, but |
| 83 # GetConstructor returns an appropriate lambda function (Request -> Servlet). | 79 # GetConstructor returns an appropriate lambda function (Request -> Servlet). |
| OLD | NEW |