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

new patch - adds a 'boolean' function to the module_common class and cleans up

the apt module to use it
This commit is contained in:
Seth Vidal 2012-07-30 13:41:42 -04:00
parent c4c53d545a
commit 21a35bde00
2 changed files with 20 additions and 7 deletions

View file

@ -23,6 +23,9 @@ MODULE_COMMON = """
# == BEGIN DYNAMICALLY INSERTED CODE == # == BEGIN DYNAMICALLY INSERTED CODE ==
MODULE_ARGS = "<<INCLUDE_ANSIBLE_MODULE_ARGS>>" MODULE_ARGS = "<<INCLUDE_ANSIBLE_MODULE_ARGS>>"
BOOLEANS_TRUE = ['yes', 'on', '1', 'true', 1]
BOOLEANS_FALSE = ['no', 'off', '0', 'false', 0]
BOOLEANS = BOOLEANS_TRUE + BOOLEANS_FALSE
# ansible modules can be written in any language. To simplify # ansible modules can be written in any language. To simplify
# development of Python modules, the functions available here # development of Python modules, the functions available here
@ -42,6 +45,7 @@ import shlex
import subprocess import subprocess
import sys import sys
import syslog import syslog
import types
try: try:
from hashlib import md5 as _md5 from hashlib import md5 as _md5
@ -128,6 +132,18 @@ class AnsibleModule(object):
log_args = re.sub(r'password=.+ (.*)', r"password=NOT_LOGGING_PASSWORD \1", self.args) log_args = re.sub(r'password=.+ (.*)', r"password=NOT_LOGGING_PASSWORD \1", self.args)
syslog.syslog(syslog.LOG_NOTICE, 'Invoked with %s' % log_args) syslog.syslog(syslog.LOG_NOTICE, 'Invoked with %s' % log_args)
def boolean(self, arg):
''' return a bool for the arg '''
if type(arg) in types.StringTypes:
arg = arg.lower()
if arg in BOOLEANS_TRUE:
return True
elif arg in BOOLEANS_FALSE:
return False
else:
self.fail_json(msg='Boolean %s not in either boolean list' % arg)
def jsonify(self, data): def jsonify(self, data):
return json.dumps(data) return json.dumps(data)

View file

@ -130,7 +130,7 @@ def main():
if p['package'] is None and p['update_cache'] != 'yes': if p['package'] is None and p['update_cache'] != 'yes':
module.fail_json(msg='pkg=name and/or update-cache=yes is required') module.fail_json(msg='pkg=name and/or update-cache=yes is required')
install_recommends = (p['install_recommends'] == 'yes') install_recommends = module.boolean(p['install_recommends'])
cache = apt.Cache() cache = apt.Cache()
if p['default_release']: if p['default_release']:
@ -138,16 +138,13 @@ def main():
# reopen cache w/ modified config # reopen cache w/ modified config
cache.open(progress=None) cache.open(progress=None)
if p['update_cache'] == 'yes': if modules.boolean(p['update_cache'])
cache.update() cache.update()
cache.open(progress=None) cache.open(progress=None)
if p['package'] == None: if p['package'] == None:
module.exit_json(changed=False) module.exit_json(changed=False)
if p['force'] == 'yes': force_yes = modules.boolean(p['force'])
force_yes = True
else:
force_yes = False
if p['package'].count('=') > 1: if p['package'].count('=') > 1:
module.fail_json(msg='invalid package spec') module.fail_json(msg='invalid package spec')
@ -164,7 +161,7 @@ def main():
install(module, p['package'], cache, default_release=p['default_release'], install(module, p['package'], cache, default_release=p['default_release'],
install_recommends=install_recommends,force=force_yes) install_recommends=install_recommends,force=force_yes)
elif p['state'] == 'removed': elif p['state'] == 'removed':
remove(module, p['package'], cache, purge = p['purge']) remove(module, p['package'], cache, purge = modules.boolean(p['purge']))
# 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>>