Index: tools/telemetry/catapult_base/dependency_manager/cloud_storage_info.py |
diff --git a/tools/telemetry/catapult_base/dependency_manager/cloud_storage_info.py b/tools/telemetry/catapult_base/dependency_manager/cloud_storage_info.py |
deleted file mode 100644 |
index 460a761f2894a38498299e0ba7a2bef2a15eb55d..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/catapult_base/dependency_manager/cloud_storage_info.py |
+++ /dev/null |
@@ -1,110 +0,0 @@ |
-# Copyright 2015 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import errno |
-import os |
-import stat |
- |
-from catapult_base import cloud_storage |
- |
-from catapult_base.dependency_manager import exceptions |
- |
-class CloudStorageInfo(object): |
- def __init__(self, cs_bucket, cs_hash, download_path, cs_remote_path, |
- version_in_cs=None, archive_info=None): |
- """ Container for the information needed to download a dependency from |
- cloud storage. |
- |
- Args: |
- cs_bucket: The cloud storage bucket the dependency is located in. |
- cs_hash: The hash of the file stored in cloud storage. |
- download_path: Where the file should be downloaded to. |
- cs_remote_path: Where the file is stored in the cloud storage bucket. |
- version_in_cs: The version of the file stored in cloud storage. |
- archive_info: An instance of ArchiveInfo if this dependency is an |
- archive. Else None. |
- """ |
- self._download_path = download_path |
- self._cs_remote_path = cs_remote_path |
- self._cs_bucket = cs_bucket |
- self._cs_hash = cs_hash |
- self._version_in_cs = version_in_cs |
- self._archive_info = archive_info |
- if not self._has_minimum_data: |
- raise ValueError( |
- 'Not enough information specified to initialize a cloud storage info.' |
- ' %s' % self) |
- |
- def DependencyExistsInCloudStorage(self): |
- return cloud_storage.Exists(self._cs_bucket, self._cs_remote_path) |
- |
- def GetRemotePath(self): |
- """Gets the path to a downloaded version of the dependency. |
- |
- May not download the file if it has already been downloaded. |
- Will unzip the downloaded file if a non-empty archive_info was passed in at |
- init. |
- |
- Returns: A path to an executable that was stored in cloud_storage, or None |
- if not found. |
- |
- Raises: |
- CredentialsError: If cloud_storage credentials aren't configured. |
- PermissionError: If cloud_storage credentials are configured, but not |
- with an account that has permission to download the needed file. |
- NotFoundError: If the needed file does not exist where expected in |
- cloud_storage or the downloaded zip file. |
- ServerError: If an internal server error is hit while downloading the |
- needed file. |
- CloudStorageError: If another error occured while downloading the remote |
- path. |
- FileNotFoundError: If the download was otherwise unsuccessful. |
- """ |
- if not self._has_minimum_data: |
- return None |
- |
- download_dir = os.path.dirname(self._download_path) |
- if not os.path.exists(download_dir): |
- try: |
- os.makedirs(download_dir) |
- except OSError as e: |
- # The logic above is racy, and os.makedirs will raise an OSError if |
- # the directory exists. |
- if e.errno != errno.EEXIST: |
- raise |
- |
- dependency_path = self._download_path |
- cloud_storage.GetIfHashChanged( |
- self._cs_remote_path, self._download_path, self._cs_bucket, |
- self._cs_hash) |
- if not os.path.exists(dependency_path): |
- raise exceptions.FileNotFoundError(dependency_path) |
- |
- if self.has_archive_info: |
- dependency_path = self._archive_info.GetUnzippedPath() |
- else: |
- mode = os.stat(dependency_path).st_mode |
- os.chmod(dependency_path, mode | stat.S_IXUSR) |
- return os.path.abspath(dependency_path) |
- |
- @property |
- def version_in_cs(self): |
- return self._version_in_cs |
- |
- @property |
- def _has_minimum_data(self): |
- return all([self._cs_bucket, self._cs_remote_path, self._download_path, |
- self._cs_hash]) |
- |
- |
- @property |
- def has_archive_info(self): |
- return bool(self._archive_info) |
- |
- def __repr__(self): |
- return ( |
- 'CloudStorageInfo(download_path=%s, cs_remote_path=%s, cs_bucket=%s, ' |
- 'cs_hash=%s, version_in_cs=%s, archive_info=%s)' % ( |
- self._download_path, self._cs_remote_path, self._cs_bucket, |
- self._cs_hash, self._version_in_cs, self._archive_info)) |