
Before getting into more discussion on the URI issue, I'll copy the "Architecture & Notes" section here so that everyone can actually read it first. /* Architecture and notes: * * virConnectOpen ("remote:....") invokes this driver. Depending * on the exact contents of the ellipsis "...." in the name string * we will try some method to connect to a libvirtd daemon, running * on a remote machine (or sometimes running on the local machine). * * All other vir* calls made on this connection are forwarded * to the libvirtd daemon which carries out the requested action. * So for example if you call virDomainCreateLinux, then the * domain gets created on the remote machine, and virConnectListDomains * lists domains running on the remote machine. * * Connections can be authenticated and encrypted -- it depends * on the transport selected by the name string. * * The current implementation uses SunRPC layered over one of: * - GnuTLS (an SSL/TLS library providing enterprise-level * authentication and encryption) * - a local Unix domain socket * - ssh or another external program such as rsh * - a plain TCP socket (unencrypted, not recommended for production) * * See http://et.redhat.com/~rjones/secure_rpc for an insight into * the thinking that went into the selection of SunRPC. In * the future we may use a different RPC system - for example * XML-RPC would be a logical choice - so for now you should regard * the protocol used as private and subject to change in future * versions of libvirt without notice. * * The name string selects the transport to use and the type of * virtualisation at the remote end. The general format is: * * "remote:<protocol>:<path> var=value var=value ..." * * Some examples: * * "remote:unix:/var/run/libvirtd/socket" * "remote:tls:myxenserver" * "remote:ssh:myserver name=qemud" * "remote:ssh:myserver command=/opt/openssh/bin/ssh" * * The <protocol> is one of: tls, unix, ssh, ext or tcp. * The <path> is protocol specific: * * Protocol Path-format * ----------------------------------------- * tls hostname[:port] * unix Path to local socket * ssh hostname[:port] * ext Name or path of external program * tcp hostname[:port] * * For tls, the default port is 16514. For tcp, the default port is * 16509 (but note that tcp is almost never enabled because it is * insecure - it's only there for testing). * * For ssh: The default port for ssh is 22. You should configure ssh * so that it doesn't ask for a password (eg. using ssh-agent). The * remote server should have a recent version of the the netcat program * installed as 'nc', and the remote libvirtd must be configured to * listen on a Unix domain socket. The following full command is run: * ssh -p $port $hostname nc -U /var/run/libvirtd/socket * * For ext: Only the command you specify is run. It is up to you to * write this command so that it somehow makes a connection to a * remote libvirtd, and passes input and output over its stdin/stdout. * * The var=value pairs provide optional extra information: * * Variable Protocols Meaning * ----------------------------------------- * name (all) Name used in remote virConnectOpen * (default is NULL). * command ssh Name or path of external program (instead * of "ssh"). * * The value is %-escaped (just like URL encoding), so if you want it * to contain a literal space use "%20" or "+", if you want it to have * a literal + character use "%2b", and for a literal % character use "%25". * * To provide some forwards compatibility, variables which are not * understood are ignored (but a warning is printed on stderr). * * Several shorthand syntaxes are available: * * "remote:/var/run/libvirtd/socket" connect to Unix domain socket * "remote://server" connect to TLS socket on server * "remote://server:9000" connect to TLS server port 9000 * * For the details of the implementation of SunRPC over GnuTLS, etc. * please see http://et.redhat.com/~rjones/secure_rpc which contains * simple code samples which will allow you to understand what's * going on here. */ -- Emerging Technologies, Red Hat http://et.redhat.com/~rjones/ 64 Baker Street, London, W1U 7DF Mobile: +44 7866 314 421 "[Negative numbers] darken the very whole doctrines of the equations and make dark of the things which are in their nature excessively obvious and simple" (Francis Maseres FRS, mathematician, 1759)