2021-06-21 15:28:21 +00:00
|
|
|
# Copyright 2021 Google LLC
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
"""External filestore interface. Cannot be depended on by filestore code."""
|
|
|
|
import filestore
|
2022-01-19 22:24:47 +00:00
|
|
|
import filestore.filesystem
|
2021-07-27 00:46:20 +00:00
|
|
|
import filestore.git
|
2021-06-21 15:28:21 +00:00
|
|
|
import filestore.github_actions
|
2021-10-27 14:00:04 +00:00
|
|
|
import filestore.gsutil
|
|
|
|
import filestore.no_filestore
|
2022-01-13 19:27:53 +00:00
|
|
|
import filestore.gitlab
|
2021-10-27 14:00:04 +00:00
|
|
|
|
|
|
|
FILESTORE_MAPPING = {
|
2022-01-19 22:24:47 +00:00
|
|
|
'filesystem': filestore.filesystem.FilesystemFilestore,
|
2021-10-27 14:00:04 +00:00
|
|
|
'gsutil': filestore.gsutil.GSUtilFilestore,
|
|
|
|
'github-actions': filestore.github_actions.GithubActionsFilestore,
|
|
|
|
'git': filestore.git.GitFilestore,
|
2022-01-19 22:24:47 +00:00
|
|
|
# TODO(metzman): Change to "no-filestore"
|
2021-10-27 14:00:04 +00:00
|
|
|
'no_filestore': filestore.no_filestore.NoFilestore,
|
2022-01-13 19:27:53 +00:00
|
|
|
'gitlab': filestore.gitlab.GitlabFilestore,
|
2021-10-27 14:00:04 +00:00
|
|
|
}
|
2021-06-21 15:28:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
def get_filestore(config):
|
2021-10-27 14:00:04 +00:00
|
|
|
"""Returns the correct filestore object based on the platform in |config|.
|
2021-06-21 15:28:21 +00:00
|
|
|
Raises an exception if there is no correct filestore for the platform."""
|
|
|
|
if config.platform == config.Platform.EXTERNAL_GITHUB:
|
2021-07-27 00:46:20 +00:00
|
|
|
ci_filestore = filestore.github_actions.GithubActionsFilestore(config)
|
|
|
|
if not config.git_store_repo:
|
|
|
|
return ci_filestore
|
|
|
|
|
|
|
|
return filestore.git.GitFilestore(config, ci_filestore)
|
|
|
|
|
2021-10-27 14:00:04 +00:00
|
|
|
filestore_cls = FILESTORE_MAPPING.get(config.filestore)
|
|
|
|
if filestore_cls is None:
|
2022-01-19 22:24:47 +00:00
|
|
|
raise filestore.FilestoreError(
|
|
|
|
f'Filestore: {config.filestore} doesn\'t exist.')
|
2021-10-27 14:00:04 +00:00
|
|
|
return filestore_cls(config)
|