[Libvirt-cim] [PATCH 2 of 2] [TEST] Add VirtualSystemManagementService - 14_define_sys_disk.py

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Thu Oct 9 15:54:50 UTC 2008


# HG changeset patch
# User Kaitlin Rupert <karupert at us.ibm.com>
# Date 1223567675 25200
# Node ID 1b152e5e9a47ec932b5c18bb26f226d5896b5432
# Parent  25b12a8b5257cd983e4926875dc619812fc1ce88
[TEST] Add VirtualSystemManagementService - 14_define_sys_disk.py

This test defines a guest with a very large disk image.  This test can be updated in the future to include other disk specific DefineSystem() tests.

Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>

diff -r 25b12a8b5257 -r 1b152e5e9a47 suites/libvirt-cim/cimtest/VirtualSystemManagementService/14_define_sys_disk.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/14_define_sys_disk.py	Thu Oct 09 08:54:35 2008 -0700
@@ -0,0 +1,103 @@
+#!/usr/bin/python
+#
+# Copyright 2008 IBM Corp.
+#
+# Authors:
+#    Kaitlin Rupert <karupert at us.ibm.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+#
+
+import sys
+import os 
+from VirtLib.utils import run_remote
+from CimTest.Globals import logger
+from CimTest.ReturnCodes import FAIL, PASS
+from XenKvmLib.const import do_main, _image_dir
+from XenKvmLib.common_util import create_using_definesystem
+from XenKvmLib.test_doms import destroy_and_undefine_domain
+from XenKvmLib.classes import get_typed_class, inst_to_mof
+from XenKvmLib.rasd import get_default_rasds
+from XenKvmLib.vsms import get_vssd_class, default_vssd_rasd_str
+
+sup_types = ['Xen', 'XenFV', 'KVM', 'LXC']
+test_dom = 'rstest_disk_domain'
+
+def make_long_disk_path(ip):
+    path = os.path.join(_image_dir, 'cimtest_large_image')
+
+    cmd = "dd if=/dev/zero of=%s bs=1M count=1 seek=8192" % path
+
+    rc, out = run_remote(ip, cmd)
+    if rc != 0:
+        logger.error("Unable to create large disk image")
+        logger.error(out)
+        return None
+
+    return path
+
+def get_vssd_rasd(ip, virt, addr):
+    class_vssd = get_vssd_class(virt)
+    vssd = class_vssd(test_dom, virt)
+
+    vssd, rasd = default_vssd_rasd_str(
+                            dom_name=test_dom, virt=virt)
+
+    rasds = get_default_rasds(ip, virt)
+
+    for i in range(0, len(rasds)):
+        if rasds[i]['PoolID'].find('DiskPool') >= 0:
+            rasds[i]['Address'] = addr
+        rasds[i] = inst_to_mof(rasds[i])
+
+    params = { 'vssd' : vssd,
+               'rasd' : rasds
+             }
+
+    return params 
+
+ at do_main(sup_types)
+def main():
+    options = main.options
+
+    try:
+        addr = make_long_disk_path(options.ip)
+        if addr is None:
+            raise Exception("Unable to create large disk image")
+
+        define_params = get_vssd_rasd(options.ip, options.virt, addr)
+        if len(define_params) != 2:
+            raise Exception("Unable to get VSSD and RASDs for %s" %  test_dom)
+
+        status = create_using_definesystem(test_dom, options.ip, 
+                                           params=define_params, ref_config="",
+                                           virt=options.virt)
+        if status != PASS:
+            raise Exception("Unable to define %s" % test_dom)
+
+    except Exception, details:
+        logger.error(details)
+        status = FAIL
+
+    if os.path.exists(addr):
+        os.remove(addr)
+
+    destroy_and_undefine_domain(test_dom, options.ip, options.virt)
+
+    return status 
+
+if __name__ == "__main__":
+    sys.exit(main())
+    




More information about the Libvirt-cim mailing list