suspended domain to now be eligible for scheduling by the the underlying
hypervisor.
+=item B<ttyconsole> I<domain-id>
+
+Output the device used for the TTY console of the domain. If the information
+is not available the processus will provide an exit code of 1.
+
=item B<undefine> I<domain-id>
Undefine the configuration for an inactive domain. Since it's not running
=item B<vncdisplay> I<domain-id>
-Output the IP address and port number for the VNC display.
+Output the IP address and port number for the VNC display. If the information
+is not available the processus will provide an exit code of 1.
=back
return ret;
}
+/*
+ * "ttyconsole" command
+ */
+static vshCmdInfo info_ttyconsole[] = {
+ {"syntax", "ttyconsole <domain>"},
+ {"help", gettext_noop("tty console")},
+ {"desc", gettext_noop("Output the device for the TTY console.")},
+ {NULL, NULL}
+};
+
+static vshCmdOptDef opts_ttyconsole[] = {
+ {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")},
+ {NULL, 0, 0, NULL}
+};
+
+static int
+cmdTTYConsole(vshControl * ctl, vshCmd * cmd)
+{
+ xmlDocPtr xml = NULL;
+ xmlXPathObjectPtr obj = NULL;
+ xmlXPathContextPtr ctxt = NULL;
+ virDomainPtr dom;
+ int ret = FALSE;
+ char *doc;
+
+ if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
+ return FALSE;
+
+ if (!(dom = vshCommandOptDomain(ctl, cmd, "domain", NULL)))
+ return FALSE;
+
+ doc = virDomainGetXMLDesc(dom, 0);
+ if (!doc)
+ goto cleanup;
+
+ xml = xmlReadDoc((const xmlChar *) doc, "domain.xml", NULL,
+ XML_PARSE_NOENT | XML_PARSE_NONET |
+ XML_PARSE_NOWARNING);
+ free(doc);
+ if (!xml)
+ goto cleanup;
+ ctxt = xmlXPathNewContext(xml);
+ if (!ctxt)
+ goto cleanup;
+
+ obj = xmlXPathEval(BAD_CAST "string(/domain/devices/console/@tty)", ctxt);
+ if ((obj == NULL) || (obj->type != XPATH_STRING) ||
+ (obj->stringval == NULL) || (obj->stringval[0] == 0)) {
+ goto cleanup;
+ }
+ vshPrint(ctl, "%s\n", (const char *)obj->stringval);
+
+ cleanup:
+ if (obj)
+ xmlXPathFreeObject(obj);
+ if (ctxt)
+ xmlXPathFreeContext(ctxt);
+ if (xml)
+ xmlFreeDoc(xml);
+ virDomainFree(dom);
+ return ret;
+}
+
/*
* "attach-device" command
*/
{"setmaxmem", cmdSetmaxmem, opts_setmaxmem, info_setmaxmem},
{"setvcpus", cmdSetvcpus, opts_setvcpus, info_setvcpus},
{"suspend", cmdSuspend, opts_suspend, info_suspend},
+ {"ttyconsole", cmdTTYConsole, opts_ttyconsole, info_ttyconsole},
{"undefine", cmdUndefine, opts_undefine, info_undefine},
{"uri", cmdURI, NULL, info_uri},
{"vcpuinfo", cmdVcpuinfo, opts_vcpuinfo, info_vcpuinfo},
.\" ========================================================================
.\"
.IX Title "VIRSH 1"
-.TH VIRSH 1 "2007-07-23" "perl v5.8.8" "Virtualization Support"
+.TH VIRSH 1 "2007-07-26" "perl v5.8.8" "Virtualization Support"
.SH "NAME"
virsh \- management user interface
.SH "SYNOPSIS"
Moves a domain out of the suspended state. This will allow a previously
suspended domain to now be eligible for scheduling by the the underlying
hypervisor.
+.IP "\fBttyconsole\fR \fIdomain-id\fR" 4
+.IX Item "ttyconsole domain-id"
+Output the device used for the \s-1TTY\s0 console of the domain. If the information
+is not available the processus will provide an exit code of 1.
.IP "\fBundefine\fR \fIdomain-id\fR" 4
.IX Item "undefine domain-id"
Undefine the configuration for an inactive domain. Since it's not running
and \fIcpulist\fR is a comma separated list of physical \s-1CPU\s0 numbers.
.IP "\fBvncdisplay\fR \fIdomain-id\fR" 4
.IX Item "vncdisplay domain-id"
-Output the \s-1IP\s0 address and port number for the \s-1VNC\s0 display.
+Output the \s-1IP\s0 address and port number for the \s-1VNC\s0 display. If the information
+is not available the processus will provide an exit code of 1.
.RE
.RS 4
.SH "DEVICES COMMANDS"