orchard/internal/worker/vmmanager/vmmanager.go

50 lines
805 B
Go

package vmmanager
import (
"github.com/cirruslabs/orchard/internal/worker/ondiskname"
)
type VMManager struct {
vms map[ondiskname.OnDiskName]*VM
}
func New() *VMManager {
return &VMManager{
vms: map[ondiskname.OnDiskName]*VM{},
}
}
func (vmm *VMManager) Exists(key ondiskname.OnDiskName) bool {
_, ok := vmm.vms[key]
return ok
}
func (vmm *VMManager) Get(key ondiskname.OnDiskName) (*VM, bool) {
vm, ok := vmm.vms[key]
return vm, ok
}
func (vmm *VMManager) Put(key ondiskname.OnDiskName, vm *VM) {
vmm.vms[key] = vm
}
func (vmm *VMManager) Delete(key ondiskname.OnDiskName) {
delete(vmm.vms, key)
}
func (vmm *VMManager) Len() int {
return len(vmm.vms)
}
func (vmm *VMManager) List() []*VM {
var vms []*VM
for _, vm := range vmm.vms {
vms = append(vms, vm)
}
return vms
}