Fix get_s3_connection (fixes #22317) (#22318) (#22831)

* Fix get_s3_connection (fixes #22317)

Override aws_connect_kwargs rather than prepending to them. Should fix an issue in which `calling_format` is set twice in the kwargs passed to `boto.connect_s3` or `S3Connection` if a bucket name contains a `.`

* Revert "Fix get_s3_connection (fixes #22317)"

This reverts commit 7f61b8bebd.

* implements alternative way of fixing issue with aws_connect_kwargs for rgw and fakes3 (fixes 22317)

* add comment to explain why the keys are being removed from aws_connect_kwargs

* remove trailing whitespace on comment line
This commit is contained in:
Sloane Hertel 2017-03-21 10:09:24 -04:00 committed by GitHub
parent 89a2d1d6ad
commit 116ba9196d

View file

@ -714,6 +714,13 @@ def main():
def get_s3_connection(aws_connect_kwargs, location, rgw, s3_url): def get_s3_connection(aws_connect_kwargs, location, rgw, s3_url):
if s3_url and rgw: if s3_url and rgw:
rgw = urlparse(s3_url) rgw = urlparse(s3_url)
# ensure none of the named arguments we will pass to boto.connect_s3
# are already present in aws_connect_kwargs
for kw in ['is_secure', 'host', 'port', 'calling_format']:
try:
del aws_connect_kwargs[kw]
except KeyError:
pass
s3 = boto.connect_s3( s3 = boto.connect_s3(
is_secure=rgw.scheme == 'https', is_secure=rgw.scheme == 'https',
host=rgw.hostname, host=rgw.hostname,
@ -723,6 +730,13 @@ def get_s3_connection(aws_connect_kwargs, location, rgw, s3_url):
) )
elif is_fakes3(s3_url): elif is_fakes3(s3_url):
fakes3 = urlparse(s3_url) fakes3 = urlparse(s3_url)
# ensure none of the named arguments we will pass to S3Connection
# are already present in aws_connect_kwargs
for kw in ['is_secure', 'host', 'port', 'calling_format']:
try:
del aws_connect_kwargs[kw]
except KeyError:
pass
s3 = S3Connection( s3 = S3Connection(
is_secure=fakes3.scheme == 'fakes3s', is_secure=fakes3.scheme == 'fakes3s',
host=fakes3.hostname, host=fakes3.hostname,