-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
62 lines (60 loc) · 1.75 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var zsf = require('@zombiec0rn/zombie-service-format')
var znf = require('@zombiec0rn/zombie-node-format')
var scale = require('@zombiec0rn/zombie-service-scale')
var omit = require('lodash.omit')
var find = require('lodash.find')
var bytes = require('bytes')
function isObject(a) {
return (!!a) && (a.constructor === Object)
}
function isArray(a) {
return (!!a) && (a.constructor === Array)
}
function validateContainer(container) {
try { zsf.validate(container); return container }
catch(e) { throw e }
}
function validateNode(node) {
try { znf.validate(node); return node }
catch(e) { throw e }
}
function hostifyDiff(current, diff) {
diff.keep = diff.keep.map(function(keep) {
keep.host = find(current, ['id', keep.id]).host
return keep
})
diff.remove = diff.remove.map(function(remove) {
remove.host = find(current, ['id', remove.id]).host
return remove
})
return diff
}
function unifyContainers(containers, ignore) {
if (ignore) containers = containers
.filter(function(c) { return ignore.indexOf(c.id) < 0 })
containers = containers.filter(validateContainer)
containers = scale.up(containers)
containers = containers.map(function(container) {
var c = omit(container, ['host','scale'])
if (c.image.indexOf(':') < 0) c.image = c.image+':latest'
if (c.memory) c.memory = bytes(c.memory)
return c
})
return containers
}
function sortByMemoryAndCpu(a,b) {
if (a.memory == b.memory) {
return (a.cpu < b.cpu) ? 1 : (a.cpu > b.cpu) ? -1 : 0
}
else {
return (a.memory < b.memory) ? 1 : -1
}
}
module.exports = {
isArray: isArray,
isObject: isObject,
hostifyDiff: hostifyDiff,
validateNode: validateNode,
unifyContainers: unifyContainers,
sortByMemoryAndCpu: sortByMemoryAndCpu
}