OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 api_data_source import APIDataSource | 5 from api_data_source import APIDataSource |
6 from api_list_data_source import APIListDataSource | 6 from api_list_data_source import APIListDataSource |
7 from compiled_file_system import CompiledFileSystem | 7 from compiled_file_system import CompiledFileSystem |
8 from content_providers import ContentProviders | 8 from content_providers import ContentProviders |
9 from document_renderer import DocumentRenderer | 9 from document_renderer import DocumentRenderer |
10 from empty_dir_file_system import EmptyDirFileSystem | 10 from empty_dir_file_system import EmptyDirFileSystem |
11 from environment import IsDevServer | 11 from environment import IsDevServer |
12 from gcs_file_system_provider import CloudStorageFileSystemProvider | 12 from gcs_file_system_provider import CloudStorageFileSystemProvider |
13 from github_file_system_provider import GithubFileSystemProvider | |
14 from host_file_system_iterator import HostFileSystemIterator | 13 from host_file_system_iterator import HostFileSystemIterator |
15 from host_file_system_provider import HostFileSystemProvider | 14 from host_file_system_provider import HostFileSystemProvider |
16 from object_store_creator import ObjectStoreCreator | 15 from object_store_creator import ObjectStoreCreator |
17 from platform_bundle import PlatformBundle | 16 from platform_bundle import PlatformBundle |
18 from samples_data_source import SamplesDataSource | 17 from samples_data_source import SamplesDataSource |
19 from table_of_contents_renderer import TableOfContentsRenderer | 18 from table_of_contents_renderer import TableOfContentsRenderer |
20 from template_renderer import TemplateRenderer | 19 from template_renderer import TemplateRenderer |
21 from test_branch_utility import TestBranchUtility | 20 from test_branch_utility import TestBranchUtility |
22 from test_object_store import TestObjectStore | 21 from test_object_store import TestObjectStore |
23 | 22 |
24 | 23 |
25 class ServerInstance(object): | 24 class ServerInstance(object): |
26 | 25 |
27 def __init__(self, | 26 def __init__(self, |
28 object_store_creator, | 27 object_store_creator, |
29 compiled_fs_factory, | 28 compiled_fs_factory, |
30 branch_utility, | 29 branch_utility, |
31 host_file_system_provider, | 30 host_file_system_provider, |
32 github_file_system_provider, | |
33 gcs_file_system_provider, | 31 gcs_file_system_provider, |
34 base_path='/'): | 32 base_path='/'): |
35 ''' | 33 ''' |
36 |object_store_creator| | 34 |object_store_creator| |
37 The ObjectStoreCreator used to create almost all caches. | 35 The ObjectStoreCreator used to create almost all caches. |
38 |compiled_fs_factory| | 36 |compiled_fs_factory| |
39 Factory used to create CompiledFileSystems, a higher-level cache type | 37 Factory used to create CompiledFileSystems, a higher-level cache type |
40 than ObjectStores. This can usually be derived from just | 38 than ObjectStores. This can usually be derived from just |
41 |object_store_creator| but under special circumstances a different | 39 |object_store_creator| but under special circumstances a different |
42 implementation needs to be passed in. | 40 implementation needs to be passed in. |
43 |branch_utility| | 41 |branch_utility| |
44 Has knowledge of Chrome branches, channels, and versions. | 42 Has knowledge of Chrome branches, channels, and versions. |
45 |host_file_system_provider| | 43 |host_file_system_provider| |
46 Creates FileSystem instances which host the server at alternative | 44 Creates FileSystem instances which host the server at alternative |
47 revisions. | 45 revisions. |
48 |github_file_system_provider| | |
49 Creates FileSystem instances backed by GitHub. | |
50 |base_path| | 46 |base_path| |
51 The path which all HTML is generated relative to. Usually this is / | 47 The path which all HTML is generated relative to. Usually this is / |
52 but some servlets need to override this. | 48 but some servlets need to override this. |
53 ''' | 49 ''' |
54 self.object_store_creator = object_store_creator | 50 self.object_store_creator = object_store_creator |
55 | 51 |
56 self.compiled_fs_factory = compiled_fs_factory | 52 self.compiled_fs_factory = compiled_fs_factory |
57 | 53 |
58 self.host_file_system_provider = host_file_system_provider | 54 self.host_file_system_provider = host_file_system_provider |
59 host_fs_at_master = host_file_system_provider.GetMaster() | 55 host_fs_at_master = host_file_system_provider.GetMaster() |
60 | 56 |
61 self.github_file_system_provider = github_file_system_provider | |
62 self.gcs_file_system_provider = gcs_file_system_provider | 57 self.gcs_file_system_provider = gcs_file_system_provider |
63 | 58 |
64 assert base_path.startswith('/') and base_path.endswith('/') | 59 assert base_path.startswith('/') and base_path.endswith('/') |
65 self.base_path = base_path | 60 self.base_path = base_path |
66 | 61 |
67 self.host_file_system_iterator = HostFileSystemIterator( | 62 self.host_file_system_iterator = HostFileSystemIterator( |
68 host_file_system_provider, | 63 host_file_system_provider, |
69 branch_utility) | 64 branch_utility) |
70 | 65 |
71 self.platform_bundle = PlatformBundle( | 66 self.platform_bundle = PlatformBundle( |
72 branch_utility, | 67 branch_utility, |
73 self.compiled_fs_factory, | 68 self.compiled_fs_factory, |
74 host_fs_at_master, | 69 host_fs_at_master, |
75 self.host_file_system_iterator, | 70 self.host_file_system_iterator, |
76 self.object_store_creator, | 71 self.object_store_creator, |
77 self.base_path) | 72 self.base_path) |
78 | 73 |
79 self.content_providers = ContentProviders( | 74 self.content_providers = ContentProviders( |
80 object_store_creator, | 75 object_store_creator, |
81 self.compiled_fs_factory, | 76 self.compiled_fs_factory, |
82 host_fs_at_master, | 77 host_fs_at_master, |
83 self.github_file_system_provider, | |
84 self.gcs_file_system_provider) | 78 self.gcs_file_system_provider) |
85 | 79 |
86 # TODO(kalman): Move all the remaining DataSources into DataSourceRegistry, | 80 # TODO(kalman): Move all the remaining DataSources into DataSourceRegistry, |
87 # then factor out the DataSource creation into a factory method, so that | 81 # then factor out the DataSource creation into a factory method, so that |
88 # the entire ServerInstance doesn't need to be passed in here. | 82 # the entire ServerInstance doesn't need to be passed in here. |
89 self.template_renderer = TemplateRenderer(self) | 83 self.template_renderer = TemplateRenderer(self) |
90 | 84 |
91 # TODO(kalman): It may be better for |document_renderer| to construct a | 85 # TODO(kalman): It may be better for |document_renderer| to construct a |
92 # TemplateDataSource itself rather than depending on template_renderer, but | 86 # TemplateDataSource itself rather than depending on template_renderer, but |
93 # for that the above todo should be addressed. | 87 # for that the above todo should be addressed. |
(...skipping 13 matching lines...) Expand all Loading... |
107 raise ValueError('Only one of |file_system| and |file_system_provider| ' | 101 raise ValueError('Only one of |file_system| and |file_system_provider| ' |
108 'can be specified') | 102 'can be specified') |
109 if file_system_provider is None: | 103 if file_system_provider is None: |
110 file_system_provider = HostFileSystemProvider.ForTest( | 104 file_system_provider = HostFileSystemProvider.ForTest( |
111 file_system, | 105 file_system, |
112 object_store_creator) | 106 object_store_creator) |
113 return ServerInstance(object_store_creator, | 107 return ServerInstance(object_store_creator, |
114 CompiledFileSystem.Factory(object_store_creator), | 108 CompiledFileSystem.Factory(object_store_creator), |
115 TestBranchUtility.CreateWithCannedData(), | 109 TestBranchUtility.CreateWithCannedData(), |
116 file_system_provider, | 110 file_system_provider, |
117 GithubFileSystemProvider.ForEmpty(), | |
118 CloudStorageFileSystemProvider(object_store_creator), | 111 CloudStorageFileSystemProvider(object_store_creator), |
119 base_path=base_path) | 112 base_path=base_path) |
120 | 113 |
121 @staticmethod | 114 @staticmethod |
122 def ForLocal(): | 115 def ForLocal(): |
123 object_store_creator = ObjectStoreCreator(start_empty=False, | 116 object_store_creator = ObjectStoreCreator(start_empty=False, |
124 store_type=TestObjectStore) | 117 store_type=TestObjectStore) |
125 host_file_system_provider = HostFileSystemProvider.ForLocal( | 118 host_file_system_provider = HostFileSystemProvider.ForLocal( |
126 object_store_creator) | 119 object_store_creator) |
127 return ServerInstance( | 120 return ServerInstance( |
128 object_store_creator, | 121 object_store_creator, |
129 CompiledFileSystem.Factory(object_store_creator), | 122 CompiledFileSystem.Factory(object_store_creator), |
130 TestBranchUtility.CreateWithCannedData(), | 123 TestBranchUtility.CreateWithCannedData(), |
131 host_file_system_provider, | 124 host_file_system_provider, |
132 GithubFileSystemProvider.ForEmpty(), | |
133 CloudStorageFileSystemProvider(object_store_creator)) | 125 CloudStorageFileSystemProvider(object_store_creator)) |
OLD | NEW |