Commit Graph

528 Commits

Author SHA1 Message Date
Viranch Mehta 258c8bc54d Fix specifies_host_port() to handle port binding with host IP but no host port
Signed-off-by: Viranch Mehta <viranch.mehta@gmail.com>
2015-10-18 00:40:51 +05:30
Daniel Nephin 26dc0b785b Give the user a better error message (without a stack trace) when there is a yaml error.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-10-16 15:05:06 -04:00
Daniel Nephin 0409b287ad Merge pull request #2191 from dnephin/networking
Networking
2015-10-14 12:31:26 -04:00
mnowster 6b68a84b9b Merge pull request #2019 from mrfuxi/less-verbose-extends
Allow to extend service using shorthand notation. Closes #1989
2015-10-14 17:13:09 +01:00
Daniel Nephin e2f792c4f4 If -x-networking is used, set the correct API version.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-10-14 12:09:50 -04:00
Aanand Prasad d5f5eb1924 Enable use of Docker networking with the --x-networking flag
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-10-14 11:19:43 -04:00
Daniel Nephin b9c76dfabd Merge pull request #2181 from mnowster/2128-split-drive-not-handling-relative-paths
2128 split drive not handling relative paths
2015-10-14 11:04:42 -04:00
Mazz Mosley ca36628a0e Test cgroup_parent option is being sent.
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-14 15:02:42 +01:00
Mohit Soni f4efa29377 Added support for cgroup_parent
This change adds cgroup-parent support to compose project. It allows
each service to specify a 'cgroup_parent' option.

Signed-off-by: Mohit Soni <mosoni@paypal.com>
2015-10-14 15:02:42 +01:00
Karol Duleba c7ffbf97c8 Extend oneOf error handling. Issue #1989
Signed-off-by: Karol Duleba <mr.fuxi@gmail.com>
2015-10-14 14:31:35 +01:00
Mazz Mosley c1d5ecaafe Workaround splitdrive limitations
splitdrive doesn't handle relative paths, so if volume_path contains
a relative path, we handle that differently and manually set drive to ''.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-13 17:27:25 +01:00
Mazz Mosley 8efc39e616 Improve boolean warning message.
Including examples of more boolean types, eg yes/N as it's not
always immediately clear that they are treated as booleans.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-07 14:59:08 +01:00
Aanand Prasad 627f1acdc4 Merge pull request #2126 from mnowster/1188-support-ro-options-in-volumes-from
1188 support ro options in volumes from
2015-10-07 11:57:14 +01:00
Aanand Prasad 60c9225d22 Merge pull request #2140 from dnephin/fix_patch_stdout
Reduce the scope of sys.stdout patching
2015-10-07 11:43:25 +01:00
Mazz Mosley f9028703f4 Pick the first container
Rather than inefficiently looping through all the containers that a
service has and overriding each volumes_from value, pick the first
one and return that.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-07 11:27:13 +01:00
Mazz Mosley 467c731869 address PR feedback
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-07 11:27:13 +01:00
Aanand Prasad fda615008c Merge pull request #2142 from dnephin/fix_error_cant_connect
Fix error when compose can't connect to docker
2015-10-07 11:22:32 +01:00
Daniel Nephin 15d0c60a73 Fix split buffer with inconsistently delimited json objects.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-10-06 10:43:07 -04:00
Daniel Nephin 3661e8bc74 Fix build against the swarm cluster by joining buffered output before parsing json.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-10-06 10:37:05 -04:00
Vincent Demeester 5b55a08846 Add support for ro option in volumes_from
Fixes #1188

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
2015-10-06 13:12:55 +01:00
Daniel Nephin fbaea58fc1 Fix #2133 - fix call to get_client()
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-10-05 15:57:49 -04:00
Daniel Nephin e230142a25 Reduce the scope of sys.stdout patching.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-10-03 01:24:28 -04:00
Mazz Mosley bef5c2238e Skip a test for now
This needs resolving outside of this PR, as it is a much bigger piece
of work.

https://github.com/docker/compose/issues/2128

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-02 15:29:26 +01:00
Mazz Mosley af8032a5f4 Fix incorrect test name
I'd written relative, when I meant absolute. D'oh.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-02 12:01:56 +01:00
Mazz Mosley 2276326d7e volume path compatibility with engine
An expanded windows path of c:\shiny\thing:\shiny:rw
needs to be changed to be linux style path, including the drive,
like /c/shiny/thing /shiny
to be mounted successfully by the engine.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-02 12:01:56 +01:00
Mazz Mosley f4cd5b1d45 Handle windows volume paths
When a relative path is expanded and we're on a windows platform,
it expands to include the drive, eg C:\ , which was causing a ConfigError
as we split on ":" in parse_volume_spec and that was giving too many parts.

Use os.path.splitdrive instead of manually calculating the drive.

This should help us deal with windows drives as part of the volume
path better than us doing it manually.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-10-01 16:06:57 +01:00
Aanand Prasad e38334efbd Don't expand volume names
Only expand volume host paths if they begin with a dot.

This is a breaking change. The deprecation warning preparing users for
this change has been removed.

Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-10-01 14:48:38 +01:00
Karol Duleba 91b227d133 Allow to extend service using shorthand notation. Closes #1989
Signed-off-by: Karol Duleba <mr.fuxi@gmail.com>
2015-09-24 18:01:47 +01:00
Daniel Nephin 78c0734cbd Disable some tests in windows for now.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-23 10:42:57 -04:00
Daniel Nephin c37a0c38a2 Fix a test case that assumes busybox image id.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-22 12:28:59 -04:00
mnowster b9252aa48e Merge pull request #2032 from villlem/master
Flag to skip all pull errors when pulling images
2015-09-21 13:41:08 +01:00
Aanand Prasad 18dbe1b1c0 Merge pull request #2051 from dnephin/extend_compose_files
Extend compose files by allowing multiple files
2015-09-21 12:34:22 +02:00
Vojta Orgon c9083e21c8 Flag to skip all pull errors when pulling images.
Signed-off-by: Vojta Orgon <villlem@gmail.com>
2015-09-21 11:59:23 +02:00
Aanand Prasad 3e58003bd3 Merge pull request #2041 from ggtools/master
Add new --pull option in build.
2015-09-18 16:49:05 +01:00
Daniel Nephin be0611bf3e Cleanup get_default_config_files tests.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:13:50 -04:00
Daniel Nephin 39ae85db8a Support a default docker-compose.override.yml for overrides
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:13:50 -04:00
Daniel Nephin 89be7f1fa7 Unit tests for multiple files
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:13:50 -04:00
Daniel Nephin 831276f531 Move config_test to the correct package name.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:13:50 -04:00
Daniel Nephin c0c9a7c1e4 Update integration tests for multiple file support
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:13:50 -04:00
Daniel Nephin 10b3188214 Support multiple config files
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:13:50 -04:00
Daniel Nephin 258d0fa0c6 Remove some functions from Command class
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:13:50 -04:00
Mazz Mosley 39ba2c5a7c Fix leaky tests
It was mocking self.client but relying on the call to
utils.create_host_config which was not mocked. So now that function
has moved to also be on self.client we need to redefine the test
boundary, up to where we would call docker-py, not the result of
docker-py.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-17 17:11:00 +01:00
Mazz Mosley 6f6c04b5c9 Test what we are sending, not what we get
This is a unit test and we are mocking the client. The method to get
the create_config_host now lives on the client, so we mock that too.

So we can test to the boundary that the method is called with the
arguments we expect.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-17 17:11:00 +01:00
Mazz Mosley 42c890796b Use docker.client.create_host_config
create_host_config from docker.utils will be deprecated so that
the new create_host_config has access to the _version so
we can ensure that network_mode only gets set to 'default' by
default if the version is high enough and won't explode.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-17 17:11:00 +01:00
Christophe Labouisse 39786d4da7 Add new --pull option in build.
Signed-off-by: Christophe Labouisse <christophe@labouisse.org>
2015-09-15 20:19:17 +02:00
Aanand Prasad 1dabf1c366 Merge pull request #1878 from mnowster/change-default-log-driver-value
Change default `log_driver` value
2015-09-15 17:23:00 +01:00
Mazz Mosley 2f45649611 Handle invalid log_driver
Now docker-py isn't hardcoding a list of valid log_drivers, we
can expect an APIError in response rather than a ValueError
if we send an invalid log_driver.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-15 15:47:39 +01:00
Mazz Mosley 4b2fd7699b Relax constraints on key naming for environment
One of the use cases is swarm requires at least : character, so going
from conservative to relaxed.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-15 15:33:30 +01:00
Mazz Mosley 8caeffe27e Log a warning when boolean is found in `environment`
We're going to warn people that allowing a boolean in the environment is
being deprecated, so in a future release we can disallow it. This is to
ensure boolean variables are quoted in strings to ensure they don't get
mis-parsed by YML.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-15 15:33:30 +01:00
Mazz Mosley a594a2ccc2 Disallow booleans in environment
When users were putting true/false/yes/no in the environment key,
the YML parser was converting them into True/False, rather than leaving
them as a string.

This change will force people to put them in quotes, thus ensuring
that the value gets passed through as intended.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-15 15:33:30 +01:00
mnowster e33ab0cdd8 Merge pull request #2031 from aanand/docker-py-1.4.0
Update docker-py to 1.4.0
2015-09-15 15:31:52 +01:00
Mazz Mosley cf7b595385 Improve error messages from oneOf schema errors
oneOf schema ValidationError takes a little more work to parse and
pull out more detail so we can give a better error message back to
the user.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-15 14:29:00 +01:00
Mazz Mosley 418ec5336b Improved messaging for simple type validator
English language is a tricky old thing and I've pulled out the validator type
parsing so that we can prefix our validator types with the correct article,
'an' or 'a'.

Doing a bit of extra hard work to ensure the error message is clear and
well constructed english.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-14 17:23:58 +01:00
Aanand Prasad d1dd06a7e2 Update docker-py to 1.4.0
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-09-11 15:42:20 -07:00
Aanand Prasad dbc68ca747 Merge pull request #2018 from dnephin/fix_scale_test
Handle unexpected errors, but don't ignore background threads
2015-09-11 15:42:01 -07:00
Daniel Nephin 61415cd8bc Fixes #1955 - Handle unexpected errors, but don't ignore background threads.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-09-11 17:41:10 -04:00
Daniel Nephin 413b76e228 Fix warning message when a container uses a non-json log driver
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-09-11 12:54:27 -04:00
Aanand Prasad 87a50317ad Merge pull request #1954 from nhumrich/master
Allow for user relative paths on EXTEND
2015-09-10 16:35:40 -07:00
Nick H a372275c6e Allow for user relative paths
'~/' in a path currently doesnt work, you get the following error:

[Errno 2] No such file or directory: u'/home/USER/folder/~/some/path/.yml'

Signed-off-by: Nick H <nick.humrich@gmail.com>
2015-09-09 14:54:08 -06:00
Mazz Mosley 4bed5de291 Remove item unique constraint for command
The command value can be a list, which would be a Unix command-line
invocation broken up into individual values, thus needing the ability to
have non unique values.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-09 16:39:06 +01:00
Aanand Prasad 85709d85d2 Merge pull request #1862 from mrfuxi/costom-container-name-in-logs
Use custom container name in logs
2015-09-08 14:36:28 -07:00
Mazz Mosley 866979c57b Allow entrypoint to be a list or string
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-07 17:26:38 +01:00
Karol Duleba d83d6306c9 Use custom container name in logs. Fixes #1851
Signed-off-by: Karol Duleba <mr.fuxi@gmail.com>
2015-09-07 14:03:00 +01:00
Aanand Prasad 10cb0c921a Merge pull request #1963 from shin-/1923-catch-timeout
Exit gracefully when requests encounter a ReadTimeout exception.
2015-09-04 16:14:32 -07:00
Daniel Nephin 0484e22a84 Add enum34 and use it to create a ConvergenceStrategy enum.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-09-04 10:45:53 -04:00
Aanand Prasad 6a47fa066e Merge pull request #1960 from dnephin/fix_smart_recreate_when_service_is_removed
Fix config_hash context to properly represent the service
2015-09-03 11:41:30 -07:00
Daniel Nephin db9f577ad6 Extract link names into a function.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-03 14:08:44 -04:00
Daniel Nephin 187ad4ce26 Refactor network_mode logic out of Service.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-03 13:02:46 -04:00
Daniel Nephin c183e52502 Fixes #1757 - include all service properties in the config_dict()
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-09-03 12:04:38 -04:00
Mazz Mosley 7326608369 expose array can contain either strings or numbers
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-03 16:44:01 +01:00
Joffrey F 6a95f6d628 custom timeout test rewrite
Signed-off-by: Joffrey F <joffrey@docker.com>
2015-09-02 18:00:08 -07:00
Aanand Prasad 6baed6c354 Merge pull request #1965 from dnephin/fix_compose_up_attach
Attach to all containers when no service names are specified
2015-09-02 17:37:43 -07:00
Daniel Nephin 48466d7d82 Fix #1961 - docker-compose up should attach to all containers with no service names are specified, and add tests.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-09-02 16:08:18 -04:00
Mazz Mosley 6a399a5b2f Update tests to be compatible with validation
Some were missing build '.' from their dicts, others were the
incorrect type and one I've moved from integration to unit.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:43:52 +01:00
Mazz Mosley d31d24d19f Work around some coupling of links, net & volume_from
This is minimal disruptive change I could make to ensure
the service integration tests worked, now we have some validation
happening.

There is some coupling/entanglement/assumption going on here.

Project when creating a service, using it's class method from_dicts
performs some transformations on links, net & volume_from, which
get passed on to Service when creating. Service itself, then performs
some transformation on those values. This worked fine in the tests before
because those options were merely passed on via make_service_dict.

This is no longer true with our validation in place. You can't pass to
ServiceLoader [(obj, 'string')] for links, the validation expects it to be
a list of strings. Which it would be when passed into Project.from_dicts
method.

I think the tests need some re-factoring but for now, manually deleting
keys out of the kwargs and then putting them back in for Service Creation
allows the tests to continue.

I am not super happy about this approach. Hopefully we can come back and
improve it.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:43:52 +01:00
Mazz Mosley 950577d60f Split validation into fields and service
We want to give feedback to the user as soon as possible about the
validity of the config supplied for the services.

When extending a service, we can validate that the fields are
correct against our schema but we must wait until the *end* of
the extends cycle once all of the extended dicts have been merged
into the service dict, to perform the final validation check on the
config to ensure it is a complete valid service.

Doing this before that had happened resulted in false reports of
invalid config, as common config when split out, by itself, is not
a valid service but *is* valid config to be included.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 4a8b2947ca Interpolate extended config
This refactoring is now really coming together. Construction is
happening in the __init__, which is a constructor and helps
clean up the design and clarity of intent of the code. We can now
see (nearly) everything that is being constructed when a ServiceLoader
is created. It needs all of these data constructs to perform the
domain logic and actions. Which are now clearer to see and moving
more towards the principle of functions doing (mostly)one thing and
function names being more descriptive.

resolve_extends is now concerned with the resolving of extends, rather
than the construction, validation, pre processing and *then* resolving
of extends.

Happy days :)

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 36757cde1c Validate extended service against our schema
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 8a6061bfb9 __init__ takes service name and dict
Moving service name and dict out of the function make_service_dict
and into __init__. We always call make_service_dict with those so
let's put them in the initialiser. Slightly cleaner design intent.

The whole purpose of the ServiceLoader is to take a
service name&service dictionary then validate, process and return
service dictionaries ready to be created.

This is also another step towards cleaning the code up so we can
interpolate and validate an extended dictionary.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 1344533b24 filename is not optional
While it can be set to ultimately a value of None, when a
config file is read in from stdin, it is not optional.

We kinda make use of it's ability to be set to None in our
tests but functionally and design wise, it is required.

If filename is not set, extends does not work.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Aanand Prasad 83c514f838 Merge pull request #1933 from dnephin/fix_scale_test_flakes
Fix flaky test
2015-08-31 13:52:33 -07:00
Daniel Nephin 235fe21fd0 Prevent flaky test by changing container names.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-31 14:57:06 -04:00
mnowster f5d73fee57 Merge pull request #1932 from mrfuxi/image-dockerfile-validation
Do not allow to specify both image and dockerfile in configuration.
2015-08-28 10:12:54 +01:00
Daniel Nephin d264c2e33a Resolves #1804
Fix mutation of service.options when a label or environment variable is specified in the config.

Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-27 18:05:21 -04:00
Karol Duleba 477d4f491d Do not allow to specify both image and dockerfile in configuration. Closes #1908
Signed-off-by: Karol Duleba <mr.fuxi@gmail.com>
2015-08-27 19:36:39 +01:00
Aanand Prasad e777d08854 Merge pull request #1924 from dnephin/python3_fix_for_logs
Fix `docker-compose logs` on python3
2015-08-27 14:19:42 +01:00
Daniel Nephin 3a0153859a Resolves #1856, fix regression in #1645. Includes some refactoring to make testing easier.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-26 16:21:31 -04:00
Aanand Prasad ecd1cc31dc Merge pull request #1930 from dnephin/name_one_off_containers
Allow setting a one-off container name
2015-08-26 19:03:00 +01:00
Daniel Nephin d2718bed99 Allow setting a one-off container name
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-26 13:33:03 -04:00
Daniel Nephin bdec7e6b52 Cleanup some test case, remove unused mock return values, and use standard single underscore for unused variable
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-26 13:32:49 -04:00
Daniel Nephin 54973e8200 Remove flake8 ignores and wrap the longest lines to 140 char.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-26 12:53:11 -04:00
Daniel Nephin 9d9550c5b6 Fix log printing for python3 by converting everything to unicode.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-26 11:24:48 -04:00
Daniel Nephin 2b589606da Move log_printer_test into correct testing module for naming convention.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-25 16:49:49 -04:00
Daniel Nephin bd7c032a00 Fix service integration tests.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-25 10:48:48 -04:00
Daniel Nephin 71ff872e8e Update unit tests for stream_output to match the behaviour of a docker-py response.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-25 10:48:48 -04:00
Daniel Nephin 7e4c3142d7 Have log_printer use utf8 stream.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-25 10:47:06 -04:00
Daniel Nephin feaa4a5f1a Unit tests passing again.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-25 10:47:06 -04:00
Daniel Nephin 2943ac6812 Cleanup requirements.txt so we don't have to maintain separate copies for py2 and py3.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-25 10:46:08 -04:00
funkyfuture 9aa61e596e Run tests against Python 2.6, 2.7, 3.3, 3.4 and PyPy2
In particular it includes:
- some extension of CONTRIBUTING.md
- one fix for Python 2.6 in tests/integration/cli_test.py
- one fix for Python 3.3 in tests/integration/service_test.py
- removal of unused imports

Make stream_output Python 3-compatible

Signed-off-by: Frank Sachsenheim <funkyfuture@riseup.net>
2015-08-25 10:41:09 -04:00
Daniel Nephin 809443d6d0 Support python 3
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-25 10:37:29 -04:00