5 Replies Latest reply on Jul 29, 2009 9:40 AM by fkollmann

    WaitForToolsInGuest does not return and hangs

    GoodGuy123 Novice


      I'm using VIX API 1.6.2 on 32 bit Windows 2003 (SP2) to control vitrual machines running on another 64-bit machine running ESXi 4.0.0 (171294).



      The Virtual machine is running 32-bit Windows 2003 (SP2)  and has VMWare tools installed.



      Using the VIX API I first revert to a named snapshot (that has the machine in shutdown state), then I power it on and wait for tools in guest before I run programs inside the VM.



      The problem is that WaitForToolsInGuest ( ) does not return and hangs indefinately even after the OS has booted up successfully.



      The code below works fine for ESX 3.5 (update 3) and also VMWare Server 2.0.1 but does not work forESXi 4.0.0 (171294)






      My VBScript code that uses VIX API looks like this:






      ' Create the VIX library



      Dim lib



      Set lib = CreateObject("VixCOM.VixLib")






      ' Connect to ESXi server



      Dim jobConnect

      Set jobConnect = lib.Connect(VixCOM.Constants.VIX_API_VERSION, VixCOM.Constants.VIX_SERVICEPROVIDER_VMWARE_VI_SERVER, "https://myesxiserver:443/sdk/", 0, "root", "mypwd", 0, Nothing, Nothing)



      Set connectResults = Nothing

      err = jobConnect.Wait(Array(VixCOM.Constants.VIX_PROPERTY_JOB_RESULT_HANDLE), connectResults)

      If lib.ErrorIndicatesFailure(err) Then

             Wscript.Echo "Connecting to host failed with error code "


      End If



      Dim host



      Set host = connectResults(0)






      ' Open the virtual machine



      Set jobOpenVM = host.OpenVM("[datastore] myvm/myvm.vmx", Nothing)


      Set openVMResults = Nothing

      err = jobOpenVM.Wait(Array(VixCOM.Constants.VIX_PROPERTY_JOB_RESULT_HANDLE), openVMResults)

      If lib.ErrorIndicatesFailure(err) Then

             WScript.Echo "Opening virtual machine failed with error code "


      End If


      ' The vm object will be first element in the results array.   



      Dim vm

      Set vm = openVMResults(0)






      ' Power on the virtual machine



      Dim jobPowerOn

      Set jobPowerOn = vm.PowerOn(VixCOM.Constants.VIX_VMPOWEROP_NORMAL, Nothing, Nothing)

      err = jobPowerOn.WaitWithoutResults()

      If lib.ErrorIndicatesFailure(err) Then

              WScript.Echo "Powering on guest failed with error code "


      End If




      ' Wait until VMWare tools starts inside the guest



      Dim jobWaitForTools



      Set jobWaitForTools = vm.WaitForToolsInGuest(0, Nothing)

      err = jobWaitForTools.WaitWithoutResults()

      If lib.ErrorIndicatesFailure(err) Then

             WScript.Echo "Waiting for tools in guest failed with error code "




      End If






      Thanks in advance.