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

Unified Diff: third_party/gsutil/boto/boto/gs/connection.py

Issue 12317103: Added gsutil to depot tools (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/gsutil/boto/boto/gs/bucketlistresultset.py ('k') | third_party/gsutil/boto/boto/gs/cors.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/gsutil/boto/boto/gs/connection.py
diff --git a/third_party/gsutil/boto/boto/gs/connection.py b/third_party/gsutil/boto/boto/gs/connection.py
new file mode 100755
index 0000000000000000000000000000000000000000..6d5e00afea629e24d7f464632fc721f0691d1c0c
--- /dev/null
+++ b/third_party/gsutil/boto/boto/gs/connection.py
@@ -0,0 +1,103 @@
+# Copyright 2010 Google Inc.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish, dis-
+# tribute, sublicense, and/or sell copies of the Software, and to permit
+# persons to whom the Software is furnished to do so, subject to the fol-
+# lowing conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+from boto.gs.bucket import Bucket
+from boto.s3.connection import S3Connection
+from boto.s3.connection import SubdomainCallingFormat
+from boto.s3.connection import check_lowercase_bucketname
+
+class Location:
+ DEFAULT = 'US'
+ EU = 'EU'
+
+class GSConnection(S3Connection):
+
+ DefaultHost = 'storage.googleapis.com'
+ QueryString = 'Signature=%s&Expires=%d&AWSAccessKeyId=%s'
+
+ def __init__(self, gs_access_key_id=None, gs_secret_access_key=None,
+ is_secure=True, port=None, proxy=None, proxy_port=None,
+ proxy_user=None, proxy_pass=None,
+ host=DefaultHost, debug=0, https_connection_factory=None,
+ calling_format=SubdomainCallingFormat(), path='/',
+ suppress_consec_slashes=True):
+ S3Connection.__init__(self, gs_access_key_id, gs_secret_access_key,
+ is_secure, port, proxy, proxy_port, proxy_user, proxy_pass,
+ host, debug, https_connection_factory, calling_format, path,
+ "google", Bucket,
+ suppress_consec_slashes=suppress_consec_slashes)
+
+ def create_bucket(self, bucket_name, headers=None,
+ location=Location.DEFAULT, policy=None,
+ storage_class='STANDARD'):
+ """
+ Creates a new bucket. By default it's located in the USA. You can
+ pass Location.EU to create an European bucket. You can also pass
+ a LocationConstraint for where the bucket should be located, and
+ a StorageClass describing how the data should be stored.
+
+ :type bucket_name: string
+ :param bucket_name: The name of the new bucket.
+
+ :type headers: dict
+ :param headers: Additional headers to pass along with the request to GCS.
+
+ :type location: :class:`boto.gs.connection.Location`
+ :param location: The location of the new bucket.
+
+ :type policy: :class:`boto.gs.acl.CannedACLStrings`
+ :param policy: A canned ACL policy that will be applied to the new key
+ in GCS.
+
+ :type storage_class: string
+ :param storage_class: Either 'STANDARD' or 'DURABLE_REDUCED_AVAILABILITY'.
+
+ """
+ check_lowercase_bucketname(bucket_name)
+
+ if policy:
+ if headers:
+ headers[self.provider.acl_header] = policy
+ else:
+ headers = {self.provider.acl_header : policy}
+ if not location:
+ location = Location.DEFAULT
+ location_elem = ('<LocationConstraint>%s</LocationConstraint>'
+ % location)
+ if storage_class:
+ storage_class_elem = ('<StorageClass>%s</StorageClass>'
+ % storage_class)
+ else:
+ storage_class_elem = ''
+ data = ('<CreateBucketConfiguration>%s%s</CreateBucketConfiguration>'
+ % (location_elem, storage_class_elem))
+ response = self.make_request('PUT', bucket_name, headers=headers,
+ data=data)
+ body = response.read()
+ if response.status == 409:
+ raise self.provider.storage_create_error(
+ response.status, response.reason, body)
+ if response.status == 200:
+ return self.bucket_class(self, bucket_name)
+ else:
+ raise self.provider.storage_response_error(
+ response.status, response.reason, body)
+
« no previous file with comments | « third_party/gsutil/boto/boto/gs/bucketlistresultset.py ('k') | third_party/gsutil/boto/boto/gs/cors.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698