Update identity_group_info to new sdk

The following changes were made:

* Update identity_group_info to use the new openstacksdk
* Added identity_group_info role to test the module

Change-Id: I24e64c9455618952ee612d7413882f0ac022189f
This commit is contained in:
Arx Cruz 2022-04-26 13:47:09 +02:00 committed by Jakob Meng
parent 80ef209336
commit a6805cd019
4 changed files with 90 additions and 20 deletions

View File

@ -71,6 +71,8 @@
floating_ip_info
group
identity_domain_info
identity_group_info
identity_role
identity_user
identity_user_info
identity_role

View File

@ -0,0 +1,74 @@
---
- name: List group by domain_id
openstack.cloud.identity_group_info:
cloud: "{{ cloud }}"
domain: default
register: group_domain
- name: Assert groups were returned
assert:
that:
- group_domain.groups | length > 0
- group_domain.groups[0].domain_id == 'default'
- group_domain.groups[0].id is defined
- group_domain.groups[0].description is defined
- group_domain.groups[0].name is defined
- name: List group by domain_id and group
openstack.cloud.identity_group_info:
cloud: "{{ cloud }}"
domain: default
name: admins
register: groups_info
- name: Assert groups by domain_id and grouph returned
assert:
that:
- groups_info.groups | length > 0
- groups_info.groups[0].domain_id == 'default'
- groups_info.groups[0].id is defined
- groups_info.groups[0].description is defined
- groups_info.groups[0].name is defined
- name: List group by filter
openstack.cloud.identity_group_info:
cloud: "{{ cloud }}"
domain: default
filters:
name: admins
register: groups_filter
- name: Assert group by filter returned
assert:
that:
- groups_filter.groups | length > 0
- groups_filter.groups[0].domain_id == 'default'
- groups_filter.groups[0].id is defined
- groups_filter.groups[0].description is defined
- groups_filter.groups[0].name is defined
- name: Verify returned values of group info
assert:
that:
- item in groups_info.groups[0]
loop:
- description
- domain_id
- id
- name
- name: List group by group name
openstack.cloud.identity_group_info:
cloud: "{{ cloud }}"
name: admins
register: groups_name
- name: Assert group by name returned
assert:
that:
- groups_name.groups | length > 0
- groups_name.groups[0].domain_id == 'default'
- groups_name.groups[0].id is defined
- groups_name.groups[0].description is defined
- groups_name.groups[0].name is defined
- groups_name.groups[0].name == 'admins'

View File

@ -17,6 +17,7 @@
when: sdk_version is version(0.28, '>=')
- { role: floating_ip_info, tags: floating_ip_info }
- { role: identity_domain_info, tags: identity_domain_info }
- { role: identity_group_info, tags: identity_group_info }
- { role: identity_user, tags: identity_user }
- { role: identity_user_info, tags: identity_user_info }
- { role: identity_role, tags: identity_role }

View File

@ -87,10 +87,11 @@ EXAMPLES = '''
RETURN = '''
openstack_groups:
groups:
description: Dictionary describing all the matching groups.
returned: always, but can be null
type: complex
returned: always, but can be an empty list
type: list
elements: dict
contains:
name:
description: Name given to the group.
@ -126,26 +127,18 @@ class IdentityGroupInfoModule(OpenStackModule):
def run(self):
name = self.params['name']
domain = self.params['domain']
filters = self.params['filters']
filters = self.params['filters'] or {}
args = {}
if domain:
try:
# We assume admin is passing domain id
dom = self.conn.get_domain(domain)['id']
domain = dom
except Exception:
# If we fail, maybe admin is passing a domain name.
# Note that domains have unique names, just like id.
dom = self.conn.search_domains(filters={'name': domain})
if dom:
domain = dom[0]['id']
else:
self.fail_json(msg='Domain name or ID does not exist')
dom = self.conn.identity.find_domain(domain)
if dom:
args['domain_id'] = dom['id']
else:
self.fail_json(msg='Domain name or ID does not exist')
if not filters:
filters = {}
groups = self.conn.search_groups(name, filters, domain_id=domain)
groups = self.conn.search_groups(name, filters, **args)
groups = [g.to_dict(computed=False) for g in groups]
self.exit_json(changed=False, groups=groups)