diff options
author | Andrew Pashkin <andrew.pashkin@gmx.co.uk> | 2015-05-23 23:17:30 +0300 |
---|---|---|
committer | Andrew Pashkin <andrew.pashkin@gmx.co.uk> | 2015-05-23 23:17:30 +0300 |
commit | 27c174128b054e8217a9a0a5d0e454e7f29546aa (patch) | |
tree | 36f6fd0cfa35bf1e4ee6223be2fec5f542e5af43 | |
parent | b5399d34464475a9aa87c6b928628cd262022cd5 (diff) | |
download | ansible-modules-core-27c174128b054e8217a9a0a5d0e454e7f29546aa.tar.gz |
Add 'docker_api_version' to docker_image
By default docker-py uses latest version of Docker API. This is not
always desireable, and this patch adds option to specify version, that
should be used.
-rw-r--r-- | cloud/docker/docker_image.py | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/cloud/docker/docker_image.py b/cloud/docker/docker_image.py index faf47cd6..10f63a98 100644 --- a/cloud/docker/docker_image.py +++ b/cloud/docker/docker_image.py @@ -65,6 +65,12 @@ options: required: false default: unix://var/run/docker.sock aliases: [] + docker_api_version: + description: + - Remote API version to use. This defaults to the current default as + specified by docker-py. + default: docker-py default remote API version + version_added: "2.0" state: description: - Set the state of the image @@ -137,6 +143,14 @@ if HAS_DOCKER_CLIENT: except ImportError: from docker.client import APIError as DockerAPIError + try: + # docker-py 1.2+ + import docker.constants + DEFAULT_DOCKER_API_VERSION = docker.constants.DEFAULT_DOCKER_API_VERSION + except (ImportError, AttributeError): + # docker-py less than 1.2 + DEFAULT_DOCKER_API_VERSION = docker.client.DEFAULT_DOCKER_API_VERSION + class DockerImageManager: def __init__(self, module): @@ -147,7 +161,10 @@ class DockerImageManager: self.tag = self.module.params.get('tag') self.nocache = self.module.params.get('nocache') docker_url = urlparse(module.params.get('docker_url')) - self.client = docker.Client(base_url=docker_url.geturl(), timeout=module.params.get('timeout')) + self.client = docker.Client( + base_url=docker_url.geturl(), + version=module.params.get('docker_api_version'), + timeout=module.params.get('timeout')) self.changed = False self.log = [] self.error_msg = None @@ -220,14 +237,17 @@ class DockerImageManager: def main(): module = AnsibleModule( argument_spec = dict( - path = dict(required=False, default=None), - dockerfile = dict(required=False, default="Dockerfile"), - name = dict(required=True), - tag = dict(required=False, default="latest"), - nocache = dict(default=False, type='bool'), - state = dict(default='present', choices=['absent', 'present', 'build']), - docker_url = dict(default='unix://var/run/docker.sock'), - timeout = dict(default=600, type='int'), + path = dict(required=False, default=None), + dockerfile = dict(required=False, default="Dockerfile"), + name = dict(required=True), + tag = dict(required=False, default="latest"), + nocache = dict(default=False, type='bool'), + state = dict(default='present', choices=['absent', 'present', 'build']), + docker_url = dict(default='unix://var/run/docker.sock'), + docker_api_version = dict(required=False, + default=DEFAULT_DOCKER_API_VERSION, + type='str'), + timeout = dict(default=600, type='int'), ) ) if not HAS_DOCKER_CLIENT: |