提交 c7a8e1bf 编写于 作者: D Daniel P. Berrange

Check that domain is running when starting console

The 'virsh console' command did not check if the domain was
already running before attempting to fetch the XML and extract
the console PTY path. This caused a slightly unhelpful / misleading
error message for the user. The explicit check ensures the user
gets an explicit 'domain is not running' message.

* tools/virsh.c: Validate that state != VIR_DOMAIN_SHUTOFF in
  virsh console command
上级 007f016b
...@@ -523,6 +523,7 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom) ...@@ -523,6 +523,7 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom)
char *doc; char *doc;
char *thatHost = NULL; char *thatHost = NULL;
char *thisHost = NULL; char *thisHost = NULL;
virDomainInfo dominfo;
if (!(thisHost = virGetHostname(ctl->conn))) { if (!(thisHost = virGetHostname(ctl->conn))) {
vshError(ctl, "%s", _("Failed to get local hostname")); vshError(ctl, "%s", _("Failed to get local hostname"));
...@@ -539,6 +540,16 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom) ...@@ -539,6 +540,16 @@ cmdRunConsole(vshControl *ctl, virDomainPtr dom)
goto cleanup; goto cleanup;
} }
if (virDomainGetInfo(dom, &dominfo) < 0) {
vshError(ctl, "%s", _("Unable to get domain status"));
goto cleanup;
}
if (dominfo.state == VIR_DOMAIN_SHUTOFF) {
vshError(ctl, "%s", _("The domain is not running"));
goto cleanup;
}
doc = virDomainGetXMLDesc(dom, 0); doc = virDomainGetXMLDesc(dom, 0);
if (!doc) if (!doc)
goto cleanup; goto cleanup;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册