37 lines
735 B
Go
Executable File
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
|
|
}
|