Update vmware/govmomi vendor: add vapi package
Zones implementation for vSphere cloud provider needs dependencies which are not included in current vmware/govmomi vendor. So this update added "vapi" package to support zones.
This commit is contained in:
117
vendor/github.com/vmware/govmomi/simulator/virtual_machine.go
generated
vendored
117
vendor/github.com/vmware/govmomi/simulator/virtual_machine.go
generated
vendored
@@ -444,6 +444,13 @@ func numberToString(n int64, sep rune) string {
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
func getDiskSize(disk *types.VirtualDisk) int64 {
|
||||
if disk.CapacityInBytes == 0 {
|
||||
return disk.CapacityInKB * 1024
|
||||
}
|
||||
return disk.CapacityInBytes
|
||||
}
|
||||
|
||||
func (vm *VirtualMachine) configureDevice(devices object.VirtualDeviceList, spec *types.VirtualDeviceConfigSpec) types.BaseMethodFault {
|
||||
device := spec.Device
|
||||
d := device.GetVirtualDevice()
|
||||
@@ -518,9 +525,16 @@ func (vm *VirtualMachine) configureDevice(devices object.VirtualDeviceList, spec
|
||||
p, _ := parseDatastorePath(info.FileName)
|
||||
|
||||
host := Map.Get(*vm.Runtime.Host).(*HostSystem)
|
||||
ds := Map.FindByName(p.Datastore, host.Datastore).Reference()
|
||||
|
||||
info.Datastore = &ds
|
||||
entity := Map.FindByName(p.Datastore, host.Datastore)
|
||||
ref := entity.Reference()
|
||||
info.Datastore = &ref
|
||||
|
||||
ds := entity.(*Datastore)
|
||||
|
||||
// XXX: compare disk size and free space until windows stat is supported
|
||||
ds.Summary.FreeSpace -= getDiskSize(x)
|
||||
ds.Info.GetDatastoreInfo().FreeSpace = ds.Summary.FreeSpace
|
||||
}
|
||||
}
|
||||
|
||||
@@ -556,6 +570,15 @@ func (vm *VirtualMachine) removeDevice(devices object.VirtualDeviceList, spec *t
|
||||
switch b := device.Backing.(type) {
|
||||
case types.BaseVirtualDeviceFileBackingInfo:
|
||||
file = b.GetVirtualDeviceFileBackingInfo().FileName
|
||||
|
||||
p, _ := parseDatastorePath(file)
|
||||
|
||||
host := Map.Get(*vm.Runtime.Host).(*HostSystem)
|
||||
|
||||
ds := Map.FindByName(p.Datastore, host.Datastore).(*Datastore)
|
||||
|
||||
ds.Summary.FreeSpace += getDiskSize(device)
|
||||
ds.Info.GetDatastoreInfo().FreeSpace = ds.Summary.FreeSpace
|
||||
}
|
||||
|
||||
if file != "" {
|
||||
@@ -686,15 +709,9 @@ func (c *powerVMTask) Run(task *Task) (types.AnyType, types.BaseMethodFault) {
|
||||
}
|
||||
}
|
||||
|
||||
c.VirtualMachine.Runtime.PowerState = c.state
|
||||
c.VirtualMachine.Summary.Runtime.PowerState = c.state
|
||||
|
||||
bt := &c.VirtualMachine.Summary.Runtime.BootTime
|
||||
var boot types.AnyType
|
||||
if c.state == types.VirtualMachinePowerStatePoweredOn {
|
||||
now := time.Now()
|
||||
*bt = &now
|
||||
} else {
|
||||
*bt = nil
|
||||
boot = time.Now()
|
||||
}
|
||||
|
||||
event := c.event()
|
||||
@@ -705,9 +722,23 @@ func (c *powerVMTask) Run(task *Task) (types.AnyType, types.BaseMethodFault) {
|
||||
&types.VmPoweredOnEvent{VmEvent: event},
|
||||
)
|
||||
case types.VirtualMachinePowerStatePoweredOff:
|
||||
c.ctx.postEvent(&types.VmPoweredOffEvent{VmEvent: event})
|
||||
c.ctx.postEvent(
|
||||
&types.VmStoppingEvent{VmEvent: event},
|
||||
&types.VmPoweredOffEvent{VmEvent: event},
|
||||
)
|
||||
case types.VirtualMachinePowerStateSuspended:
|
||||
c.ctx.postEvent(
|
||||
&types.VmSuspendingEvent{VmEvent: event},
|
||||
&types.VmSuspendedEvent{VmEvent: event},
|
||||
)
|
||||
}
|
||||
|
||||
Map.Update(c.VirtualMachine, []types.PropertyChange{
|
||||
{Name: "runtime.powerState", Val: c.state},
|
||||
{Name: "summary.runtime.powerState", Val: c.state},
|
||||
{Name: "summary.runtime.bootTime", Val: boot},
|
||||
})
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
@@ -739,6 +770,37 @@ func (vm *VirtualMachine) PowerOffVMTask(ctx *Context, c *types.PowerOffVM_Task)
|
||||
}
|
||||
}
|
||||
|
||||
func (vm *VirtualMachine) SuspendVMTask(ctx *Context, req *types.SuspendVM_Task) soap.HasFault {
|
||||
runner := &powerVMTask{vm, types.VirtualMachinePowerStateSuspended, ctx}
|
||||
task := CreateTask(runner.Reference(), "suspend", runner.Run)
|
||||
|
||||
return &methods.SuspendVM_TaskBody{
|
||||
Res: &types.SuspendVM_TaskResponse{
|
||||
Returnval: task.Run(),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (vm *VirtualMachine) ResetVMTask(ctx *Context, req *types.ResetVM_Task) soap.HasFault {
|
||||
task := CreateTask(vm, "reset", func(task *Task) (types.AnyType, types.BaseMethodFault) {
|
||||
res := vm.PowerOffVMTask(ctx, &types.PowerOffVM_Task{This: vm.Self})
|
||||
ctask := Map.Get(res.(*methods.PowerOffVM_TaskBody).Res.Returnval).(*Task)
|
||||
if ctask.Info.Error != nil {
|
||||
return nil, ctask.Info.Error.Fault
|
||||
}
|
||||
|
||||
_ = vm.PowerOnVMTask(ctx, &types.PowerOnVM_Task{This: vm.Self})
|
||||
|
||||
return nil, nil
|
||||
})
|
||||
|
||||
return &methods.ResetVM_TaskBody{
|
||||
Res: &types.ResetVM_TaskResponse{
|
||||
Returnval: task.Run(),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (vm *VirtualMachine) ReconfigVMTask(ctx *Context, req *types.ReconfigVM_Task) soap.HasFault {
|
||||
task := CreateTask(vm, "reconfigVm", func(t *Task) (types.AnyType, types.BaseMethodFault) {
|
||||
err := vm.configure(&req.Spec)
|
||||
@@ -771,6 +833,11 @@ func (vm *VirtualMachine) DestroyTask(ctx *Context, req *types.Destroy_Task) soa
|
||||
return nil, r.Fault().VimFault().(types.BaseMethodFault)
|
||||
}
|
||||
|
||||
// Remove all devices
|
||||
devices := object.VirtualDeviceList(vm.Config.Hardware.Device)
|
||||
spec, _ := devices.ConfigSpec(types.VirtualDeviceConfigSpecOperationRemove)
|
||||
vm.configureDevices(&types.VirtualMachineConfigSpec{DeviceChange: spec})
|
||||
|
||||
// Delete VM files from the datastore (ignoring result for now)
|
||||
m := Map.FileManager()
|
||||
dc := Map.getEntityDatacenter(vm).Reference()
|
||||
@@ -907,29 +974,36 @@ func (vm *VirtualMachine) CloneVMTask(ctx *Context, req *types.CloneVM_Task) soa
|
||||
|
||||
func (vm *VirtualMachine) RelocateVMTask(req *types.RelocateVM_Task) soap.HasFault {
|
||||
task := CreateTask(vm, "relocateVm", func(t *Task) (types.AnyType, types.BaseMethodFault) {
|
||||
var changes []types.PropertyChange
|
||||
|
||||
if ref := req.Spec.Datastore; ref != nil {
|
||||
ds := Map.Get(*ref).(*Datastore)
|
||||
Map.RemoveReference(ds, &ds.Vm, *ref)
|
||||
|
||||
vm.Datastore = []types.ManagedObjectReference{*ref}
|
||||
|
||||
// TODO: migrate vm.Config.Files (and vm.Summary.Config.VmPathName)
|
||||
|
||||
changes = append(changes, types.PropertyChange{Name: "datastore", Val: []types.ManagedObjectReference{*ref}})
|
||||
}
|
||||
|
||||
if ref := req.Spec.Pool; ref != nil {
|
||||
pool := Map.Get(*ref).(*ResourcePool)
|
||||
Map.RemoveReference(pool, &pool.Vm, *ref)
|
||||
|
||||
vm.ResourcePool = ref
|
||||
changes = append(changes, types.PropertyChange{Name: "resourcePool", Val: *ref})
|
||||
}
|
||||
|
||||
if ref := req.Spec.Host; ref != nil {
|
||||
host := Map.Get(*ref).(*HostSystem)
|
||||
Map.RemoveReference(host, &host.Vm, *ref)
|
||||
|
||||
vm.Runtime.Host = ref
|
||||
changes = append(changes,
|
||||
types.PropertyChange{Name: "runtime.host", Val: *ref},
|
||||
types.PropertyChange{Name: "summary.runtime.host", Val: *ref},
|
||||
)
|
||||
}
|
||||
|
||||
Map.Update(vm, changes)
|
||||
|
||||
return nil, nil
|
||||
})
|
||||
|
||||
@@ -1032,7 +1106,7 @@ func (vm *VirtualMachine) RemoveAllSnapshotsTask(req *types.RemoveAllSnapshots_T
|
||||
}
|
||||
}
|
||||
|
||||
func (vm *VirtualMachine) ShutdownGuest(c *types.ShutdownGuest) soap.HasFault {
|
||||
func (vm *VirtualMachine) ShutdownGuest(ctx *Context, c *types.ShutdownGuest) soap.HasFault {
|
||||
r := &methods.ShutdownGuestBody{}
|
||||
// should be poweron
|
||||
if vm.Runtime.PowerState == types.VirtualMachinePowerStatePoweredOff {
|
||||
@@ -1047,6 +1121,17 @@ func (vm *VirtualMachine) ShutdownGuest(c *types.ShutdownGuest) soap.HasFault {
|
||||
vm.Runtime.PowerState = types.VirtualMachinePowerStatePoweredOff
|
||||
vm.Summary.Runtime.PowerState = types.VirtualMachinePowerStatePoweredOff
|
||||
|
||||
event := vm.event()
|
||||
ctx.postEvent(
|
||||
&types.VmGuestShutdownEvent{VmEvent: event},
|
||||
&types.VmPoweredOffEvent{VmEvent: event},
|
||||
)
|
||||
|
||||
Map.Update(vm, []types.PropertyChange{
|
||||
{Name: "runtime.powerState", Val: types.VirtualMachinePowerStatePoweredOff},
|
||||
{Name: "summary.runtime.powerState", Val: types.VirtualMachinePowerStatePoweredOff},
|
||||
})
|
||||
|
||||
r.Res = new(types.ShutdownGuestResponse)
|
||||
|
||||
return r
|
||||
|
||||
Reference in New Issue
Block a user