[libvirt] PATCH: 5/5: Some website docs on conversion

Daniel P. Berrange berrange at redhat.com
Wed May 13 14:41:49 UTC 2009


This patch adds some docs to the website demonstrating use of virsh for
converting native config formats into domain XML and vica-veca for Xen
and QEMU

 drvqemu.html    |  109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 drvqemu.html.in |   96 ++++++++++++++++++++++++++++++++++++++++++++++++-
 drvxen.html     |  104 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 drvxen.html.in  |   89 ++++++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 390 insertions(+), 8 deletions(-)


Daniel

diff -r 0c8a291a5fbe docs/drvqemu.html
--- a/docs/drvqemu.html	Wed May 13 15:28:44 2009 +0100
+++ b/docs/drvqemu.html	Wed May 13 15:30:56 2009 +0100
@@ -130,12 +130,28 @@
       </div>
       <div id="content">
         <h1>QEMU/KVM hypervisor driver</h1>
+        <ul><li>
+            <a href="#prereq">Deployment pre-requisites</a>
+          </li><li>
+            <a href="#uris">Connections to QEMU driver</a>
+          </li><li>
+            <a href="#imex">Import and export of libvirt domain XML configs</a>
+            <ul><li>
+                <a href="#xmlimport">Converting from QEMU args to domain XML</a>
+              </li><li>
+                <a href="#xmlexport">Converting from domain XML to QEMU args</a>
+              </li></ul>
+          </li><li>
+            <a href="#xmlconfig">Example domain XML config</a>
+          </li></ul>
         <p>
       The libvirt QEMU driver can manage any QEMU emulator from version 0.8.1
       or later. It can also manage anything that provides the same QEMU command
       line syntax and monitor interaction. This includes KVM, and Xenner.
     </p>
-        <h2>Deployment pre-requisites</h2>
+        <h2>
+          <a name="prereq" id="prereq">Deployment pre-requisites</a>
+        </h2>
         <ul><li>
 	<strong>QEMU emulators</strong>: The driver will probe <code>/usr/bin</code>
 	for the presence of <code>qemu</code>, <code>qemu-system-x86_64</code>,
@@ -153,7 +169,9 @@
 	node. If both are found, then Xen paravirtualized guests can be run using
 	the KVM hardware acceleration.
       </li></ul>
-        <h2>Connections to QEMU driver</h2>
+        <h2>
+          <a name="uris" id="uris">Connections to QEMU driver</a>
+        </h2>
         <p>
     The libvirt QEMU driver is a multi-instance driver, providing a single
     system wide privileged driver (the "system" instance), and per-user
@@ -171,6 +189,93 @@
     qemu+ssh://root@example.com/system   (remote access, SSH tunnelled)
     </pre>
         <h2>
+          <a name="imex" id="imex">Import and export of libvirt domain XML configs</a>
+        </h2>
+        <p>The QEMU driver currently supports a single native
+      config format known as <code>qemu-argv</code>. The data for this format
+      is expected to be a single line first a list of environment variables,
+      then the QEMu binary name, finally followed by the QEMU command line
+      arguments</p>
+        <h3>
+          <a name="xmlimport" id="xmlimport">Converting from QEMU args to domain XML</a>
+        </h3>
+        <p>
+      The <code>virsh domxml-from-native</code> provides a way to convert an
+      existing set of QEMU args into a guest description using libvirt Domain XML
+      that can then be used by libvirt.
+    </p>
+        <pre>$ cat > demo.args <<EOF
+LC_ALL=C PATH=/bin HOME=/home/test USER=test \
+LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 \
+-nographic -monitor pty -no-acpi -boot c -hda \
+/dev/HostVG/QEMUGuest1 -net none -serial none \
+-parallel none -usb
+EOF
+$ virsh domxml-from-native qemu-argv demo.args
+<domain type='qemu'>
+  <uuid>00000000-0000-0000-0000-000000000000</uuid>
+  <memory>219136</memory>
+  <currentMemory>219136</currentMemory>
+  <vcpu>1</vcpu>
+  <os>
+    <type arch='i686' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu</emulator>
+    <disk type='block' device='disk'>
+      <source dev='/dev/HostVG/QEMUGuest1'/>
+      <target dev='hda' bus='ide'/>
+    </disk>
+  </devices>
+</domain>
+    </pre>
+        <p>NB, don't include the literral \ in the args, put everything on one line</p>
+        <h3>
+          <a name="xmlexport" id="xmlexport">Converting from domain XML to QEMU args</a>
+        </h3>
+        <p>
+      The <code>virsh domxml-to-native</code> provides a way to convert a
+      guest description using libvirt Domain XML, into a set of QEMU args
+      that can be run manually.
+    </p>
+        <pre>$ cat > demo.xml <<EOF
+<domain type='qemu'>
+  <name>QEMUGuest1</name>
+  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+  <memory>219200</memory>
+  <currentMemory>219200</currentMemory>
+  <vcpu>1</vcpu>
+  <os>
+    <type arch='i686' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu</emulator>
+    <disk type='block' device='disk'>
+      <source dev='/dev/HostVG/QEMUGuest1'/>
+      <target dev='hda' bus='ide'/>
+    </disk>
+  </devices>
+</domain>
+EOF
+$ virsh domxml-to-native qemu-argv demo.xml
+  LC_ALL=C PATH=/usr/bin:/bin HOME=/home/test \
+  USER=test LOGNAME=test /usr/bin/qemu -S -M pc \
+  -no-kqemu -m 214 -smp 1 -name QEMUGuest1 -nographic \
+  -monitor pty -no-acpi -boot c -drive \
+  file=/dev/HostVG/QEMUGuest1,if=ide,index=0 -net none \
+  -serial none -parallel none -usb
+    </pre>
+        <h2>
           <a name="xmlconfig" id="xmlconfig">Example domain XML config</a>
         </h2>
         <h3>QEMU emulated guest on x86_64</h3>
diff -r 0c8a291a5fbe docs/drvqemu.html.in
--- a/docs/drvqemu.html.in	Wed May 13 15:28:44 2009 +0100
+++ b/docs/drvqemu.html.in	Wed May 13 15:30:56 2009 +0100
@@ -2,13 +2,15 @@
   <body>
     <h1>QEMU/KVM hypervisor driver</h1>
 
+    <ul id="toc"></ul>
+
     <p>
       The libvirt QEMU driver can manage any QEMU emulator from version 0.8.1
       or later. It can also manage anything that provides the same QEMU command
       line syntax and monitor interaction. This includes KVM, and Xenner.
     </p>
 
-    <h2>Deployment pre-requisites</h2>
+    <h2><a name="prereq">Deployment pre-requisites</a></h2>
 
     <ul>
       <li>
@@ -32,7 +34,7 @@
       </li>
     </ul>
 
-    <h2>Connections to QEMU driver</h2>
+    <h2><a name="uris">Connections to QEMU driver</a></h2>
 
     <p>
     The libvirt QEMU driver is a multi-instance driver, providing a single
@@ -52,6 +54,96 @@
     qemu+ssh://root@example.com/system   (remote access, SSH tunnelled)
     </pre>
 
+    <h2><a name="imex">Import and export of libvirt domain XML configs</a></h2>
+
+    <p>The QEMU driver currently supports a single native
+      config format known as <code>qemu-argv</code>. The data for this format
+      is expected to be a single line first a list of environment variables,
+      then the QEMu binary name, finally followed by the QEMU command line
+      arguments</p>
+
+    <h3><a name="xmlimport">Converting from QEMU args to domain XML</a></h3>
+
+    <p>
+      The <code>virsh domxml-from-native</code> provides a way to convert an
+      existing set of QEMU args into a guest description using libvirt Domain XML
+      that can then be used by libvirt.
+    </p>
+
+    <pre>$ cat > demo.args <<EOF
+LC_ALL=C PATH=/bin HOME=/home/test USER=test \
+LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 \
+-nographic -monitor pty -no-acpi -boot c -hda \
+/dev/HostVG/QEMUGuest1 -net none -serial none \
+-parallel none -usb
+EOF
+$ virsh domxml-from-native qemu-argv demo.args
+<domain type='qemu'>
+  <uuid>00000000-0000-0000-0000-000000000000</uuid>
+  <memory>219136</memory>
+  <currentMemory>219136</currentMemory>
+  <vcpu>1</vcpu>
+  <os>
+    <type arch='i686' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu</emulator>
+    <disk type='block' device='disk'>
+      <source dev='/dev/HostVG/QEMUGuest1'/>
+      <target dev='hda' bus='ide'/>
+    </disk>
+  </devices>
+</domain>
+    </pre>
+
+    <p>NB, don't include the literral \ in the args, put everything on one line</p>
+
+    <h3><a name="xmlexport">Converting from domain XML to QEMU args</a></h3>
+
+    <p>
+      The <code>virsh domxml-to-native</code> provides a way to convert a
+      guest description using libvirt Domain XML, into a set of QEMU args
+      that can be run manually.
+    </p>
+
+    <pre>$ cat > demo.xml <<EOF
+<domain type='qemu'>
+  <name>QEMUGuest1</name>
+  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+  <memory>219200</memory>
+  <currentMemory>219200</currentMemory>
+  <vcpu>1</vcpu>
+  <os>
+    <type arch='i686' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu</emulator>
+    <disk type='block' device='disk'>
+      <source dev='/dev/HostVG/QEMUGuest1'/>
+      <target dev='hda' bus='ide'/>
+    </disk>
+  </devices>
+</domain>
+EOF
+$ virsh domxml-to-native qemu-argv demo.xml
+  LC_ALL=C PATH=/usr/bin:/bin HOME=/home/test \
+  USER=test LOGNAME=test /usr/bin/qemu -S -M pc \
+  -no-kqemu -m 214 -smp 1 -name QEMUGuest1 -nographic \
+  -monitor pty -no-acpi -boot c -drive \
+  file=/dev/HostVG/QEMUGuest1,if=ide,index=0 -net none \
+  -serial none -parallel none -usb
+    </pre>
+
     <h2><a name="xmlconfig">Example domain XML config</a></h2>
 
     <h3>QEMU emulated guest on x86_64</h3>
diff -r 0c8a291a5fbe docs/drvxen.html
--- a/docs/drvxen.html	Wed May 13 15:28:44 2009 +0100
+++ b/docs/drvxen.html	Wed May 13 15:30:56 2009 +0100
@@ -130,11 +130,27 @@
       </div>
       <div id="content">
         <h1>Xen hypervisor driver</h1>
+        <ul><li>
+            <a href="#prereq">Deployment pre-requisites</a>
+          </li><li>
+            <a href="#uri">Connections to Xen driver</a>
+          </li><li>
+            <a href="#imex">Import and export of libvirt domain XML configs</a>
+            <ul><li>
+                <a href="#xmlimport">Converting from XM config files to domain XML</a>
+              </li><li>
+                <a href="#xmlexport">Converting from domain XML to XM config files</a>
+              </li></ul>
+          </li><li>
+            <a href="#xmlconfig">Example domain XML config</a>
+          </li></ul>
         <p>
       The libvirt Xen driver provides the ability to manage virtual machines
       on any Xen release from 3.0.1 onwards.
     </p>
-        <h2>Deployment pre-requisites</h2>
+        <h2>
+          <a name="prereq" id="prereq">Deployment pre-requisites</a>
+        </h2>
         <p>
       The libvirt Xen driver uses a combination of channels to manage Xen
       virtual machines.
@@ -163,7 +179,9 @@
 	the <code>/etc/xen</code> directory. It is important not to place
 	any other non-config files in this directory.
       </li></ul>
-        <h2>Connections to Xen driver</h2>
+        <h2>
+          <a name="uri" id="uri">Connections to Xen driver</a>
+        </h2>
         <p>
     The libvirt Xen driver is a single-instance privileged driver,
     with a driver name of 'xen'. Some example conection URIs for
@@ -177,6 +195,88 @@
     xen+ssh://root@example.com/    (remote access, SSH tunnelled)
     </pre>
         <h2>
+          <a name="imex" id="imex">Import and export of libvirt domain XML configs</a>
+        </h2>
+        <p>The Xen driver currently supports two native
+      config formats. The first known as <code>xen-xm</code> is the format
+      used by the XM tool for files in <code>/etc/xen</code>. The second
+      known as <code>xen-sxpr</code>, is the format used for interacting
+      with the XenD's legacy HTTP RPC service.</p>
+        <h3>
+          <a name="xmlimport" id="xmlimport">Converting from XM config files to domain XML</a>
+        </h3>
+        <p>
+      The <code>virsh domxml-from-native</code> provides a way to convert an
+      existing set of XM config files into a guest description using libvirt Domain XML
+      that can then be used by libvirt.
+    </p>
+        <pre>$ virsh -c xen:/// domxml-from-native xen-xm rhel5.cfg
+<domain type='xen'>
+  <name>rhel5pv</name>
+  <uuid>8f07fe28-753f-2729-d76d-bdbd892f949a</uuid>
+  <memory>2560000</memory>
+  <currentMemory>307200</currentMemory>
+  <vcpu>4</vcpu>
+  <bootloader>/usr/bin/pygrub</bootloader>
+  <os>
+    <type arch='x86_64' machine='xenpv'>linux</type>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>restart</on_crash>
+  <devices>
+    <disk type='file' device='disk'>
+      <driver name='tap' type='aio'/>
+      <source file='/var/lib/xen/images/rhel5pv.img'/>
+      <target dev='xvda' bus='xen'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <driver name='tap' type='qcow'/>
+      <source file='/root/qcow1-xen.img'/>
+      <target dev='xvdd' bus='xen'/>
+    </disk>
+    <interface type='bridge'>
+      <mac address='00:16:3e:60:36:ba'/>
+      <source bridge='xenbr0'/>
+    </interface>
+    <console type='pty'>
+      <target port='0'/>
+    </console>
+    <input type='mouse' bus='xen'/>
+    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/>
+  </devices>
+</domain>
+    </pre>
+        <h3>
+          <a name="xmlexport" id="xmlexport">Converting from domain XML to XM config files</a>
+        </h3>
+        <p>
+      The <code>virsh domxml-to-native</code> provides a way to convert a
+      guest description using libvirt Domain XML, into the XM config file
+      format.
+    </p>
+        <pre># virsh  -c xen:/// domxml-to-native xen-xm rhel5pv.xml
+name = "rhel5pv"
+uuid = "8f07fe28-753f-2729-d76d-bdbd892f949a"
+maxmem = 2500
+memory = 300
+vcpus = 4
+bootloader = "/usr/bin/pygrub"
+kernel = "/var/lib/xen/boot_kernel.0YK-cS"
+ramdisk = "/var/lib/xen/boot_ramdisk.vWgrxK"
+extra = "ro root=/dev/VolGroup00/LogVol00 rhgb quiet"
+on_poweroff = "destroy"
+on_reboot = "restart"
+on_crash = "restart"
+sdl = 0
+vnc = 1
+vncunused = 1
+vnclisten = "0.0.0.0"
+disk = [ "tap:aio:/var/lib/xen/images/rhel5pv.img,xvda,w", "tap:qcow:/root/qcow1-xen.img,xvdd,w" ]
+vif = [ "mac=00:16:3e:60:36:ba,bridge=virbr0,script=vif-bridge,vifname=vif5.0" ]
+    </pre>
+        <h2>
           <a name="xmlconfig" id="xmlconfig">Example domain XML config</a>
         </h2>
         <p>
diff -r 0c8a291a5fbe docs/drvxen.html.in
--- a/docs/drvxen.html.in	Wed May 13 15:28:44 2009 +0100
+++ b/docs/drvxen.html.in	Wed May 13 15:30:56 2009 +0100
@@ -2,12 +2,14 @@
   <body>
     <h1>Xen hypervisor driver</h1>
 
+    <ul id="toc"></ul>
+
     <p>
       The libvirt Xen driver provides the ability to manage virtual machines
       on any Xen release from 3.0.1 onwards.
     </p>
 
-    <h2>Deployment pre-requisites</h2>
+    <h2><a name="prereq">Deployment pre-requisites</a></h2>
 
     <p>
       The libvirt Xen driver uses a combination of channels to manage Xen
@@ -44,7 +46,7 @@
       </li>
     </ul>
 
-    <h2>Connections to Xen driver</h2>
+    <h2><a name="uri">Connections to Xen driver</a></h2>
 
     <p>
     The libvirt Xen driver is a single-instance privileged driver,
@@ -60,6 +62,89 @@
     xen+ssh://root@example.com/    (remote access, SSH tunnelled)
     </pre>
 
+    <h2><a name="imex">Import and export of libvirt domain XML configs</a></h2>
+
+    <p>The Xen driver currently supports two native
+      config formats. The first known as <code>xen-xm</code> is the format
+      used by the XM tool for files in <code>/etc/xen</code>. The second
+      known as <code>xen-sxpr</code>, is the format used for interacting
+      with the XenD's legacy HTTP RPC service.</p>
+
+    <h3><a name="xmlimport">Converting from XM config files to domain XML</a></h3>
+
+    <p>
+      The <code>virsh domxml-from-native</code> provides a way to convert an
+      existing set of XM config files into a guest description using libvirt Domain XML
+      that can then be used by libvirt.
+    </p>
+
+    <pre>$ virsh -c xen:/// domxml-from-native xen-xm rhel5.cfg
+<domain type='xen'>
+  <name>rhel5pv</name>
+  <uuid>8f07fe28-753f-2729-d76d-bdbd892f949a</uuid>
+  <memory>2560000</memory>
+  <currentMemory>307200</currentMemory>
+  <vcpu>4</vcpu>
+  <bootloader>/usr/bin/pygrub</bootloader>
+  <os>
+    <type arch='x86_64' machine='xenpv'>linux</type>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>restart</on_crash>
+  <devices>
+    <disk type='file' device='disk'>
+      <driver name='tap' type='aio'/>
+      <source file='/var/lib/xen/images/rhel5pv.img'/>
+      <target dev='xvda' bus='xen'/>
+    </disk>
+    <disk type='file' device='disk'>
+      <driver name='tap' type='qcow'/>
+      <source file='/root/qcow1-xen.img'/>
+      <target dev='xvdd' bus='xen'/>
+    </disk>
+    <interface type='bridge'>
+      <mac address='00:16:3e:60:36:ba'/>
+      <source bridge='xenbr0'/>
+    </interface>
+    <console type='pty'>
+      <target port='0'/>
+    </console>
+    <input type='mouse' bus='xen'/>
+    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/>
+  </devices>
+</domain>
+    </pre>
+
+    <h3><a name="xmlexport">Converting from domain XML to XM config files</a></h3>
+
+    <p>
+      The <code>virsh domxml-to-native</code> provides a way to convert a
+      guest description using libvirt Domain XML, into the XM config file
+      format.
+    </p>
+
+    <pre># virsh  -c xen:/// domxml-to-native xen-xm rhel5pv.xml
+name = "rhel5pv"
+uuid = "8f07fe28-753f-2729-d76d-bdbd892f949a"
+maxmem = 2500
+memory = 300
+vcpus = 4
+bootloader = "/usr/bin/pygrub"
+kernel = "/var/lib/xen/boot_kernel.0YK-cS"
+ramdisk = "/var/lib/xen/boot_ramdisk.vWgrxK"
+extra = "ro root=/dev/VolGroup00/LogVol00 rhgb quiet"
+on_poweroff = "destroy"
+on_reboot = "restart"
+on_crash = "restart"
+sdl = 0
+vnc = 1
+vncunused = 1
+vnclisten = "0.0.0.0"
+disk = [ "tap:aio:/var/lib/xen/images/rhel5pv.img,xvda,w", "tap:qcow:/root/qcow1-xen.img,xvdd,w" ]
+vif = [ "mac=00:16:3e:60:36:ba,bridge=virbr0,script=vif-bridge,vifname=vif5.0" ]
+    </pre>
 
     <h2><a name="xmlconfig">Example domain XML config</a></h2>
 


-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list