Index: chrome/test/functional/ispy/client/boto_bucket.py |
=================================================================== |
--- chrome/test/functional/ispy/client/boto_bucket.py (revision 261231) |
+++ chrome/test/functional/ispy/client/boto_bucket.py (working copy) |
@@ -1,88 +0,0 @@ |
-# Copyright 2013 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. |
- |
-"""Implementation of CloudBucket using Google Cloud Storage as the backend.""" |
-import os |
-import sys |
- |
-# boto requires depot_tools/third_party be in the path. Use |
-# src/tools/find_depot_tools.py to add this directory. |
-sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, |
- os.pardir, os.pardir, os.pardir, 'tools')) |
-import find_depot_tools |
-DEPOT_TOOLS_PATH = find_depot_tools.add_depot_tools_to_path() |
-sys.path.append(os.path.join(os.path.abspath(DEPOT_TOOLS_PATH), 'third_party')) |
-import boto |
- |
-from ..common import cloud_bucket |
- |
- |
-class BotoCloudBucket(cloud_bucket.BaseCloudBucket): |
- """Interfaces with GS using the boto library.""" |
- |
- def __init__(self, key, secret, bucket_name): |
- """Initializes the bucket with a key, secret, and bucket_name. |
- |
- Args: |
- key: the API key to access GS. |
- secret: the API secret to access GS. |
- bucket_name: the name of the bucket to connect to. |
- """ |
- uri = boto.storage_uri('', 'gs') |
- conn = uri.connect(key, secret) |
- self.bucket = conn.get_bucket(bucket_name) |
- |
- def _GetKey(self, path): |
- key = boto.gs.key.Key(self.bucket) |
- key.key = path |
- return key |
- |
- # override |
- def UploadFile(self, path, contents, content_type): |
- key = self._GetKey(path) |
- key.set_metadata('Content-Type', content_type) |
- key.set_contents_from_string(contents) |
- # Open permissions for the appengine account to read/write. |
- key.add_email_grant('FULL_CONTROL', |
- 'ispy.google.com@appspot.gserviceaccount.com') |
- |
- # override |
- def DownloadFile(self, path): |
- key = self._GetKey(path) |
- if key.exists(): |
- return key.get_contents_as_string() |
- else: |
- raise cloud_bucket.FileNotFoundError |
- |
- # override |
- def UpdateFile(self, path, contents): |
- key = self._GetKey(path) |
- if key.exists(): |
- key.set_contents_from_string(contents) |
- else: |
- raise cloud_bucket.FileNotFoundError |
- |
- # override |
- def RemoveFile(self, path): |
- key = self._GetKey(path) |
- key.delete() |
- |
- # override |
- def FileExists(self, path): |
- key = self._GetKey(path) |
- return key.exists() |
- |
- # override |
- def GetImageURL(self, path): |
- key = self._GetKey(path) |
- if key.exists(): |
- # Corrects a bug in boto that incorrectly generates a url |
- # to a resource in Google Cloud Storage. |
- return key.generate_url(3600).replace('AWSAccessKeyId', 'GoogleAccessId') |
- else: |
- raise cloud_bucket.FileNotFoundError(path) |
- |
- # override |
- def GetAllPaths(self, prefix): |
- return (key.key for key in self.bucket.get_all_keys(prefix=prefix)) |