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

Side by Side Diff: tools/telemetry/catapult_base/dependency_manager/dependency_info.py

Issue 1620023002: Revert of Remove catapult_base from telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@perf_cb_move
Patch Set: Created 4 years, 11 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
(Empty)
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 class DependencyInfo(object):
6 def __init__(self, dependency, platform, config_path, local_path_info=None,
7 cloud_storage_info=None):
8 """ Container for the information needed for each dependency/platform pair
9 in the dependency_manager.
10
11 Args:
12 Required:
13 dependency: Name of the dependency.
14 platform: Name of the platform to be run on.
15 config_path: Path to the config_path this information came from. Used
16 for error messages to improve debugging.
17
18 Optional:
19 local_paths: A list of paths to search in order for a local file.
20 cloud_storage_info: An instance of CloudStorageInfo.
21 """
22 # TODO(aiolos): update the above doc string for A) the usage of zip files
23 # and B) supporting lists of local_paths to be checked for most recently
24 # changed files.
25 if not dependency or not platform:
26 raise ValueError(
27 'Must supply both a dependency and platform to DependencyInfo')
28
29 self._dependency = dependency
30 self._platform = platform
31 self._config_paths = [config_path]
32 self._local_path_info = local_path_info
33 self._cloud_storage_info = cloud_storage_info
34
35 def Update(self, new_dep_info):
36 """Add the information from |new_dep_info| to this instance.
37 """
38 self._config_paths.extend(new_dep_info.config_paths)
39 if (self.dependency != new_dep_info.dependency or
40 self.platform != new_dep_info.platform):
41 raise ValueError(
42 'Cannot update DependencyInfo with different dependency or platform.'
43 'Existing dep: %s, existing platform: %s. New dep: %s, new platform:'
44 '%s. Config_paths conflicting: %s' % (
45 self.dependency, self.platform, new_dep_info.dependency,
46 new_dep_info.platform, self.config_paths))
47 if new_dep_info.has_cloud_storage_info:
48 if self.has_cloud_storage_info:
49 raise ValueError(
50 'Overriding cloud storage data is not allowed when updating a '
51 'DependencyInfo. Conflict in dependency %s on platform %s in '
52 'config_paths: %s.' % (self.dependency, self.platform,
53 self.config_paths))
54 else:
55 self._cloud_storage_info = new_dep_info._cloud_storage_info
56 if not self._local_path_info:
57 self._local_path_info = new_dep_info._local_path_info
58 else:
59 self._local_path_info.Update(new_dep_info._local_path_info)
60
61 def GetRemotePath(self):
62 """Gets the path to a downloaded version of the dependency.
63
64 May not download the file if it has already been downloaded.
65 Will unzip the downloaded file if specified in the config
66 via unzipped_hash.
67
68 Returns: A path to an executable that was stored in cloud_storage, or None
69 if not found.
70
71 Raises:
72 CredentialsError: If cloud_storage credentials aren't configured.
73 PermissionError: If cloud_storage credentials are configured, but not
74 with an account that has permission to download the needed file.
75 NotFoundError: If the needed file does not exist where expected in
76 cloud_storage or the downloaded zip file.
77 ServerError: If an internal server error is hit while downloading the
78 needed file.
79 CloudStorageError: If another error occured while downloading the remote
80 path.
81 FileNotFoundError: If the download was otherwise unsuccessful.
82 """
83 if self.has_cloud_storage_info:
84 return self._cloud_storage_info.GetRemotePath()
85 return None
86
87 def GetLocalPath(self):
88 """Gets the path to a local version of the dependency.
89
90 Returns: A path to a local dependency, or None if not found.
91
92 """
93 if self.has_local_path_info:
94 return self._local_path_info.GetLocalPath()
95 return None
96
97 @property
98 def dependency(self):
99 return self._dependency
100
101 @property
102 def platform(self):
103 return self._platform
104
105 @property
106 def config_paths(self):
107 return self._config_paths
108
109 @property
110 def local_path_info(self):
111 return self._local_path_info
112
113 @property
114 def has_cloud_storage_info(self):
115 return bool(self._cloud_storage_info)
116
117 @property
118 def has_local_path_info(self):
119 return bool(self._local_path_info)
120
121 @property
122 def cloud_storage_info(self):
123 return self._cloud_storage_info
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698