From 46585fb8e17a4b6cb5763f055ef00d0aa3d952c9 Mon Sep 17 00:00:00 2001
From: Joffrey F <joffrey@docker.com>
Date: Fri, 8 Jan 2016 14:37:07 -0800
Subject: [PATCH] Support legacy logging options format

Additional test for legacy compose file.

Signed-off-by: Joffrey F <joffrey@docker.com>
---
 compose/config/config.py                           | 10 ++++++++++
 tests/acceptance/cli_test.py                       | 14 ++++++++++++++
 .../logging-composefile-legacy/docker-compose.yml  | 10 ++++++++++
 3 files changed, 34 insertions(+)
 create mode 100644 tests/fixtures/logging-composefile-legacy/docker-compose.yml

diff --git a/compose/config/config.py b/compose/config/config.py
index 0e7942595..c59f384d6 100644
--- a/compose/config/config.py
+++ b/compose/config/config.py
@@ -504,6 +504,16 @@ def finalize_service(service_config):
     if 'restart' in service_dict:
         service_dict['restart'] = parse_restart_spec(service_dict['restart'])
 
+    if 'log_driver' in service_dict or 'log_opt' in service_dict:
+        if 'logging' not in service_dict:
+            service_dict['logging'] = {}
+        if 'log_driver' in service_dict:
+            service_dict['logging']['driver'] = service_dict['log_driver']
+            del service_dict['log_driver']
+        if 'log_opt' in service_dict:
+            service_dict['logging']['options'] = service_dict['log_opt']
+            del service_dict['log_opt']
+
     return service_dict
 
 
diff --git a/tests/acceptance/cli_test.py b/tests/acceptance/cli_test.py
index c5df30793..8abdf7854 100644
--- a/tests/acceptance/cli_test.py
+++ b/tests/acceptance/cli_test.py
@@ -730,6 +730,20 @@ class CLITestCase(DockerClientTestCase):
         self.assertEqual(log_config.get('Type'), 'json-file')
         self.assertEqual(log_config.get('Config')['max-size'], '10m')
 
+    def test_up_logging_legacy(self):
+        self.base_dir = 'tests/fixtures/logging-composefile-legacy'
+        self.dispatch(['up', '-d'])
+        simple = self.project.get_service('simple').containers()[0]
+        log_config = simple.get('HostConfig.LogConfig')
+        self.assertTrue(log_config)
+        self.assertEqual(log_config.get('Type'), 'none')
+
+        another = self.project.get_service('another').containers()[0]
+        log_config = another.get('HostConfig.LogConfig')
+        self.assertTrue(log_config)
+        self.assertEqual(log_config.get('Type'), 'json-file')
+        self.assertEqual(log_config.get('Config')['max-size'], '10m')
+
     def test_up_logging_with_multiple_files(self):
         self.base_dir = 'tests/fixtures/logging-composefile'
         config_paths = [
diff --git a/tests/fixtures/logging-composefile-legacy/docker-compose.yml b/tests/fixtures/logging-composefile-legacy/docker-compose.yml
new file mode 100644
index 000000000..ee9941079
--- /dev/null
+++ b/tests/fixtures/logging-composefile-legacy/docker-compose.yml
@@ -0,0 +1,10 @@
+simple:
+  image: busybox:latest
+  command: top
+  log_driver: "none"
+another:
+  image: busybox:latest
+  command: top
+  log_driver: "json-file"
+  log_opt:
+    max-size: "10m"