esxi-monitor/vmomi/utils.go

37 lines
735 B
Go
Executable File

package vmomi
import (
"context"
"github.com/vmware/govmomi/view"
"github.com/vmware/govmomi/vim25"
"github.com/vmware/govmomi/vim25/mo"
)
func ListVms(client *vim25.Client) ([]*VirtualMachine, error) {
manager := view.NewManager(client)
v, err := manager.CreateContainerView(
context.Background(),
client.ServiceContent.RootFolder,
[]string{"VirtualMachine"},
true,
)
if err != nil {
return nil, err
}
var vms []mo.VirtualMachine
err = v.Retrieve(context.Background(), []string{"VirtualMachine"}, []string{}, &vms)
if err != nil {
return nil, err
}
var dist []*VirtualMachine
for i := range vms {
dist = append(dist, makeVirtualMachine(client, (*MoVirtualMachine)(&vms[i])))
}
return dist, nil
}