[vbox-dev] Reading Guest Properties for running VM (SOAP APIs)

Igor Shkodyrev mobspot at gmail.com
Wed Jun 30 19:32:43 GMT 2010


I spent many days trying getStatistic become working.
The advice from Nickolay Igotti that helped me:

------
Your code sample misses important piece of initialization, namely it
shall read as:


 console = session.console
 guest = console.guest
 guest.statisticsUpdateInterval = 10
 ^^^^^^^^ this setter initializes statistics gathering

 guestadd_ver1 = guest.additionsVersion
 print guestadd_ver1

 cpu = 0
 threads = guest.getStatistic( cpu, ctx['ifaces'].GuestStatisticType_Threads )
 ^^^^^^^^^^^ Also please use symbolic constants, not raw numbers.


After adding this piece of code guest statistic collection works for
me with Win XP guests and current additions build. To avoid further
problems like that, I'll add command to print guest stats into
vboxshell.py

Thanks,
 Nikolay
------


2010/6/28 Joseph Smith <joseph1962smith at yahoo.com>:
> Hi Klaus,
>
> Yaay for me!  I'm doing something right! <smile>  It's all that VBoxManage
> advice ... ha ha ...
>
> From your response then ... are you indicating this could be a prob with
> vboxwebsrv ?  VBoxManage does work correctly ... so the lower-level API
> obviously works.
>
> It is nice to get some sense of direction on this thoguh ... I've been
> beating my head against a wall not wanting to ask for help before checking
> every possibility.
>
>
> Thanks,
> Joe
>
> ________________________________
> From: Klaus Espenlaub <Klaus.Espenlaub at Sun.COM>
> To: Joseph Smith <joseph1962smith at yahoo.com>
> Cc: vbox-dev at virtualbox.org
> Sent: Mon, June 28, 2010 2:27:08 PM
> Subject: Re: [vbox-dev] Reading Guest Properties for running VM (SOAP APIs)
>
> Joseph Smith wrote:
>> Hi Klaus,
>>
>> Thanks for the reply.  I'm not able to re-run the test just now ... but
>> will later this evening.
>>
>> Actually ... the message I put below was copied directly from the output
>> of the soap fault message ... so I did not modify the message in any way.
>> Not sure why it was reported that way.  I'll investigate further.
>
> Hehe. Thanks for spotting a bug then ;)
>
>> I am pretty sure I am not using a IVirtualBox::getMachine ref though I may
>> have made such a mistake and not realized it.  Later tonight when I get a
>> chance to look at the code I will double-check.
>
> Dug a little deeper, and what's happening actually is an error asking the VM
> for up to date guest properties. Haven't seen that one ever.
>
> So you're definitely doing the right thing, just the VM process is confused.
> Very odd....
>
> Klaus
>
>> Thanks again,
>> Joe
>>
>> ------------------------------------------------------------------------
>> *From:* Klaus Espenlaub <Klaus.Espenlaub at Sun.COM>
>> *To:* Joseph Smith <joseph1962smith at yahoo.com>
>> *Cc:* vbox-dev at virtualbox.org
>> *Sent:* Mon, June 28, 2010 12:38:29 PM
>> *Subject:* Re: [vbox-dev] Reading Guest Properties for running VM (SOAP
>> APIs)
>>
>> Joseph Smith wrote:
>>  > Hi,
>>  >
>>  > I am encountering some challenges when trying to retrieve guest
>> properties (enumerateGuestProperties) via the SOAP API.
>>  >
>>  > I am able to use this API and retreive guest properties if the guest is
>> not running ... but get a runtime exception if I try when the guest is
>> running.  I know it can be done since VBoxManage is able to ... but I'm
>> wondering if this could possibly be a vboxwebsrv  problem.  Essentially ...
>> the steps I use are:
>>  >
>>  > 1) Instantiate a new Session object
>>  > 2) Using this session object ... try to open a new session
>> (openSession)
>>  > 3) If getting a new session fails ... try to open an existing session
>> (openExistingSession)
>>  > 3) With the opened session object ... get the machine object reference
>> (ISession::machine)
>>  > 4) Using the machine reference ... enumerate the guest properties
>> (ISession::enumerateGuestProperties)
>>  >
>>  > If the VM is not running ... it works perfectly.  If the VM is running
>> ... a runtime exception is thrown.  The error thrown is:
>>  >      "VirtualBox error: Internal application error (0x2147500037)"
>>
>> Printing 0x in front of a number doesn't make it hex ;)
>>
>> This is error 0x80004005 = E_FAIL.
>>
>>  From the looks you're not doing what you claim, as exactly this sequence
>> works fine in VBoxManage. Sure that you're not accidentally using an
>> IMachine reference returned by IVirtualBox::getMachine?
>>
>> Klaus
>>
>>  >
>>  > Using the same Machine reference object I can retrieve other machine
>> specific information ... so I know the machine ref is valid (additionally,
>> the UUID on the machine ref matches the UUID of the VM).
>>  >
>>  > I am also able to use this same approach to getting a session for both
>> a non-running and running VM to start/stop/pause or otherwise manage a VM.
>> As frequently suggested (<smile>) ... I have looked over how VBoxManage does
>> it ... and I am unable to see a difference between how VBoxManage retreives
>> the information when compared to they way I do.
>>  >
>>  > I'm sure I must be doing something wrong ... but it sure does not seem
>> very obvious.
>>  >
>>  > Anyone have any suggestions they can offer ?
>>  >
>>  >
>>  > Thanks,
>>  > Joe
>>  >
>>  >
>>  >
>> ------------------------------------------------------------------------
>>  >
>>  > _______________________________________________
>>  > vbox-dev mailing list
>>  > vbox-dev at virtualbox.org <mailto:vbox-dev at virtualbox.org>
>>  > http://vbox.innotek.de/mailman/listinfo/vbox-dev
>>
>>
>
>
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> http://vbox.innotek.de/mailman/listinfo/vbox-dev
>
>




More information about the vbox-dev mailing list