' Scripting Library for VMware GSX server
' Saturday, 2002-08-31
' Constants at top are derived via
' Michael Harris' TypeLib Extractor
' Content following developed against
' VMware GSX Server 2.01 build-2129
' http://www.vmware.com
'
'======================================
'
' Description: VMware VmCOM 1.0 Type Library
'
' Name: VMCOMLib
' Version: 1.0 [of Type Library]
' GUID: {0407CAC2-41D7-4EB4-898B-4EC06C57BB81}
'
' File: VmCOM.dll
' Version: 1.0.0.1 [of file]
'
' Extracted on: 2002.08.28 00:53:08
'
'=====================================
' VmErr
'=====================================
Const vmErr_ALREADYCONNECTED = -2147220980
Const vmErr_BADRESPONSE = -2147220978
Const vmErr_BADSTATE = -2147220984
Const vmErr_BADVERSION = -2147220986
Const vmErr_DISCONNECT = -2147220979
Const vmErr_GARBAGE = -2147220977
Const vmErr_INSUFFICIENT_RESOURCES = -2147220970
Const vmErr_INVALIDARGS = -2147220989
Const vmErr_INVALIDVM = -2147220974
Const vmErr_NEEDINPUT = -2147220976
Const vmErr_NETFAIL = -2147220990
Const vmErr_NOACCESS = -2147220988
Const vmErr_NOEXECVMAUTHD = -2147220983
Const vmErr_NOMEM = -2147220991
Const vmErr_NOPROPERTY = -2147220982
Const vmErr_NOSUCHVM = -2147220981
Const vmErr_NOTCONNECTED = -2147220987
Const vmErr_NOTSUPPORTED = -2147220975
Const vmErr_PROXYFAIL = -2147220969
Const vmErr_TIMEOUT = -2147220985
Const vmErr_UNSPECIFIED = -2147219993
Const vmErr_VMBUSY = -2147220971
Const vmErr_VMEXISTS = -2147220972
Const vmErr_VMINITFAILED = -2147220973
'=====================================
' VmExecutionState
'=====================================
Const vmExecutionState_Off = 2
Const vmExecutionState_On = 1
Const vmExecutionState_Stuck = 4
Const vmExecutionState_Suspended = 3
Const vmExecutionState_Unknown = 5
'=====================================
' VmPlatform
'=====================================
Const vmPlatform_LINUX = 2
Const vmPlatform_UNKNOWN = 4
Const vmPlatform_VMNIX = 3
Const vmPlatform_WINDOWS = 1
'=====================================
' VmPowerOpMode
'=====================================
Const vmPowerOpMode_Hard = 1
Const vmPowerOpMode_Soft = 2
Const vmPowerOpMode_TrySoft = 3
'=====================================
' VmProdInfoType
'=====================================
Const vmProdInfo_Build = 3
Const vmProdInfo_Platform = 2
Const vmProdInfo_Product = 1
Const vmProdInfo_Version_Major = 4
Const vmProdInfo_Version_Minor = 5
Const vmProdInfo_Version_Revision = 6
'=====================================
' VmProduct
'=====================================
Const vmProduct_ESX = 3
Const vmProduct_GSX = 2
Const vmProduct_UNKNOWN = 4
Const vmProduct_WS = 1
'=====================================
' VmTimeoutId
'=====================================
Const vmTimeoutId_Default = 1
'=====================================
'=====================================
'
' Wrapper Procedures for Vmware GSX
'
'
'=====================================
Function GetLocalVM(path)
' Returns an object reference to a local VM
' takes the VMX file's path as its argument
Dim cnx, vm_server, vm
' Set connection object reference
Set cnx = CreateObject("VmCOM.VmConnectParams")
' Set VMware server reference
Set vm_server = CreateObject("VmCOM.VmServerCtl")
On Error Resume Next
vm_server.Connect cnx
if Err.number <> 0 then Exit Function
Set vm = CreateObject("VmCOM.VmCtl")
vm.Connect cnx, path
if Err.Number <> 0 then Exit Function
On Error Goto 0
Set GetLocalVM = vm
End Function
Function GetRemoteVM(path, Host, User, Password, Port)
' Returns an object reference to a remote VM
' path - VMX file's path
' Host - address/name of remote host
' User - valid user who can connect to remote console
' Password - user's password
' (to avoid embedding, you can use input to get this
' dynamically)
' Port - port on which to connect. If you have not
' customized this on the server, should be 902
Dim cnx, vm_server, vm
Set cnx = CreateObject("VmCOM.VmConnectParams")
cnx.hostname = Host
cnx.username = User
cnx.password = Password
'Following logic allows use of "" for default port
If Port<> "" Then cnx.port = Port
Set vm_server = CreateObject("VmCOM.VmServerCtl")
On Error Resume Next
vm_server.Connect cnx
if Err.number <> 0 then Exit Function
Set vm = CreateObject("VmCOM.VmCtl")
vm.Connect cnx, path
if Err.Number <> 0 then Exit Function
On Error Goto 0
Set GetRemoteVM = vm
End Function
Function RegisteredVMs
' Returns an array containing all local
' Registered VM paths
Dim server, vm, i, aTmp()
Redim aTmp(-1)
set server = CreateObject("VmCOM.VmServerCtl")
server.Connect CreateObject("VmCOM.VmConnectParams")
For Each vm in server.RegisteredVmNames
Redim Preserve aTmp(UBound(aTmp) + 1)
aTmp(UBound(aTmp)) = vm
Next
RegisteredVMs = aTmp
End Function
Function vm_PowerState(vm)
' Returns power state of a VMware machine
' takes a VM object ref as an argument
If TypeName(vm) <> "IVmCtl" Then Exit Function
vm_PowerState = vm.ExecutionState
End Function
Function vm_PowerOn(vm)
' Powers on a VM if it is not already on
' Returns "True" if it is able to power it on
' takes a VM object ref as an argument
Dim State0
On Error Resume Next
vm_PowerOn = False
State0 = vm.ExecutionState
If (State0 = vmExecutionState_Off) OR _
(State0 = vmExecutionState_Suspended) Then
vm.Start vmPowerOpMode_Soft
if Err.Number = 0 Then vm_PowerOn = True
End If
On Error Goto 0
End Function
Function vm_PowerOffSoft(vm)
' Powers off a VM if it is already on
' Returns "True" if it is able to power it off
' attempts soft powerdown
' takes a VM object ref as an argument
Dim State0
On Error Resume Next
vm_PowerOffSoft = False
State0 = vm.ExecutionState
If (State0 = vmExecutionState_On) Then
vm.Stop vmPowerOpMode_Soft
if Err.Number = 0 Then vm_PowerOffSoft = True
End If
On Error Goto 0
End Function