Client/Server Frontend
Posted: 30. Oct 2008, 06:38
Hopefully an easy question to answer.
I'm currently coding a Client/Server type frontend for VirtualBox. It currently runs under Windows, Mac and Linux. I mainly started it so that I can run a GUI "frontend" on a remote machine (of whatever OS, doesn't matter) that connects and can perform all the operations you can normally do in the normal VirtualBox frontend. I'm also making it pluggable so it supports other VM's than just VirtualBox (though I'm developing it primary for use with VB for now)
I've reached the point where I've finished most of the graphical side, the wizards, and settings, and I'm just about to start writing the client/server communication component.
Essentially the client looks similar to the VirtualBox frontend, except at the top there is a field to enter a server name to connect to. This makes an encrypted connection to the server daemon. I decided on this approach rather than ssh+execute commands remotely as there are additional things I want the remote to do (such as monitor and restart VMs, configure host network, etc etc). Also allows me to add on an Enterprise addon that monitors lots of different servers.
My original intention is to have the Server side accept data from the client, then "translate" this into calls to a helper program, most likely VBoxManage. IE, if in the client I create a new VM, the remote would create the VM, create the disks, and set it all up, even uploading a disk image if necessary. The advantage of this is its easy to plug in another VM. For instance, a KVM/KQEMU could run the equivalent commands.
My question is, would it be better to do it this way, by calling a helper program, or would it be better for the Server component to create a direct interface to VirtualBox through its API (which I've not yet been able to find, not that I've looked hard yet) and manage the VM's there?
I suppose ideally I'd also like to be able to access the remote VM's "screens" through the client (ie, click the vm, and its screen appears next to it), though its not quite as necessary for my needs. _This_ would require the Server side run a custom designed "frontend" that possibly exposes the screen to a virtual framebuffer (ie VNC).
- Brendan
I'm currently coding a Client/Server type frontend for VirtualBox. It currently runs under Windows, Mac and Linux. I mainly started it so that I can run a GUI "frontend" on a remote machine (of whatever OS, doesn't matter) that connects and can perform all the operations you can normally do in the normal VirtualBox frontend. I'm also making it pluggable so it supports other VM's than just VirtualBox (though I'm developing it primary for use with VB for now)
I've reached the point where I've finished most of the graphical side, the wizards, and settings, and I'm just about to start writing the client/server communication component.
Essentially the client looks similar to the VirtualBox frontend, except at the top there is a field to enter a server name to connect to. This makes an encrypted connection to the server daemon. I decided on this approach rather than ssh+execute commands remotely as there are additional things I want the remote to do (such as monitor and restart VMs, configure host network, etc etc). Also allows me to add on an Enterprise addon that monitors lots of different servers.
My original intention is to have the Server side accept data from the client, then "translate" this into calls to a helper program, most likely VBoxManage. IE, if in the client I create a new VM, the remote would create the VM, create the disks, and set it all up, even uploading a disk image if necessary. The advantage of this is its easy to plug in another VM. For instance, a KVM/KQEMU could run the equivalent commands.
My question is, would it be better to do it this way, by calling a helper program, or would it be better for the Server component to create a direct interface to VirtualBox through its API (which I've not yet been able to find, not that I've looked hard yet) and manage the VM's there?
I suppose ideally I'd also like to be able to access the remote VM's "screens" through the client (ie, click the vm, and its screen appears next to it), though its not quite as necessary for my needs. _This_ would require the Server side run a custom designed "frontend" that possibly exposes the screen to a virtual framebuffer (ie VNC).
- Brendan