UNPKG

1.05 kBJavaScriptView Raw
1import cdi from 'cccf-docker-instructions'
2import clone from 'clone'
3
4function removeOutputFields(s) {
5 let service = clone(s)
6 delete service.placement
7 delete service.driver
8 service.host = `tcp://${service.host.ip}:4243`
9 service.memory = service.memory+'b'
10 service['cpu-shares'] = service.cpu
11 delete service.cpu
12 return service
13}
14
15export default function applyPlan(plan, args) {
16 args = args || {}
17 // perform depending on driver
18 let add_cmds = cdi.run(plan.add.map(removeOutputFields))
19 let stop_cmds = cdi.stop(plan.remove.map(removeOutputFields))
20 let rm_cmds = cdi.rm(plan.remove.map(removeOutputFields))
21
22 // TODO: run stop + rm (for each container) in paralell, then run add
23
24 if (args['always-remove']) {
25 let rmIds = plan.remove.map(p => p.id)
26 let addIds = plan.add.map(p => p.id)
27 let allNew = plan.add.filter(a => rmIds.indexOf(a.id) < 0)
28 let always_remove = cdi.rm(allNew.map(removeOutputFields))
29 rm_cmds = rm_cmds.concat(always_remove)
30 }
31
32 return stop_cmds.concat(rm_cmds, add_cmds)
33}
34