ansible-collections-openstack/plugins/modules/catalog_service_info.py
Jakob Meng 1b38b7c500 Properly documented openstacksdk version requirements
With "extends_documentation_fragment: ['openstack.cloud.openstack']"
it is not necessary to list required Python libraries in section
'requirements' of DOCUMENTATION docstring in modules. Ansible will
merge requirements from doc fragments and DOCUMENTATION docstring
which previously resulted in duplicates such as in server module [0]:

* openstacksdk
* openstacksdk >= 0.36, < 0.99.0
* python >= 3.6

When removing the 'requirements' section from server module, then
Ansible will list openstacksdk once only:

* openstacksdk >= 0.36, < 0.99.0
* python >= 3.6

To see what documentation Ansible will produce for server module run:

  ansible-doc --type module openstack.cloud.server

[0] https://docs.ansible.com/ansible/latest/collections/openstack/\
    cloud/server_module.html

Change-Id: I727ed95ee480bb644b5a533f6a9526973677064c
2023-01-16 13:51:01 +01:00

101 lines
2.4 KiB
Python

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright (c) 2022 by Red Hat, Inc.
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
DOCUMENTATION = r'''
module: catalog_service_info
short_description: Retrieve information about services from OpenStack
author: OpenStack Ansible SIG
description:
- Retrieve information about services from OpenStack.
options:
name:
description:
- Name or ID of the service.
type: str
extends_documentation_fragment:
- openstack.cloud.openstack
'''
EXAMPLES = r'''
- name: Fetch all services
openstack.cloud.catalog_service_info:
cloud: devstack
- name: Fetch a single service
openstack.cloud.catalog_service_info:
cloud: devstack
name: heat
'''
RETURN = r'''
services:
description: List of dictionaries the services.
returned: always
type: list
elements: dict
contains:
id:
description: Service ID.
type: str
sample: "3292f020780b4d5baf27ff7e1d224c44"
name:
description: Service name.
type: str
sample: "glance"
type:
description: Service type.
type: str
sample: "image"
description:
description: Service description.
type: str
sample: "OpenStack Image Service"
is_enabled:
description: Service status.
type: bool
sample: True
links:
description: Link of the service
type: str
sample: http://10.0.0.1/identity/v3/services/0ae87
'''
from ansible_collections.openstack.cloud.plugins.module_utils.openstack import (
OpenStackModule
)
class CatalogServiceInfoModule(OpenStackModule):
argument_spec = dict(
name=dict(),
)
module_kwargs = dict(
supports_check_mode=True,
)
def run(self):
name_or_id = self.params['name']
if name_or_id:
service = self.conn.identity.find_service(name_or_id)
services = [service] if service else []
else:
services = self.conn.identity.services()
self.exit_json(changed=False,
services=[s.to_dict(computed=False) for s in services])
def main():
module = CatalogServiceInfoModule()
module()
if __name__ == "__main__":
main()