Commit Graph

452 Commits

Author SHA1 Message Date
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
mnowster 6f12224ec9 Merge pull request #2005 from lnmunhoz/master
Fix error message and class name from Boot2Docker to DockerMachine
2015-09-21 17:05:03 +01:00
mnowster aa70209ade Merge pull request #1957 from aanand/stub-run-on-windows
WIP: Build Windows binary
2015-09-21 16:21:12 +01:00
Aanand Prasad e5eaf68490 Remove custom docker client initialization logic
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-09-21 15:27:42 +01: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
Daniel Nephin 22bc174650 Refactor config.load() to remove reduce() and document some types.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-18 17:11:16 -04:00
Aanand Prasad fb30498153 Catch WindowsError in call_silently
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-09-18 18:10:29 +01:00
Aanand Prasad 3e4182a480 Stub 'run' on Windows
Adapted from @dopry's work in https://github.com/docker/compose/pull/1900

Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-09-18 18:10:17 +01:00
Aanand Prasad bbc8b74c17 Merge pull request #2068 from mnowster/2037-jsonschema-resolver-windows-path-fix
Ensure RefResolver works across operating systems
2015-09-18 18:09:58 +01:00
Mazz Mosley 5509990a71 Ensure RefResolver works across operating systems
Slashes, paths and a tale of woe. Validation now works on windows \o/

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-18 17:51:26 +01: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 577439ea7f Add a debug log message for config filenames.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:28:16 -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 fe5daf860d Move find_candidates_in_parent_dirs() into a config module so that config doesn't import from cli.
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 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
Daniel Nephin 2121f5117e Add docopt support for multiple files
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-17 14:13:50 -04:00
Daniel Nephin aab688d27e Merge pull request #1886 from mnowster/create-host-config-needs-version
Stop using deprecated `create_host_config` from utils
2015-09-17 12:37:22 -04:00
mnowster 1c823597bb Merge pull request #1995 from predakanga/master
Added support for IPC namespaces, fixes GH-1689
2015-09-17 17:14:44 +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
Daniel Nephin bdfb21f017 Fixes #189 - stacktrace when ctrl-c stops logs
Signed-off-by: Daniel Nephin <dnephin@docker.com>
2015-09-15 20:46:22 -04: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 fb96ed113a Stop sending json-file by default
By doing this we were over-riding any of the daemon's defaults.
Instead we can send an empty string which docker-py sends on
and the daemon interprets as, 'json-file' as a default if it
hasn't got any other daemon level config options.

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
Mazz Mosley 1007ad0f86 Refactor to simplify _parse_valid_types
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-15 14:29:00 +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
Mazz Mosley 32cd404c8c Remove redundant oneOf definitions
For simple definitions where a field can be multiple types, we can
specify the allowed types in an array. It's simpler and clearer.

This is only applicable to *simple* definitions, like number, string, list,
object without any other constraints.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-14 17:23:58 +01: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
Aanand Prasad e9871b084e Merge pull request #2020 from dnephin/fix_compose_with_logs_none
Fix compose up with other log drivers
2015-09-11 11:22:12 -07:00
Aanand Prasad 60701a71dc Merge pull request #2026 from ggtools/validation
Fix type for `tty` & `stdin_open`
2015-09-11 11:14:47 -07:00
Daniel Nephin 7d8ae9aa6d Refactor LogPrinter to make it immutable and remove logic from the constructor.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-09-11 12:56:56 -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
Christophe Labouisse e80f0bdf86 Fix type for `tty` & `stdin_open`
Signed-off-by: Christophe Labouisse <christophe@labouisse.org>
2015-09-10 23:49:07 +02: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
Aanand Prasad 9ce30e75df Merge pull request #2016 from mnowster/remove-unique-constraint-for-command
Remove uniqueness constraint for command
2015-09-09 10:05:41 -07: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
Mazz Mosley 7223d5cee0 Remove mistaken field
detach is a run param, not a config param. Oops, sorry!

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-09 16:23:54 +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
Aanand Prasad f7d86d3194 Merge pull request #1944 from funkyfuture/issue-1921
Adds pause- and unpause-command to docopt's TLC
2015-09-08 14:05:27 -07:00
Aanand Prasad 1c73ff33fe Merge pull request #1990 from shin-/1975-fix
Remove or space out suspension dots after service name
2015-09-08 12:27:39 -07:00
Lucas N. Munhoz b33dd3bc01 Fix error message and class name from Boot2Docker to DockerMachine
Signed-off-by: Lucas N. Munhoz <ln.munhoz@gmail.com>
2015-09-08 10:08:38 -03: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
Lachlan Pease 67957318ed Added IPC spec to fields_schema.json
Signed-off-by: Lachlan Pease <predatory.kangaroo@gmail.com>
2015-09-06 12:16:12 +10:00
Lachlan Pease 2468235472 Added support for IPC namespaces, fixes GH-1689
Signed-off-by: Lachlan Pease <predatory.kangaroo@gmail.com>
2015-09-06 12:09:24 +10:00
Joffrey F 6da7a9194c Remove or space out suspension dots after service name for easier copy-pasting
Signed-off-by: Joffrey F <joffrey@docker.com>
2015-09-04 17:43:12 -07: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
Daniel Nephin 08ba857807 Cleanup some project logic.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-09-03 12:04:38 -04:00
Daniel Nephin e801981fed Sort config keys
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-09-03 12:04:38 -04:00
Daniel Nephin ef56523883 Make external_links a regular service.option so that it's part of the config hash
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
Joffrey F f9c7346380 HTTP_TIMEOUT as importable constant for consistency
Signed-off-by: Joffrey F <joffrey@docker.com>
2015-09-02 16:29:19 -07:00
Joffrey F b110bbe9e3 Refined error message when timeout is encountered.
Signed-off-by: Joffrey F <joffrey@docker.com>
2015-09-02 14:31:30 -07:00
Joffrey F e634fe3fd6 Deprecation warning when DOCKER_CLIENT_TIMEOUT is used
Signed-off-by: Joffrey F <joffrey@docker.com>
2015-09-02 14:28:57 -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
Joffrey F b54b932b54 Exit gracefully when requests encounter a ReadTimeout exception.
Signed-off-by: Joffrey F <joffrey@docker.com>
2015-09-02 11:54:20 -07:00
Mazz Mosley 9b8e404d13 Pass service_name to process_errors
Previously on Buffy... The process_errors was parsing a load of
ValidationErrors that we get back from jsonschema which included
assumptions about the state of the instance we're validating.

Now it's split in two and we're doing field separate to service,
those assumptions don't hold and we can't logically retrieve the
service_name from the error parsing when we're doing service schema
validation, have to explicitly pass this in.

process_errors is high on my list for some future re-factoring to help
make it a bit clearer, smaller state of doing things.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley f51a5431ec Correct some schema field definitions
Now validation is split in two, the integration tests helped
highlight some places where the schema definition was incorrect.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 9979880c9f Add in volume_driver
I'd missed out this field by accident previously.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 4b487e3957 Refactor extends back out of __init__
If make_service_dict is our factory function then we'll give it the
responsibility of validation/construction and resolving.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 9fa6e42f55 process_errors handle both schemas
Now the schema has been split into two, we need to modify the
process_errors function to accomodate.

Previously if an error.path was empty then it meant they were root
errors. Now that service_schema checks after the service has been
resolved, our service name is a key within the dictionary and
so our root error logic check is no longer true.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +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 37bf8235b7 Get extended config path
Refactored out into it's own function.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 538a501eec Refactor validating extends file path
Separating out the steps we need to resolve extends, so that it
will be clear to insert pre-processing of interpolation and
validation.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-09-02 15:42:38 +01:00
Mazz Mosley 02c52ae673 Move resolve_environment within __init__
resolve_environment is specific to ServiceLoader, the function
does not need to be on the global scope, it is a part of the
ServiceLoader object. The environment needs to be resolved
before we can make any service dicts, it belongs in the
constructor.

This is cleaning up the design a little and being clearer
about intent and scope of functions.

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
Mazz Mosley c907f35e74 Raise if working_dir is None
Check for this in the init so we can remove the duplication of
raising in further functions.

A ServiceLoader isn't valid without one.

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
Frank Sachsenheim a4bab13aee Adds pause- and unpause-command to docopt's TLC
solves # 1921

Signed-off-by: Frank Sachsenheim <funkyfuture@riseup.net>
2015-08-28 19:05:19 +02: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 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 a348993d2c Remove two unused functions from cli/utils.py
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2015-08-25 16:55:29 -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
Aanand Prasad 60ff4549c9 Merge pull request #1766 from funkyfuture/pause_unpause
Adds pause and unpause-commands
2015-08-24 16:10:22 +01:00
Daniel Nephin 1212193c02 Merge pull request #1898 from aanand/verbose-debug
Set log level to DEBUG when `--verbose` is passed
2015-08-24 07:55:10 -07:00
Frank Sachsenheim dd738b380b Makes Service.config_hash a property
Signed-off-by: Frank Sachsenheim <funkyfuture@riseup.net>
2015-08-21 12:43:13 +02: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 8caaee9eac schema.json: remove specific log_opt properties
Signed-off-by: Joel Hansson <joel.hansson@ecraft.com>
2015-08-21 08:41:45 +02:00
Aanand Prasad c699876617 Set log level to DEBUG when `--verbose` is passed
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-08-20 16:09:28 +01: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
mnowster 71ffa89890 Merge pull request #1870 from aanand/fix-volume-path-warning
Fix volume path warning
2015-08-19 14:21:19 +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
Aanand Prasad 530d20db6d Fix volume path warning
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-08-14 11:15:22 +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
Aanand Prasad eea3b1cd6f Merge pull request #1850 from aanand/bump-1.5.0dev
Bump 1.5.0dev
2015-08-12 11:18:37 +01:00
Aanand Prasad ed31673069 Merge pull request #1827 from mnowster/port-ranges
Port ranges
2015-08-12 11:17:22 +01:00
Aanand Prasad fb4c9fbb8b Merge pull request #1808 from mnowster/129-validate-compose-yml
129 validate compose yml
2015-08-12 11:15:47 +01:00
Aanand Prasad 192dda4140 Bump 1.5.0dev
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-08-11 18:41:21 +01:00
Aanand Prasad 982a845635 Fix mem_limit and memswap_limit regression
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-08-11 14:17:30 +01:00
Mazz Mosley f8efb54c80 Handle $ref defined types errors
We use $ref in the schema to allow us to specify multiple type, eg
command, it can be a string or a list of strings.

It required some extra parsing to retrieve a helpful type to display
in our error message rather than 'string or string'. Which while
correct, is not helpful. We value helpful.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-11 13:08:12 +01:00
Mazz Mosley 68de84a0bf Clean up error.path handling
Tiny bit of refactoring to make it clearer and only pop service_name
once.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-11 12:01:27 +01:00
Mazz Mosley df14a4384d Catch non-unique errors
When a schema type is set as unique, we should display the validation
error to indicate that non-unique values have been provided for a key.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-11 12:01:27 +01:00
Mazz Mosley e0675b50c0 Retrieve sub property keys
The validation message was confusing by displaying only 1 level of
property of the service, even if the error was another level down.

Eg. if the 'files' property of 'extends' was the incorrect format,
it was displaying 'an invalid value for 'extends'', rather than
correctly retrieving 'files'.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-11 12:01:27 +01:00
Mazz Mosley ece6a72712 Clean error.message
Unfortunately the way that jsonschema is calling %r on its property
and then encoding the complete message means I've had to do this
manual way of removing the literal string prefix, u'.

eg:

key = 'extends'
message = "Invalid value for %r" % key
error.message = message.encode("utf-8")"

results in:

"Invalid value for u'extends'"

Performing a replace to strip out the extra "u'", does not change the
encoding of the string, it is at this point the character u followed
by a '.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-11 12:01:27 +01:00
Mazz Mosley b4872de213 Allow integer value for ports
While it was intended as a positive to be stricter in validation
it would in fact break backwards compatibility, which we do not
want to be doing.

Consider re-visiting this later and include a deprecation warning if
we want to be stricter.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-11 12:01:27 +01:00
Mazz Mosley 52733f6996 Merge pull request #1833 from aanand/deprecate-relative-volumes-without-dot
Show a warning when a relative path is specified without "./"
2015-08-11 11:21:17 +01:00
Aanand Prasad 46e8e4322a Show a warning when a relative path is specified without "./"
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-08-10 19:56:36 +01:00
Aanand Prasad dfa4bf4452 Ignore containers that don't have a name
If a container is in the process of being removed, or removal has
failed, it can sometimes appear in the output of GET /containers/json
but not have a 'Name' key. In that case, rather than crashing, we can
ignore it.

Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
2015-08-10 16:29:12 +01:00
Yuval Kohavi 297941e460 rebasing port range changes
Signed-off-by: Yuval Kohavi <yuval.kohavi@gmail.com>
2015-08-07 16:22:39 +01:00
Mazz Mosley df74b131ff Use split_port for ports format check
Rather than implement the logic a second time, use docker-py
split_port function to test if the ports is valid.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-07 15:27:30 +01:00
Mazz Mosley 2e428f94ca Refactor validation out
Move validation out into its own file without causing circular
import errors.

Fix some of the tests to import from the right place.

Also fix tests that were not using valid test data, as the validation
schema is now firing telling you that you couldn't "just" have this
dict without a build/image config key.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-07 12:06:34 +01:00
Mazz Mosley 0557b5dce6 Remove dead code
These functions weren't being called by anything.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-07 12:06:34 +01:00
Mazz Mosley d8aee782c8 Error handling
jsonschema provides a rich error tree of info, by parsing each error
we can pull out relevant info and re-write the error messages.

This covers current error handling behaviour.

This includes new error handling behaviour for types and formatting of
the ports field.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-07 12:06:34 +01:00
Mazz Mosley 8d6694085d Include remaining valid config properties
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-07 12:06:34 +01:00
Mazz Mosley 98c7a7da61 Order properties alphabetically
Improves readability.

Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
2015-08-07 12:06:34 +01:00