Make easy_install module actually work.
mpdehaan requested in ansible/ansible#795 that globals be removed. The response was to remove the lines with the word 'global', but not the actual use of global variables. Which makes the module break silently. Updated to use local variables.
This commit is contained in:
parent
e3ffe74c33
commit
fdf7f3ae6d
1 changed files with 16 additions and 21 deletions
37
easy_install
37
easy_install
|
@ -19,14 +19,9 @@
|
||||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
EASY_INSTALL = None
|
def _find_easy_install(env):
|
||||||
VIRTUALENV = '/usr/local/bin/virtualenv'
|
if env:
|
||||||
ENV = None
|
return os.path.join(env, 'bin', 'easy_install')
|
||||||
|
|
||||||
|
|
||||||
def _find_easy_install():
|
|
||||||
if ENV:
|
|
||||||
return os.path.join(ENV, 'bin', 'easy_install')
|
|
||||||
|
|
||||||
paths = ['/usr/local/bin', '/usr/bin']
|
paths = ['/usr/local/bin', '/usr/bin']
|
||||||
|
|
||||||
|
@ -36,15 +31,15 @@ def _find_easy_install():
|
||||||
return e
|
return e
|
||||||
|
|
||||||
|
|
||||||
def _ensure_virtualenv():
|
def _ensure_virtualenv(env, virtualenv):
|
||||||
if os.path.exists(os.path.join(ENV, 'bin', 'activate')):
|
if os.path.exists(os.path.join(env, 'bin', 'activate')):
|
||||||
return 0, '', ''
|
return 0, '', ''
|
||||||
else:
|
else:
|
||||||
return _run('%s %s' % (VIRTUALENV, ENV))
|
return _run('%s %s' % (virtualenv, env))
|
||||||
|
|
||||||
|
|
||||||
def _is_package_installed(name):
|
def _is_package_installed(name, easy_install):
|
||||||
cmd = '%s --dry-run %s' % (EASY_INSTALL, name)
|
cmd = '%s --dry-run %s' % (easy_install, name)
|
||||||
rc, status_stdout, status_stderr = _run(cmd)
|
rc, status_stdout, status_stderr = _run(cmd)
|
||||||
return not ('Reading' in status_stdout or 'Downloading' in status_stdout)
|
return not ('Reading' in status_stdout or 'Downloading' in status_stdout)
|
||||||
|
|
||||||
|
@ -66,15 +61,15 @@ def main():
|
||||||
module = AnsibleModule(argument_spec=arg_spec)
|
module = AnsibleModule(argument_spec=arg_spec)
|
||||||
|
|
||||||
name = module.params['name']
|
name = module.params['name']
|
||||||
ENV = module.params['virtualenv']
|
env = module.params['virtualenv']
|
||||||
EASY_INSTALL = _find_easy_install()
|
easy_install = _find_easy_install(env)
|
||||||
|
|
||||||
rc = 0
|
rc = 0
|
||||||
err = ''
|
err = ''
|
||||||
out = ''
|
out = ''
|
||||||
|
|
||||||
if ENV:
|
if env:
|
||||||
rc_venv, out_venv, err_venv = _ensure_virtualenv()
|
rc_venv, out_venv, err_venv = _ensure_virtualenv(env, '/usr/local/bin/virtualenv')
|
||||||
|
|
||||||
rc += rc_venv
|
rc += rc_venv
|
||||||
out += out_venv
|
out += out_venv
|
||||||
|
@ -82,10 +77,10 @@ def main():
|
||||||
|
|
||||||
cmd = None
|
cmd = None
|
||||||
changed = False
|
changed = False
|
||||||
installed = _is_package_installed(name)
|
installed = _is_package_installed(name, easy_install)
|
||||||
|
|
||||||
if not installed:
|
if not installed:
|
||||||
cmd = '%s %s' % (EASY_INSTALL, name)
|
cmd = '%s %s' % (easy_install, name)
|
||||||
rc_pip, out_pip, err_pip = _run(cmd)
|
rc_pip, out_pip, err_pip = _run(cmd)
|
||||||
|
|
||||||
rc += rc_pip
|
rc += rc_pip
|
||||||
|
@ -97,8 +92,8 @@ def main():
|
||||||
if rc != 0:
|
if rc != 0:
|
||||||
module.fail_json(msg=err, cmd=cmd)
|
module.fail_json(msg=err, cmd=cmd)
|
||||||
|
|
||||||
module.exit_json(changed=changed, binary=EASY_INSTALL,
|
module.exit_json(changed=changed, binary=easy_install,
|
||||||
name=name, virtualenv=ENV)
|
name=name, virtualenv=env)
|
||||||
|
|
||||||
# this is magic, see lib/ansible/module_common.py
|
# this is magic, see lib/ansible/module_common.py
|
||||||
#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
|
#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
|
||||||
|
|
Loading…
Reference in a new issue