mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-03-16 12:06:29 +00:00
Add typing to Docker Stack modules. Clean modules up.
This commit is contained in:
parent
3350283bcc
commit
86031cd7f6
@ -158,6 +158,7 @@ import json
|
||||
import os
|
||||
import tempfile
|
||||
import traceback
|
||||
import typing as t
|
||||
from time import sleep
|
||||
|
||||
from ansible.module_utils.common.text.converters import to_native
|
||||
@ -183,7 +184,9 @@ except ImportError:
|
||||
HAS_YAML = False
|
||||
|
||||
|
||||
def docker_stack_services(client, stack_name):
|
||||
def docker_stack_services(
|
||||
client: AnsibleModuleDockerClient, stack_name: str
|
||||
) -> list[str]:
|
||||
dummy_rc, out, err = client.call_cli(
|
||||
"stack", "services", stack_name, "--format", "{{.Name}}"
|
||||
)
|
||||
@ -192,7 +195,9 @@ def docker_stack_services(client, stack_name):
|
||||
return to_native(out).strip().split("\n")
|
||||
|
||||
|
||||
def docker_service_inspect(client, service_name):
|
||||
def docker_service_inspect(
|
||||
client: AnsibleModuleDockerClient, service_name: str
|
||||
) -> dict[str, t.Any] | None:
|
||||
rc, out, dummy_err = client.call_cli("service", "inspect", service_name)
|
||||
if rc != 0:
|
||||
return None
|
||||
@ -200,7 +205,9 @@ def docker_service_inspect(client, service_name):
|
||||
return ret
|
||||
|
||||
|
||||
def docker_stack_deploy(client, stack_name, compose_files):
|
||||
def docker_stack_deploy(
|
||||
client: AnsibleModuleDockerClient, stack_name: str, compose_files: list[str]
|
||||
) -> tuple[int, str, str]:
|
||||
command = ["stack", "deploy"]
|
||||
if client.module.params["prune"]:
|
||||
command += ["--prune"]
|
||||
@ -217,14 +224,21 @@ def docker_stack_deploy(client, stack_name, compose_files):
|
||||
return rc, to_native(out), to_native(err)
|
||||
|
||||
|
||||
def docker_stack_inspect(client, stack_name):
|
||||
ret = {}
|
||||
def docker_stack_inspect(
|
||||
client: AnsibleModuleDockerClient, stack_name: str
|
||||
) -> dict[str, dict[str, t.Any] | None]:
|
||||
ret: dict[str, dict[str, t.Any] | None] = {}
|
||||
for service_name in docker_stack_services(client, stack_name):
|
||||
ret[service_name] = docker_service_inspect(client, service_name)
|
||||
return ret
|
||||
|
||||
|
||||
def docker_stack_rm(client, stack_name, retries, interval):
|
||||
def docker_stack_rm(
|
||||
client: AnsibleModuleDockerClient,
|
||||
stack_name: str,
|
||||
retries: int,
|
||||
interval: int | float,
|
||||
) -> tuple[int, str, str]:
|
||||
command = ["stack", "rm", stack_name]
|
||||
if not client.module.params["detach"]:
|
||||
command += ["--detach=false"]
|
||||
@ -237,7 +251,7 @@ def docker_stack_rm(client, stack_name, retries, interval):
|
||||
return rc, to_native(out), to_native(err)
|
||||
|
||||
|
||||
def main():
|
||||
def main() -> None:
|
||||
client = AnsibleModuleDockerClient(
|
||||
argument_spec={
|
||||
"name": {"type": "str", "required": True},
|
||||
@ -258,10 +272,10 @@ def main():
|
||||
)
|
||||
|
||||
if not HAS_JSONDIFF:
|
||||
return client.fail("jsondiff is not installed, try 'pip install jsondiff'")
|
||||
client.fail("jsondiff is not installed, try 'pip install jsondiff'")
|
||||
|
||||
if not HAS_YAML:
|
||||
return client.fail("yaml is not installed, try 'pip install pyyaml'")
|
||||
client.fail("yaml is not installed, try 'pip install pyyaml'")
|
||||
|
||||
try:
|
||||
state = client.module.params["state"]
|
||||
|
||||
@ -85,16 +85,7 @@ from ansible_collections.community.docker.plugins.module_utils._common_cli impor
|
||||
)
|
||||
|
||||
|
||||
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():
|
||||
def main() -> None:
|
||||
client = AnsibleModuleDockerClient(
|
||||
argument_spec={},
|
||||
supports_check_mode=True,
|
||||
|
||||
@ -84,6 +84,7 @@ EXAMPLES = r"""
|
||||
|
||||
import json
|
||||
import traceback
|
||||
import typing as t
|
||||
|
||||
from ansible.module_utils.common.text.converters import to_native
|
||||
|
||||
@ -93,16 +94,7 @@ from ansible_collections.community.docker.plugins.module_utils._common_cli impor
|
||||
)
|
||||
|
||||
|
||||
def docker_stack_task(module, stack_name):
|
||||
docker_bin = module.get_bin_path("docker", required=True)
|
||||
rc, out, err = module.run_command(
|
||||
[docker_bin, "stack", "ps", stack_name, "--format={{json .}}"]
|
||||
)
|
||||
|
||||
return rc, out.strip(), err.strip()
|
||||
|
||||
|
||||
def main():
|
||||
def main() -> None:
|
||||
client = AnsibleModuleDockerClient(
|
||||
argument_spec={"name": {"type": "str", "required": True}},
|
||||
supports_check_mode=True,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user