Merge pull request #6220 from trevorah/ansible.git

apt_repository: autoinstall python-apt if not available
This commit is contained in:
James Tanner 2014-03-18 16:18:17 -04:00
commit 12340279c4

View file

@ -86,6 +86,16 @@ except ImportError:
VALID_SOURCE_TYPES = ('deb', 'deb-src') VALID_SOURCE_TYPES = ('deb', 'deb-src')
def install_python_apt(module):
if not module.check_mode:
apt_get_path = module.get_bin_path('apt-get')
if apt_get_path:
rc, so, se = module.run_command('%s update && %s install python-apt -y -q' % (apt_get_path, apt_get_path))
if rc == 0:
global apt, apt_pkg
import apt
import apt_pkg
class InvalidSource(Exception): class InvalidSource(Exception):
pass pass
@ -337,12 +347,15 @@ def main():
repo=dict(required=True), repo=dict(required=True),
state=dict(choices=['present', 'absent'], default='present'), state=dict(choices=['present', 'absent'], default='present'),
update_cache = dict(aliases=['update-cache'], type='bool', default='yes'), update_cache = dict(aliases=['update-cache'], type='bool', default='yes'),
# this should not be needed, but exists as a failsafe
install_python_apt=dict(required=False, default="yes", type='bool'),
), ),
supports_check_mode=True, supports_check_mode=True,
) )
if not HAVE_PYTHON_APT: params = module.params
module.fail_json(msg='Could not import python modules: apt_pkg. Please install python-apt package.') if params['install_python_apt'] and not HAVE_PYTHON_APT and not module.check_mode:
install_python_apt(module)
repo = module.params['repo'] repo = module.params['repo']
state = module.params['state'] state = module.params['state']