Commit graph

142 commits

Author SHA1 Message Date
Micheal Waltz
950701ba3e Use a if/else instead to avoid loading possibly invalid values for Memory 2016-12-08 11:23:25 -05:00
Micheal Waltz
af5e402b87 Set the API version when checking differences in containers and use this to determine the location of the Memory value depending on the version used.
In v1.18 and earlier it was ['Config']['Memory'], but in v1.19 it
changed to ['HostConfig']['Memory'].
2016-12-08 11:23:25 -05:00
Micheal Waltz
f36666ae1d Use proper HostConfig element which contians the proper Memory value - fixes #1766 2016-12-08 11:23:25 -05:00
Lars Kellogg-Stedman
3d79d96a1b restore mem_limit
mem_limit got lost in the #1744; this restores it.  Thanks to @dgromov
for the report.
2016-12-08 11:23:25 -05:00
Lars Kellogg-Stedman
562341049e docker: fix parsing of docker __version__ string
If `docker.__version__` contains non-digit characters, such as:

    >>> import docker
    >>> docker.__version__
    '1.4.0-dev'

Then `get_docker_py_versioninfo` will fail with:

    ValueError: invalid literal for int() with base 10: '0-de'

This patch corrects the parsing of the version string so that
`get_docker_py_versioninfo` in this example would return:

    (1, 4, 0, '-dev')
2016-12-08 11:23:25 -05:00
Johan Haals
6a9a4d905a ensures API compatibility for read_only containers 2016-12-08 11:23:24 -05:00
Johan Haals
c88feaff7e changed version_added for read_only param
this feature will be released in 2.0
2016-12-08 11:23:24 -05:00
Johan Haals
6231a9d52f Added support for --read-only Docker containers
Adds support for mounting the container's root filesystem as read only.
2016-12-08 11:23:24 -05:00
Christian Hammerl
426ec96ea5 docker: add support to add/drop capabilities 2016-12-08 11:23:23 -05:00
Brian Coca
1976ed931a minor doc fixes to docker_user 2016-12-08 11:23:23 -05:00
Brian Coca
b62a6f01ab added version_Added for new signal option in docker module 2016-12-08 11:23:23 -05:00
Brian Coca
07fedaa03a corrected v ersion added 2016-12-08 11:23:23 -05:00
Daniel Kerwin
277065a302 Too late for 1.8 2016-12-08 11:23:23 -05:00
Daniel Kerwin
3a68101fa3 Switch to _cap_ver_req and add cpu_set to create_containers 2016-12-08 11:23:23 -05:00
nemunaire
f37510ebaa Add optional signal parameter when killing docker container 2016-12-08 11:23:23 -05:00
Daniel Kerwin
5b029bde98 Renamed to cpu_set 2016-12-08 11:23:22 -05:00
Daniel Kerwin
940baa92a6 Add support for cpusets. Requires docker-py >= 0.6.0 2016-12-08 11:23:22 -05:00
Maksim Losev
482d8da2dc Use HostConfig object when creating container with Docker Remote API > 1.15
This is mlosev's patch (from #1208), rebased against devel as of
2790af2.  It resolves #1707, which was caused by an API incompatibility
between the docker module and server API version 1.19.
2016-12-08 11:23:21 -05:00
Lars Kellogg-Stedman
e031efd82c Do not erroneously mask exceptions
There was a catch-all `except` statement in `create_containers`:

        try:
            containers = do_create(count, params)
        except:
            self.pull_image()
            containers = do_create(count, params)

This would mask a variety of errors that should be exposed, including
API compatability errors (as in #1707) and common Python exceptions (KeyError, ValueError, etc) that could result from errors in the code.

This change makes the `except` statement more specific, and only attempts to pull the image and start a container if the original create attempt failed due to a 404 error from the docker API.
2016-12-08 11:23:21 -05:00
Lars Kellogg-Stedman
6116e4cdab docker: permit empty or false pid
The `docker` Python module only accepts `None` or `'host'` as arguments.
This makes it difficult to conditionally set the `pid` attribute using
standard Ansible syntax.

This change converts any value that evaluates as boolean `False` to
`None`, which includes empty strings:

    pid:

As well as an explicit `false`:

    pid: false

This permits the following to work as intended:

    - hosts: localhost
      tasks:
      - name: starting container
        docker:
          docker_api_version: 1.18
          image: larsks/mini-httpd
          name: web
          pid: "{{ container_pid|default('') }}"

If `container_pid` is set to `host` somewhere, this will create a
Docker container with `pid=host`; otherwise, this will create a
container with normal isolated pid namespace.
2016-12-08 11:23:21 -05:00
Ian Babrou
9219aeaaeb Pulling missing docker image before doing anything 2016-12-08 11:23:19 -05:00
Simon Olofsson
a3cb6d2f16 Add option docker_user for docker module.
docker_user can be used to specify the user or UID to use within the
container.
2016-12-08 11:23:19 -05:00
Ash Wilson
9f12fd0a26 Default net to 'bridge' in container diff
This prevents an unnecessary reload when the `net` parameter is unspecified
(i.e. almost always).
2016-12-08 11:23:14 -05:00
Ed Hein
f11c451bfa Fix computation of port bindings. Port bindings configuration can be a list if several host ports are bound to the same guest port. 2016-12-08 11:23:14 -05:00
Andrew Davis
4d4d911d6e ansible_facts reflects 1.8 output 2016-12-08 11:23:13 -05:00
Ash Wilson
ea83727fcf Wait for process exit on detached=no. 2016-12-08 11:23:13 -05:00
Stefan Junker
4ee972190b docker: Use a list instead of a dict for volumes according to the docker-py docs. Do not add host-binds to volumes list. 2016-12-08 11:23:13 -05:00
Stefan Junker
50fe57fff3 Fix bind-volumes on docker >= 1.4.0
If bind-volumes are submitted to docker >= 1.4.0 with the volumes set in addition to the binds, docker will create a regular volume and not bind-mount the specified path.
2016-12-08 11:23:13 -05:00
Toshio Kuratomi
0a3150f7d7 Add version_added documentation to log_driver parameter 2016-12-08 11:23:12 -05:00
Ryan Walls
01a28e7d80 Fix typo in Docker module. 2016-12-08 11:23:12 -05:00
Ryan Walls
9630972c2c Update docker module to avoid false positives when containers are first created. Also have the module check for api compatibility before trying to set a "--log-driver" option. 2016-12-08 11:23:12 -05:00
Ryan Walls
f5c1d8141b Set default "log_driver" option to None in docker module. 2016-12-08 11:23:12 -05:00
Ryan Walls
0df1b01cb2 Update docker module to look at log_driver variable when deciding if container configuration has changed. 2016-12-08 11:23:12 -05:00
Ryan Walls
3419a1e253 Add support for --log-driver option that docker released with Docker 1.6 2016-12-08 11:23:12 -05:00
Robin Roth
abc89f0df5 add comment: ports need to be exposed.
port mapping with this module only works for ports that are exposed either in the Dockerfile or via an additional arguments. This is different from the command line docker client, that is willing to also map ports that are not exposed.

This comments makes the behaviour more obvious.
2016-12-08 11:23:09 -05:00
Greg DeKoenigsberg
18ca7aee07 Updating cloud modules with proper github author information 2016-12-08 11:23:07 -05:00
Toshio Kuratomi
5336217649 Several cleanups to many modules:
* Fix docs to specify when python2.6+ is required (due to a library
  dep).  This helps us know when it is okay to use python2.6+ syntax in
  the file.
* remove BabyJson returns.  See #1211  This commit fixes all but the
  openstack modules.
* Use if __name__ == '__main__' to only run the main part of the module
  if the module is run as a program.  This allows for the potential to
  unittest the code later.
2016-12-08 11:22:58 -05:00
Ratnadeep Debnath
a99d7da0c1 Fixed typo in cloud docker module. 2016-12-08 11:22:57 -05:00
Toshio Kuratomi
c2bf2c7c54 Fix error when container has no names.
Rename loop variable from "i" to more informative "container"

Fixes #1188
2016-12-08 11:22:57 -05:00
Toshio Kuratomi
8bc34613bc Second try at fixing #1227 -- set e default value earlier 2016-12-08 11:22:56 -05:00
Toshio Kuratomi
030858df67 Return empty list if an image has no repo_tags 2016-12-08 11:22:56 -05:00
Toshio Kuratomi
0d468a3aa0 Get docker's default api version definition from both 1.2 location and pre-1.2 location
Fixes #1227
2016-12-08 11:22:56 -05:00
Toshio Kuratomi
4592b795d9 Only split on the first colon.
Fixes #1214
2016-12-08 11:22:56 -05:00
Heikki Partanen
ec566d86b3 Add support for extra_hosts to docker module
extra_hosts parameter (maps to --add-host in 'docker run' syntax) is used
to add host-to-ip mappings to the container.
2016-12-08 11:22:55 -05:00
Ash Wilson
c6b0656c1c Record facts for each changed container. 2016-12-08 11:22:52 -05:00
Ryan Trauntvein
eaa0ce0ceb Specify that "state: reloaded" was added in Ansible 1.9 2016-12-08 11:22:51 -05:00
Ash Wilson
2dde45cea9 Only fetch details when necessary. 2016-12-08 11:22:50 -05:00
Ash Wilson
93b620ea8a Compare container images to Config.Image. 2016-12-08 11:22:50 -05:00
moncho
0156188a54 Update docker.py
Fix typo that prevents use_tls 'encrypt' option from working properly.
2016-12-08 11:22:49 -05:00
Toshio Kuratomi
5262d768e0 Add another valid status from downloading images 2016-12-08 11:22:49 -05:00