1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

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:
Jeremy Penner 2012-08-14 23:31:13 -04:00
parent de221e6b4b
commit 09d5812cbb

View file

@ -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>>