| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 re | 5 import re |
| 6 | 6 |
| 7 from recipe_engine import recipe_api | 7 from recipe_engine import recipe_api |
| 8 | 8 |
| 9 class GSUtilApi(recipe_api.RecipeApi): | 9 class GSUtilApi(recipe_api.RecipeApi): |
| 10 def __call__(self, cmd, name=None, use_retry_wrapper=True, version=None, | 10 def __call__(self, cmd, name=None, use_retry_wrapper=True, version=None, |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 full_dest = 'gs://%s/%s' % (dest_bucket, dest) | 107 full_dest = 'gs://%s/%s' % (dest_bucket, dest) |
| 108 cmd = ['cp'] + args + [full_source, full_dest] | 108 cmd = ['cp'] + args + [full_source, full_dest] |
| 109 name = kwargs.pop('name', 'copy') | 109 name = kwargs.pop('name', 'copy') |
| 110 | 110 |
| 111 result = self(cmd, name, **kwargs) | 111 result = self(cmd, name, **kwargs) |
| 112 | 112 |
| 113 if link_name: | 113 if link_name: |
| 114 result.presentation.links[link_name] = self._http_url( | 114 result.presentation.links[link_name] = self._http_url( |
| 115 dest_bucket, dest, unauthenticated_url=unauthenticated_url) | 115 dest_bucket, dest, unauthenticated_url=unauthenticated_url) |
| 116 | 116 |
| 117 def list(self, url, args=None, **kwargs): |
| 118 args = args or [] |
| 119 url = self._normalize_url(url) |
| 120 cmd = ['ls'] + args + [url] |
| 121 name = kwargs.pop('name', 'list') |
| 122 return self(cmd, name, **kwargs) |
| 123 |
| 117 def signurl(self, private_key_file, bucket, dest, args=None, **kwargs): | 124 def signurl(self, private_key_file, bucket, dest, args=None, **kwargs): |
| 118 args = args or [] | 125 args = args or [] |
| 119 full_source = 'gs://%s/%s' % (bucket, dest) | 126 full_source = 'gs://%s/%s' % (bucket, dest) |
| 120 cmd = ['signurl'] + args + [private_key_file, full_source] | 127 cmd = ['signurl'] + args + [private_key_file, full_source] |
| 121 name = kwargs.pop('name', 'signurl') | 128 name = kwargs.pop('name', 'signurl') |
| 122 return self(cmd, name, **kwargs) | 129 return self(cmd, name, **kwargs) |
| 123 | 130 |
| 124 def remove_url(self, url, args=None, **kwargs): | 131 def remove_url(self, url, args=None, **kwargs): |
| 125 args = args or [] | 132 args = args or [] |
| 126 url = self._normalize_url(url) | 133 url = self._normalize_url(url) |
| (...skipping 20 matching lines...) Expand all Loading... |
| 147 args = ['--poll', | 154 args = ['--poll', |
| 148 '--url', url, | 155 '--url', url, |
| 149 '--dst', destination, | 156 '--dst', destination, |
| 150 '--poll-interval', str(poll_interval), | 157 '--poll-interval', str(poll_interval), |
| 151 '--timeout', str(timeout)] | 158 '--timeout', str(timeout)] |
| 152 return self.m.python(name, | 159 return self.m.python(name, |
| 153 gsutil_download_path, | 160 gsutil_download_path, |
| 154 args, | 161 args, |
| 155 cwd=self.m.path['slave_build']) | 162 cwd=self.m.path['slave_build']) |
| 156 | 163 |
| 164 def download_latest_file(self, base_url, partial_name, destination, |
| 165 name='Download latest file from GS'): |
| 166 """Get the latest archived object with the given base url and partial name. |
| 167 |
| 168 Args: |
| 169 base_url: Base Google Storage archive URL (gs://...) containing the build. |
| 170 partial_name: Partial name of the archive file to download. |
| 171 destination: Destination file/directory where the file will be downloaded. |
| 172 name: The name of the step. |
| 173 """ |
| 174 gsutil_download_path = self.m.path['build'].join( |
| 175 'scripts', 'slave', 'gsutil_download.py') |
| 176 args = ['--url', base_url, |
| 177 '--dst', destination, |
| 178 '--partial-name', partial_name] |
| 179 return self.m.python(name, |
| 180 gsutil_download_path, |
| 181 args, |
| 182 cwd=self.m.path['slave_build']) |
| 183 |
| 157 def _generate_metadata_args(self, metadata): | 184 def _generate_metadata_args(self, metadata): |
| 158 result = [] | 185 result = [] |
| 159 if metadata: | 186 if metadata: |
| 160 for k, v in sorted(metadata.iteritems(), key=lambda (k, _): k): | 187 for k, v in sorted(metadata.iteritems(), key=lambda (k, _): k): |
| 161 field = self._get_metadata_field(k) | 188 field = self._get_metadata_field(k) |
| 162 param = (field) if v is None else ('%s:%s' % (field, v)) | 189 param = (field) if v is None else ('%s:%s' % (field, v)) |
| 163 result += ['-h', param] | 190 result += ['-h', param] |
| 164 return result | 191 return result |
| 165 | 192 |
| 166 def _normalize_url(self, url): | 193 def _normalize_url(self, url): |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 'Content-Language', | 229 'Content-Language', |
| 203 'Content-MD5', | 230 'Content-MD5', |
| 204 'Content-Type', | 231 'Content-Type', |
| 205 ): | 232 ): |
| 206 return name | 233 return name |
| 207 | 234 |
| 208 # Add provider prefix | 235 # Add provider prefix |
| 209 if not provider_prefix: | 236 if not provider_prefix: |
| 210 provider_prefix = 'x-goog-meta' | 237 provider_prefix = 'x-goog-meta' |
| 211 return '%s-%s' % (provider_prefix, name) | 238 return '%s-%s' % (provider_prefix, name) |
| OLD | NEW |