forked from Qihoo360/wayne
/
util.go
65 lines (59 loc) · 1.7 KB
/
util.go
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
63
64
65
package common
import (
"k8s.io/api/apps/v1beta1"
"k8s.io/api/core/v1"
)
func DeploymentResourceList(deployment *v1beta1.Deployment) *ResourceList {
replicas := *(deployment.Spec.Replicas)
resourceList := ContainersResourceList(deployment.Spec.Template.Spec.Containers)
return &ResourceList{
Cpu: resourceList.Cpu * int64(replicas),
Memory: resourceList.Memory * int64(replicas),
}
}
func StatefulsetResourceList(statefulSet *v1beta1.StatefulSet) *ResourceList {
replicas := *(statefulSet.Spec.Replicas)
resourceList := ContainersResourceList(statefulSet.Spec.Template.Spec.Containers)
return &ResourceList{
Cpu: resourceList.Cpu * int64(replicas),
Memory: resourceList.Memory * int64(replicas),
}
}
func ContainersResourceList(containers []v1.Container) *ResourceList {
var cpuUsage, memoryUsage int64
for _, container := range containers {
// unit m
cpuUsage += container.Resources.Limits.Cpu().MilliValue()
// unit Byte
memoryUsage += container.Resources.Limits.Memory().Value()
}
return &ResourceList{
Cpu: cpuUsage,
Memory: memoryUsage,
}
}
func ContainersRequestResourceList(containers []v1.Container) *ResourceList {
var cpuUsage, memoryUsage int64
for _, container := range containers {
// unit m
cpuUsage += container.Resources.Requests.Cpu().MilliValue()
// unit Byte
memoryUsage += container.Resources.Requests.Memory().Value()
}
return &ResourceList{
Cpu: cpuUsage,
Memory: memoryUsage,
}
}
func CompareLabels(source map[string]string, target map[string]string) bool {
if len(source) != len(target) {
return false
}
for key, value := range source {
targetValue, ok := target[key]
if !ok || value != targetValue {
return false
}
}
return true
}