Implement a '_get_easy_install' helper function to find the desired
'easy_install' executable, modeled on '_get_pip' from the 'pip' module to correctly handle all combinations of explicit executable and virtualenv.
This commit is contained in:
parent
1391add126
commit
c73d8012b4
1 changed files with 31 additions and 1 deletions
|
@ -19,6 +19,8 @@
|
||||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
|
||||||
DOCUMENTATION = '''
|
DOCUMENTATION = '''
|
||||||
---
|
---
|
||||||
module: easy_install
|
module: easy_install
|
||||||
|
@ -92,13 +94,39 @@ def _is_package_installed(module, name, easy_install):
|
||||||
return not ('Reading' in status_stdout or 'Downloading' in status_stdout)
|
return not ('Reading' in status_stdout or 'Downloading' in status_stdout)
|
||||||
|
|
||||||
|
|
||||||
|
def _get_easy_install(module, env=None, executable=None):
|
||||||
|
candidate_easy_inst_basenames = ['easy_install']
|
||||||
|
easy_install = None
|
||||||
|
if executable is not None:
|
||||||
|
if os.path.isabs(executable):
|
||||||
|
easy_install = executable
|
||||||
|
else:
|
||||||
|
candidate_easy_inst_basenames.insert(0, executable)
|
||||||
|
if easy_install is None:
|
||||||
|
if env is None:
|
||||||
|
opt_dirs = []
|
||||||
|
else:
|
||||||
|
# Try easy_install with the virtualenv directory first.
|
||||||
|
opt_dirs = ['%s/bin' % env]
|
||||||
|
for basename in candidate_easy_inst_basenames:
|
||||||
|
easy_install = module.get_bin_path(basename, False, opt_dirs)
|
||||||
|
if easy_install is not None:
|
||||||
|
break
|
||||||
|
# easy_install should have been found by now. The final call to
|
||||||
|
# get_bin_path will trigger fail_json.
|
||||||
|
if easy_install is None:
|
||||||
|
basename = candidate_easy_inst_basenames[0]
|
||||||
|
easy_install = module.get_bin_path(basename, True, opt_dirs)
|
||||||
|
return easy_install
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
arg_spec = dict(
|
arg_spec = dict(
|
||||||
name=dict(required=True),
|
name=dict(required=True),
|
||||||
virtualenv=dict(default=None, required=False),
|
virtualenv=dict(default=None, required=False),
|
||||||
virtualenv_site_packages=dict(default='no', type='bool'),
|
virtualenv_site_packages=dict(default='no', type='bool'),
|
||||||
virtualenv_command=dict(default='virtualenv', required=False),
|
virtualenv_command=dict(default='virtualenv', required=False),
|
||||||
executable=dict(default='easy_install', required=False),
|
executable=dict(default=None, required=False),
|
||||||
)
|
)
|
||||||
|
|
||||||
module = AnsibleModule(argument_spec=arg_spec, supports_check_mode=True)
|
module = AnsibleModule(argument_spec=arg_spec, supports_check_mode=True)
|
||||||
|
@ -106,6 +134,8 @@ def main():
|
||||||
name = module.params['name']
|
name = module.params['name']
|
||||||
env = module.params['virtualenv']
|
env = module.params['virtualenv']
|
||||||
easy_install = module.get_bin_path(module.params['executable'], True, ['%s/bin' % env])
|
easy_install = module.get_bin_path(module.params['executable'], True, ['%s/bin' % env])
|
||||||
|
executable = module.params['executable']
|
||||||
|
easy_install = _get_easy_install(module, env, executable)
|
||||||
site_packages = module.params['virtualenv_site_packages']
|
site_packages = module.params['virtualenv_site_packages']
|
||||||
virtualenv_command = module.params['virtualenv_command']
|
virtualenv_command = module.params['virtualenv_command']
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue