On 09/02/2011 07:15 PM, Nan Zhang wrote:
add the following 2 functions to utils/Python/xmlbuilder.py
* build_cdrom()
* build_floppy()
---
  utils/Python/xmlbuilder.py   |   47 +++++++++++++++++++++++++++++++++++++++++-
  utils/Python/xmlgenerator.py |   15 +++++++------
  2 files changed, 54 insertions(+), 8 deletions(-)

diff --git a/utils/Python/xmlbuilder.py b/utils/Python/xmlbuilder.py
index 78230da..5a0f8c8 100644
--- a/utils/Python/xmlbuilder.py
+++ b/utils/Python/xmlbuilder.py
@@ -112,6 +112,33 @@ class XmlBuilder:
              self.write_toxml(disk)
          return disk.toxml()

+    def build_cdrom(self, params):
+        if params.get('hdmodel', None) == None:
+            params['hdmodel'] = 'ide'
+
+        if params['hdmodel'] == 'ide':
+            target_dev = 'hdc'
+        elif params['hdmodel'] == 'scsi':
+            target_dev = 'sdc'
+        else:
+            print 'Wrong cdrom model.'
+
+        cdrom = xmlgenerator.disk_xml(params, True)
+        if params['guesttype'] == 'xenpv':
+            cdrom.getElementsByTagName("target")[0].setAttribute("dev", "xvdc")
+        else:
+            cdrom.getElementsByTagName("target")[0].setAttribute("dev",
+                                                                target_dev)
+        if __DEBUG__:
+            self.write_toxml(cdrom)
+        return cdrom.toxml()
+
+    def build_floppy(self, params):
+        floppy = xmlgenerator.floppy_xml(params)
+        if __DEBUG__:
+            self.write_toxml(floppy)
+        return floppy.toxml()
+
      def build_interface(self, params):
          interface = xmlgenerator.interface_xml(params)
          if __DEBUG__:
@@ -177,11 +204,29 @@ if __name__ == "__main__":
      print '=' * 30, 'disk xml', '=' * 30
      params['guesttype'] = 'kvm'
      params['guestname'] = 'foo'
-    params['imagepath'] = '/images'
      params['hdmodel'] = 'virtio'

      diskxml = xmlobj.build_disk(params)

+    #---------------------
+    # get cdrom xml string
+    #---------------------
+    print '=' * 30, 'cdrom xml', '=' * 30
+    params['guesttype'] = 'kvm'
+    params['guestname'] = 'foo'
+    params['hdmodel'] = 'ide'
+    params['bootcd'] = '/tmp/cdrom.img'
+
+    cdromxml = xmlobj.build_cdrom(params)
+
+    #---------------------
+    # get floppy xml string
+    #---------------------
+    print '=' * 30, 'floppy xml', '=' * 30
+    params['floppysource'] = '/tmp/floppy.img'
+
+    floppyxml = xmlobj.build_floppy(params)
+
      #--------------------------
      # get interface xml string
      #--------------------------
diff --git a/utils/Python/xmlgenerator.py b/utils/Python/xmlgenerator.py
index c59ca9e..d57dd33 100644
--- a/utils/Python/xmlgenerator.py
+++ b/utils/Python/xmlgenerator.py
@@ -308,7 +308,7 @@ def disk_xml(params, cdrom = False):
                                        params['guestname']
          elif hypertype == 'xen':
              params['imagepath'] = '/var/lib/xen/images'
-            params['fullimagepath'] = '/var/lib/xen/images' + '/' + \
+            params['fullimagepath'] = params['imagepath'] + '/' + \
                                        params['guestname']
          else:
              print 'DO NOT supported hypervisor.'
@@ -367,14 +367,15 @@ def disk_xml(params, cdrom = False):
  def floppy_xml(params):
      # Disk element
      floppy = xml.dom.minidom.Document()
-    disk_element = floppy.createElement('disk')
-    disk_element.setAttribute('device', 'floppy')
-    floppy.appendChild(disk_element)
+    floppy_element = floppy.createElement('disk')
+    floppy_element.setAttribute('type', 'file')
+    floppy_element.setAttribute('device', 'floppy')
+    floppy.appendChild(floppy_element)

      # Source element
      source_element = floppy.createElement('source')
      source_element.setAttribute('file', params['floppysource'])
-    disk_element.appendChild(source_element)
+    floppy_element.appendChild(source_element)

      # Target element
      target_element = floppy.createElement('target')
@@ -384,11 +385,11 @@ def floppy_xml(params):
          target_element.setAttribute('dev', 'fda')

      target_element.setAttribute('bus', 'fdc')
-    disk_element.appendChild(target_element)
+    floppy_element.appendChild(target_element)

      # Readonly
      readonly = floppy.createElement('readonly')
-    disk_element.appendChild(readonly)
+    floppy_element.appendChild(readonly)

      return floppy

     ACK and pushed

     Guannan Ren

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to