]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
* src/virsh.c docs/virsh.pod virsh.1: added a ttyconsole command,
authorDaniel Veillard <veillard@redhat.com>
Thu, 26 Jul 2007 08:41:16 +0000 (08:41 +0000)
committerDaniel Veillard <veillard@redhat.com>
Thu, 26 Jul 2007 08:41:16 +0000 (08:41 +0000)
  this should fix bug #239687
Daniel

ChangeLog
docs/virsh.pod
src/virsh.c
virsh.1

index 1c589bfeb34cdaae3645225fc512a0d986deb933..292ecc38caab7e2b4dc047ecfb7b6aa24460838b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Jul 26 10:37:31 CEST 2007 Daniel Veillard <veillard@redhat.com>
+
+       * src/virsh.c docs/virsh.pod virsh.1: added a ttyconsole command,
+         this should fix bug #239687
+
 Wed Jul 25 19:16:43 EST 2007 Daniel P. berrange <berrange@redhat.com>
 
        * scripts/coverage-report.pl: Ignore data from inlined macros
index d23d7e333f5208cfbeff22c3f787a0a0e2333d28..5b2682d544ff598fbe8d536dd8f96b6468af2b17 100644 (file)
@@ -318,6 +318,11 @@ 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.
 
+=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
@@ -335,7 +340,8 @@ and I<cpulist> is a comma separated list of physical CPU numbers.
 
 =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
 
index c849ca7b9161e497a77673dbc8165a6df040fe63..383cab2b9e3d11178556555c424c6de513b30087 100644 (file)
@@ -2739,6 +2739,69 @@ cmdVNCDisplay(vshControl * ctl, vshCmd * cmd)
     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
  */
@@ -3428,6 +3491,7 @@ static vshCmdDef commands[] = {
     {"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},
diff --git a/virsh.1 b/virsh.1
index 93739acd99f96246fc2e0e37f70a23d24dcff41d..17fa258325715dd195d3187329832563f5895f9d 100644 (file)
--- a/virsh.1
+++ b/virsh.1
 .\" ========================================================================
 .\"
 .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"
@@ -406,6 +406,10 @@ anymore.
 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
@@ -420,7 +424,8 @@ Pin domain VCPUs to host physical CPUs. The \fIvcpu\fR number must be provided
 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"