From e59742eccd92b7737f355422ca270b9cdad0ab44 Mon Sep 17 00:00:00 2001 From: Christian Groschupp Date: Thu, 7 Jun 2018 21:07:52 +0200 Subject: [PATCH] [aws] Remove walrus conditional in aws_s3 module when using custom s3_url (#36832) fix aws_s3 module to use custum s3_url. --- .../fragments/aws_s3_fix_custom_endpoints.yaml | 3 +++ lib/ansible/modules/cloud/amazon/aws_s3.py | 14 -------------- 2 files changed, 3 insertions(+), 14 deletions(-) create mode 100644 changelogs/fragments/aws_s3_fix_custom_endpoints.yaml diff --git a/changelogs/fragments/aws_s3_fix_custom_endpoints.yaml b/changelogs/fragments/aws_s3_fix_custom_endpoints.yaml new file mode 100644 index 00000000000..cf20f2e7273 --- /dev/null +++ b/changelogs/fragments/aws_s3_fix_custom_endpoints.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: +- allow custom endpoints to be used in the aws_s3 module (https://github.com/ansible/ansible/pull/36832) diff --git a/lib/ansible/modules/cloud/amazon/aws_s3.py b/lib/ansible/modules/cloud/amazon/aws_s3.py index cacf9ff1c9f..08b7bf98869 100644 --- a/lib/ansible/modules/cloud/amazon/aws_s3.py +++ b/lib/ansible/modules/cloud/amazon/aws_s3.py @@ -625,17 +625,6 @@ def is_fakes3(s3_url): return False -def is_walrus(s3_url): - """ Return True if it's Walrus endpoint, not S3 - - We assume anything other than *.amazonaws.com is Walrus""" - if s3_url is not None: - o = urlparse(s3_url) - return not o.netloc.endswith('amazonaws.com') - else: - return False - - def get_s3_connection(module, aws_connect_kwargs, location, rgw, s3_url, sig_4=False): if s3_url and rgw: # TODO - test this rgw = urlparse(s3_url) @@ -654,9 +643,6 @@ def get_s3_connection(module, aws_connect_kwargs, location, rgw, s3_url, sig_4=F 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) else: params = dict(module=module, conn_type='client', resource='s3', region=location, endpoint=s3_url, **aws_connect_kwargs) if module.params['mode'] == 'put' and module.params['encryption_mode'] == 'aws:kms':