mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-22 02:11:26 -07:00
New docker_stack_module with tests (#576)
* 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
This commit is contained in:
parent
233617fdfa
commit
bc5dde0e25
9 changed files with 201 additions and 0 deletions
84
plugins/modules/cloud/docker/docker_stack_info.py
Normal file
84
plugins/modules/cloud/docker/docker_stack_info.py
Normal file
|
@ -0,0 +1,84 @@
|
|||
#!/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()
|
Loading…
Add table
Add a link
Reference in a new issue