mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
bc5dde0e25
* First docker stack info approach without tests Fixes results when no stack availabl Fixes sanity test Fixing links Fixes tabs Fixes long line Improving Json Output Changes arguments Lint with autopep8 Moves imports Adds extra line Adds Tests Adds pip and fixes return empty Fixes silly missing else * Adds Tests and Fixes comments * Removes tasks option * Removes arguments * Changes error message * Changes Tests * Add proposals f * Improve output * Change test for output change * Add debug
84 lines
2 KiB
Python
84 lines
2 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright (c) 2020 Jose Angel Munoz (@imjoseangel)
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
from __future__ import (absolute_import, division, print_function)
|
|
|
|
__metaclass__ = type
|
|
|
|
DOCUMENTATION = '''
|
|
---
|
|
module: docker_stack_info
|
|
author: "Jose Angel Munoz (@imjoseangel)"
|
|
short_description: Return information on a docker stack
|
|
description:
|
|
- Retrieve information on docker stacks using the C(docker stack) command
|
|
on the target node (see examples).
|
|
version_added: "1.0.0"
|
|
'''
|
|
|
|
RETURN = '''
|
|
results:
|
|
description: |
|
|
List of dictionaries containing the list of stacks or tasks associated
|
|
to a stack name.
|
|
sample: >
|
|
"results": [{"name":"grafana","namespace":"default","orchestrator":"Kubernetes","services":"2"}]
|
|
returned: always
|
|
type: list
|
|
'''
|
|
|
|
EXAMPLES = '''
|
|
- name: Shows stack info
|
|
community.general.docker_stack_info:
|
|
register: result
|
|
|
|
- name: Show results
|
|
ansible.builtin.debug:
|
|
var: result.results
|
|
'''
|
|
|
|
import json
|
|
from ansible.module_utils.basic import AnsibleModule
|
|
|
|
|
|
def docker_stack_list(module):
|
|
docker_bin = module.get_bin_path('docker', required=True)
|
|
rc, out, err = module.run_command(
|
|
[docker_bin, "stack", "ls", "--format={{json .}}"])
|
|
|
|
return rc, out.strip(), err.strip()
|
|
|
|
|
|
def main():
|
|
module = AnsibleModule(
|
|
argument_spec={
|
|
},
|
|
supports_check_mode=False
|
|
)
|
|
|
|
rc, out, err = docker_stack_list(module)
|
|
|
|
if rc != 0:
|
|
module.fail_json(msg="Error running docker stack. {0}".format(err),
|
|
rc=rc, stdout=out, stderr=err)
|
|
else:
|
|
if out:
|
|
ret = list(
|
|
json.loads(outitem)
|
|
for outitem in out.splitlines())
|
|
|
|
else:
|
|
ret = []
|
|
|
|
module.exit_json(changed=False,
|
|
rc=rc,
|
|
stdout=out,
|
|
stderr=err,
|
|
results=ret)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|