提交 ff498a9a 编写于 作者: M Martin Kletzander

virsh: Report error when explicit connection fails

Commit 0c56d943 forgot to return false in the cmdConnect command
after the clean up made there.

Before (assuming you don't have uri alias for 'asdf'):
  $ virsh connect asdf
  error: failed to connect to the hypervisor

  $ echo $?
  0

After (with the same assumption):
  $ virsh connect asdf
  error: failed to connect to the hypervisor
  error: no connection driver available for asdf

  $ echo $?
  1

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1356461Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
上级 a2b97a8d
......@@ -210,7 +210,7 @@ virshConnect(vshControl *ctl, const char *uri, bool readonly)
* Reconnect after a disconnect from libvirtd
*
*/
static void
static int
virshReconnect(vshControl *ctl, const char *name, bool readonly, bool force)
{
bool connected = false;
......@@ -237,6 +237,7 @@ virshReconnect(vshControl *ctl, const char *name, bool readonly, bool force)
vshError(ctl, "%s", _("Failed to reconnect to the hypervisor"));
else
vshError(ctl, "%s", _("failed to connect to the hypervisor"));
return -1;
} else {
if (name) {
VIR_FREE(ctl->connname);
......@@ -253,6 +254,7 @@ virshReconnect(vshControl *ctl, const char *name, bool readonly, bool force)
priv->useGetInfo = false;
priv->useSnapshotOld = false;
priv->blockJobNoBytes = false;
return 0;
}
int virshStreamSink(virStreamPtr st ATTRIBUTE_UNUSED,
......@@ -301,7 +303,8 @@ cmdConnect(vshControl *ctl, const vshCmd *cmd)
if (vshCommandOptStringReq(ctl, cmd, "name", &name) < 0)
return false;
virshReconnect(ctl, name, ro, true);
if (virshReconnect(ctl, name, ro, true) < 0)
return false;
return true;
}
......@@ -333,11 +336,13 @@ virshConnectionHandler(vshControl *ctl)
{
virshControlPtr priv = ctl->privData;
if (!priv->conn || disconnected)
virshReconnect(ctl, NULL, false, false);
if ((!priv->conn || disconnected) &&
virshReconnect(ctl, NULL, false, false) < 0)
return NULL;
if (virshConnectionUsability(ctl, priv->conn))
return priv->conn;
return NULL;
}
......@@ -444,14 +449,13 @@ virshInit(vshControl *ctl)
return false;
if (ctl->connname) {
virshReconnect(ctl, NULL, false, false);
/* Connecting to a named connection must succeed, but we delay
* connecting to the default connection until we need it
* (since the first command might be 'connect' which allows a
* non-default connection, or might be 'help' which needs no
* connection).
*/
if (!priv->conn) {
if (virshReconnect(ctl, NULL, false, false) < 0) {
vshReportError(ctl);
return false;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册