77 lines
1.7 KiB
Go
Executable File
77 lines
1.7 KiB
Go
Executable File
package vmomi
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/vmware/govmomi/object"
|
|
"github.com/vmware/govmomi/property"
|
|
"github.com/vmware/govmomi/vim25"
|
|
"github.com/vmware/govmomi/vim25/mo"
|
|
)
|
|
|
|
type (
|
|
MoVirtualMachine mo.VirtualMachine
|
|
ObjectVirtualMachine object.VirtualMachine
|
|
|
|
VirtualMachine struct {
|
|
c *vim25.Client
|
|
mvm *MoVirtualMachine
|
|
ovm *ObjectVirtualMachine
|
|
}
|
|
)
|
|
|
|
func makeVirtualMachine(c *vim25.Client, vm *MoVirtualMachine) *VirtualMachine {
|
|
return &VirtualMachine{
|
|
c: c,
|
|
mvm: vm,
|
|
ovm: vm.GetOvm(c),
|
|
}
|
|
}
|
|
|
|
func (v *VirtualMachine) Ovm() *ObjectVirtualMachine {
|
|
return v.ovm
|
|
}
|
|
|
|
func (v *VirtualMachine) Mvm() *MoVirtualMachine {
|
|
return v.mvm
|
|
}
|
|
|
|
func (v *VirtualMachine) Name() string {
|
|
return v.mvm.Summary.Config.Name
|
|
}
|
|
|
|
func (v *VirtualMachine) Uuid() string {
|
|
return v.mvm.Summary.Config.Uuid
|
|
}
|
|
|
|
func (v *VirtualMachine) PowerOn() (*object.Task, error) {
|
|
return v.ovm.GetOvm().PowerOn(context.Background())
|
|
}
|
|
|
|
func (v *VirtualMachine) PowerOff() (*object.Task, error) {
|
|
return v.ovm.GetOvm().PowerOff(context.Background())
|
|
}
|
|
|
|
func (v *VirtualMachine) Reset() (*object.Task, error) {
|
|
return v.ovm.GetOvm().Reset(context.Background())
|
|
}
|
|
|
|
func (vm *MoVirtualMachine) GetMvm() *mo.VirtualMachine {
|
|
return (*mo.VirtualMachine)(vm)
|
|
}
|
|
|
|
func (vm *MoVirtualMachine) GetOvm(c *vim25.Client) *ObjectVirtualMachine {
|
|
return (*ObjectVirtualMachine)(object.NewVirtualMachine(c, vm.Reference()))
|
|
}
|
|
|
|
func (ovm *ObjectVirtualMachine) GetOvm() *object.VirtualMachine {
|
|
return (*object.VirtualMachine)(ovm)
|
|
}
|
|
|
|
func (ovm *ObjectVirtualMachine) GetMvm(c *vim25.Client) (*MoVirtualMachine, error) {
|
|
var mvm mo.VirtualMachine
|
|
|
|
pc := property.DefaultCollector(c)
|
|
return (*MoVirtualMachine)(&mvm), pc.RetrieveOne(context.Background(), ovm.Reference(), []string{}, &mvm)
|
|
}
|