fix following redirects

reviewable/pr18780/r1
Romeo Theriault 11 years ago
parent eb71120435
commit 863bba498c

@ -87,10 +87,15 @@ options:
default: "no" default: "no"
follow_redirects: follow_redirects:
description: description:
- Whether or not the URI module should follow all redirects. - Whether or not the URI module should follow redirects. C(all) will follow all redirects.
C(safe) will follow only "safe" redirects, where "safe" means that the client is only
doing a GET or HEAD on the URI to which it is being redirected. C(none) will not follow
any redirects. Note that C(yes) and C(no) choices are accepted for backwards compatibility,
where C(yes) is the equivalent of C(all) and C(no) is the equivalent of C(safe). C(yes) and C(no)
are deprecated and will be removed in some future version of Ansible.
required: false required: false
choices: [ "yes", "no" ] choices: [ "all", "safe", "none" ]
default: "no" default: "safe"
creates: creates:
description: description:
- a filename, when it already exists, this step will not be run. - a filename, when it already exists, this step will not be run.
@ -231,9 +236,21 @@ def uri(module, url, dest, user, password, body, method, headers, redirects, soc
# To debug # To debug
#httplib2.debug = 4 #httplib2.debug = 4
# Handle Redirects
if redirects == "all" or redirects == "yes":
follow_redirects = True
follow_all_redirects = True
elif redirects == "none":
follow_redirects = False
follow_all_redirects = False
else:
follow_redirects = True
follow_all_redirects = False
# Create a Http object and set some default options. # Create a Http object and set some default options.
h = httplib2.Http(disable_ssl_certificate_validation=True, timeout=socket_timeout) h = httplib2.Http(disable_ssl_certificate_validation=True, timeout=socket_timeout)
h.follow_all_redirects = redirects h.follow_all_redirects = follow_all_redirects
h.follow_redirects = follow_redirects
h.forward_authorization_headers = True h.forward_authorization_headers = True
# If they have a username or password verify they have both, then add them to the request # If they have a username or password verify they have both, then add them to the request
@ -272,7 +289,7 @@ def uri(module, url, dest, user, password, body, method, headers, redirects, soc
headers['If-Modified-Since'] = tstamp headers['If-Modified-Since'] = tstamp
# do safe redirects now, including 307 # do safe redirects now, including 307
h.follow_redirects=True h.follow_redirects=follow_redirects
# Make the request, or try to :) # Make the request, or try to :)
try: try:
@ -312,7 +329,7 @@ def main():
method = dict(required=False, default='GET', choices=['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'OPTIONS']), method = dict(required=False, default='GET', choices=['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'OPTIONS']),
return_content = dict(required=False, default='no', type='bool'), return_content = dict(required=False, default='no', type='bool'),
force_basic_auth = dict(required=False, default='no', type='bool'), force_basic_auth = dict(required=False, default='no', type='bool'),
follow_redirects = dict(required=False, default='no', type='bool'), follow_redirects = dict(required=False, default='safe', choices=['all', 'safe', 'none', 'yes', 'no']),
creates = dict(required=False, default=None), creates = dict(required=False, default=None),
removes = dict(required=False, default=None), removes = dict(required=False, default=None),
status_code = dict(required=False, default=200, type='int'), status_code = dict(required=False, default=200, type='int'),
@ -335,7 +352,7 @@ def main():
dest = module.params['dest'] dest = module.params['dest']
return_content = module.params['return_content'] return_content = module.params['return_content']
force_basic_auth = module.params['force_basic_auth'] force_basic_auth = module.params['force_basic_auth']
follow_redirects = module.params['follow_redirects'] redirects = module.params['follow_redirects']
creates = module.params['creates'] creates = module.params['creates']
removes = module.params['removes'] removes = module.params['removes']
status_code = int(module.params['status_code']) status_code = int(module.params['status_code'])
@ -372,11 +389,6 @@ def main():
if force_basic_auth: if force_basic_auth:
dict_headers["Authorization"] = "Basic {0}".format(base64.b64encode("{0}:{1}".format(user, password))) dict_headers["Authorization"] = "Basic {0}".format(base64.b64encode("{0}:{1}".format(user, password)))
# Redirects
if follow_redirects:
redirects = True
else:
redirects = False
# Make the request # Make the request
resp, content, dest = uri(module, url, dest, user, password, body, method, dict_headers, redirects, socket_timeout) resp, content, dest = uri(module, url, dest, user, password, body, method, dict_headers, redirects, socket_timeout)

Loading…
Cancel
Save