Commit Graph

135 Commits (1766c5082418d31d3c9444abc5df6a36937f3ed2)

Author SHA1 Message Date
Brian Coca 4c14e6267f Merge pull request #2258 from SamYaple/fix_docker_bug_2257
Don't assume ExposedPorts exists (bug #2257)
9 years ago
Adam Williamson 64b8596250 fix #2043: strip empty dict from end of 'pull' stream
When pulling an image using Docker 1.8, it seems the output
JSON stream has an empty dict at the very end. This causes
ansible to fail when pulling an image, as it's expecting a
status message in that dict which it uses to determine whether
it had to download the image or not. As a bit of an ugly hack
for that which remains backward compatible, try the last item
in the stream, and if it's an empty dict, take the last-but-one
item instead.

The strip() is needed as the exact value appears to be '{}/r/n';
we could just match that, but it seems like the kind of thing
where maybe it'd happen to just be '{}/n' or '{}' or something
in some cases, so let's just use strip() in case.
9 years ago
Sam Yaple f15d285514 Catch the second occurance of ExposedPorts as well 9 years ago
Sam Yaple 9db5ac8e45 Don't assume ExposedPorts exists (bug #2257)
A recent change [1] in docker between v1.8.2 and v1.8.3 changed what
is returned in the json when inspecting an image. Five variables which
could have been expected before will now be omited when empty. Only
one of those variables is being addressed in the docker, ExposedPorts.

Unfortunately there was also no API version change on this so this
can't be easily corrected with pinning the API to the older version.

This does a get() which will return None if the variable is not in the
dict formed from the json that was returned. Everything else works the
same way.

[1] 9098628b29
9 years ago
Brian Coca da1a317f7d Merge pull request #2139 from justnom/devel
Adding additional Docker log drivers.
9 years ago
Colin Hutchinson f7aa6c4d27 make a text link into a actual hyperlink
the text link doesn't fit on some screen resolutions. Making it into sphinx hyperlink will solve that
9 years ago
justnom 518ac36878 Adding additional Docker log drivers.
Adding additional `log_driver` choices:
* journald
* gelf
* fluentd

Compatible with Docker version >= 1.8.0
9 years ago
David Dyball a0a374b8ca Updated PR based on comments 9 years ago
Toshio Kuratomi 6e5a832dc2 Fix read-only usage to depend on the docker-py and docker server version 9 years ago
Toshio Kuratomi 1f358f349b We had two separate methods trying to do the same thing but neither one was complete. This merges them so that all of the options get parsed and applied. 9 years ago
Omri Iluz daf7a0551b No need for .keys on volumes list
Since c3f92cca21 changed "volumes" to be a list instead of a dictionary, we don't need (and cannot) .keys when appending to set.
Reported as bug #1957
9 years ago
Ilya Epifanov d951172920 fixed memory_limit for docker api version >= 1.19 9 years ago
sebi 599d60efc0 mem_limit client version check 9 years ago
Brian Coca c6da9d0758 added missing version_Added to extra_hosts
fixes #1843
9 years ago
Toshio Kuratomi 2785364ebe Merge pull request #1736 from larsks/bug/docker-version-parse
docker: fix parsing of docker __version__ string
9 years ago
Brian Coca 49400d90ac Merge pull request #1830 from ecliptik/devel
Fix incorrect var name for api_version
9 years ago
Micheal Waltz b43f236b05 Fix incorrect var name for api_version 9 years ago
Brian Coca dbdbcb33cc defined DEFAULT_DOCKER_API_VERSION to avoid it erroring out before we send the message that docker.py is missing 9 years ago
Brian Coca 44d23ababd Merge pull request #1767 from ecliptik/devel
Use proper HostConfig element which contains the proper Memory value …
9 years ago
Brian Coca d91834bdf5 Merge pull request #1763 from larsks/bug/missing-mem-limit
restore mem_limit
9 years ago
Micheal Waltz 613fe54908 Use a if/else instead to avoid loading possibly invalid values for Memory 9 years ago
Micheal Waltz 77d1c896fe 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'].
9 years ago
Johan Haals 1ea03e7182 ensures API compatibility for read_only containers 9 years ago
Johan Haals 851e55b55f changed version_added for read_only param
this feature will be released in 2.0
9 years ago
Johan Haals 8ec6538ad4 Merge remote-tracking branch 'upstream/devel' into docker-read-only-container 9 years ago
Christian Hammerl b96d304b93 docker: add support to add/drop capabilities 9 years ago
Micheal Waltz b0b1566b89 Use proper HostConfig element which contians the proper Memory value - fixes #1766 9 years ago
Lars Kellogg-Stedman 6aedc1020e restore mem_limit
mem_limit got lost in the #1744; this restores it.  Thanks to @dgromov
for the report.
9 years ago
Johan Haals 38f01b52e8 Added support for --read-only Docker containers
Adds support for mounting the container's root filesystem as read only.
9 years ago
Brian Coca 88167a5dac minor doc fixes to docker_user 9 years ago
Brian Coca 5240124525 Merge pull request #361 from simono/docker-add-user
Add option docker_user for docker module.
9 years ago
Brian Coca 030d6d645c added version_Added for new signal option in docker module 9 years ago
Brian Coca ac28f16126 Merge pull request #1014 from nemunaire/docker-kill-signal
[Docker] Add signal parameter when killing container
9 years ago
Brian Coca 2441928484 corrected v ersion added 9 years ago
Daniel Kerwin d4d78a1998 Too late for 1.8 9 years ago
Daniel Kerwin a702dbd29a Switch to _cap_ver_req and add cpu_set to create_containers 9 years ago
Daniel Kerwin a8bc50a11f Renamed to cpu_set 9 years ago
Daniel Kerwin fca75a9705 Add support for cpusets. Requires docker-py >= 0.6.0 9 years ago
Brian Coca cf25888e2d Merge pull request #978 from bobrik/faster-docker-updates
[docker] pulling missing docker image before doing anything
9 years ago
Maksim Losev efb6088c27 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.
9 years ago
Lars Kellogg-Stedman 444a2ad808 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.
9 years ago
Lars Kellogg-Stedman 6672205f49 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.
9 years ago
Lars Kellogg-Stedman b7e92b3e52 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')
9 years ago
Brian Coca 51b6b725cc Merge pull request #1078 from andrewgdavis/devel
ansible_facts reflects 1.8 output
10 years ago
Brian Coca afeb3c8d07 Merge pull request #1031 from smashwilson/docker-wait
[docker] Wait for process exit on detached=no.
10 years ago
Brian Coca 5f5f01833f Merge pull request #1508 from tarrychk/issue_1442
Fix computation of port bindings
10 years ago
Brian Coca 038cc05f4e Merge pull request #1609 from smashwilson/default-net-bridge
[docker] Prevent unnecessary reloads due to the net parameter
10 years ago
Brian Coca ec15b67712 Merge pull request #547 from steveeJ/devel
Fix bind-volumes on docker >= 1.4.0
10 years ago
Simon Olofsson dc3161dfdd Add option docker_user for docker module.
docker_user can be used to specify the user or UID to use within the
container.
10 years ago
Ash Wilson 29e4a127e1 Default net to 'bridge' in container diff
This prevents an unnecessary reload when the `net` parameter is unspecified
(i.e. almost always).
10 years ago