Commit graph

47 commits

Author SHA1 Message Date
Felix Fontein
0b8b5baecd
docker_container: add support for --cpus (#64683)
* Add support for --cpus.

* Adjust PR #.

* Add version_added.
2019-11-24 05:04:42 +01:00
Felix Fontein
4b1fdee119
docker_container: deprecate trust_image_content (#63420)
* Deprecate trust_image_content.

* Add changelog.

* Mention it has never been used; removed test stub.
2019-10-18 13:03:42 +02:00
Felix Fontein
41eafc2051
docker_container: improve image finding / change detection (#62971)
* Improve image finding / change detection.

* Checked wrong object.

* Improve behavior. (Let docker daemon sort this out.)

* Add changelog.

* Add simple test.

* Fix image name.

* Use new docker_image params.

* Rewrite.
2019-10-04 21:50:09 +02:00
Felix Fontein
62c0cae29a
docker_container: fix idempotency for network IP addresses (#62928)
* Specifying IP addresses needs API version 1.22 or newer.

* Simplify code.

* Use IPAMConfig.IPv*Address instead of IPAddress and GlobalIPv6Address.

* Add changelog.

* Fix syntax errors.

* Add integration test.

* Don't rely on netaddr.

* Normalize IPv6 addresses before comparison.

* Install netaddr, and use it.
2019-09-30 10:47:02 +02:00
Felix Fontein
48541910bf
docker_container: add mount endpoint collision detection (#60384)
* Add mount endpoint collision detection.

* Add changelog.

* Fix error.
2019-08-16 15:23:03 +02:00
Dave Bendit
fc558fb85f [docker_container] Adding support for mounts option (#49808)
* [WIP][docker_container] Adding support for `mounts` option

Fixes #42054

* Adjusting to current standards.

* Add changelog.

* Adjust types.

* Cleanup.

* Add idempotency checks for mounts.

* Improve diff for mounts.

* Linting.

* Python 2.6 compatibility.

* Fix error message formatting.

* Move mounts and volumes tests into own file.

* Add set of mount tests.

* Golang's omitempty for bool omits false values.

* Simplify sanity checks. Correct order of volume_options sanitization and usage.

* Fix key.

* Fix check.

* Add tests where both volumes and mounts show up.

* Add collision test.
2019-08-02 17:11:14 +02:00
Felix Fontein
a7573102bc
docker_container: fix port bindings with IPv6 addresses (#59715)
* Pass IPv6 addresses for port bindings without square brackets.

* Add changelog.

* Add test.
2019-08-02 17:10:39 +02:00
Felix Fontein
266d6e77a9 Re-enable docker_container tests (#59425)
Mark dependent container's ipc_mode as shareable
2019-07-23 10:20:18 -04:00
Felix Fontein
66a4000058
Adjust tests to new error messages for older docker-py versions. (#58253) 2019-06-23 21:52:24 +02:00
Felix Fontein
7cd229aa97
Fix assignments in docker tests. (#57249) 2019-05-31 23:47:53 +02:00
Felix Fontein
d8dcd20294 docker_container: fix container creation with networks_cli_compatible=yes (#56687)
* Fix behavior.

* Add changelog.

* Add simple test to prevent #56620.
2019-05-28 03:19:52 -04:00
Jakob Ackermann
3b4b2e5021 [docker] support the lookup of images by digest (#56649)
* [docker] images: add support for lookup by sha256 digest

Signed-off-by: Jakob Ackermann <das7pad@outlook.com>

* [tests] docker image by digest: work on a minimal test case

Signed-off-by: Jakob Ackermann <das7pad@outlook.com>

* [docker] group branch conditions per lookup

Co-Authored-By: Felix Fontein <felix@fontein.de>

* [misc] add a news fragment for the added digest lookup for docker images

Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2019-05-21 02:54:05 -04:00
Felix Fontein
f692261ea0 oom_killer and oom_score_adj are available since docker-py 1.8.0. (#56012)
* oom_killer and oom_score_adj are available since docker-py 1.8.0.

* Add changelog.
2019-05-05 06:13:55 -04:00
Felix Fontein
95d1564f70 docker_container: use restart() API function instead of stop/start sequence (#55894)
* Improve container restart.

* Adjust tests.

* Add changelog.

* Quote options.

* Move tests for restart/recreate options to start/stop tests.

* Fix changelog name.
2019-05-03 11:30:39 -04:00
Felix Fontein
12d26eceb1 docker modules: make sure everything works with older docker-py versions (#55258)
* General test improvements.

* Adjust tests to older docker-py versions.

* docker_swarm_server_info: work around problems with older docker-py versions

* Bump minimal docker-py version for options network_filters and disk_usage.

* More general test improvements.

* Correct usage of docker_image.

* Put files into output directory.

* Speed up test.

* Remove old check.
2019-04-17 13:50:57 -04:00
Felix Fontein
d64b17731d docker_container: improve log_options idempotency by converting to string (#54955)
* Warn when log_options values are not strings.

* Add changelog.

* Improve message.

* Improve formatting and formulation of other messages.

* Add test for warning.

* Trying double escaping.
2019-04-12 18:36:11 -04:00
Felix Fontein
4fac91bed5 docker_container: add networks_cli_compatible option (#54198)
* Adding networks_cli_compatible option.

* Move network tests into own test file.

* Extend tests (for networks_cli_compatible=no).

* Adding tests for networks_cli_compatible=yes.

* There seems to be no way to create a container without at least one network attached.

* Integrate networks / purge_networks with comparisons.

* Speed up tests.

* Removing double dot.

* Add changelog.

* Use comparisons value only if the networks option has been specified. purge_networks on the other hand also removes networks if it has not been specified.
2019-03-25 15:06:21 -04:00
Felix Fontein
8d62794f91 docker: rename docker_*_facts -> docker_*_info (#54124)
* Rename docker_*_facts -> docker_*_info.

* Add changelog.

* Update scenario guide.
2019-03-21 08:37:18 +00:00
Felix Fontein
77f7e5a986 Only use ports in the range 9001-9060. 2019-03-14 23:50:41 -07:00
Felix Fontein
3117900b1e docker_container: show warnings, fix/improve tests (#53440)
* Output warnings from docker daemon on container create and update.

* Accept warning for blkio_weight instead of idempotency.

* Value quoting.

* Avoid loop variable conflict.

* Add changelog.

* Make one test case faster.

* Add 'Docker warning: ' prefix.

* Add a generalized warning reporting function.
2019-03-11 19:04:06 +10:00
Felix Fontein
8c628c9b2c Simplify docker_*_facts return names (#51939)
* Simplify docker_*_facts return names.

* Adjust regular return values of modules to match style of docker_*_facts modules.
2019-03-05 16:09:00 +00:00
Felix Fontein
e4c2cbcca2 Don't die when kernel memory accounting is not supported by runc build. (#53163) 2019-03-01 06:04:39 -05:00
Felix Fontein
37b0f5c81b docker: provide alternatives to ansible_facts results (#51192)
* Try to stop using ansible_facts for docker modules.

* Stop using facts returned from regular modules.
2019-02-18 13:41:34 +00:00
Dave Bendit
d62d7176b0 [docker_container] Failing on non-string env values (#49843)
* [docker_container] Failing on non-string env values

Fixes #49802

* Clarify failure message

Co-Authored-By: DBendit <David@ibendit.com>

* Fixup from review
2018-12-14 13:21:54 -06:00
Dave Bendit
8fcf9e1a28 [docker_container] Fixes idempotency checks for network_mode (#49797)
Fixes #49794
2018-12-12 09:04:24 +00:00
Akshay Gaikwad
597e449afe Support for pids_limit parameter in docker_container module (#49319)
* Support for pids_limit parameter in docker_container module

This add pids_limit parameter support in docker_container module

Fixes #43337

Signed-off-by: Akshay <akshay@localhost.localdomain>

* Add changelog for pids_limit parameter

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Remove unnecessary lines of code

The map is needed if the names are different.

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Update pids_limit option tests

It also run for docker-py < 1.10.0

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>
2018-12-03 11:22:43 +00:00
Felix Fontein
891687284f docker_* modules: improve diff (#48546)
* Add difference tracking tool

* Improve --diff mode for docker_container.

* Improve diffs of sets by ordering the sets.

* Rewrite imports, get rid of HAS_DOCKER_PY_x variables and use docker_version instead.

* Rename container -> active (more generic).

* Add --diff for docker_volume. Change old diff output.

* Add --diff for docker_network. Change old diff output.

* Add --diff for docker_swarm_service.

* Add changelog.

* Add entry for porting guide on docker_network and docker_volume.
2018-11-19 09:59:54 +00:00
Felix Fontein
afded1c778 Use force_kill instead of stop_timeout to fasten container cleanup. (#48733) 2018-11-16 12:37:12 +00:00
Felix Fontein
b1acabcd03 docker_container: fix tests and idempotency for init and shm_size (#48551)
* Fix tests: use same command if not testing command option.

* Fix idempotency of init option.

* Fix shm_size idempotency (it is included in inspect results from docker API version 1.22 on).

* Add changelog.
2018-11-13 13:07:36 +00:00
Felix Fontein
0206a46e1d docker_* modules: updating argument_spec (#48491)
* Updating argument_spec for docker_* modules.

* Adjust docker_network to work with new recursive argument_spec.

* Adjust device IO limits to recursive argument_spec.

* Improve test (test Ansible's cast from str to int).

* Adjust healthcheck options construction.

* Remove superfluous check.

* Make flake8 happy.

* Simplify comparison.
2018-11-12 11:33:42 +00:00
Felix Fontein
569ec812e7 Improve paused test and behavior. (#48056) 2018-11-05 11:34:23 +00:00
Felix Fontein
af79adca1d Make tests fail less often with strange errors. (#48059) 2018-11-05 11:33:29 +00:00
Felix Fontein
35809e99bc docker_container: fix ipc_mode and pid_mode idempotency (#47997)
* Fix ipc_mode and pid_mode idempotency when container names are used.

* Add changelog.

* Update pid_mode documentation.
2018-11-05 10:26:13 +10:00
Felix Fontein
3cca4185be docker_container: simplify minimal required version per option handling (#47711)
* Store parsed docker-py / docker API versions in client.

* Began refactoring 'minimal required version' for docker_container options.

* Removing some fake defaults.

* Added changelog.

* Improve tests (check older docker versions).

* Fix comparison. The breaking point is not docker-py 2.0.0, but 1.10.0.

(Verified by testing with these versions.)

* Move docker-py/API version detection to setup_docker.

* Add YAML document starter.

* docker_network requirement for docker-py was bumped to 1.10.0 in #47492.
2018-11-05 10:25:11 +10:00
Akshay Gaikwad
80ca779aa7 Support for device read write limit parameters (#47814)
* Support for device read write limit parameters

* Add following options in docker_container module
  - device_read_bps
  - device_write_bps
  - device_read_iops
  - device_write_iops

Fixes #36831

* test for device_read_iops
* combined test for device_write_bps and device_write_iops
2018-11-02 08:58:06 +10:00
Felix Fontein
65768b996d docker_container: fix paused and add some tests (#47900)
* cleanup is already tested.

* Add test for paused.

* Add recreate and restart tests.

* timeout is a common docker option

* Implement paused and fix paused test.

* Add changelog.

* Improve paused test.
2018-11-01 08:08:43 +00:00
Akshay Gaikwad
20b95adf2b Add Support of healthcheck in docker_container module (#46772)
* Add Support of healthcheck in docker_container module

Fixes #33622
Now container can be started with healthcheck enabled

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Extend docker_container healthcheck (#1)

* Allowing to disable healthcheck.

* Added test for healthcheck.

* Make sure correct types are used.

* Healthcheck needs to be explicitly disabled with test: ['NONE'].

* pep8 fixes

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Fix bug if healthcheck interval is 1 day or more

`timedelta` object has days too and seconds are up to one day.
Therefore use `total_seconds()` to convert time into seconds.

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Add test for healthcheck when healthcheck is not specified

This is to avoid the situation when healthcheck is not specified and
treat this as healthcheck is changed or removed.

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Convert string syntax for healthcheck test to CMD-SHELL

Also add another test case to check idempotency when healthcheck test
is specified as string

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Playbook fails if minimun docker version is not satisfy for healthcheck

This is to make more consistent with other non-supported options.

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>
2018-10-24 11:49:56 +01:00
Felix Fontein
3afdb28209 docker_container: fix interaction of detach:no with auto_remove:yes (#47396)
* Behave better if auto_remove and output_logs are combined. Warn if output cannot be retrieved because of auto_remove.

* Add tests.

* Added changelog.
2018-10-23 07:51:24 +01:00
Pluggi
f13091d142 Add runtime option to docker_container module (#47247)
* Add runtime option to docker_container module

Signed-off-by: Antoine Bardoux <abardoux@nvidia.com>

* Add changelog fragment

Signed-off-by: Antoine Bardoux <abardoux@nvidia.com>

* Add idempotency test for docker_container.runtime

Signed-off-by: Antoine Bardoux <abardoux@nvidia.com>
2018-10-19 09:04:17 +01:00
Felix Fontein
a74774488d docker_container: add port range and IPv6 support for published_ports (#46596)
* Allow port ranges.

* Adding IPv6 support for published_ports.

* Die when hostname is passed instead of IP address.

* Added changelog.
2018-10-08 10:53:24 +01:00
Felix Fontein
77127d6768 docker_container: allow more mount modes for volumes (#46598)
* Being more strict about volume mount modes.
2018-10-08 10:11:03 +01:00
Felix Fontein
8afe46dc02 docker_container: improve publish all ports functionality (#46594)
* Improve handling of published_ports: all.

* Add changelog.
2018-10-08 08:23:23 +01:00
Felix Fontein
a520ca3298 docker_container, docker_image_facts: allow to use image IDs (#46324)
* Allow to specify images by hash for docker_container and docker_image_facts.

* flake8

* More sanity checks.

* Added changelog.

* Added test.

* Make compatible with Python < 3.4.

* Remove out-commented imports.
2018-10-06 08:50:31 -05:00
Remo Wenger
83e584577a docker_container: ambiguous parameter "stop_timeout" (#43874)
* docker_container: Honour stop_timeout when creating docker containers (#43814)

* Adjusting description to what actually happens.

See docker-py changelog for 2.7.0: 'APIClient.stop will
no longer override the stop_timeout value present in the
container’s configuration.'

* Add a test whether stop_timeout can be configured for the container.

* Added changelog.

* Integrate with comparisons (by default, ignore stop_timeout value for restarts; will be configurable with PR ansible/ansible#44789).

* Fix config change code and tests (#2)

* Improving wildcard test.
* Using correct config.
2018-09-30 12:03:53 +01:00
Felix Fontein
84682464c7 docker_container: allow to configure comparison for existing containers (#44789)
* Added comparison configuration.

* Improving user feedback on specifying a wrong option.

* Avoid bare except.

* Added basic integration tests.

* Adding wildcard support.

* Warn if ignore_image=yes is overridden.

* Added changelog fragment.
2018-09-28 08:33:38 +01:00
Felix Fontein
7caf70db42 docker_container: fix various idempotency problems and non-working options (#45905)
* Sorting args.

* Doing comparisons of options with container parameters in a more context-sensitive way.

This prevents unnecessary restarts, or missing restarts (f.ex. if parameters are removed from ``cmd``).

* Make blkio_weight work.

* Fix cap_drop idempotency problem.

* Making groups idempotent if it contains integers.

* Make cpuset_mems work.

* Make dns_opts work.

* Fixing log_opts: docker expects string values, returns error for integer.

* Adding tests from felixfontein/ansible-docker_container-test#2.

* Make uts work.

* Adding changelog entry.

* Forgot option security_opts.

* Fixing typo.

* Explain strict set(dict) comparison a bit more.

* Improving idempotency tests.

* Making dns_servers a list, since the ordering is relevant.

* Making dns_search_domains a list, since the ordering is relevant.

* Improving dns_search_domains/dns_servers.

* Fixing entrypoint test.

* Making sure options are only supported for correct docker-py versions.
2018-09-24 10:40:05 +01:00
Felix Fontein
6e04a1dbdc integration tests for docker_container (#45747)
* First round of integration tests for docker_container.

* Added regression test for #45700.

* Work around dict order randomization.
2018-09-19 21:01:23 +10:00