diff --git a/ci/roles/nova_services/tasks/main.yml b/ci/roles/nova_services/tasks/main.yml index 3a9cce88..37c3459d 100644 --- a/ci/roles/nova_services/tasks/main.yml +++ b/ci/roles/nova_services/tasks/main.yml @@ -3,20 +3,22 @@ - name: Get nova compute services info openstack.cloud.compute_service_info: cloud: "{{ cloud }}" - binary: "nova-compute" register: result failed_when: "result.openstack_compute_services | length <= 0" - name: Assert fields assert: that: - - '["availability_zone", "binary", "disabled_reason", "is_forced_down", - "host", "name", "state", "status", "updated_at", "id"] | - difference(result.openstack_compute_services.0.keys()) | length == 0' + - '["availability_zone", "binary", "disabled_reason", "is_forced_down", + "host", "name", "state", "status", "updated_at", "id"] | + difference(result.openstack_compute_services.0.keys()) | length == 0' -- name: Get nova conductor services info - openstack.cloud.compute_service_info: - cloud: "{{ cloud }}" - binary: "nova-conductor" - register: result - failed_when: "result.openstack_compute_services | length <= 0" +- name: Filter compute services. Supported since OpenStack SDK 0.53.0 (Wallaby). + when: sdk_version is version(0.53, '>=') + block: + - name: Get nova compute services info + openstack.cloud.compute_service_info: + cloud: "{{ cloud }}" + binary: "nova-compute" + register: result + failed_when: "result.openstack_compute_services | length <= 0" diff --git a/plugins/modules/compute_service_info.py b/plugins/modules/compute_service_info.py index 5be75bf7..427843b3 100644 --- a/plugins/modules/compute_service_info.py +++ b/plugins/modules/compute_service_info.py @@ -12,11 +12,11 @@ description: options: binary: description: - - Filter by service binary type + - Filter by service binary type. Requires openstacksdk>=0.53. type: str host: description: - - Filter by service host + - Filter by service host. Requires openstacksdk>=0.53. type: str requirements: - "python >= 3.6" @@ -94,21 +94,16 @@ from ansible_collections.openstack.cloud.plugins.module_utils.openstack import O class ComputeServiceInfoModule(OpenStackModule): argument_spec = dict( - binary=dict(required=False, default=None), - host=dict(required=False, default=None), + binary=dict(required=False, default=None, min_ver='0.53.0'), + host=dict(required=False, default=None, min_ver='0.53.0'), ) module_kwargs = dict( supports_check_mode=True ) def run(self): - binary = self.params['binary'] - host = self.params['host'] - filters = {} - if binary: - filters['binary'] = binary - if host: - filters['host'] = host + filters = self.check_versioned(binary=self.params['binary'], host=self.params['host']) + filters = {k: v for k, v in filters.items() if v is not None} services = self.conn.compute.services(**filters) services = [service.to_dict(computed=False) for service in services] self.exit_json(changed=False, openstack_compute_services=services)