On 09/10/2013 12:03 PM, Arun Viswanath wrote:
Hi All,
I'm need to simulate libvirt API's say to mock the libvirt API
responses. (Actually I need to simulate qemu API's response). Because of my
project needs I need to write this simulated libvirt server in Java. I
believe the simulated libvirt can be written as java RPC which should
capable to receive the client RPC request calls and by dispatcher we can
dispatch to the simulated java functions. I searched for .x file to be used
for generating server stubs but unfortunately .x files like
"remote_protocol.x", "virnetprotocol.x", "qemu_protocol.x"
and
"lxc_monitor_protocol.x" are not containing any procedure for libvirt
API's
that exposed. Please let me know which files will have these exposed
procedures and how can I use it in java,
Rather than trying to write your own RPC handler, have you considered
using the existing libvirt-java bindings and just targetting the
test:/// URI connection? This will give you a fairly reliable exposure
to the libvirt APIs, without actually needing a working qemu.
The .x files implement the driver API; so also does the test driver.
Basically, src/libvirt.c is the public API, which then delegates to the
appropriate driver based on what URI you connected to; if the URI is
remote (as qemu:/// and all other stateful drivers are), then libvirt.so
passes it to src/remote/remote_driver.c to be bundled up into RPC calls
which mirror the semantics of the public API. If you want to install
your own mock driver, it may be easier to build a new URI and implement
the same C interface as the test driver (see src/test/test_driver.c)
than it is to implement your own RPC parser.
Also I'm not sure how to implement the ssl layer support for the
libvirt server in java. I need to write a java server in such a way that
python client should capable to create a connection with uri
"qemu+tls://systemip:port?no_tty=1". Also with the created connection
object it should able to call the libvirt API's like getCapabilities, etc.
Again, instead of trying to write your own RPC server, I'd instead focus
on utilizing the existing test:/// driver as your point of mocked calls.
As this is mostly development-related, I've set the reply-to to
libvir-list (we can drop libvirt-users from the rest of this thread).
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org