[vbox-dev] Using python API bindings on Windows

Klaus Espenlaub klaus.espenlaub at oracle.com
Mon Oct 6 15:30:16 GMT 2014


On 30.07.2014 19:31, Mikhail Kovalev wrote:
> Thanks a lot for an immediate answer! Moving the functionality to the
> "server side" means that one will not need the console to e.g., restore
> a snapshot?

Yes, the snapshot functionality (and a few more bits and pieces) will be 
moved to IMachine. This should've been done years ago, but you know, 
there's always more to do than time...

Klaus
>
>
> 2014-07-30 19:25 GMT+02:00 Klaus Espenlaub <klaus.espenlaub at oracle.com
> <mailto:klaus.espenlaub at oracle.com>>:
>
>     Mikhail,
>
>     On 30.07.2014 17:49, Mikhail Kovalev wrote:
>      > Ok, I've just noticed that there was already a thread on this topic
>      > earlier this month (I joined the dev list later, so I did not see
>     this
>      > mail). The problem is that I am using 32 bit python on 64bit
>     Win7. With
>      > 64bit Python the problem disappears. So currently there is no way to
>      > connect to 64 bit VBox from a 32 bit app (to get the console)?
>     and what
>      > if I connect to a 32 bit VBox (on 32bit Win) from a 32 bit app,
>     is this
>      > supposed to work?
>
>     If everything is consistently 32 bit (Windows and python), everything is
>     fine. Same for consistent 64 bit.
>
>     The problem with the console being absent only happens with 32 bit
>     python (or generally any 32 bit API client) and a 64 bit Windows. It's a
>     shortcut we took when we finally managed to create working 32 bit COM
>     support in a 64 bit package. It would be possible to make this work, but
>     it's a significant effort (and would make a lot of code hard to read)
>     which we don't want to make as it's already decided that all
>     functionality which you're after will be moved to the server side in the
>     next major release. It's a (for us) long known misdesign in the API that
>     many snapshot operations are bolted to the console - which is nonsense,
>     as these methods are also needed when there is no VM running. This is
>     showing its ugly head in this combination.
>
>     In other words: we consider it to be a bug that a session without a
>     corresponding running VM has a console object at all, but this bug can't
>     be fixed without breaking API compatibility, which we don't do for
>     releases.
>
>     Klaus
>
>      >
>      > Thanks,
>      > Mikhail.
>      >
>      >
>      > 2014-07-30 17:23 GMT+02:00 Mikhail Kovalev
>     <mikhail.kovalev at gmail.com <mailto:mikhail.kovalev at gmail.com>
>      > <mailto:mikhail.kovalev at gmail.com
>     <mailto:mikhail.kovalev at gmail.com>>>:
>      >
>      >     Hi,
>      >
>      >     I am trying to use Python API bindings on Windows to control
>      >     virtualbox. I have the following problem: when I create a session
>      >     and lock a non-running VM with this session, I do not get a
>      >     reference to the console object. As a result, I cannot
>     control the
>      >     non-running VM (e.g., I cannot restore a snapshot). I've tried to
>      >     use the following code:
>      >
>      >     from vboxapi import VirtualBoxManager
>      >     vbox_mgr = VirtualBoxManager(None, None)
>      >     vm = machByName(vbox_mgr, "win64")
>      >     snap = vm.findSnapshot("1")
>      >     session = vbox_mgr.mgr.getSessionObject(vbox_mgr.vbox)
>      >     vm.lockMachine(session, 2);
>      >     # session.console == None here
>      >
>      >     I've also tried to restore a snapshot using vboxshell
>     frontend, and
>      >     I get the same result:
>      >
>      >     'NoneType' object has no attribute 'restoreSnapshot'
>      >
>      >     I've tried it on 4.3.12 and on 4.3.14 - same result.
>      >
>      >     For a running VM the console object is there and everything works
>      >     fine. I can also start VMs using "lauchVMProcess".
>      >
>      >     Is it a bug or is it a problem of my installation?
>      >
>      >     Thanks in advance,
>      >     Mikhail




More information about the vbox-dev mailing list