Add "timeout" option to Docker module

This commit is contained in:
Pavel Derendyaev 2016-01-09 21:01:02 +03:00 committed by Matt Clay
parent abcae97422
commit 3129154a2a

View file

@ -359,6 +359,12 @@ options:
required: false required: false
default: 10 default: 10
version_added: "2.0" version_added: "2.0"
timeout:
description:
- Docker daemon response timeout in seconds.
required: false
default: 60
version_added: "2.1"
author: author:
- "Cove Schneider (@cove)" - "Cove Schneider (@cove)"
- "Joshua Conner (@joshuaconner)" - "Joshua Conner (@joshuaconner)"
@ -485,6 +491,7 @@ EXAMPLES = '''
HAS_DOCKER_PY = True HAS_DOCKER_PY = True
DEFAULT_DOCKER_API_VERSION = None DEFAULT_DOCKER_API_VERSION = None
DEFAULT_TIMEOUT_SECONDS = 60
import sys import sys
import json import json
@ -508,9 +515,11 @@ if HAS_DOCKER_PY:
# docker-py 1.2+ # docker-py 1.2+
import docker.constants import docker.constants
DEFAULT_DOCKER_API_VERSION = docker.constants.DEFAULT_DOCKER_API_VERSION DEFAULT_DOCKER_API_VERSION = docker.constants.DEFAULT_DOCKER_API_VERSION
DEFAULT_TIMEOUT_SECONDS = docker.constants.DEFAULT_TIMEOUT_SECONDS
except (ImportError, AttributeError): except (ImportError, AttributeError):
# docker-py less than 1.2 # docker-py less than 1.2
DEFAULT_DOCKER_API_VERSION = docker.client.DEFAULT_DOCKER_API_VERSION DEFAULT_DOCKER_API_VERSION = docker.client.DEFAULT_DOCKER_API_VERSION
DEFAULT_TIMEOUT_SECONDS = docker.client.DEFAULT_TIMEOUT_SECONDS
def _human_to_bytes(number): def _human_to_bytes(number):
@ -714,6 +723,7 @@ class DockerManager(object):
docker_url = 'unix://var/run/docker.sock' docker_url = 'unix://var/run/docker.sock'
docker_api_version = module.params.get('docker_api_version') docker_api_version = module.params.get('docker_api_version')
timeout = module.params.get('timeout')
tls_client_cert = module.params.get('tls_client_cert', None) tls_client_cert = module.params.get('tls_client_cert', None)
if not tls_client_cert and env_cert_path: if not tls_client_cert and env_cert_path:
@ -778,7 +788,8 @@ class DockerManager(object):
self.client = docker.Client(base_url=docker_url, self.client = docker.Client(base_url=docker_url,
version=docker_api_version, version=docker_api_version,
tls=tls_config) tls=tls_config,
timeout=timeout)
self.docker_py_versioninfo = get_docker_py_versioninfo() self.docker_py_versioninfo = get_docker_py_versioninfo()
@ -1795,6 +1806,7 @@ def main():
read_only = dict(default=None, type='bool'), read_only = dict(default=None, type='bool'),
labels = dict(default={}, type='dict'), labels = dict(default={}, type='dict'),
stop_timeout = dict(default=10, type='int'), stop_timeout = dict(default=10, type='int'),
timeout = dict(required=False, default=DEFAULT_TIMEOUT_SECONDS, type='int'),
), ),
required_together = ( required_together = (
['tls_client_cert', 'tls_client_key'], ['tls_client_cert', 'tls_client_key'],