diff --git a/lib/ansible/module_utils/urls.py b/lib/ansible/module_utils/urls.py index 7d967e2eb17..ab26b9eb1c3 100644 --- a/lib/ansible/module_utils/urls.py +++ b/lib/ansible/module_utils/urls.py @@ -84,7 +84,10 @@ class CustomHTTPSConnection(httplib.HTTPSConnection): def connect(self): "Connect to a host on a given (SSL) port." - sock = socket.create_connection((self.host, self.port), self.timeout, self.source_address) + if hasattr(self, 'source_address'): + sock = socket.create_connection((self.host, self.port), self.timeout, self.source_address) + else: + sock = socket.create_connection((self.host, self.port), self.timeout) if self._tunnel_host: self.sock = sock self._tunnel() diff --git a/test/integration/non_destructive.yml b/test/integration/non_destructive.yml index c8d836896aa..619396acb25 100644 --- a/test/integration/non_destructive.yml +++ b/test/integration/non_destructive.yml @@ -37,3 +37,4 @@ - { role: test_failed_when, tags: test_failed_when } - { role: test_script, tags: test_script } - { role: test_authorized_key, tags: test_authorized_key } + - { role: test_get_url, tags: test_get_url } diff --git a/test/integration/roles/test_get_url/meta/main.yml b/test/integration/roles/test_get_url/meta/main.yml new file mode 100644 index 00000000000..1050c23ce30 --- /dev/null +++ b/test/integration/roles/test_get_url/meta/main.yml @@ -0,0 +1,3 @@ +dependencies: + - prepare_tests + diff --git a/test/integration/roles/test_get_url/tasks/main.yml b/test/integration/roles/test_get_url/tasks/main.yml new file mode 100644 index 00000000000..1aa4b287ea7 --- /dev/null +++ b/test/integration/roles/test_get_url/tasks/main.yml @@ -0,0 +1,27 @@ +# Test code for the file module. +# (c) 2014, Richard Isaacson + +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +- name: test https fetch + get_url: url="https://raw.githubusercontent.com/ansible/ansible/devel/README.md" dest={{output_dir}}/get_url.txt force=yes + register: result + +- name: assert the get_url call was successful + assert: + that: + - result.changed + - '"OK" in result.msg'