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