orchard/internal/controller/scheduler/workerinfo.go

38 lines
730 B
Go

package scheduler
import v1 "github.com/cirruslabs/orchard/pkg/resource/v1"
type WorkerInfo struct {
ResourcesUsed v1.Resources
NumRunningVMs int
}
type WorkerInfos map[string]WorkerInfo
func (workerInfos WorkerInfos) AddVM(name string, resourcesUsed v1.Resources) {
workerInfo, ok := workerInfos[name]
if !ok {
workerInfo = WorkerInfo{
ResourcesUsed: v1.Resources{},
}
}
workerInfo.ResourcesUsed.Add(resourcesUsed)
workerInfo.NumRunningVMs++
workerInfos[name] = workerInfo
}
func (workerInfos WorkerInfos) Get(name string) WorkerInfo {
workerInfo, ok := workerInfos[name]
if !ok {
workerInfo = WorkerInfo{
ResourcesUsed: v1.Resources{},
}
workerInfos[name] = workerInfo
}
return workerInfo
}