[libvirt] [PATCH] virsh: use the same connection URI for reconnect
Roman Bogorodskiy
bogorodskiy at gmail.com
Thu Apr 14 08:12:27 UTC 2016
Martin Kletzander wrote:
> On Thu, Apr 14, 2016 at 10:23:04AM +0300, Roman Bogorodskiy wrote:
> >When for some reason virsh looses connection and then tries to
> >reconnection, it uses the default URI instead of the one that was used
> >for the previous connection it got disconnected from.
> >
> >In order to make it reconnect using the same URI, copy URI of the
> >current (disconnected) connection to vshControl 'connname' attribute.
> >---
> > tools/virsh.c | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> >diff --git a/tools/virsh.c b/tools/virsh.c
> >index 5a61189..07097aa 100644
> >--- a/tools/virsh.c
> >+++ b/tools/virsh.c
> >@@ -359,6 +359,14 @@ virshConnectionHandler(vshControl *ctl)
> > {
> > virshControlPtr priv = ctl->privData;
> >
> >+ if (disconnected && priv->conn) {
> >+ if (!ctl->connname) {
> >+ char *uri = virConnectGetURI(priv->conn);
> >+ ctl->connname = vshStrdup(ctl, uri);
>
> This would mean that next "connect" without parameters would connect to
> the new uri. Is that how you were trying that?
Basically, the issue I'm trying to solve is that:
1. I start libvirtd, virsh to it like:
sudo ./tools/virsh -d 1 -c "bhyve:///system?socket=/var/run/libvirt/libvirt-sock"
2. I do some stuff and then I need to terminate libvirtd to change
something. I do that and I get:
virsh # error: Disconnected from bhyve:///system?socket=/var/run/libvirt/libvirt-sock due to I/O error
3. I start the daemon again and in virsh I do something like "list".
That's what I get:
virsh # list
error: Failed to reconnect to the hypervisor
error: no valid connection
error: Failed to connect socket to '/usr/local/var/run/libvirt/libvirt-sock': No such file or directory
virsh #
So it tries to use socket in /usr/local/var/run instead of just
/var/run and fails to connect. This is quite inconvenient.
Roman Bogorodskiy
More information about the libvir-list
mailing list