@@ -27,8 +27,16 @@ def main():
27
27
cfile , c_networks , c_volumes = generate (cname )
28
28
29
29
struct .update (cfile )
30
- networks .update (c_networks )
31
- volumes .update (c_volumes )
30
+
31
+ if c_networks is None :
32
+ networks = None
33
+ else :
34
+ networks .update (c_networks )
35
+
36
+ if c_volumes is None :
37
+ volumes = None
38
+ else :
39
+ volumes .update (c_volumes )
32
40
33
41
render (struct , args , networks , volumes )
34
42
@@ -38,7 +46,15 @@ def render(struct, args, networks, volumes):
38
46
if args .version == 1 :
39
47
pyaml .p (OrderedDict (struct ))
40
48
else :
41
- pyaml .p (OrderedDict ({'version' : '"3"' , 'services' : struct , 'networks' : networks , 'volumes' : volumes }))
49
+ ans = {'version' : '"3"' , 'services' : struct }
50
+
51
+ if networks is not None :
52
+ ans ['networks' ] = networks
53
+
54
+ if volumes is not None :
55
+ ans ['volumes' ] = volumes
56
+
57
+ pyaml .p (OrderedDict (ans ))
42
58
43
59
44
60
def is_date_or_time (s : str ):
@@ -73,6 +89,8 @@ def generate(cname):
73
89
cfile [cattrs ['Name' ][1 :]] = {}
74
90
ct = cfile [cattrs ['Name' ][1 :]]
75
91
92
+ default_networks = ['bridge' , 'host' , 'none' ]
93
+
76
94
values = {
77
95
'cap_add' : cattrs ['HostConfig' ]['CapAdd' ],
78
96
'cap_drop' : cattrs ['HostConfig' ]['CapDrop' ],
@@ -89,10 +107,10 @@ def generate(cname):
89
107
#'log_driver': cattrs['HostConfig']['LogConfig']['Type'],
90
108
#'log_opt': cattrs['HostConfig']['LogConfig']['Config'],
91
109
'logging' : {'driver' : cattrs ['HostConfig' ]['LogConfig' ]['Type' ], 'options' : cattrs ['HostConfig' ]['LogConfig' ]['Config' ]},
92
- 'networks' : {x for x in cattrs ['NetworkSettings' ]['Networks' ].keys () if x != 'bridge' },
110
+ 'networks' : {x for x in cattrs ['NetworkSettings' ]['Networks' ].keys () if x not in default_networks },
93
111
'security_opt' : cattrs ['HostConfig' ]['SecurityOpt' ],
94
112
'ulimits' : cattrs ['HostConfig' ]['Ulimits' ],
95
- 'volumes' : cattrs ['HostConfig' ][ 'Binds ' ],
113
+ 'volumes' : [ f' { m [ "Name" ] } : { m [ "Destination" ] } ' for m in cattrs ['Mounts' ] if m [ 'Type' ] == 'volume ' ],
96
114
'volume_driver' : cattrs ['HostConfig' ]['VolumeDriver' ],
97
115
'volumes_from' : cattrs ['HostConfig' ]['VolumesFrom' ],
98
116
'entrypoint' : cattrs ['Config' ]['Entrypoint' ],
@@ -112,10 +130,13 @@ def generate(cname):
112
130
# Populate devices key if device values are present
113
131
if cattrs ['HostConfig' ]['Devices' ]:
114
132
values ['devices' ] = [x ['PathOnHost' ]+ ':' + x ['PathInContainer' ] for x in cattrs ['HostConfig' ]['Devices' ]]
115
-
133
+
116
134
networks = {}
117
135
if values ['networks' ] == set ():
118
136
del values ['networks' ]
137
+ assumed_default_network = list (cattrs ['NetworkSettings' ]['Networks' ].keys ())[0 ]
138
+ values ['network_mode' ] = assumed_default_network
139
+ networks = None
119
140
else :
120
141
networklist = c .networks .list ()
121
142
for network in networklist :
@@ -124,9 +145,12 @@ def generate(cname):
124
145
'name' : network .attrs ['Name' ]}
125
146
126
147
volumes = {}
127
- for volume in values ['volumes' ]:
128
- volume_name = volume .split (':' )[0 ]
129
- volumes [volume_name ] = {'external' : True }
148
+ if values ['volumes' ] is not None :
149
+ for volume in values ['volumes' ]:
150
+ volume_name = volume .split (':' )[0 ]
151
+ volumes [volume_name ] = {'external' : True }
152
+ else :
153
+ volumes = None
130
154
131
155
# Check for command and add it if present.
132
156
if cattrs ['Config' ]['Cmd' ] is not None :
0 commit comments