[libvirt] [test-API][PATCH] add "imagetype" argument for guest installation testcases

Guannan Ren gren at redhat.com
Wed Aug 17 13:13:44 UTC 2011


Add disk format argument to installation test scripts. With them, we
can test snapshot testing. The following is the conf file sample.

domain:install_linux_cdrom
    guestname
        test-api-guest
    ...
    imagetype
        qcow2
    ...

domain:shutdown
    guestname
        test-api-guest

snapshot:internal_create
    guestname
        test-api-guest
---
 repos/domain/install_linux_cdrom.py   |   23 ++++++++++-----
 repos/domain/install_linux_net.py     |   50 +++++++++++++++++----------------
 repos/domain/install_windows_cdrom.py |   23 ++++++++++-----
 3 files changed, 56 insertions(+), 40 deletions(-)

diff --git a/repos/domain/install_linux_cdrom.py b/repos/domain/install_linux_cdrom.py
index 7e8fee9..8d21797 100644
--- a/repos/domain/install_linux_cdrom.py
+++ b/repos/domain/install_linux_cdrom.py
@@ -8,6 +8,7 @@
    optional arguments: memory
                        vcpu
                        disksize
+                       imagetype
                        imagepath
                        hdmodel
                        nicmodel
@@ -70,6 +71,7 @@ def usage():
        optional arguments: memory
                            vcpu
                            disksize
+                           imagetype
                            imagepath
                            hdmodel
                            nicmodel
@@ -86,7 +88,7 @@ def check_params(params):
     mandatory_args = ['guestname', 'guesttype', 'guestos', 'guestarch']
     optional_args = ['memory', 'vcpu', 'disksize', 'imagepath', 'hdmodel',
                      'nicmodel', 'macaddr', 'ifacetype', 'source', 'type',
-                     'volumepath']
+                     'volumepath', 'imagetype']
 
     for arg in mandatory_args:
         if arg not in params_given.keys():
@@ -255,7 +257,7 @@ def install_linux_cdrom(params):
     logger.debug("the uri to connect is %s" % uri)
 
     if params.has_key('imagepath') and not params.has_key('volumepath'):
-        imgfullpath = os.join.path(params.get('imagepath'), guestname)
+        imgfullpath = os.path.join(params.get('imagepath'), guestname)
 
     elif not params.has_key('imagepath') and not params.has_key('volumepath'):
         if hypervisor == 'xen':
@@ -280,13 +282,18 @@ def install_linux_cdrom(params):
     else:
         seeksize = '10'
 
-    logger.info("the size of disk image is %sG" % (seeksize))
-    shell_disk_dd = "dd if=/dev/zero of=%s bs=1 count=1 seek=%sG" % \
-                    (imgfullpath, seeksize)
-    logger.debug("the commands line of creating disk images is '%s'" %
-                 shell_disk_dd)
+    if params.has_key('imagetype'):
+        imagetype = params.get('imagetype')
+    else:
+        imagetype = 'raw'
+
+    logger.info("create disk image with size %sG, format %s" % (seeksize, imagetype))
+    disk_create = "qemu-img create -f %s %s %sG" % \
+                    (imagetype, imgfullpath, seeksize)
+    logger.debug("the commands line of creating disk images is '%s'" % \
+                   disk_create)
 
-    (status, message) = commands.getstatusoutput(shell_disk_dd)
+    (status, message) = commands.getstatusoutput(disk_create)
 
     if status != 0:
         logger.debug(message)
diff --git a/repos/domain/install_linux_net.py b/repos/domain/install_linux_net.py
index 21ae378..1b0470e 100644
--- a/repos/domain/install_linux_net.py
+++ b/repos/domain/install_linux_net.py
@@ -9,6 +9,7 @@
    optional arguments: memory
                        vcpu
                        disksize
+                       imagetype
                        imagepath
                        hdmodel
                        nicmodel
@@ -72,6 +73,7 @@ def usage():
        optional arguments: memory
                            vcpu
                            disksize
+                           imagetype
                            imagepath
                            hdmodel
                            nicmodel
@@ -88,7 +90,8 @@ def check_params(params):
                       'guestarch','netmethod']
 
     optional_args = ['memory', 'vcpu', 'disksize', 'imagepath',
-                     'hdmodel', 'nicmodel', 'ifacetype', 'source', 'type']
+                     'hdmodel', 'nicmodel', 'ifacetype',
+                     'imagetype', 'source', 'type']
 
     for arg in mandatory_args:
         if arg not in params_given.keys():
@@ -233,7 +236,7 @@ def install_linux_net(params):
     logger.debug("the uri to connect is %s" % uri)
 
     if params.has_key('imagepath'):
-        fullimagepath = os.join.path(params.get('imagepath'), guestname)
+        fullimagepath = os.path.join(params.get('imagepath'), guestname)
     else:
         if hypervisor == 'xen':
             fullimagepath = os.path.join('/var/lib/xen/images', guestname)
@@ -246,29 +249,28 @@ def install_linux_net(params):
                 fullimagepath)
 
     if params.has_key('disksize'):
-        logger.info("the size of disk image is %sG" % (params.get('disksize')))
-        shell_disk_dd = "dd if=/dev/zero of=%s bs=1 count=1 seek=%sG" % \
-                        (fullimagepath, params.get('disksize'))
-        logger.debug("the commands line of creating disk images is '%s'" %
-                     shell_disk_dd)
-
-        (status, message) = commands.getstatusoutput(shell_disk_dd)
-        if status != 0:
-            logger.debug(message)
-        else:
-            logger.info("creating disk images file is successful.")
+        seeksize = params.get('disksize')
     else:
-        logger.info("the size of disk image is 10G")
-        shell_disk_dd = "dd if=/dev/zero of=%s bs=1 count=1 seek=10G" % \
-                         fullimagepath
-        logger.debug("the commands line of creating disk images is '%s'" %
-                     shell_disk_dd)
-
-        (status, message) = commands.getstatusoutput(shell_disk_dd)
-        if status != 0:
-            logger.debug(message)
-        else:
-            logger.info("creating disk images file is successful.")
+        seeksize = '10'
+
+    if params.has_key('imagetype'):
+        imagetype = params.get('imagetype')
+    else:
+        imagetype = 'raw'
+
+    logger.info("create disk image with size %sG, format %s" % (seeksize, imagetype))
+    disk_create = "qemu-img create -f %s %s %sG" % \
+                    (imagetype, fullimagepath, seeksize)
+    logger.debug("the commands line of creating disk images is '%s'" % \
+                   disk_create)
+
+    (status, message) = commands.getstatusoutput(disk_create)
+
+    if status != 0:
+        logger.debug(message)
+    else:
+        logger.info("creating disk images file is successful.")
+
 
     logger.info("get system environment information")
     envfile = os.path.join(homepath, 'env.cfg')
diff --git a/repos/domain/install_windows_cdrom.py b/repos/domain/install_windows_cdrom.py
index 2ea0ee7..9cf9e3b 100644
--- a/repos/domain/install_windows_cdrom.py
+++ b/repos/domain/install_windows_cdrom.py
@@ -8,6 +8,7 @@
    optional arguments: memory
                        vcpu
                        disksize
+                       imagetype
                        imagepath
                        hdmodel
                        nicmodel
@@ -68,6 +69,7 @@ def usage():
        optional arguments: memory
                            vcpu
                            disksize
+                           imagetype
                            imagepath
                            hdmodel
                            nicmodel
@@ -89,7 +91,7 @@ def check_params(params):
     mandatory_args = ['guestname', 'guesttype', 'guestos', 'guestarch']
     optional_args = ['memory', 'vcpu', 'disksize', 'imagepath', 'hdmodel',
                      'nicmodel', 'macaddr', 'ifacetype', 'source', 'type',
-                     'volumepath']
+                     'volumepath', 'imagetype']
 
     for arg in mandatory_args:
         if arg not in params_given.keys():
@@ -294,7 +296,7 @@ def install_windows_cdrom(params):
     logger.debug("the uri to connect is %s" % uri)
 
     if params.has_key('imagepath') and not params.has_key('volumepath'):
-        imgfullpath = os.join.path(params.get('imagepath'), guestname)
+        imgfullpath = os..path.join(params.get('imagepath'), guestname)
     elif not params.has_key('imagepath') and not params.has_key('volumepath'):
         if hypervisor == 'xen':
             imgfullpath = os.path.join('/var/lib/xen/images', guestname)
@@ -318,13 +320,18 @@ def install_windows_cdrom(params):
     else:
         seeksize = '20'
 
-    logger.info("the size of disk image is %sG" % (seeksize))
-    shell_disk_dd = "dd if=/dev/zero of=%s bs=1 count=1 seek=%sG" % \
-                    (imgfullpath, seeksize)
-    logger.debug("the commands line of creating disk images is '%s'" %
-                 shell_disk_dd)
+    if params.has_key('imagetype'):
+        imagetype = params.get('imagetype')
+    else:
+        imagetype = 'raw'
+
+    logger.info("create disk image with size %sG, format %s" % (seeksize, imagetype))
+    disk_create = "qemu-img create -f %s %s %sG" % \
+                    (imagetype, imgfullpath, seeksize)
+    logger.debug("the commands line of creating disk images is '%s'" % \
+                   disk_create)
 
-    (status, message) = commands.getstatusoutput(shell_disk_dd)
+    (status, message) = commands.getstatusoutput(disk_create)
 
     if status != 0:
         logger.debug(message)
-- 
1.7.1




More information about the libvir-list mailing list