From bd5dc01d653307096f7959a62ae03f17f9938f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Aur=C3=A8le=20Brothier?= Date: Tue, 21 Nov 2017 21:51:16 +0100 Subject: [PATCH] AWS S3: fix method call for fakes3 S3 backend (#33085) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * AWS S3: fix method call for fakes3 S3 backend Fixes #33083 Signed-off-by: Marc-Aurèle Brothier * Auto append port based on proto Signed-off-by: Marc-Aurèle Brothier --- lib/ansible/modules/cloud/amazon/aws_s3.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/cloud/amazon/aws_s3.py b/lib/ansible/modules/cloud/amazon/aws_s3.py index b791028a7e..62ed2466b1 100644 --- a/lib/ansible/modules/cloud/amazon/aws_s3.py +++ b/lib/ansible/modules/cloud/amazon/aws_s3.py @@ -555,15 +555,19 @@ def get_s3_connection(module, aws_connect_kwargs, location, rgw, s3_url): rgw = urlparse(s3_url) params = dict(module=module, conn_type='client', resource='s3', use_ssl=rgw.scheme == 'https', region=location, endpoint=s3_url, **aws_connect_kwargs) elif is_fakes3(s3_url): - for kw in ['is_secure', 'host', 'port'] and list(aws_connect_kwargs.keys()): - del aws_connect_kwargs[kw] fakes3 = urlparse(s3_url) + port = fakes3.port if fakes3.scheme == 'fakes3s': protocol = "https" + if port is None: + port = 443 else: protocol = "http" - params = dict(service_name='s3', endpoint_url="%s://%s:%s" % (protocol, fakes3.hostname, to_text(fakes3.port)), - use_ssl=fakes3.scheme == 'fakes3s', region_name=None, **aws_connect_kwargs) + if port is None: + port = 80 + params = dict(module=module, conn_type='client', resource='s3', region=location, + endpoint="%s://%s:%s" % (protocol, fakes3.hostname, to_text(port)), + use_ssl=fakes3.scheme == 'fakes3s', **aws_connect_kwargs) elif is_walrus(s3_url): walrus = urlparse(s3_url).hostname params = dict(module=module, conn_type='client', resource='s3', region=location, endpoint=walrus, **aws_connect_kwargs)