[vbox-dev] Fw: Setting HPET via SOAP

Maxime Dor maxime.dor at altherian.org
Thu Nov 27 10:54:49 GMT 2014


Hi,

About why the memory setting can be changed, could it the same 
underlying issue than this one?
https://www.virtualbox.org/ticket/12164

Max
On 27/11/2014 11:32, Klaus Espenlaub wrote:
> Yuryi,
> On 27.11.2014 10:26, Yuriy Tretyakov wrote:
>> We need to run our code under python 3.1 that's why we need to use 
>> suds here.
>> Anyway we may face this situation without python at all. I ran SOAP 
>> UI. I ran a list of command-one by one.
> Ah, python 3.x support for the ZSI bindings is on the todo list, 
> unfortunately as always with far more work than developers...
>> I lock the machine and run ISession_getMachine. webserver returned 
>> new mutable machine ID.
>> Runing ISession_getType for my session id - I got
>>
>> <vbox:ISession_getTypeResponse>
>>          <returnval>WriteLock</returnval>
>>       </vbox:ISession_getTypeResponse>
>>
>> So machine is in mutable state now, right?
> Yes and no. When there is a properly established session there are two 
> IMachine objects for every "VM", one readonly (the one you'd get when 
> digging out the IMachine object when there is no session) and one 
> mutable. You're definitely using the right one, otherwise you wouldn't 
> get the error message below. So that's good news, your code for 
> establishing the session etc. is correct.
>> Runing IMachine_setHPETEnabled  for mutable ID
>> <_this>5f0fac6e7e0179b0-0000000000000011</_this>
>>          <HPETEnabled>true</HPETEnabled>
>>
>> !
>> got error VirtualBox error: rc=0x80bb0002 The machine is not mutable 
>> (state is Saved) (0x80bb0002)</faultstring>
> Ah, there you go. I asked you already what kind of snapshot you're 
> restoring - and it's clearly an online snapshot. In such a case you 
> can't change the settings, as the VM isn't powered off. So as I 
> suspected a few mails ago, your assumptions are wrong.
>
> To repeat: a VM in state "Saved" can't be significantly reconfigured, 
> because it is logically still running, with the entire hardware state 
> saved (a bit like a hibernated PC, where one also has to keep fingers 
> off the hardware config). It's simply not possible to enable HPET in 
> this situation. It would be if you throw away the saved state, but I'm 
> not sure if that's making the overall situation worse.
>
> So what you're seeing is 100% expected and correct behavior. The only 
> mystery is why the memory size can be changed, because that shouldn't 
> be possible either.
>> Just for your information. It seems to me a little strange that when 
>> vbox server returning an error it used not the same value in 
>> returnval as my mutable machine id. It increased each time request 
>> being sent to server. Here is what SOAP ui shows:
>>
>>  <faultcode>SOAP-ENV:Client</faultcode>
>>          <faultstring>VirtualBox error: rc=0x80bb0002 The machine is 
>> not mutable (state is Saved) (0x80bb0002)</faultstring>
>>          <detail>
>>             <vbox:RuntimeFault>
>>  <resultCode>-2135228414</resultCode>
>>           &! nbsp; 
>>  <returnval>5f0fac6e7e0179b0-0000000000000033</returnval>
>>             </vbox:RuntimeFault>
>>          </detail>
>>       </SOAP-ENV:Fault>
> I don't follow - the returned reference is not for IMachine, it is an 
> error object (IVirtualBoxError) which describes the error in more 
> detail than what the SOAP fault code can do. Each fault creates a new 
> error object, which explains why a new reference is created.
>
> Phew, at least the biggest mystery is resolved.
>
> Klaus
>>
>>
>>
>> --- Исходное сообщение ---
>> От кого: "Klaus Espenlaub" <klaus.espenlaub at oracle.com>
>> Дата: 26 ноября 2014, 17:53:21
>>
>>     On 26.11.2014 16:09, Yuriy Tretyakov wrote:
>>>     Hi Klaus.
>>>     Thank you for your quick answer!
>>>     Sure, vm machine is turned off. I trying to turn HPET on after
>>>     snapshot is restored (machine is down) but got this error.
>>>     And yes , as I understand from SDK, such settings shall work
>>>     with mutable machine. Setting RAM size works fine, but HPET failed.
>>>     I specify that  IMachine_setCPUHotPlugEnabled doesn't work this
>>>     way. Few month ago we were try to set videocapturing on and also
>>>     no positive results. Could it be a defect with processing
>>>     boolean values when we work with vboxwebsrv?
>>     Can't tell from here what's "going over the wire" with your code,
>>     but as long as the error message has the word "mutable" in it I
>>     wouldn't expect trouble with the parameters as such, more with
>>     the references.
>>
>>     Is there a particular reason why you can't/don't want to use ZSI?
>>     It's what e.g. vboxshell.py uses if one selects the webservice.
>>     It gives a nice, direct python object interface to the API, and
>>     can also talk to the local API when it runs on the same system...
>>
>>     Klaus
>>>
>>>     Regards,
>>>     Yuriy
>>>
>>>
>>>     --- Исходное сообщение ---
>>>     От кого: "Klaus Espenlaub" <klaus.espenlaub at oracle.com>
>>>     <mailto:klaus.espenlaub at oracle.com>
>>>     Дата: 26 ноября 2014, 17:02:12
>>>
>>>         Hi Yuriy,
>>>         On 26.11.2014 15:42, Yuriy Tretyakov wrote:
>>>>
>>>>             Hi Guys!
>>>>
>>>>             Forum  moderator suggests me to contact somebody from
>>>>             developers to solve my problem faster than waiting
>>>>             answer on forum.
>>>>
>>>>
>>>>             I have a trouble setting boolean values via SOAP for VBOX.
>>>>             Actually, I need to set IMachine_setHPETEnabled to True
>>>>             programmatically, but IMachine_setCPUHotPlugEnabled
>>>>             also doesn't work.
>>>>             Trying to set these parameters always follows with
>>>>             Machine is not mutable error. But setting of memory
>>>>             like in SDK example works fine.
>>>>             What I'm actually do. I using suds SOAP client library
>>>>             for Python.
>>>>
>>>         This doesn't sound like a problem with specific bindings to
>>>         me (never used suds though, only used ZSI as you can see in
>>>         the samples in the SDK). From the symptoms you're using the
>>>         wrong IMachine reference. On the other hand, I can't explain
>>>         why setting the memory size with the same reference works,
>>>         it's doing the exact same checks on the API implementation side.
>>>
>>>         Are you sure that the snapshot you are restoring is an
>>>         "offline" one, i.e. for a powered off VM? Otherwise the VM
>>>         is in saved state, which means no significant
>>>         reconfiguration is possible (but again, same rules for HPET
>>>         and memory size...).
>>>
>>>         Klaus 
>>>
>
>
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> https://www.virtualbox.org/mailman/listinfo/vbox-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20141127/60e65c1b/attachment.html>


More information about the vbox-dev mailing list