On Thu, May 25, 2017 at 10:26:47AM -0700, Peter wrote:
As far as I know libvirt doesn't currently have a remoteable API.
It does
have a daemon that communicates with clients via a XDR RPC.
(
https://libvirt.org/internals/rpc.html) However from what I'm hearing the
RPC is considered an internal implementation and shouldn't be used by
external applications. Is that still the case? Is there any chance of
getting talking the daemon directly using the XDR standard for a subset of
methods blessed as part of the externally supported API?
That's correct - the XDR protocol is a private implementation detail
between the libvirtd daemon and libvirt client library. The /only/
supported way of using libvirt is via the client library API, or one
of the many language bindings written on top of it. A number of the
libvirt virtualization drivers are implemented entirely in the client
library and don't involve libvirtd at all.
An alternative is to implement a standards based remotable API,
using
something like dbus or REST, that can be used by external applications.
I imagine that this would be at a bit of a higher level than the current RPC
and contain at least some of the logic around the actions it performs rather
than being a direct passthrough to the daemon.
Of course that is a pretty big undertaking and would, in my opinion, only be
worth it if there is broader interest in the community and use cases beyond
what cockpit would like to.
I imagine any DBus API would be a pretty straightforward 1-1 mapping from
the C api to DBus methods & signals. For a REST API I think you would quite
possibly want to build something higher level which will involve more design
thought.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|