Eric,
Thank you for your comments!
I'll check related to HyperV adoption commits and will try to fix necessary
things in the next patch series.
Links to product pages:
http://www.parallels.com/products/server/baremetal/sp/resources/
http://www.parallels.com/download/server/
Is this driver more like qemu,
where it requires talking to a daemon like libvirtd (and where remote
access is provided by libvirt), or more like esx, where it is
translating things at the client level while talking to an esx protocol
(and where remote access is provided by the hypervisor)?
We have a userspace daemon
on PSBM node which is responsible for incoming
requests management (like libvirtd) and client library (libprl_sdk.so) for
remote/local access to it. Communication protocol is XML-based over TCP.
Is it really Linux-only, or if those
programs someday exist on other platforms, have you artificially
restricted this driver?
Virtualization SDK is available for 3 platforms (Linux,
Windows and Mac OS X)
already. I decided to restrict it initially in order to achieve something
usable on the single platform first, than extend it to others. Patches for
extension will be small - just remove this restriction and add load of the
shared library on appropriate paths. Just want to avoid additional testing on
the adoption stage.
--
Thanks,
Dmitry.
On Tuesday, September 27, 2011 09:39:14 PM Eric Blake wrote:
On 09/26/2011 05:59 AM, Dmitry Mishin wrote:
> Parallels Server Bare Metal is a virtualization solution which allows to
> run both Containers (OpenVZ-like) and virtual machines (like any other
> hardware hypervisor).
Any web page link so we can familiarize ourselves with the project?
> This patch implements initial driver stub with almost no functionality
> except an ability to open and close driver. At the same time it contains
> initialization of Parallels API and clearly demonstrates supposed
> approach to future driver implementation. In particular, I suppose to
> use parallels-virtualization-sdk library provisioned with the PSBM
> distribution (and separately also) for PSBM's virtual servers
> management.
>
> Signed-off-by: Dmitry Mishin<dim(a)parallels.com>
> ---
>
> autobuild.sh | 1 +
> configure.ac | 21 +++++
> include/libvirt/virterror.h | 1 +
> src/Makefile.am | 22 +++++
> src/README | 1 +
> src/driver.h | 1 +
> src/libvirt.c | 9 ++
> src/psbm/psbm_api.c | 117 ++++++++++++++++++++++++
> src/psbm/psbm_api.h | 59 ++++++++++++
> src/psbm/psbm_driver.c | 208
> +++++++++++++++++++++++++++++++++++++++++++ src/psbm/psbm_driver.h
> | 32 +++++++
> src/psbm/psbm_private.h | 49 ++++++++++
> src/util/virterror.c | 3 +
Missing a hypervisor stub page under docs/ (that would be a good place
to include the link I mentioned above). Is this driver more like qemu,
where it requires talking to a daemon like libvirtd (and where remote
access is provided by libvirt), or more like esx, where it is
translating things at the client level while talking to an esx protocol
(and where remote access is provided by the hypervisor)?
Missing changes to libvirt.spec.in and mingw32-libvirt.spec.in for
making compilation of the new driver conditional when building for
Fedora and friends.
I'd feel a bit more comfortable reviewing this patch if you also had a
followon patch that can do some basic APIs, such as start and stop
guests, or even just list the names of running guests. Of course, those
should be separate patches, but it is better to push a patch series that
makes the hypervisor driver useful, rather than just pushing this patch
in isolation where the hypervisor driver can't do anything at all. Look
at the recent HyperV hypervisor driver addition (around commit 5e3b0f8)
for an example of what all is needed to make this driver addition
successful.
> +
> +if test "$with_psbm" = "yes"&& test
"$with_linux" = "no"; then
> + AC_MSG_ERROR([The PSBM driver can be enabled on Linux only.])
Are there any libraries that have to be linked in? Is this all calls to
third-party program(s) (in which case, should configure probe for the
absolute path of that program)? Is it really Linux-only, or if those
programs someday exist on other platforms, have you artificially
restricted this driver?
> +int psbmApiInit(struct psbm_driver *driver)
> +{
> + const char *libname = "libprl_sdk.so";
Looks like you are using library calls, so configure needs to probe for
the existence of this library.
> +
> +static virDriver psbmDriver = {
> + .no = VIR_DRV_PSBM,
> + .name = "PSBM",
> + .open = psbmOpen, /* 0.3.1 */
> + .close = psbmClose, /* 0.3.1 */
> + .type = psbmGetType, /* 0.3.1 */
> + .version = psbmGetVersion, /* 0.3.1 */
> + .nodeGetInfo = nodeGetInfo, /* 0.3.1 */
> + .listDomains = psbmListDomains, /* 0.3.1 */
> + .numOfDomains = psbmNumDomains, /* 0.3.1 */
Wrong version. You are adding this functions as of 0.9.7, not 0.3.1.
I haven't reviewed this closely, because I'm not familiar enough with
PSBM yet, but in general, I'm in favor of adding hypervisor drivers, so
I hope to see this go somewhere.