Commit Graph

412 Commits

Author SHA1 Message Date
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
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
Daniel Nephin 59d4f304ee Run pre-commit on all files
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-24 17:04:50 -04:00
Frank Sachsenheim 227584b864 Adds pause and unpause-commands
Signed-off-by: Frank Sachsenheim <funkyfuture@riseup.net>
2015-08-21 12:43:13 +02:00
Joel Hansson 61936f6b88 log_opt: change address to syslog-address
Signed-off-by: Joel Hansson <joel.hansson@ecraft.com>
2015-08-20 16:46:06 +02:00
Aanand Prasad a806d9e77b Merge pull request #1855 from mnowster/number-is-a-valid-service-name
A number is a valid service name
2015-08-20 12:02:58 +01:00
mnowster 340eaf44fa Merge pull request #1889 from mrfuxi/1670-images-digest
Allow to specify image by digest. Fixes #1670
2015-08-20 10:55:00 +01:00
Karol Duleba 56f03bc20a Allow to specify image by digest. Fixes #1670
Signed-off-by: Karol Duleba <mr.fuxi@gmail.com>
2015-08-19 21:13:34 +01:00
mnowster 30b64e65cd Merge pull request #1859 from mrfuxi/extend-unexisting-service
Raise configuration error when trying to extend service that does not exist
2015-08-19 14:23:28 +01:00
Mazz Mosley f4a8fda283 Handle all exceptions
If we get back an error that wasn't an APIError, it was causing the
thread to hang. This catch all, while I appreciate feels risky to
have a catch all, is better than not catching and silently failing,
with a never ending thread.

If something worse than an APIError has gone wrong, we want to stop
the incredible journey of what we're doing.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-17 16:31:57 +01:00
Mazz Mosley 67995ab9e3 Pre-process validation steps
In order to validate a service name that has been specified as an
integer we need to run that as a pre-process validation step
*before* we pass the config to be validated against the schema.

It is not possible to validate it *in* the schema, it causes a
type error. Even though a number is a valid service name, it
must be a cast as a string within the yaml to avoid type error.

Taken this opportunity to move the code design in a direction
towards:

1. pre-process
2. validate
3. construct

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-13 16:32:20 +01:00
Daniel Nephin b87c09b9fc Merge pull request #1824 from mrfuxi/run-with-ports
Allow manual port mapping when using "run" command
2015-08-13 08:29:25 -07:00
Karol Duleba 2e7f08c2ef Raise configuration error when trying to extend service that does not exist. Fixes #1826
Signed-off-by: Karol Duleba <mr.fuxi@gmail.com>
2015-08-12 22:34:25 +01:00
Karol Duleba ff87ceabbd Allow manual port mapping when using "run" command. Fixes #1709
Signed-off-by: Karol Duleba <mr.fuxi@gmail.com>
2015-08-12 18:54:42 +01:00
Mazz Mosley 440099754d memory values can be strings or numbers
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-12 17:29:33 +01:00
mnowster c443e95f07 Merge pull request #1825 from aanand/dedupe-unset-env-warnings
Avoid duplicate warnings if an unset env variable is used multiple times
2015-08-12 15:57:04 +01:00
Aanand Prasad 4c65891db1 Avoid duplicate warnings if an unset env variable is used multiple times
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-08-12 15:39:33 +01:00
Mazz Mosley 5e2ecff8a1 Fix ports validation
I had misunderstood the valid formats allowed for ports. They must
always be in a list.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-12 15:19:28 +01:00