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

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

Issue 18323018: Linking AvailabilityFinder with APIDataSource and intro-table templates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: HostFileSystemCreator, Intro Table data structure changes Created 7 years, 5 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 import logging 5 import logging
6 import time 6 import time
7 import traceback 7 import traceback
8 8
9 from app_yaml_helper import AppYamlHelper 9 from app_yaml_helper import AppYamlHelper
10 from appengine_wrappers import ( 10 from appengine_wrappers import (
11 GetAppVersion, DeadlineExceededError, IsDevServer, logservice) 11 GetAppVersion, DeadlineExceededError, IsDevServer, logservice)
12 from branch_utility import BranchUtility 12 from branch_utility import BranchUtility
13 from caching_file_system import CachingFileSystem 13 from caching_file_system import CachingFileSystem
14 from compiled_file_system import CompiledFileSystem 14 from compiled_file_system import CompiledFileSystem
15 from empty_dir_file_system import EmptyDirFileSystem 15 from empty_dir_file_system import EmptyDirFileSystem
16 from github_file_system import GithubFileSystem 16 from github_file_system import GithubFileSystem
17 from host_file_system_creator import HostFileSystemCreator
17 from object_store_creator import ObjectStoreCreator 18 from object_store_creator import ObjectStoreCreator
18 from render_servlet import RenderServlet 19 from render_servlet import RenderServlet
19 from server_instance import ServerInstance 20 from server_instance import ServerInstance
20 from servlet import Servlet, Request, Response 21 from servlet import Servlet, Request, Response
21 from subversion_file_system import SubversionFileSystem 22 from subversion_file_system import SubversionFileSystem
22 import svn_constants 23 import svn_constants
23 from third_party.json_schema_compiler.memoize import memoize 24 from third_party.json_schema_compiler.memoize import memoize
24 25
25 class _SingletonRenderServletDelegate(RenderServlet.Delegate): 26 class _SingletonRenderServletDelegate(RenderServlet.Delegate):
26 def __init__(self, server_instance): 27 def __init__(self, server_instance):
27 self._server_instance = server_instance 28 self._server_instance = server_instance
28 29
29 def CreateServerInstanceForChannel(self, channel): 30 def CreateServerInstanceForChannel(self, channel):
30 return self._server_instance 31 return self._server_instance
31 32
32 class CronServlet(Servlet): 33 class CronServlet(Servlet):
33 '''Servlet which runs a cron job. 34 '''Servlet which runs a cron job.
34 ''' 35 '''
35 def __init__(self, request, delegate_for_test=None): 36 def __init__(self, request, delegate_for_test=None):
36 Servlet.__init__(self, request) 37 Servlet.__init__(self, request)
37 self._channel = request.path.strip('/') 38 self._channel = request.path.strip('/')
38 self._delegate = delegate_for_test or CronServlet.Delegate() 39 self._delegate = delegate_for_test or CronServlet.Delegate()
39 40
40 class Delegate(object): 41 class Delegate(object):
41 '''CronServlet's runtime dependencies. Override for testing. 42 '''CronServlet's runtime dependencies. Override for testing.
42 ''' 43 '''
43 def CreateBranchUtility(self, object_store_creator): 44 def CreateBranchUtility(self, object_store_creator):
44 return BranchUtility.Create(object_store_creator) 45 return BranchUtility.Create(object_store_creator)
45 46
47 def CreateHostFileSystem(self, branch):
48 return SubversionFileSystem.Create(branch)
49
46 def CreateHostFileSystemForBranchAndRevision(self, branch, revision): 50 def CreateHostFileSystemForBranchAndRevision(self, branch, revision):
47 return SubversionFileSystem.Create(branch, revision=revision) 51 return SubversionFileSystem.Create(branch, revision=revision)
48 52
49 def CreateAppSamplesFileSystem(self, object_store_creator): 53 def CreateAppSamplesFileSystem(self, object_store_creator):
50 # TODO(kalman): CachingFileSystem wrapper for GithubFileSystem, but it's 54 # TODO(kalman): CachingFileSystem wrapper for GithubFileSystem, but it's
51 # not supported yet (see comment there). 55 # not supported yet (see comment there).
52 return (EmptyDirFileSystem() if IsDevServer() else 56 return (EmptyDirFileSystem() if IsDevServer() else
53 GithubFileSystem.Create(object_store_creator)) 57 GithubFileSystem.Create(object_store_creator))
54 58
55 def GetAppVersion(self): 59 def GetAppVersion(self):
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 channel = self._channel 185 channel = self._channel
182 delegate = self._delegate 186 delegate = self._delegate
183 187
184 server_instance_at_head = self._CreateServerInstance(channel, None) 188 server_instance_at_head = self._CreateServerInstance(channel, None)
185 189
186 get_branch_for_channel = self._GetBranchForChannel 190 get_branch_for_channel = self._GetBranchForChannel
187 class AppYamlHelperDelegate(AppYamlHelper.Delegate): 191 class AppYamlHelperDelegate(AppYamlHelper.Delegate):
188 def GetHostFileSystemForRevision(self, revision): 192 def GetHostFileSystemForRevision(self, revision):
189 return delegate.CreateHostFileSystemForBranchAndRevision( 193 return delegate.CreateHostFileSystemForBranchAndRevision(
190 get_branch_for_channel(channel), 194 get_branch_for_channel(channel),
191 revision) 195 revision=revision)
192 196
193 app_yaml_handler = AppYamlHelper( 197 app_yaml_handler = AppYamlHelper(
194 svn_constants.APP_YAML_PATH, 198 svn_constants.APP_YAML_PATH,
195 server_instance_at_head.host_file_system, 199 server_instance_at_head.host_file_system,
196 AppYamlHelperDelegate(), 200 AppYamlHelperDelegate(),
197 server_instance_at_head.object_store_creator) 201 server_instance_at_head.object_store_creator)
198 202
199 if app_yaml_handler.IsUpToDate(delegate.GetAppVersion()): 203 if app_yaml_handler.IsUpToDate(delegate.GetAppVersion()):
200 # TODO(kalman): return a new ServerInstance at an explicit revision in 204 # TODO(kalman): return a new ServerInstance at an explicit revision in
201 # case the HEAD version changes underneath us. 205 # case the HEAD version changes underneath us.
(...skipping 12 matching lines...) Expand all
214 def _CreateObjectStoreCreator(self, channel): 218 def _CreateObjectStoreCreator(self, channel):
215 return ObjectStoreCreator(channel, start_empty=True) 219 return ObjectStoreCreator(channel, start_empty=True)
216 220
217 def _GetBranchForChannel(self, channel): 221 def _GetBranchForChannel(self, channel):
218 object_store_creator = self._CreateObjectStoreCreator(channel) 222 object_store_creator = self._CreateObjectStoreCreator(channel)
219 return (self._delegate.CreateBranchUtility(object_store_creator) 223 return (self._delegate.CreateBranchUtility(object_store_creator)
220 .GetChannelInfo(channel).branch) 224 .GetChannelInfo(channel).branch)
221 225
222 def _CreateServerInstance(self, channel, revision): 226 def _CreateServerInstance(self, channel, revision):
223 object_store_creator = self._CreateObjectStoreCreator(channel) 227 object_store_creator = self._CreateObjectStoreCreator(channel)
228 branch_utility = self._delegate.CreateBranchUtility(object_store_creator)
229 host_file_system_creator = HostFileSystemCreator(
230 branch_utility,
231 self._delegate.CreateHostFileSystem,
232 object_store_creator,
233 offline=False)
not at google - send to devlin 2013/07/09 23:11:55 False should be the default here so you can leave
epeterson 2013/07/16 00:28:23 Done.
234 # Using HostFileSystemCreator
not at google - send to devlin 2013/07/09 23:11:55 yep let's use it
epeterson 2013/07/16 00:28:23 Done.
235 '''
236 host_file_system = host_file_system_creator.CreateAtBranch(
237 branch_utility.GetChannelInfo(channel).branch)
238 '''
239 # CreateHostFileSystemForBranchAndRevision
224 host_file_system = CachingFileSystem( 240 host_file_system = CachingFileSystem(
225 self._delegate.CreateHostFileSystemForBranchAndRevision( 241 self._delegate.CreateHostFileSystemForBranchAndRevision(
226 self._GetBranchForChannel(channel), 242 self._GetBranchForChannel(channel),
227 revision), 243 revision),
228 object_store_creator) 244 object_store_creator)
245 # Using only CreateHostFileSystem
246 '''
247 host_file_system = CachingFileSystem(
248 self._delegate.CreateHostFileSystem(
249 self._GetBranchForChannel(channel),
250 revision=revision),
251 object_store_creator)
252 '''
229 app_samples_file_system = self._delegate.CreateAppSamplesFileSystem( 253 app_samples_file_system = self._delegate.CreateAppSamplesFileSystem(
230 object_store_creator) 254 object_store_creator)
231 compiled_host_fs_factory = CompiledFileSystem.Factory( 255 compiled_host_fs_factory = CompiledFileSystem.Factory(
232 host_file_system, 256 host_file_system,
233 object_store_creator) 257 object_store_creator)
234 return ServerInstance(channel, 258 return ServerInstance(channel,
235 object_store_creator, 259 object_store_creator,
236 host_file_system, 260 host_file_system,
237 app_samples_file_system, 261 app_samples_file_system,
238 '' if channel == 'stable' else '/%s' % channel, 262 '' if channel == 'stable' else '/%s' % channel,
239 compiled_host_fs_factory) 263 compiled_host_fs_factory,
264 branch_utility,
265 host_file_system_creator)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698