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