Files
ansible-collections-openstack/plugins/modules/stack_info.py
Jakob Meng e4be201f20 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: Ia53c2c34436c7a72080602f5699e82d20f677b8b
2023-01-16 13:52:45 +01:00

108 lines
2.4 KiB
Python

#!/usr/bin/python
# coding: utf-8 -*-
# Copyright (c) 2020, Sagi Shnaidman <sshnaidm@redhat.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
DOCUMENTATION = '''
---
module: stack_info
short_description: Retrive information about Heat stacks
author: OpenStack Ansible SIG
description:
- Get information about Heat stack in openstack
options:
name:
description:
- Name of the stack as a string.
type: str
required: false
status:
description:
- Value of the status of the stack so that you can filter on "available" for example
type: str
required: false
project_id:
description:
- Project ID to be used as filter
type: str
required: false
owner_id:
description:
- Owner (parent) of the stack to be used as a filter
type: str
required: false
extends_documentation_fragment:
- openstack.cloud.openstack
'''
RETURN = '''
stacks:
description: List of dictionaries describing stacks.
type: list
elements: dict
returned: always.
contains:
id:
description: Unique UUID.
type: str
sample: "39007a7e-ee4f-4d13-8283-b4da2e037c69"
status:
description: Stack status.
type: str
'''
EXAMPLES = '''
# Get backups.
- openstack.cloud.stack_info:
register: stack
- openstack.cloud.stack_info:
name: my_stack
register: stack
'''
from ansible_collections.openstack.cloud.plugins.module_utils.openstack import OpenStackModule
class StackInfoModule(OpenStackModule):
module_min_sdk_version = '0.53.0'
argument_spec = dict(
name=dict(required=False, type='str'),
status=dict(required=False, type='str'),
project_id=dict(required=False, type='str'),
owner_id=dict(required=False, type='str')
)
module_kwargs = dict(
supports_check_mode=True
)
def run(self):
data = []
attrs = {}
for param in ['name', 'status', 'project_id', 'owner_id']:
if self.params[param]:
attrs[param] = self.params[param]
for raw in self.conn.orchestration.stacks(**attrs):
dt = raw.to_dict()
dt.pop('location')
data.append(dt)
self.exit_json(
changed=False,
stacks=data
)
def main():
module = StackInfoModule()
module()
if __name__ == '__main__':
main()