Pārlūkot izejas kodu

Fix output of 'config' for v1 files

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad 9 gadi atpakaļ
vecāks
revīzija
6064d200f9

+ 12 - 2
compose/config/serialize.py

@@ -5,6 +5,8 @@ import six
 import yaml
 
 from compose.config import types
+from compose.config.config import V1
+from compose.config.config import V2_0
 
 
 def serialize_config_type(dumper, data):
@@ -17,12 +19,20 @@ yaml.SafeDumper.add_representer(types.VolumeSpec, serialize_config_type)
 
 
 def serialize_config(config):
+    services = {service.pop('name'): service for service in config.services}
+
+    if config.version == V1:
+        for service_dict in services.values():
+            if 'network_mode' not in service_dict:
+                service_dict['network_mode'] = 'bridge'
+
     output = {
-        'version': config.version,
-        'services': {service.pop('name'): service for service in config.services},
+        'version': V2_0,
+        'services': services,
         'networks': config.networks,
         'volumes': config.volumes,
     }
+
     return yaml.safe_dump(
         output,
         default_flow_style=False,

+ 25 - 0
tests/acceptance/cli_test.py

@@ -190,6 +190,31 @@ class CLITestCase(DockerClientTestCase):
         }
         assert output == expected
 
+    def test_config_v1(self):
+        self.base_dir = 'tests/fixtures/v1-config'
+        result = self.dispatch(['config'])
+        assert yaml.load(result.stdout) == {
+            'version': '2.0',
+            'services': {
+                'net': {
+                    'image': 'busybox',
+                    'network_mode': 'bridge',
+                },
+                'volume': {
+                    'image': 'busybox',
+                    'volumes': ['/data:rw'],
+                    'network_mode': 'bridge',
+                },
+                'app': {
+                    'image': 'busybox',
+                    'volumes_from': ['service:volume:rw'],
+                    'network_mode': 'service:net',
+                },
+            },
+            'networks': {},
+            'volumes': {},
+        }
+
     def test_ps(self):
         self.project.get_service('simple').create_container()
         result = self.dispatch(['ps'])

+ 10 - 0
tests/fixtures/v1-config/docker-compose.yml

@@ -0,0 +1,10 @@
+net:
+  image: busybox
+volume:
+  image: busybox
+  volumes:
+    - /data
+app:
+  image: busybox
+  net: "container:net"
+  volumes_from: ["volume"]