cs_account: Implement role parameter support (#46166)
This commit is contained in:
parent
ac9d506a61
commit
382641ff24
1 changed files with 29 additions and 1 deletions
|
@ -71,6 +71,10 @@ options:
|
||||||
description:
|
description:
|
||||||
- Domain the account is related to.
|
- Domain the account is related to.
|
||||||
default: 'ROOT'
|
default: 'ROOT'
|
||||||
|
role:
|
||||||
|
description:
|
||||||
|
- Creates the account under the specified role name or id.
|
||||||
|
version_added: 2.8
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- State of the account.
|
- State of the account.
|
||||||
|
@ -96,6 +100,7 @@ EXAMPLES = '''
|
||||||
first_name: John
|
first_name: John
|
||||||
email: john.doe@example.com
|
email: john.doe@example.com
|
||||||
domain: CUSTOMERS
|
domain: CUSTOMERS
|
||||||
|
role: Domain Admin
|
||||||
|
|
||||||
# Lock an existing account in domain 'CUSTOMERS'
|
# Lock an existing account in domain 'CUSTOMERS'
|
||||||
- local_action:
|
- local_action:
|
||||||
|
@ -158,6 +163,11 @@ domain:
|
||||||
returned: success
|
returned: success
|
||||||
type: string
|
type: string
|
||||||
sample: ROOT
|
sample: ROOT
|
||||||
|
role:
|
||||||
|
description: The role name of the account
|
||||||
|
returned: success
|
||||||
|
type: string
|
||||||
|
sample: Domain Admin
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# import cloudstack common
|
# import cloudstack common
|
||||||
|
@ -175,6 +185,7 @@ class AnsibleCloudStackAccount(AnsibleCloudStack):
|
||||||
super(AnsibleCloudStackAccount, self).__init__(module)
|
super(AnsibleCloudStackAccount, self).__init__(module)
|
||||||
self.returns = {
|
self.returns = {
|
||||||
'networkdomain': 'network_domain',
|
'networkdomain': 'network_domain',
|
||||||
|
'rolename': 'role',
|
||||||
}
|
}
|
||||||
self.account = None
|
self.account = None
|
||||||
self.account_types = {
|
self.account_types = {
|
||||||
|
@ -183,6 +194,21 @@ class AnsibleCloudStackAccount(AnsibleCloudStack):
|
||||||
'domain_admin': 2,
|
'domain_admin': 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_role_id(self):
|
||||||
|
role_param = self.module.params.get('role')
|
||||||
|
role_id = None
|
||||||
|
|
||||||
|
if role_param:
|
||||||
|
role_list = self.query_api('listRoles')
|
||||||
|
for role in role_list['role']:
|
||||||
|
if role_param in [role['name'], role['id']]:
|
||||||
|
role_id = role['id']
|
||||||
|
|
||||||
|
if not role_id:
|
||||||
|
self.module.fail_json(msg="Role not found: %s" % role_param)
|
||||||
|
|
||||||
|
return role_id
|
||||||
|
|
||||||
def get_account_type(self):
|
def get_account_type(self):
|
||||||
account_type = self.module.params.get('account_type')
|
account_type = self.module.params.get('account_type')
|
||||||
return self.account_types[account_type]
|
return self.account_types[account_type]
|
||||||
|
@ -278,7 +304,8 @@ class AnsibleCloudStackAccount(AnsibleCloudStack):
|
||||||
'firstname': self.module.params.get('first_name'),
|
'firstname': self.module.params.get('first_name'),
|
||||||
'lastname': self.module.params.get('last_name'),
|
'lastname': self.module.params.get('last_name'),
|
||||||
'email': self.module.params.get('email'),
|
'email': self.module.params.get('email'),
|
||||||
'timezone': self.module.params.get('timezone')
|
'timezone': self.module.params.get('timezone'),
|
||||||
|
'roleid': self.get_role_id()
|
||||||
}
|
}
|
||||||
if not self.module.check_mode:
|
if not self.module.check_mode:
|
||||||
res = self.query_api('createAccount', **args)
|
res = self.query_api('createAccount', **args)
|
||||||
|
@ -323,6 +350,7 @@ def main():
|
||||||
username=dict(),
|
username=dict(),
|
||||||
password=dict(no_log=True),
|
password=dict(no_log=True),
|
||||||
timezone=dict(),
|
timezone=dict(),
|
||||||
|
role=dict(),
|
||||||
poll_async=dict(type='bool', default=True),
|
poll_async=dict(type='bool', default=True),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue