openstack: fix parameter handling when cloud provided as dict (#42899)
* openstack: fix parameter handling when cloud provided as dict If a cloud is provided as dictionary: * Do not assert that 'interface' parameter is None. Instead, assert that it is 'public'. * Assert that 'auth_type' parameter is not set. Fixes #42858 * os_user: Include domain parameter in user lookup If a "domain" parameter is provided, use it in looking up whether the user already exists. Fixes #42901 * os_user: Include domain parameter in user deletion If a "domain" parameter is provided, use it in deleting the user also. Fixes #42901
This commit is contained in:
parent
60a3b0bcf0
commit
e25dac946f
2 changed files with 11 additions and 6 deletions
|
@ -134,11 +134,12 @@ def openstack_cloud_from_module(module, min_version='0.12.0'):
|
||||||
" excluded.")
|
" excluded.")
|
||||||
for param in (
|
for param in (
|
||||||
'auth', 'region_name', 'verify',
|
'auth', 'region_name', 'verify',
|
||||||
'cacert', 'key', 'api_timeout', 'interface'):
|
'cacert', 'key', 'api_timeout', 'auth_type'):
|
||||||
if module.params[param] is not None:
|
if module.params[param] is not None:
|
||||||
module.fail_json(msg=fail_message.format(param=param))
|
module.fail_json(msg=fail_message.format(param=param))
|
||||||
if module.params['auth_type'] != 'password':
|
# For 'interface' parameter, fail if we receive a non-default value
|
||||||
module.fail_json(msg=fail_message.format(param='auth_type'))
|
if module.params['interface'] != 'public':
|
||||||
|
module.fail_json(msg=fail_message.format(param='interface'))
|
||||||
return sdk, sdk.connect(**cloud_config)
|
return sdk, sdk.connect(**cloud_config)
|
||||||
else:
|
else:
|
||||||
return sdk, sdk.connect(
|
return sdk, sdk.connect(
|
||||||
|
|
|
@ -210,11 +210,12 @@ def main():
|
||||||
|
|
||||||
sdk, cloud = openstack_cloud_from_module(module)
|
sdk, cloud = openstack_cloud_from_module(module)
|
||||||
try:
|
try:
|
||||||
user = cloud.get_user(name)
|
|
||||||
|
|
||||||
domain_id = None
|
domain_id = None
|
||||||
if domain:
|
if domain:
|
||||||
domain_id = _get_domain_id(cloud, domain)
|
domain_id = _get_domain_id(cloud, domain)
|
||||||
|
user = cloud.get_user(name, domain_id=domain_id)
|
||||||
|
else:
|
||||||
|
user = cloud.get_user(name)
|
||||||
|
|
||||||
if state == 'present':
|
if state == 'present':
|
||||||
if update_password in ('always', 'on_create'):
|
if update_password in ('always', 'on_create'):
|
||||||
|
@ -279,6 +280,9 @@ def main():
|
||||||
elif state == 'absent':
|
elif state == 'absent':
|
||||||
if user is None:
|
if user is None:
|
||||||
changed = False
|
changed = False
|
||||||
|
else:
|
||||||
|
if domain:
|
||||||
|
cloud.delete_user(user['id'], domain_id=domain_id)
|
||||||
else:
|
else:
|
||||||
cloud.delete_user(user['id'])
|
cloud.delete_user(user['id'])
|
||||||
changed = True
|
changed = True
|
||||||
|
|
Loading…
Reference in a new issue