|
1 | | -module.exports = async function (docker, projectName, recipe, output) { |
| 1 | +async function down(docker, projectName, recipe) { |
| 2 | + var networks = []; |
| 3 | + var networkNames = Object.keys(recipe.networks || { default: null }); |
| 4 | + for (var networkName of networkNames) { |
| 5 | + try { |
| 6 | + var network = await docker.getNetwork(projectName + '_' + networkName); |
| 7 | + } catch (e) {} |
| 8 | + |
| 9 | + try { |
| 10 | + await network.remove(); |
| 11 | + } catch (e) {} |
| 12 | + } |
| 13 | + return networks; |
| 14 | +} |
| 15 | + |
| 16 | +async function up(docker, projectName, recipe, output) { |
2 | 17 | var networks = []; |
3 | 18 | var networkNames = Object.keys(recipe.networks || []); |
4 | 19 | for (var networkName of networkNames) { |
5 | 20 | var network = recipe.networks[networkName]; |
6 | 21 | if (network === null) { |
7 | 22 | try { |
8 | | - networks.push({ 'name': projectName + '_' + networkName, 'network': await docker.createNetwork({ 'Name': projectName + '_' + networkName, 'CheckDuplicate': true }) }); |
| 23 | + networks.push({ |
| 24 | + name: projectName + '_' + networkName, |
| 25 | + network: await docker.createNetwork({ |
| 26 | + Name: projectName + '_' + networkName, |
| 27 | + CheckDuplicate: true, |
| 28 | + }), |
| 29 | + }); |
9 | 30 | } catch (err) { |
10 | | - if (err.statusCode == 409 && err.json.message.includes('already exists')) { |
11 | | - let returnedNetwork = await docker.listNetworks({ 'filters': { 'name': [projectName + '_' + networkName] } }); |
12 | | - networks.push({ 'name': projectName + '_' + networkName, 'network': await docker.getNetwork(returnedNetwork[0].Id) }); |
| 31 | + if ( |
| 32 | + err.statusCode == 409 && |
| 33 | + err.json.message.includes('already exists') |
| 34 | + ) { |
| 35 | + let returnedNetwork = await docker.listNetworks({ |
| 36 | + filters: { name: [projectName + '_' + networkName] }, |
| 37 | + }); |
| 38 | + networks.push({ |
| 39 | + name: projectName + '_' + networkName, |
| 40 | + network: await docker.getNetwork(returnedNetwork[0].Id), |
| 41 | + }); |
13 | 42 | } else { |
14 | 43 | throw err; |
15 | 44 | } |
16 | 45 | } |
17 | | - continue |
| 46 | + continue; |
18 | 47 | } |
19 | 48 | if (network.external === true) continue; |
20 | 49 | var opts = { |
21 | | - 'Name': projectName + '_' + networkName, |
22 | | - 'Driver': network.driver, |
23 | | - 'DriverOpts': network.driver_opts, |
24 | | - 'Labels': network.labels, |
25 | | - 'Attachable': network.attachable, |
26 | | - 'EnableIPv6': network.enable_ipv6, |
27 | | - 'Internal': network.internal, |
28 | | - 'CheckDuplicate': true |
| 50 | + Name: projectName + '_' + networkName, |
| 51 | + Driver: network.driver, |
| 52 | + DriverOpts: network.driver_opts, |
| 53 | + Labels: { |
| 54 | + ...network.labels, |
| 55 | + ...{ |
| 56 | + 'com.docker.compose.network': 'default', |
| 57 | + 'com.docker.compose.project': projectName, |
| 58 | + }, |
| 59 | + }, |
| 60 | + Attachable: network.attachable, |
| 61 | + EnableIPv6: network.enable_ipv6, |
| 62 | + Internal: network.internal, |
| 63 | + CheckDuplicate: true, |
29 | 64 | }; |
30 | 65 | if (network.name !== undefined) { |
31 | 66 | opts.Name = networkName; |
32 | 67 | } |
33 | 68 | if (network.ipam !== undefined) { |
34 | 69 | opts.IPAM = { |
35 | | - 'Driver': network.ipam.driver, |
36 | | - 'Options': network.ipam.options |
| 70 | + Driver: network.ipam.driver, |
| 71 | + Options: network.ipam.options, |
37 | 72 | }; |
38 | 73 | if (network.ipam.config !== undefined) { |
39 | 74 | opts.IPAM['Config'] = { |
40 | | - 'Subnet': network.ipam.config.subnet, |
41 | | - 'IPRange': network.ipam.config.ip_range, |
42 | | - 'Gateway': network.ipam.config.gateway, |
43 | | - 'AuxAddress': network.ipam.config.aux_addresses |
| 75 | + Subnet: network.ipam.config.subnet, |
| 76 | + IPRange: network.ipam.config.ip_range, |
| 77 | + Gateway: network.ipam.config.gateway, |
| 78 | + AuxAddress: network.ipam.config.aux_addresses, |
44 | 79 | }; |
45 | 80 | } |
46 | 81 | } |
47 | 82 | //if exists we have to compare with the existing network |
48 | | - networks.push({ 'name': projectName + '_' + networkName, 'network': await docker.createNetwork(opts) }); |
| 83 | + networks.push({ |
| 84 | + name: projectName + '_' + networkName, |
| 85 | + network: await docker.createNetwork(opts), |
| 86 | + }); |
49 | 87 | } |
50 | 88 |
|
51 | 89 | if (networks.length === 0) { |
52 | 90 | try { |
53 | | - networks.push({ 'name': projectName + '_default', 'network': await docker.createNetwork({ 'Name': projectName + '_default', 'CheckDuplicate': true }) }); |
| 91 | + networks.push({ |
| 92 | + name: projectName + '_default', |
| 93 | + network: await docker.createNetwork({ |
| 94 | + Name: projectName + '_default', |
| 95 | + CheckDuplicate: true, |
| 96 | + }), |
| 97 | + }); |
54 | 98 | } catch (err) { |
55 | | - if (err.statusCode == 409 && err.json.message.includes('already exists')) { |
56 | | - let returnedNetwork = await docker.listNetworks({ 'filters': { 'name': [projectName + '_default'] } }); |
57 | | - networks.push({ 'name': projectName + '_' + networkName, 'network': await docker.getNetwork(returnedNetwork[0].Id) }); |
| 99 | + if ( |
| 100 | + err.statusCode == 409 && |
| 101 | + err.json.message.includes('already exists') |
| 102 | + ) { |
| 103 | + let returnedNetwork = await docker.listNetworks({ |
| 104 | + filters: { name: [projectName + '_default'] }, |
| 105 | + }); |
| 106 | + networks.push({ |
| 107 | + name: projectName + '_' + networkName, |
| 108 | + network: await docker.getNetwork(returnedNetwork[0].Id), |
| 109 | + }); |
58 | 110 | } else { |
59 | 111 | throw err; |
60 | 112 | } |
61 | 113 | } |
62 | 114 | } |
63 | 115 | return networks; |
64 | 116 | } |
| 117 | + |
| 118 | +module.exports = { |
| 119 | + down, |
| 120 | + up, |
| 121 | +}; |
0 commit comments