summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pashkin <andrew.pashkin@gmx.co.uk>2015-05-23 23:17:30 +0300
committerToshio Kuratomi <toshio@fedoraproject.org>2015-05-29 08:49:15 -0700
commit0f0ca958c9d8278b5f949eb568eab9a18fde47c3 (patch)
treebb4daf5fabec926c81d03f03afb1a77756ce1064
parent441cd13c407566fcfdfa38ee42fa911b8db4ff13 (diff)
downloadansible-modules-core-0f0ca958c9d8278b5f949eb568eab9a18fde47c3.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.py38
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: