@@ -71,11 +71,17 @@ func (c *Calcium) doGetNodeResource(ctx context.Context, nodename string, fix bo
71
71
memory := int64 (0 )
72
72
storage := int64 (0 )
73
73
cpumap := types.CPUMap {}
74
+ volumes := int64 (0 )
75
+ volumeMap := types.VolumeMap {}
74
76
for _ , workload := range workloads {
75
77
cpus = utils .Round (cpus + workload .CPUQuotaRequest )
76
78
memory += workload .MemoryRequest
77
79
storage += workload .StorageRequest
78
80
cpumap .Add (workload .CPU )
81
+ for _ , vmap := range workload .VolumePlanRequest {
82
+ volumes += vmap .Total ()
83
+ volumeMap .Add (vmap )
84
+ }
79
85
}
80
86
nr .CPUPercent = cpus / float64 (len (node .InitCPU ))
81
87
nr .MemoryPercent = float64 (memory ) / float64 (node .InitMemCap )
@@ -108,12 +114,22 @@ func (c *Calcium) doGetNodeResource(ctx context.Context, nodename string, fix bo
108
114
}
109
115
}
110
116
117
+ if node .VolumeUsed != volumes {
118
+ nr .Diffs = append (nr .Diffs , fmt .Sprintf ("volumes used: %d diff: %d" , node .VolumeUsed , volumes ))
119
+ }
120
+ node .Volume .Add (volumeMap )
121
+ for vol , cap := range node .Volume {
122
+ if node .InitVolume [vol ] != cap {
123
+ nr .Diffs = append (nr .Diffs , fmt .Sprintf ("volume %s diff %d" , vol , node .InitVolume [vol ]- cap ))
124
+ }
125
+ }
126
+
111
127
if err := node .Engine .ResourceValidate (ctx , cpus , cpumap , memory , storage ); err != nil {
112
128
nr .Diffs = append (nr .Diffs , err .Error ())
113
129
}
114
130
115
131
if fix {
116
- if err := c .doFixDiffResource (ctx , node , cpus , memory , storage ); err != nil {
132
+ if err := c .doFixDiffResource (ctx , node , cpus , memory , storage , volumes ); err != nil {
117
133
log .Warnf (ctx , "[doGetNodeResource] fix node resource failed %v" , err )
118
134
}
119
135
}
@@ -122,7 +138,7 @@ func (c *Calcium) doGetNodeResource(ctx context.Context, nodename string, fix bo
122
138
})
123
139
}
124
140
125
- func (c * Calcium ) doFixDiffResource (ctx context.Context , node * types.Node , cpus float64 , memory , storage int64 ) error {
141
+ func (c * Calcium ) doFixDiffResource (ctx context.Context , node * types.Node , cpus float64 , memory , storage , volumes int64 ) error {
126
142
var n * types.Node
127
143
var err error
128
144
return utils .Txn (ctx ,
@@ -136,6 +152,10 @@ func (c *Calcium) doFixDiffResource(ctx context.Context, node *types.Node, cpus
136
152
}
137
153
n .MemCap += node .InitMemCap - (memory + node .MemCap )
138
154
n .StorageCap += node .InitStorageCap - (storage + node .StorageCap )
155
+ n .VolumeUsed = volumes
156
+ for vol , cap := range node .Volume {
157
+ n .Volume [vol ] += node .InitVolume [vol ] - cap
158
+ }
139
159
return nil
140
160
},
141
161
func (ctx context.Context ) error {
0 commit comments