-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinspect.go
69 lines (59 loc) · 1.43 KB
/
inspect.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
66
67
68
69
package scheduler
import (
"github.com/AliyunContainerService/gpushare-scheduler-extender/pkg/cache"
"github.com/AliyunContainerService/gpushare-scheduler-extender/pkg/utils"
)
func (in Inspect) Handler(name string) *Result {
nodes := []*Node{}
errMsg := ""
if len(name) == 0 {
nodeInfos := in.cache.GetNodeinfos()
for _, info := range nodeInfos {
nodes = append(nodes, buildNode(info))
}
} else {
node, err := in.cache.GetNodeInfo(name)
if err != nil {
errMsg = err.Error()
}
// nodeInfos = append(nodeInfos, node)
nodes = append(nodes, buildNode(node))
}
return &Result{
Nodes: nodes,
Error: errMsg,
}
}
func buildNode(info *cache.NodeInfo) *Node {
devInfos := info.GetDevs()
devs := []*Device{}
var usedGPU uint
for i, devInfo := range devInfos {
dev := &Device{
ID: i,
TotalGPU: devInfo.GetTotalGPUMemory(),
UsedGPU: devInfo.GetUsedGPUMemory(),
}
podInfos := devInfo.GetPods()
pods := []*Pod{}
for _, podInfo := range podInfos {
if utils.AssignedNonTerminatedPod(podInfo) {
pod := &Pod{
Namespace: podInfo.Namespace,
Name: podInfo.Name,
UsedGPU: utils.GetGPUMemoryFromPodResource(podInfo),
}
pods = append(pods, pod)
}
}
dev.Pods = pods
devs = append(devs, dev)
usedGPU += devInfo.GetUsedGPUMemory()
}
return &Node{
Name: info.GetName(),
TotalGPU: uint(info.GetTotalGPUMemory()),
UsedGPU: usedGPU,
Devices: devs,
}
}