1b38b7c500
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
101 lines
2.4 KiB
Python
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()
|