Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
fd038d37
Commit
fd038d37
authored
Mar 10, 2013
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2273 from dorfsmay/pullreq-use_proxy
Added a use_proxy option to get_url.
parents
aae88baf
c9a201eb
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
7 deletions
+30
-7
library/get_url
+30
-7
No files found.
library/get_url
View file @
fd038d37
...
...
@@ -31,6 +31,12 @@ short_description: Downloads files from HTTP, HTTPS, or FTP to node
description:
- Downloads files from HTTP, HTTPS, or FTP to the remote server. The remote
server I(must) have direct access to the remote resource.
- By default, if an environment variable C(<protocol>_proxy) is set on
the target host, requests will be sent through that proxy. This
behaviour can be overriden by setting a variable for this task
(see `setting the environment
<http://ansible.cc/docs/playbooks2.html#setting-the-environment-and-working-with-proxies>`_),
or by using the use_proxy option.
version_added: "0.6"
options:
url:
...
...
@@ -56,6 +62,13 @@ options:
choices: [ "yes", "no" ]
default: "no"
aliases: [ "thirsty" ]
use_proxy:
description:
- if C(no), it will not use a proxy, even if one is defined by
in an environment variable on the target hosts.
required: false
default: yes
choices: [yes, no]
others:
description:
- all arguments accepted by the M(file) module also work here
...
...
@@ -94,7 +107,7 @@ def url_filename(url):
return
'index.html'
return
fn
def
url_do_get
(
module
,
url
,
dest
):
def
url_do_get
(
module
,
url
,
dest
,
use_proxy
):
"""
Get url and return request and info
Credits: http://stackoverflow.com/questions/7006574/how-to-download-file-from-ftp
...
...
@@ -103,7 +116,10 @@ def url_do_get(module, url, dest):
USERAGENT
=
'ansible-httpget'
info
=
dict
(
url
=
url
,
dest
=
dest
)
r
=
None
handlers
=
[]
parsed
=
urlparse
.
urlparse
(
url
)
if
'@'
in
parsed
[
1
]:
credentials
,
netloc
=
parsed
[
1
]
.
split
(
'@'
,
1
)
if
':'
in
credentials
:
...
...
@@ -123,12 +139,17 @@ def url_do_get(module, url, dest):
authhandler
=
urllib2
.
HTTPBasicAuthHandler
(
passman
)
# create the AuthHandler
handlers
.
append
(
authhandler
)
opener
=
urllib2
.
build_opener
(
authhandler
)
urllib2
.
install_opener
(
opener
)
#reconstruct url without credentials
url
=
urlparse
.
urlunparse
(
parsed
)
if
not
use_proxy
:
proxyhandler
=
urllib2
.
ProxyHandler
({})
handlers
.
append
(
proxyhandler
)
opener
=
urllib2
.
build_opener
(
*
handlers
)
urllib2
.
install_opener
(
opener
)
request
=
urllib2
.
Request
(
url
)
request
.
add_header
(
'User-agent'
,
USERAGENT
)
...
...
@@ -151,14 +172,14 @@ def url_do_get(module, url, dest):
return
r
,
info
def
url_get
(
module
,
url
,
dest
):
def
url_get
(
module
,
url
,
dest
,
use_proxy
):
"""
Download url and store at dest.
If dest is a directory, determine filename from url.
Return (tempfile, info about the request)
"""
req
,
info
=
url_do_get
(
module
,
url
,
dest
)
req
,
info
=
url_do_get
(
module
,
url
,
dest
,
use_proxy
)
# TODO: should really handle 304, but how? src file could exist (and be newer) but empty
if
info
[
'status'
]
==
304
:
...
...
@@ -195,7 +216,8 @@ def main():
argument_spec
=
dict
(
url
=
dict
(
required
=
True
),
dest
=
dict
(
required
=
True
),
force
=
dict
(
default
=
'no'
,
aliases
=
[
'thirsty'
],
type
=
'bool'
)
force
=
dict
(
default
=
'no'
,
aliases
=
[
'thirsty'
],
type
=
'bool'
),
use_proxy
=
dict
(
default
=
'yes'
,
type
=
'bool'
)
),
add_file_common_args
=
True
)
...
...
@@ -203,6 +225,7 @@ def main():
url
=
module
.
params
[
'url'
]
dest
=
os
.
path
.
expanduser
(
module
.
params
[
'dest'
])
force
=
module
.
params
[
'force'
]
use_proxy
=
module
.
params
[
'use_proxy'
]
if
os
.
path
.
isdir
(
dest
):
dest
=
os
.
path
.
join
(
dest
,
url_filename
(
url
))
...
...
@@ -212,7 +235,7 @@ def main():
module
.
exit_json
(
msg
=
"file already exists"
,
dest
=
dest
,
url
=
url
,
changed
=
False
)
# download to tmpsrc
tmpsrc
,
info
=
url_get
(
module
,
url
,
dest
)
tmpsrc
,
info
=
url_get
(
module
,
url
,
dest
,
use_proxy
)
md5sum_src
=
None
md5sum_dest
=
None
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment