Skip to content

Commit a2aae6e

Browse files
author
MartinMikita
committed
Added create argument for gcs.GcsConnection.bucket() and s3.S3Connection.bucket().
1 parent 2138488 commit a2aae6e

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

Diff for: cloudwrapper/gcs.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from .base import BaseBucket
1212

1313
try:
14-
from gcloud import storage
14+
from gcloud import storage, exceptions
1515
except ImportError:
1616
from warnings import warn
1717
install_modules = [
@@ -35,10 +35,15 @@ def __init__(self):
3535
self.connection = storage.Client()
3636

3737

38-
def bucket(self, name):
38+
def bucket(self, name, create=False):
3939
for _repeat in range(6):
4040
try:
4141
return Bucket(self.connection.get_bucket(name))
42+
except (exceptions.NotFound) as e:
43+
if create:
44+
self.connection.create_bucket(name)
45+
continue
46+
raise
4247
except (IOError, BadStatusLine) as e:
4348
sleep(_repeat * 2 + 1)
4449
if e.errno == errno.EPIPE:

Diff for: cloudwrapper/s3.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
try:
1010
from boto.s3 import connect_to_region, connection
11+
from boto.exceptions import S3ResponseError
1112
except ImportError:
1213
from warnings import warn
1314
install_modules = [
@@ -39,9 +40,15 @@ def __init__(self, region, key=None, secret=None, host=None):
3940
aws_secret_access_key=secret)
4041

4142

42-
def bucket(self, name):
43-
return Bucket(self.connection.get_bucket(name))
44-
43+
def bucket(self, name, create=False):
44+
for _ in range(6):
45+
try:
46+
return Bucket(self.connection.get_bucket(name))
47+
except S3ResponseError as se:
48+
if se.status == 404 and create:
49+
self.connection.create_bucket(name)
50+
continue
51+
raise
4552

4653

4754
class Bucket(object):

0 commit comments

Comments
 (0)