Fix tower_* modules **params kwargs (#40137)

* Add cleaning function to handle **params

The cleaning function is only added to tower modules which pass a `**params`
argument as an unpacked dictionnary to the tower-cli method calls.

Fix #39745

* Remove previous code added only for tower_role

In 872a7b4, the `update_resources` function was modified so that it would clear unwanted
parameters. However, this behaviour is desired for other modules too, modified in
another commit. (see tower_clean_params).
This commit is contained in:
Pierre Roux 2018-05-26 01:03:12 +02:00 committed by Adam Miller
commit 81de7582d9
4 changed files with 8 additions and 12 deletions

View file

@ -45,7 +45,7 @@ def tower_auth_config(module):
it will attempt to fetch values from the module pararms and it will attempt to fetch values from the module pararms and
only pass those values that have been set. only pass those values that have been set.
''' '''
config_file = module.params.get('tower_config_file') config_file = module.params.pop('tower_config_file', None)
if config_file: if config_file:
config_file = os.path.expanduser(config_file) config_file = os.path.expanduser(config_file)
if not os.path.exists(config_file): if not os.path.exists(config_file):
@ -57,16 +57,16 @@ def tower_auth_config(module):
return parser.string_to_dict(f.read()) return parser.string_to_dict(f.read())
else: else:
auth_config = {} auth_config = {}
host = module.params.get('tower_host') host = module.params.pop('tower_host', None)
if host: if host:
auth_config['host'] = host auth_config['host'] = host
username = module.params.get('tower_username') username = module.params.pop('tower_username', None)
if username: if username:
auth_config['username'] = username auth_config['username'] = username
password = module.params.get('tower_password') password = module.params.pop('tower_password', None)
if password: if password:
auth_config['password'] = password auth_config['password'] = password
verify_ssl = module.params.get('tower_verify_ssl') verify_ssl = module.params.pop('tower_verify_ssl', None)
if verify_ssl is not None: if verify_ssl is not None:
auth_config['verify_ssl'] = verify_ssl auth_config['verify_ssl'] = verify_ssl
return auth_config return auth_config

View file

@ -134,7 +134,7 @@ def main():
name = module.params.get('name') name = module.params.get('name')
inventory = module.params.get('inventory') inventory = module.params.get('inventory')
credential = module.params.get('credential') credential = module.params.get('credential')
state = module.params.get('state') state = module.params.pop('state')
variables = module.params.get('variables') variables = module.params.get('variables')
if variables: if variables:

View file

@ -222,7 +222,7 @@ def main():
module.fail_json(msg='ansible-tower-cli required for this module') module.fail_json(msg='ansible-tower-cli required for this module')
name = module.params.get('name') name = module.params.get('name')
state = module.params.get('state') state = module.params.pop('state')
json_output = {'job_template': name, 'state': state} json_output = {'job_template': name, 'state': state}
tower_auth = tower_auth_config(module) tower_auth = tower_auth_config(module)

View file

@ -87,10 +87,6 @@ def update_resources(module, p):
by name using their unique field (identity) by name using their unique field (identity)
''' '''
params = p.copy() params = p.copy()
for key in p:
if key.startswith('tower_'):
params.pop(key)
params.pop('state', None)
identity_map = { identity_map = {
'user': 'username', 'user': 'username',
'team': 'name', 'team': 'name',
@ -134,7 +130,7 @@ def main():
module.fail_json(msg='ansible-tower-cli required for this module') module.fail_json(msg='ansible-tower-cli required for this module')
role_type = module.params.pop('role') role_type = module.params.pop('role')
state = module.params.get('state') state = module.params.pop('state')
json_output = {'role': role_type, 'state': state} json_output = {'role': role_type, 'state': state}