
On Thu, Sep 27, 2012 at 04:41:37PM +0200, Jiri Denemark wrote:
While the changes to sanlock driver should be stable, the actual implementation of sanlock_helper is supposed to be replaced in the future. However, before we can implement a better sanlock_helper, we need an administrative interface to libvirtd so that the helper can just pass a "leases lost" event to the particular libvirt driver and everything else will be taken care of internally. This approach will also allow libvirt to pass such event to applications and use appropriate reasons when changing domain states.
The temporary implementation handles all actions directly by calling appropriate libvirt APIs (which among other things means that it needs to know the credentials required to connect to libvirtd).
+static int +getCredentials(const char *driver) +{ + virConfPtr conf = NULL; + char *path; + int ret = -1; + + if (virAsprintf(&path, "%s/libvirt/%s-sanlock.conf", + SYSCONFDIR, driver) < 0) + return -1; + + if (!(conf = virConfReadFile(path, 0))) { + ret = 0; + goto cleanup; + } + + if (getConfig(conf, "helper_login", &login) < 0 || + getConfig(conf, "helper_password", &password) < 0 ||
Libvirt already has support built-in for loading usernames and passwords from a configuration file, so I don't think we need to duplicate that in the sanlock config file. This is just a documentation task to describe where to put the login info for sanlock to use it.
+ + if (virAsprintf(&uri, "%s:///%s", + driver, + STREQ(driver, "qemu") ? "system" : "") < 0) + goto cleanup;
This seems rather dubious to me and re-inforces my opinion that we should be passing the full URI, not the driver name. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|