+Mon Apr 3 14:46:39 EDT 2006 Daniel Veillard <veillard@redhat.com>
+
+ * include/libvirt.h[.in] src/driver.h src/libvirt.c
+ src/libvirt_sym.version src/*_internal.[ch]: added an entry
+ point for reboot and corresponding driver plug
+ * src/virsh.c: added a reboot option using it
+ * docs/*: regenerated
+
Thu Mar 30 16:38:18 EST 2006 Daniel Veillard <veillard@redhat.com>
* src/xend_internal.c: applied patch from Daniel P. Berrange,
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
</dd><dt>NUMA</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
</dd><dt>Note</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
</dd></dl><h2>Letter O:</h2><dl><dt>OUT</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
</dd><dt>Provides</dt><dd><a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
</dd></dl><h2>Letter R:</h2><dl><dt>Read-Only</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+</dd><dt>Reboot</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
</dd><dt>Reset</dt><dd><a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
<a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
<a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
</dd><dt>add</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
-</dd><dt>after</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
+</dd><dt>after</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
+<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
</dd><dt>against</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
</dd><dt>alive</dt><dd><a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
-</dd><dt>being</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
+</dd><dt>being</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
+<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
<a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
</dd><dt>better</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
</dd><dt>block</dt><dd><a href="html/libvirt-libvirt.html#_virDomainKernel">_virDomainKernel</a><br />
</dd><dt>but</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
</dd><dt>especially</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
</dd><dt>expected</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
</dd><dt>extra</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
</dd><dt>extracted</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
</dd><dt>extraction</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
</dd><dt>first</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
</dd><dt>flags</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
</dd><dt>for</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
<a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
</dd><dt>global</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
</dd><dt>guest</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
</dd></dl><h2>Letter h:</h2><dl><dt>handler</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
</dd><dt>have</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
</dd><dt>how</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
</dd><dt>human-readable</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
-</dd></dl><h2>Letter i:</h2><dl><dt>ignore</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
+</dd></dl><h2>Letter i:</h2><dl><dt>ignore</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
+<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
</dd><dt>image</dt><dd><a href="html/libvirt-libvirt.html#_virDomainKernel">_virDomainKernel</a><br />
</dd><dt>indicating</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
</dd><dt>information</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
</dd><dt>only</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
</dd><dt>operation</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
</dd><dt>option</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
</dd><dt>optional</dt><dd><a href="html/libvirt-libvirt.html#_virDomainKernel">_virDomainKernel</a><br />
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
</dd><dt>ramdisk</dt><dd><a href="html/libvirt-libvirt.html#_virDomainKernel">_virDomainKernel</a><br />
</dd><dt>reactivate</dt><dd><a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
-</dd><dt>reboot</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
+</dd><dt>reboot</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
+<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
</dd><dt>receive</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
</dd><dt>relaunch</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
</dd><dt>release</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
</dd><dt>reporting</dt><dd><a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
-</dd><dt>request</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
+</dd><dt>request</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
+<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
</dd><dt>requires</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
</dd><dt>resources</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
+</dd><dt>restart</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
</dd><dt>restarted</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
</dd><dt>restore</dt><dd><a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
</dd><dt>stay</dt><dd><a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
</dd><dt>stderr</dt><dd><a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
-</dd><dt>still</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
-</dd><dt>stopped</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
+</dd><dt>still</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
+<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
+</dd><dt>stopped</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
+<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
</dd><dt>store</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
</dd><dt>string</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
<a href="html/libvirt-libvirt.html#virDomainPtr">virDomainPtr</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainRestart">virDomainRestart</a><br />
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
</p><h2>Type int *:</h2><p><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
</p><h2>Type unsigned char *:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
</p><h2>Type unsigned int:</h2><p><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
</p><h2>Type unsigned long:</h2><p><a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
</p><h2>Type unsigned long *:</h2><p><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
<a href="html/libvirt-libvirt.html#virDomainPtr">virDomainPtr</a><br />
+<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
<a href="html/libvirt-libvirt.html#virDomainRestart">virDomainRestart</a><br />
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
<pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainLookupByID">virDomainLookupByID</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> int id)</pre>
<pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainLookupByName">virDomainLookupByName</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * name)</pre>
<pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainLookupByUUID">virDomainLookupByUUID</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const unsigned char * uuid)</pre>
+<pre class="programlisting">int <a href="#virDomainReboot">virDomainReboot</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned int flags)</pre>
<pre class="programlisting">int <a href="#virDomainRestore">virDomainRestore</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * from)</pre>
<pre class="programlisting">int <a href="#virDomainResume">virDomainResume</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)</pre>
<pre class="programlisting">int <a href="#virDomainSave">virDomainSave</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * to)</pre>
</pre><p>Try to lookup a domain on the given hypervisor based on its name.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>name for the domain</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new domain object or NULL in case of failure</td></tr></tbody></table></div><h3><a name="virDomainLookupByUUID" id="virDomainLookupByUUID"></a>Function: virDomainLookupByUUID</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> virDomainLookupByUUID (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const unsigned char * uuid)<br />
</pre><p>Try to lookup a domain on the given hypervisor based on its UUID.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>uuid</tt></i>:</span></td><td>the UUID string for the domain</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new domain object or NULL in case of failure</td></tr></tbody></table></div><h3><a name="virDomainRestore" id="virDomainRestore"></a>Function: virDomainRestore</h3><pre class="programlisting">int virDomainRestore (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * from)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>uuid</tt></i>:</span></td><td>the UUID string for the domain</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new domain object or NULL in case of failure</td></tr></tbody></table></div><h3><a name="virDomainReboot" id="virDomainReboot"></a>Function: virDomainReboot</h3><pre class="programlisting">int virDomainReboot (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned int flags)<br />
+</pre><p>Reboot a domain, the domain object is still usable there after but the domain OS is being stopped for a restart. Note that the guest OS may ignore the request.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags for the reboot operation, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainRestore" id="virDomainRestore"></a>Function: virDomainRestore</h3><pre class="programlisting">int virDomainRestore (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * from)<br />
</pre><p>This method will restore a domain saved to disk by virDomainSave().</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>from</tt></i>:</span></td><td>path to the</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainResume" id="virDomainResume"></a>Function: virDomainResume</h3><pre class="programlisting">int virDomainResume (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
</pre><p>Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires priviledged access</p>
<exports symbol='virConnectOpen' type='function'/>
<exports symbol='virDomainSuspend' type='function'/>
<exports symbol='virConnectClose' type='function'/>
+ <exports symbol='virDomainReboot' type='function'/>
<exports symbol='virInitialize' type='function'/>
<exports symbol='virDomainGetID' type='function'/>
<exports symbol='virDomainResume' type='function'/>
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
<arg name='uuid' type='const unsigned char *' info='the UUID string for the domain'/>
</function>
+ <function name='virDomainReboot' file='libvirt' module='libvirt'>
+ <info>Reboot a domain, the domain object is still usable there after but the domain OS is being stopped for a restart. Note that the guest OS may ignore the request.</info>
+ <return type='int' info='0 in case of success and -1 in case of failure.'/>
+ <arg name='domain' type='virDomainPtr' info='a domain object'/>
+ <arg name='flags' type='unsigned int' info='extra flags for the reboot operation, not used yet'/>
+ </function>
<function name='virDomainRestore' file='libvirt' module='libvirt'>
<info>This method will restore a domain saved to disk by virDomainSave().</info>
<return type='int' info='0 in case of success and -1 in case of failure.'/>
<reference name='virDomainLookupByName' href='html/libvirt-libvirt.html#virDomainLookupByName'/>
<reference name='virDomainLookupByUUID' href='html/libvirt-libvirt.html#virDomainLookupByUUID'/>
<reference name='virDomainPtr' href='html/libvirt-libvirt.html#virDomainPtr'/>
+ <reference name='virDomainReboot' href='html/libvirt-libvirt.html#virDomainReboot'/>
<reference name='virDomainRestart' href='html/libvirt-libvirt.html#virDomainRestart'/>
<reference name='virDomainRestore' href='html/libvirt-libvirt.html#virDomainRestore'/>
<reference name='virDomainResume' href='html/libvirt-libvirt.html#virDomainResume'/>
<ref name='virDomainLookupByName'/>
<ref name='virDomainLookupByUUID'/>
<ref name='virDomainPtr'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainRestart'/>
<ref name='virDomainRestore'/>
<ref name='virDomainResume'/>
</type>
<type name='unsigned int'>
<ref name='virDomainCreateLinux'/>
+ <ref name='virDomainReboot'/>
</type>
<type name='unsigned long'>
<ref name='virDomainSetMaxMemory'/>
<ref name='virDomainGetOSType'/>
<ref name='virDomainGetUUID'/>
<ref name='virDomainGetXMLDesc'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainResume'/>
<ref name='virDomainSave'/>
<ref name='virDomainSetMaxMemory'/>
<ref name='virDomainLookupByName'/>
<ref name='virDomainLookupByUUID'/>
<ref name='virDomainPtr'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainRestart'/>
<ref name='virDomainRestore'/>
<ref name='virDomainResume'/>
</word>
<word name='Note'>
<ref name='virDomainGetInfo'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
</letter>
<word name='Read-Only'>
<ref name='virConnectGetVersion'/>
</word>
+ <word name='Reboot'>
+ <ref name='virDomainReboot'/>
+ </word>
<word name='Reset'>
<ref name='virConnResetLastError'/>
<ref name='virResetError'/>
<ref name='virDomainShutdown'/>
</word>
<word name='after'>
+ <ref name='virDomainReboot'/>
<ref name='virDomainSave'/>
<ref name='virDomainShutdown'/>
</word>
<ref name='virDomainLookupByUUID'/>
</word>
<word name='being'>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
<ref name='virErrorFunc'/>
<ref name='virResetError'/>
</word>
<word name='but'>
<ref name='virConnGetLastError'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
<ref name='virDomainSuspend'/>
<ref name='virGetLastError'/>
</word>
<word name='extra'>
<ref name='_virError'/>
+ <ref name='virDomainReboot'/>
</word>
<word name='extracted'>
<ref name='virConnectGetVersion'/>
<ref name='virDomainLookupByID'/>
<ref name='virDomainLookupByName'/>
<ref name='virDomainLookupByUUID'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainRestore'/>
<ref name='virDomainResume'/>
<ref name='virDomainSave'/>
</word>
<word name='flags'>
<ref name='virDomainGetXMLDesc'/>
+ <ref name='virDomainReboot'/>
</word>
<word name='for'>
<ref name='_virDomainInfo'/>
<ref name='virDomainGetUUID'/>
<ref name='virDomainLookupByName'/>
<ref name='virDomainLookupByUUID'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainSave'/>
<ref name='virDomainShutdown'/>
<ref name='virErrorFunc'/>
</word>
<word name='guest'>
<ref name='virDomainCreateLinux'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
</letter>
</letter>
<letter name='i'>
<word name='ignore'>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
<word name='image'>
<ref name='virDomainCreateLinux'/>
<ref name='virDomainDestroy'/>
<ref name='virDomainGetXMLDesc'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainResume'/>
<ref name='virDomainSave'/>
<ref name='virDomainShutdown'/>
<ref name='virDomainFree'/>
<ref name='virDomainGetName'/>
<ref name='virDomainGetXMLDesc'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainSave'/>
<ref name='virDomainShutdown'/>
<ref name='virGetLastError'/>
<ref name='virDomainLookupByID'/>
<ref name='virDomainLookupByName'/>
<ref name='virDomainLookupByUUID'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainResume'/>
<ref name='virDomainSave'/>
<ref name='virDomainSetMaxMemory'/>
</word>
<word name='operation'>
<ref name='virDomainGetOSType'/>
+ <ref name='virDomainReboot'/>
</word>
<word name='option'>
<ref name='virDomainShutdown'/>
<ref name='virDomainSuspend'/>
</word>
<word name='reboot'>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
<word name='receive'>
<ref name='virDefaultErrorFunc'/>
</word>
<word name='request'>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
<word name='requires'>
<ref name='virDomainDestroy'/>
<ref name='virDomainSuspend'/>
</word>
+ <word name='restart'>
+ <ref name='virDomainReboot'/>
+ </word>
<word name='restarted'>
<ref name='virDomainResume'/>
</word>
<ref name='virSetErrorFunc'/>
</word>
<word name='still'>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
<word name='stopped'>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
<word name='store'>
<ref name='virDomainFree'/>
<ref name='virDomainGetInfo'/>
<ref name='virDomainGetUUID'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainRestore'/>
<ref name='virDomainResume'/>
<ref name='virDomainSave'/>
<ref name='virConnResetLastError'/>
<ref name='virDomainGetInfo'/>
<ref name='virDomainGetName'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
<word name='their'>
</word>
<word name='there'>
<ref name='virConnectClose'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
<ref name='virErrorFunc'/>
<ref name='virSetErrorFunc'/>
</word>
<word name='usable'>
<ref name='virConnectOpenReadOnly'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainShutdown'/>
</word>
<word name='use'>
<ref name='virDomainFree'/>
<ref name='virDomainGetInfo'/>
<ref name='virDomainGetXMLDesc'/>
+ <ref name='virDomainReboot'/>
<ref name='virDomainSuspend'/>
</word>
<word name='user'>
<letter name='y'>
<word name='yet'>
<ref name='virDomainGetXMLDesc'/>
+ <ref name='virDomainReboot'/>
</word>
</letter>
<letter name='z'>
virDomainPtr virDomainLookupByUUID (virConnectPtr conn,
const unsigned char *uuid);
int virDomainShutdown (virDomainPtr domain);
+int virDomainReboot (virDomainPtr domain,
+ unsigned int flags);
int virDomainDestroy (virDomainPtr domain);
int virDomainFree (virDomainPtr domain);
virDomainPtr virDomainLookupByUUID (virConnectPtr conn,
const unsigned char *uuid);
int virDomainShutdown (virDomainPtr domain);
+int virDomainReboot (virDomainPtr domain,
+ unsigned int flags);
int virDomainDestroy (virDomainPtr domain);
int virDomainFree (virDomainPtr domain);
virDomainPtr virDomainLookupByUUID (virConnectPtr conn,
const unsigned char *uuid);
int virDomainShutdown (virDomainPtr domain);
+int virDomainReboot (virDomainPtr domain,
+ unsigned int flags);
int virDomainDestroy (virDomainPtr domain);
int virDomainFree (virDomainPtr domain);
virDomainPtr virDomainLookupByUUID (virConnectPtr conn,
const unsigned char *uuid);
int virDomainShutdown (virDomainPtr domain);
+int virDomainReboot (virDomainPtr domain,
+ unsigned int flags);
int virDomainDestroy (virDomainPtr domain);
int virDomainFree (virDomainPtr domain);
(*virDrvDomainResume) (virDomainPtr domain);
typedef int
(*virDrvDomainShutdown) (virDomainPtr domain);
+typedef int
+ (*virDrvDomainReboot) (virDomainPtr domain,
+ unsigned int flags);
typedef int
(*virDrvDomainDestroy) (virDomainPtr domain);
typedef int
virDrvDomainSuspend domainSuspend;
virDrvDomainResume domainResume;
virDrvDomainShutdown domainShutdown;
+ virDrvDomainReboot domainReboot;
virDrvDomainDestroy domainDestroy;
virDrvDomainFree domainFree;
virDrvDomainGetName domainGetName;
return (ret);
error:
if (ret != NULL)
- free(path);
- if (path != NULL)
- free(path);
+ free(ret);
if (path != NULL)
free(path);
return (NULL);
return (ret);
}
+/**
+ * virDomainReboot:
+ * @domain: a domain object
+ * @flags: extra flags for the reboot operation, not used yet
+ *
+ * Reboot a domain, the domain object is still usable there after but
+ * the domain OS is being stopped for a restart.
+ * Note that the guest OS may ignore the request.
+ *
+ * Returns 0 in case of success and -1 in case of failure.
+ */
+int
+virDomainReboot(virDomainPtr domain, unsigned int flags)
+{
+ int ret;
+
+ if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+ virLibDomainError(domain, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+ return (-1);
+ }
+
+ /*
+ * try first with the xend daemon
+ */
+ ret = xenDaemonDomainReboot(domain, flags);
+ if (ret == 0) {
+ domain->flags |= DOMAIN_IS_SHUTDOWN;
+ return (0);
+ }
+
+ /*
+ * this is very hackish, the domU kernel probes for a special
+ * node in the xenstore and launch the shutdown command if found.
+ */
+ ret = xenDaemonDomainReboot(domain, flags);
+ if (ret == 0) {
+ domain->flags |= DOMAIN_IS_SHUTDOWN;
+ }
+ return (ret);
+}
+
/**
* virDomainGetName:
* @domain: a domain object
virDomainSave;
virDomainSetMaxMemory;
virDomainShutdown;
+ virDomainReboot;
virDomainSuspend;
virGetVersion;
virCopyLastError;
return ret;
}
+/*
+ * "reboot" command
+ */
+static vshCmdInfo info_reboot[] = {
+ {"syntax", "reboot <domain>"},
+ {"help", "reboot a domain"},
+ {"desc", "Run a reboot command in the targetted domain"},
+ {NULL, NULL}
+};
+
+static vshCmdOptDef opts_reboot[] = {
+ {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name or id"},
+ {NULL, 0, 0, NULL}
+};
+
+static int
+cmdReboot(vshControl * ctl, vshCmd * cmd)
+{
+ virDomainPtr dom;
+ int ret = TRUE;
+ char *name;
+
+ if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
+ return FALSE;
+
+ if (!(dom = vshCommandOptDomain(ctl, cmd, "domain", &name)))
+ return FALSE;
+
+ if (virDomainReboot(dom, 0) == 0) {
+ vshPrint(ctl, VSH_MESG, "Domain %s is being rebooted\n", name);
+ } else {
+ vshError(ctl, FALSE, "Failed to reboot domain\n");
+ ret = FALSE;
+ }
+
+ virDomainFree(dom);
+ return ret;
+}
+
/*
* "destroy" command
*/
{"save", cmdSave, opts_save, info_save},
{"restore", cmdRestore, opts_restore, info_restore},
{"shutdown", cmdShutdown, opts_shutdown, info_shutdown},
+ {"reboot", cmdReboot, opts_reboot, info_reboot},
{"destroy", cmdDestroy, opts_destroy, info_destroy},
{"help", cmdHelp, opts_help, info_help},
{"idof", cmdIdof, opts_idof, info_idof},
xenHypervisorPauseDomain, /* domainSuspend */
xenHypervisorResumeDomain, /* domainResume */
NULL, /* domainShutdown */
+ NULL, /* domainReboot */
xenHypervisorDestroyDomain, /* domainDestroy */
NULL, /* domainFree */
NULL, /* domainGetName */
xenDaemonDomainSuspend, /* domainSuspend */
xenDaemonDomainResume, /* domainResume */
xenDaemonDomainShutdown, /* domainShutdown */
+ xenDaemonDomainReboot, /* domainReboot */
xenDaemonDomainDestroy, /* domainDestroy */
NULL, /* domainFree */
NULL, /* domainGetName */
return xend_op(xend, old, "op", "rename", "name", new, NULL);
}
-/**
- * xend_reboot:
- * @xend: pointer to the Xem Daemon block
- * @name: name for the domain
- *
- * Reboot the domain, the OS is properly shutdown and restarted
- *
- * Returns 0 in case of success, -1 (with errno) in case of error.
- */
-int
-xend_reboot(virConnectPtr xend, const char *name)
-{
- if ((xend == NULL) || (name == NULL)) {
- /* this should be caught at the interface but ... */
- virXendError(xend, VIR_ERR_INVALID_ARG, __FUNCTION__);
- return (-1);
- }
- return xend_op(xend, name, "op", "shutdown", "reason", "reboot", NULL);
-}
-
/**
* xend_sysrq:
* @xend: pointer to the Xem Daemon block
return xend_op(domain->conn, domain->name, "op", "shutdown", "reason", "halt", NULL);
}
+/**
+ * xenDaemonDomainReboot:
+ * @domain: pointer to the Domain block
+ * @flags: extra flags for the reboot operation, not used yet
+ *
+ * Reboot the domain, the OS is requested to properly shutdown
+ * and restart but the domain may ignore it. It will return immediately
+ * after queuing the request.
+ *
+ * Returns 0 in case of success, -1 (with errno) in case of error.
+ */
+int
+xenDaemonDomainReboot(virDomainPtr domain, unsigned int flags ATTRIBUTE_UNUSED)
+{
+ if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)) {
+ virXendError((domain ? domain->conn : NULL), VIR_ERR_INVALID_ARG,
+ __FUNCTION__);
+ return(-1);
+ }
+ return xend_op(domain->conn, domain->name, "op", "shutdown", "reason", "reboot", NULL);
+}
+
/**
* xenDaemonDomainDestroy:
* @domain: pointer to the Domain block
*/
int xend_sysrq(virConnectPtr xend, const char *name, const char *key);
-/**
- * \brief Request a domain to reboot
- * \param xend A xend instance
- * \param name The domain's name
- * \return 0 for success; -1 (with errno) on error
- *
- * This method *requests* that a domain reboot itself. This is only
- * a request and the domain may ignore it. It will return immediately
- * after queuing the request.
- */
- int xend_reboot(virConnectPtr xend, const char *name);
-
/**
* \brief Obtain a list of currently running domains
* \param xend A xend instance
int xenDaemonDomainSuspend(virDomainPtr domain);
int xenDaemonDomainResume(virDomainPtr domain);
int xenDaemonDomainShutdown(virDomainPtr domain);
+int xenDaemonDomainReboot(virDomainPtr domain, unsigned int flags);
int xenDaemonDomainDestroy(virDomainPtr domain);
int xenDaemonDomainSave(virDomainPtr domain, const char *filename);
int xenDaemonDomainRestore(virConnectPtr conn, const char *filename);
NULL, /* domainLookupByName */
NULL, /* domainSuspend */
NULL, /* domainResume */
- NULL, /* domainShutdown */
+ xenStoreDomainShutdown, /* domainShutdown */
+ xenStoreDomainReboot, /* domainReboot */
NULL, /* domainDestroy */
NULL, /* domainFree */
NULL, /* domainGetName */
return(virDomainDoStoreWrite(domain, "control/shutdown", "halt"));
}
+/**
+ * xenStoreDomainReboot:
+ * @domain: pointer to the Domain block
+ * @flags: extra flags for the reboot operation, not used yet
+ *
+ * Reboot the domain, the OS is requested to properly shutdown
+ * and reboot but the domain may ignore it. It will return immediately
+ * after queuing the request.
+ *
+ * Returns 0 in case of success, -1 in case of error.
+ */
+int
+xenStoreDomainReboot(virDomainPtr domain, unsigned int flags ATTRIBUTE_UNUSED)
+{
+ if ((domain == NULL) || (domain->conn == NULL)) {
+ virXenStoreError((domain ? domain->conn : NULL), VIR_ERR_INVALID_ARG,
+ __FUNCTION__);
+ return(-1);
+ }
+ /*
+ * this is very hackish, the domU kernel probes for a special
+ * node in the xenstore and launch the shutdown command if found.
+ */
+ return(virDomainDoStoreWrite(domain, "control/shutdown", "reboot"));
+}
+
extern "C" {
#endif
-void xenStoreRegister (void);
-int xenStoreOpen (virConnectPtr conn,
- const char *name,
- int flags);
-int xenStoreClose (virConnectPtr conn);
-int xenStoreGetDomainInfo (virDomainPtr domain,
- virDomainInfoPtr info);
-int xenStoreNumOfDomains (virConnectPtr conn);
-int xenStoreListDomains (virConnectPtr conn,
- int *ids,
- int maxids);
-virDomainPtr xenStoreDomainLookupByName(virConnectPtr conn, const char *name);
-unsigned long xenStoreGetMaxMemory(virDomainPtr domain);
-int xenStoreDomainSetMaxMemory (virDomainPtr domain,
- unsigned long memory);
-unsigned long xenStoreDomainGetMaxMemory(virDomainPtr domain);
-int xenStoreDomainShutdown(virDomainPtr domain);
+void xenStoreRegister (void);
+int xenStoreOpen (virConnectPtr conn,
+ const char *name,
+ int flags);
+int xenStoreClose (virConnectPtr conn);
+int xenStoreGetDomainInfo (virDomainPtr domain,
+ virDomainInfoPtr info);
+int xenStoreNumOfDomains (virConnectPtr conn);
+int xenStoreListDomains (virConnectPtr conn,
+ int *ids,
+ int maxids);
+virDomainPtr xenStoreDomainLookupByName(virConnectPtr conn,
+ const char *name);
+unsigned long xenStoreGetMaxMemory (virDomainPtr domain);
+int xenStoreDomainSetMaxMemory(virDomainPtr domain,
+ unsigned long memory);
+unsigned long xenStoreDomainGetMaxMemory(virDomainPtr domain);
+int xenStoreDomainShutdown (virDomainPtr domain);
+int xenStoreDomainReboot (virDomainPtr domain,
+ unsigned int flags);
#ifdef __cplusplus
}
#endif