OLD | NEW |
---|---|
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 traceback | 5 import traceback |
6 | 6 |
7 from app_yaml_helper import AppYamlHelper | 7 from app_yaml_helper import AppYamlHelper |
8 from appengine_wrappers import IsDeadlineExceededError, logservice | 8 from appengine_wrappers import IsDeadlineExceededError, logservice |
9 from branch_utility import BranchUtility | 9 from branch_utility import BranchUtility |
10 from compiled_file_system import CompiledFileSystem | 10 from compiled_file_system import CompiledFileSystem |
11 from custom_logger import CustomLogger | 11 from custom_logger import CustomLogger |
12 from data_source_registry import CreateDataSource | 12 from data_source_registry import CreateDataSource |
13 from environment import GetAppVersion | 13 from environment import GetAppVersion |
14 from file_system import IsFileSystemThrottledError | 14 from file_system import IsFileSystemThrottledError |
15 from future import Future | 15 from future import Future |
16 from gcs_file_system_provider import CloudStorageFileSystemProvider | 16 from gcs_file_system_provider import CloudStorageFileSystemProvider |
17 from github_file_system_provider import GithubFileSystemProvider | 17 from github_file_system_provider import GithubFileSystemProvider |
18 from host_file_system_provider import HostFileSystemProvider | 18 from host_file_system_provider import HostFileSystemProvider |
19 from object_store_creator import ObjectStoreCreator | 19 from object_store_creator import ObjectStoreCreator |
20 from server_instance import ServerInstance | 20 from server_instance import ServerInstance |
21 from servlet import Servlet, Request, Response | 21 from servlet import Servlet, Request, Response |
22 from timer import Timer, TimerClosure | 22 from timer import Timer, TimerClosure |
23 | 23 |
24 | 24 |
25 | 25 |
26 _log = CustomLogger('refresh') | 26 _log = CustomLogger('refresh') |
27 | 27 |
28 | 28 |
29 | |
30 class _InstanceMasterCommitUpdater(object): | |
31 def __init__(self, commit): | |
32 self._commit = commit | |
33 | |
34 def Refresh(self, path): | |
35 if self._commit is None: | |
36 raise ValueError('Refusing to set instance master without a commit ID') | |
37 creator = ObjectStoreCreator(start_empty=False) | |
38 store = creator.Create(str, category='commits') | |
not at google - send to devlin
2014/10/20 21:06:58
Ok - I see why you use str. Maybe you should pull
Ken Rockot(use gerrit already)
2014/10/22 03:19:54
Done.
| |
39 store.SetMulti({ 'master': self._commit }) | |
40 return Future(callback=lambda: None) | |
41 | |
42 | |
43 | |
29 class RefreshServlet(Servlet): | 44 class RefreshServlet(Servlet): |
30 '''Servlet which refreshes a single data source. | 45 '''Servlet which refreshes a single data source. |
31 ''' | 46 ''' |
32 def __init__(self, request, delegate_for_test=None): | 47 def __init__(self, request, delegate_for_test=None): |
33 Servlet.__init__(self, request) | 48 Servlet.__init__(self, request) |
34 self._delegate = delegate_for_test or RefreshServlet.Delegate() | 49 self._delegate = delegate_for_test or RefreshServlet.Delegate() |
35 | 50 |
36 class Delegate(object): | 51 class Delegate(object): |
37 '''RefreshServlet's runtime dependencies. Override for testing. | 52 '''RefreshServlet's runtime dependencies. Override for testing. |
38 ''' | 53 ''' |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
85 'This is probably NOT what you want.') | 100 'This is probably NOT what you want.') |
86 commit = None | 101 commit = None |
87 | 102 |
88 server_instance = self._CreateServerInstance(commit) | 103 server_instance = self._CreateServerInstance(commit) |
89 success = True | 104 success = True |
90 try: | 105 try: |
91 if source_name == 'platform_bundle': | 106 if source_name == 'platform_bundle': |
92 data_source = server_instance.platform_bundle | 107 data_source = server_instance.platform_bundle |
93 elif source_name == 'content_providers': | 108 elif source_name == 'content_providers': |
94 data_source = server_instance.content_providers | 109 data_source = server_instance.content_providers |
110 elif source_name == 'instance_master': | |
111 data_source = _InstanceMasterCommitUpdater(commit) | |
95 else: | 112 else: |
96 data_source = CreateDataSource(source_name, server_instance) | 113 data_source = CreateDataSource(source_name, server_instance) |
97 | 114 |
98 class_name = data_source.__class__.__name__ | 115 class_name = data_source.__class__.__name__ |
99 refresh_future = data_source.Refresh(source_path) | 116 refresh_future = data_source.Refresh(source_path) |
100 assert isinstance(refresh_future, Future), ( | 117 assert isinstance(refresh_future, Future), ( |
101 '%s.Refresh() did not return a Future' % class_name) | 118 '%s.Refresh() did not return a Future' % class_name) |
102 timer = Timer() | 119 timer = Timer() |
103 try: | 120 try: |
104 refresh_future.Get() | 121 refresh_future.Get() |
(...skipping 29 matching lines...) Expand all Loading... | |
134 github_file_system_provider = self._delegate.CreateGithubFileSystemProvider( | 151 github_file_system_provider = self._delegate.CreateGithubFileSystemProvider( |
135 object_store_creator) | 152 object_store_creator) |
136 gcs_file_system_provider = self._delegate.CreateGCSFileSystemProvider( | 153 gcs_file_system_provider = self._delegate.CreateGCSFileSystemProvider( |
137 object_store_creator) | 154 object_store_creator) |
138 return ServerInstance(object_store_creator, | 155 return ServerInstance(object_store_creator, |
139 CompiledFileSystem.Factory(object_store_creator), | 156 CompiledFileSystem.Factory(object_store_creator), |
140 branch_utility, | 157 branch_utility, |
141 host_file_system_provider, | 158 host_file_system_provider, |
142 github_file_system_provider, | 159 github_file_system_provider, |
143 gcs_file_system_provider) | 160 gcs_file_system_provider) |
OLD | NEW |