[vbox-dev] Using python API bindings on Windows
klaus.espenlaub at oracle.com
Mon Oct 6 15:30:16 UTC 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...
> 2014-07-30 19:25 GMT+02:00 Klaus Espenlaub <klaus.espenlaub at oracle.com
> <mailto:klaus.espenlaub at oracle.com>>:
> 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
> > 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
> > 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