Bump dependencies for build tag fixes

bump github.com/vmware/govmomi/vim25 to HEAD
bump bitbucket.org/bertimus9/systemstat to HEAD
This commit is contained in:
Christoph Blecker
2018-02-21 12:50:32 -08:00
parent ecc5eb67d9
commit a26c120501
19 changed files with 469 additions and 234 deletions

View File

@@ -20,15 +20,40 @@ import (
"strings"
"github.com/vmware/govmomi/simulator/esx"
"github.com/vmware/govmomi/vim25/methods"
"github.com/vmware/govmomi/vim25/mo"
"github.com/vmware/govmomi/vim25/soap"
"github.com/vmware/govmomi/vim25/types"
)
type Datacenter struct {
mo.Datacenter
isESX bool
}
// NewDatacenter creates a Datacenter and its child folders.
func NewDatacenter(f *Folder) *Datacenter {
dc := &Datacenter{
isESX: f.Self == esx.RootFolder.Self,
}
if dc.isESX {
dc.Datacenter = esx.Datacenter
}
f.putChild(dc)
dc.createFolders()
return dc
}
// Create Datacenter Folders.
// Every Datacenter has 4 inventory Folders: Vm, Host, Datastore and Network.
// The ESX folder child types are limited to 1 type.
// The VC folders have additional child types, including nested folders.
func createDatacenterFolders(dc *mo.Datacenter, isVC bool) {
func (dc *Datacenter) createFolders() {
folders := []struct {
ref *types.ManagedObjectReference
name string
@@ -44,7 +69,11 @@ func createDatacenterFolders(dc *mo.Datacenter, isVC bool) {
folder := &Folder{}
folder.Name = f.name
if isVC {
if dc.isESX {
folder.ChildType = f.types[:1]
folder.Self = *f.ref
Map.PutEntity(dc, folder)
} else {
folder.ChildType = f.types
e := Map.PutEntity(dc, folder)
@@ -52,10 +81,6 @@ func createDatacenterFolders(dc *mo.Datacenter, isVC bool) {
ref := e.Reference()
f.ref.Type = ref.Type
f.ref.Value = ref.Value
} else {
folder.ChildType = f.types[:1]
folder.Self = *f.ref
Map.PutEntity(dc, folder)
}
}
@@ -67,7 +92,7 @@ func createDatacenterFolders(dc *mo.Datacenter, isVC bool) {
network.Self = ref
network.Name = strings.Split(ref.Value, "-")[1]
network.Entity().Name = network.Name
if isVC {
if !dc.isESX {
network.Self.Value = "" // we want a different moid per-DC
}
@@ -76,7 +101,7 @@ func createDatacenterFolders(dc *mo.Datacenter, isVC bool) {
}
func datacenterEventArgument(obj mo.Entity) *types.DatacenterEventArgument {
dc, ok := obj.(*mo.Datacenter)
dc, ok := obj.(*Datacenter)
if !ok {
dc = Map.getEntityDatacenter(obj)
}
@@ -85,3 +110,26 @@ func datacenterEventArgument(obj mo.Entity) *types.DatacenterEventArgument {
EntityEventArgument: types.EntityEventArgument{Name: dc.Name},
}
}
func (dc *Datacenter) PowerOnMultiVMTask(ctx *Context, req *types.PowerOnMultiVM_Task) soap.HasFault {
task := CreateTask(dc, "powerOnMultiVM", func(_ *Task) (types.AnyType, types.BaseMethodFault) {
if dc.isESX {
return nil, new(types.NotImplemented)
}
for _, ref := range req.Vm {
vm := Map.Get(ref).(*VirtualMachine)
Map.WithLock(vm, func() {
vm.PowerOnVMTask(ctx, &types.PowerOnVM_Task{})
})
}
return nil, nil
})
return &methods.PowerOnMultiVM_TaskBody{
Res: &types.PowerOnMultiVM_TaskResponse{
Returnval: task.Run(),
},
}
}