summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pashkin <andrew.pashkin@gmx.co.uk>2015-05-23 23:17:30 +0300
committerAndrew Pashkin <andrew.pashkin@gmx.co.uk>2015-05-23 23:17:30 +0300
commit27c174128b054e8217a9a0a5d0e454e7f29546aa (patch)
tree36f6fd0cfa35bf1e4ee6223be2fec5f542e5af43
parentb5399d34464475a9aa87c6b928628cd262022cd5 (diff)
downloadansible-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.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: