From c63ff6fbc8c39c79be8bb95e2deb233e42f03bf2 Mon Sep 17 00:00:00 2001 From: Jakob Meng Date: Tue, 26 Apr 2022 16:08:33 -0700 Subject: [PATCH] Backported changes to identity_domain_info from master branch Added ci integration tests and updated return value documentation. Reverted function calls which would break backward compatibility with previous collection releases. Change-Id: Ic7915fd3334266783ea5e9d442ef304fa734ca00 (cherry picked from commit b31fdf8320af1a39ecee9277f90213a26b81a5b1) --- .../identity_domain_info/defaults/main.yml | 8 +++ ci/roles/identity_domain_info/tasks/main.yml | 72 +++++++++++++++++++ ci/run-collection.yml | 1 + plugins/modules/identity_domain_info.py | 23 +++--- 4 files changed, 90 insertions(+), 14 deletions(-) create mode 100644 ci/roles/identity_domain_info/defaults/main.yml create mode 100644 ci/roles/identity_domain_info/tasks/main.yml diff --git a/ci/roles/identity_domain_info/defaults/main.yml b/ci/roles/identity_domain_info/defaults/main.yml new file mode 100644 index 00000000..8e69dd2a --- /dev/null +++ b/ci/roles/identity_domain_info/defaults/main.yml @@ -0,0 +1,8 @@ +domain_name: domain_info_test_domain +unexistent_domain_name: domain_info_unexistent_domain +disabled_domain_name: test_domain_disabled +domain_info_fields: + - description + - id + - enabled + - name diff --git a/ci/roles/identity_domain_info/tasks/main.yml b/ci/roles/identity_domain_info/tasks/main.yml new file mode 100644 index 00000000..d6ad6274 --- /dev/null +++ b/ci/roles/identity_domain_info/tasks/main.yml @@ -0,0 +1,72 @@ +--- +- block: + - name: Ensure domain does not exist + openstack.cloud.identity_domain: + cloud: "{{ cloud }}" + state: absent + name: "{{ unexistent_domain_name }}" + - name: Get unexistent domain + openstack.cloud.identity_domain_info: + cloud: "{{ cloud }}" + name: "{{ unexistent_domain_name }}" + register: domain_info + - name: Assert no results returned + assert: + that: not domain_info.openstack_domains + + +- block: + - name: Ensure domain exists + openstack.cloud.identity_domain: + cloud: "{{ cloud }}" + state: present + name: "{{ domain_name }}" + description: "test description" + register: domain + - name: Get domain + openstack.cloud.identity_domain_info: + cloud: "{{ cloud }}" + name: "{{ domain_name }}" + register: domain_info + - name: Assert one result exists + assert: + that: domain_info.openstack_domains | length == 1 + - name: Assert fields are present + assert: + that: item in domain_info.openstack_domains[0] + loop: "{{ domain_info_fields }}" + - name: Assert returned value + assert: + that: + - domain_info.openstack_domains[0].description == domain.domain.description + +- block: + - name: Get all domains + openstack.cloud.identity_domain_info: + cloud: "{{ cloud }}" + register: domain_info + +- block: + - name: Ensure disabled domain exists + openstack.cloud.identity_domain: + cloud: "{{ cloud }}" + state: present + name: "{{ disabled_domain_name }}" + enabled: false + description: "test description" + register: domain + - name: Get filtered domains + openstack.cloud.identity_domain_info: + cloud: "{{ cloud }}" + filters: + enabled: true + register: domain_info + - name: Assert at least one result + assert: + that: domain_info.openstack_domains | length >= 1 + - name: Assert returned value + assert: + that: item.enabled == true + loop: "{{ domain_info.openstack_domains }}" + + diff --git a/ci/run-collection.yml b/ci/run-collection.yml index 0d99531b..44de1651 100644 --- a/ci/run-collection.yml +++ b/ci/run-collection.yml @@ -16,6 +16,7 @@ tags: dns 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_user, tags: identity_user } - { role: identity_user_info, tags: identity_user_info } - { role: identity_role, tags: identity_role } diff --git a/plugins/modules/identity_domain_info.py b/plugins/modules/identity_domain_info.py index f3dec1fd..e0e33cde 100644 --- a/plugins/modules/identity_domain_info.py +++ b/plugins/modules/identity_domain_info.py @@ -18,7 +18,7 @@ options: type: str filters: description: - - A dictionary of meta data to use for further filtering. Elements of + - A dictionary of meta data to use for filtering. Elements of this dictionary may be additional dictionaries. type: dict requirements: @@ -61,7 +61,8 @@ RETURN = ''' openstack_domains: description: has all the OpenStack information about domains returned: always, but can be null - type: complex + type: list + elements: dict contains: id: description: Unique UUID. @@ -89,10 +90,8 @@ class IdentityDomainInfoModule(OpenStackModule): name=dict(required=False, default=None), filters=dict(required=False, type='dict', default=None), ) + module_kwargs = dict( - mutually_exclusive=[ - ['name', 'filters'], - ], supports_check_mode=True ) @@ -100,18 +99,14 @@ class IdentityDomainInfoModule(OpenStackModule): def run(self): name = self.params['name'] - filters = self.params['filters'] + filters = self.params['filters'] or {} + args = {} if name: - # Let's suppose user is passing domain ID - try: - domains = self.conn.get_domain(name) - except Exception: - domains = self.conn.search_domains(filters={'name': name}) - - else: - domains = self.conn.search_domains(filters) + args['name_or_id'] = name + args['filters'] = filters + domains = self.conn.search_domains(**args) self.exit_json(changed=False, openstack_domains=domains)