From 2f4564961123feb2f033aa91ba1b2b7938b32c62 Mon Sep 17 00:00:00 2001 From: Mazz Mosley Date: Mon, 17 Aug 2015 13:15:52 +0100 Subject: [PATCH 1/2] 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 --- tests/integration/service_test.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/integration/service_test.py b/tests/integration/service_test.py index bb30da1a1..17fd0aaf1 100644 --- a/tests/integration/service_test.py +++ b/tests/integration/service_test.py @@ -864,7 +864,10 @@ class ServiceTest(DockerClientTestCase): def test_log_drive_invalid(self): service = self.create_service('web', log_driver='xxx') - self.assertRaises(APIError, lambda: create_and_start_container(service)) + expected_error_msg = "logger: no log driver named 'xxx' is registered" + + with self.assertRaisesRegexp(APIError, expected_error_msg): + create_and_start_container(service) def test_log_drive_empty_default_jsonfile(self): service = self.create_service('web') From fb96ed113a4757372e01d1403587af73c9e77bea Mon Sep 17 00:00:00 2001 From: Mazz Mosley Date: Mon, 17 Aug 2015 13:17:01 +0100 Subject: [PATCH 2/2] 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 --- compose/service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/service.py b/compose/service.py index 7406ad80d..7e035e29f 100644 --- a/compose/service.py +++ b/compose/service.py @@ -657,7 +657,7 @@ class Service(object): cap_add = options.get('cap_add', None) cap_drop = options.get('cap_drop', None) log_config = LogConfig( - type=options.get('log_driver', 'json-file'), + type=options.get('log_driver', ""), config=options.get('log_opt', None) ) pid = options.get('pid', None)