[Libvirt-cim] [PATCH] [TEST] Move some functions from live.py to common_util.py and update related tc

yunguol at cn.ibm.com yunguol at cn.ibm.com
Wed Oct 29 05:58:26 UTC 2008


# HG changeset patch
# User Guolian Yun <yunguol at cn.ibm.com>
# Date 1225259900 25200
# Node ID 5b2b14ed9401ac6398b3cdbefa290553570ff195
# Parent  0f340004e1cd48f5ede60a68283a850ae60c9ebe
[TEST] Move some functions from live.py to common_util.py and update related tc

On the next, I will delete the removed functions in live.py and update other tests

Signed-off-by: Guolian Yun <yunguol at cn.ibm.com>

diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/AllocationCapabilities/02_alloccap_gi_errs.py
--- a/suites/libvirt-cim/cimtest/AllocationCapabilities/02_alloccap_gi_errs.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/AllocationCapabilities/02_alloccap_gi_errs.py	Tue Oct 28 22:58:20 2008 -0700
@@ -56,8 +56,7 @@
 from VirtLib import utils
 from CimTest.Globals import logger, CIM_USER, CIM_PASS, CIM_NS
 from CimTest.ReturnCodes import PASS, SKIP, FAIL
-from XenKvmLib.common_util import try_getinstance
-from VirtLib.live import net_list
+from XenKvmLib.common_util import try_getinstance, net_list
 from XenKvmLib.test_xml import netxml
 from XenKvmLib.test_doms import create_vnet
 from XenKvmLib.const import do_main, platform_sup, default_pool_name
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/ComputerSystem/01_enum.py
--- a/suites/libvirt-cim/cimtest/ComputerSystem/01_enum.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ComputerSystem/01_enum.py	Tue Oct 28 22:58:20 2008 -0700
@@ -25,7 +25,7 @@
 import sys
 from XenKvmLib.const import do_main
 from XenKvmLib import enumclass
-from VirtLib import live
+from XenKvmLib.common_util import domain_list
 from XenKvmLib.classes import get_typed_class
 from VirtLib import utils
 from CimTest import Globals
@@ -41,7 +41,7 @@
     cs_class = get_typed_class(options.virt, 'ComputerSystem')
     try:
         cs = enumclass.EnumInstances(options.ip, cs_class)
-        live_cs = live.domain_list(options.ip, options.virt)
+        live_cs = domain_list(options.ip, options.virt)
         for system in cs:
             name = system.name
             try:
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/ComputerSystem/02_nosystems.py
--- a/suites/libvirt-cim/cimtest/ComputerSystem/02_nosystems.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ComputerSystem/02_nosystems.py	Tue Oct 28 22:58:20 2008 -0700
@@ -25,7 +25,7 @@
 import sys
 import pywbem
 from XenKvmLib import enumclass
-from VirtLib import live
+from XenKvmLib.common_util import domain_list
 from VirtLib import utils
 from XenKvmLib.classes import get_typed_class
 from CimTest.Globals import logger, CIM_ERROR_ENUMERATE
@@ -35,7 +35,7 @@
 sup_types = ['KVM', 'LXC']
 
 def clean_system(host, virt):
-    l = live.domain_list(host, virt)
+    l = domain_list(host, virt)
     if len(l) > 0:
         return False
     else:
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/ElementCapabilities/01_forward.py
--- a/suites/libvirt-cim/cimtest/ElementCapabilities/01_forward.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ElementCapabilities/01_forward.py	Tue Oct 28 22:58:20 2008 -0700
@@ -22,7 +22,6 @@
 
 import sys
 from VirtLib import utils
-from VirtLib import live
 from XenKvmLib import vxml
 from XenKvmLib import assoc
 from XenKvmLib import enumclass
@@ -31,7 +30,7 @@
 from XenKvmLib.const import do_main
 from CimTest.ReturnCodes import PASS, FAIL, SKIP, XFAIL_RC
 from XenKvmLib.enumclass import EnumInstances
-from XenKvmLib.common_util import get_host_info
+from XenKvmLib.common_util import get_host_info, domain_list
 
 sup_types = ['Xen', 'XenFV', 'KVM', 'LXC']
 test_dom  = "dom_elecap"
@@ -114,7 +113,7 @@
         logger.error("Failed to define the dom: %s", test_dom)
         return FAIL
 
-    cs = live.domain_list(server, virt)
+    cs = domain_list(server, virt)
     ccn  = get_typed_class(virt, "ComputerSystem")
     for system in cs:  
         try:
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/ElementCapabilities/02_reverse.py
--- a/suites/libvirt-cim/cimtest/ElementCapabilities/02_reverse.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ElementCapabilities/02_reverse.py	Tue Oct 28 22:58:20 2008 -0700
@@ -23,13 +23,12 @@
 
 import sys
 from VirtLib import utils
-from VirtLib import live
 from XenKvmLib import assoc
 from XenKvmLib import enumclass
 from XenKvmLib import vxml
 from XenKvmLib.classes import get_typed_class
 from XenKvmLib.classes import get_class_basename
-from XenKvmLib.common_util import get_host_info
+from XenKvmLib.common_util import get_host_info, domain_list
 from CimTest.Globals import logger, CIM_ERROR_GETINSTANCE, \
                             CIM_ERROR_ASSOCIATORNAMES
 from XenKvmLib.const import do_main
@@ -154,7 +153,7 @@
         logger.error("Failed to define the dom: %s" % test_dom)
         return FAIL
 
-    cs = live.domain_list(options.ip, options.virt)
+    cs = domain_list(options.ip, options.virt)
     for system in cs:
         cn = get_typed_class(options.virt, "EnabledLogicalElementCapabilities")
         status, elec_cs = call_assoc(options.ip, cn, system, options.virt)
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/EnabledLogicalElementCapabilities/01_enum.py
--- a/suites/libvirt-cim/cimtest/EnabledLogicalElementCapabilities/01_enum.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/EnabledLogicalElementCapabilities/01_enum.py	Tue Oct 28 22:58:20 2008 -0700
@@ -26,7 +26,7 @@
 from XenKvmLib.classes import get_typed_class
 from CimTest import Globals
 from XenKvmLib.const import do_main
-from VirtLib import live
+from XenKvmLib.common_util import domain_list
 from VirtLib import utils
 
 sup_types = ['Xen', 'KVM', 'XenFV', 'LXC']
@@ -44,7 +44,7 @@
         return 1
 
      
-    names = live.domain_list(options.ip, options.virt)
+    names = domain_list(options.ip, options.virt)
     
     if len(elec) != len(names):
         Globals.logger.error("Get domain list error, the number of domains is not equal")
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/Processor/01_processor.py
--- a/suites/libvirt-cim/cimtest/Processor/01_processor.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/Processor/01_processor.py	Tue Oct 28 22:58:20 2008 -0700
@@ -25,7 +25,7 @@
 import sys
 import pywbem
 from VirtLib import utils
-from VirtLib import live
+from XenKvmLib.common_util import active_domain_list
 from XenKvmLib import devices
 from XenKvmLib.test_xml import testxml
 from XenKvmLib.classes import get_typed_class
@@ -48,7 +48,7 @@
     vsxml.start(options.ip)
 
     # Processor instance enumerate need the domain to be active
-    domlist = live.active_domain_list(options.ip, options.virt)
+    domlist = active_domain_list(options.ip, options.virt)
     if test_dom not in domlist:
         status = FAIL
         logger.error("Domain not started, we're not able to check vcpu")
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/ResourcePool/01_enum.py
--- a/suites/libvirt-cim/cimtest/ResourcePool/01_enum.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ResourcePool/01_enum.py	Tue Oct 28 22:58:20 2008 -0700
@@ -34,7 +34,7 @@
 from CimTest.Globals import logger
 from XenKvmLib.const import do_main, default_pool_name
 from CimTest.ReturnCodes import PASS, FAIL, SKIP
-from VirtLib.live import net_list
+from XenKvmLib.common_util import net_list
 from XenKvmLib.vsms import RASD_TYPE_PROC, RASD_TYPE_MEM, RASD_TYPE_NET_ETHER, \
 RASD_TYPE_DISK 
 
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/ResourcePool/02_rp_gi_errors.py
--- a/suites/libvirt-cim/cimtest/ResourcePool/02_rp_gi_errors.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/ResourcePool/02_rp_gi_errors.py	Tue Oct 28 22:58:20 2008 -0700
@@ -28,10 +28,9 @@
 import os
 import sys
 import pywbem
-from VirtLib.live import net_list
 from XenKvmLib import assoc
 from XenKvmLib import vxml
-from XenKvmLib.common_util import try_getinstance
+from XenKvmLib.common_util import try_getinstance, net_list
 from XenKvmLib.classes import get_typed_class
 from distutils.file_util import move_file
 from CimTest.ReturnCodes import PASS, SKIP
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py
--- a/suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/SettingsDefineCapabilities/01_forward.py	Tue Oct 28 22:58:20 2008 -0700
@@ -57,12 +57,11 @@
 from distutils.file_util import move_file
 from XenKvmLib import assoc
 from XenKvmLib import enumclass
-from VirtLib.live import virsh_version
 from CimTest.ReturnCodes import PASS, FAIL, SKIP
 from CimTest.Globals import logger, CIM_ERROR_GETINSTANCE, CIM_ERROR_ASSOCIATORS
 from XenKvmLib.const import do_main, default_pool_name, default_network_name
 from XenKvmLib.classes import get_typed_class
-from XenKvmLib.common_util import print_field_error
+from XenKvmLib.common_util import print_field_error, virsh_version
 
 platform_sup = ['Xen', 'KVM', 'XenFV', 'LXC']
 
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/VSSD/01_enum.py
--- a/suites/libvirt-cim/cimtest/VSSD/01_enum.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/VSSD/01_enum.py	Tue Oct 28 22:58:20 2008 -0700
@@ -27,7 +27,7 @@
 # Date : 25-10-2007 
 
 import sys
-from VirtLib import live
+from XenKvmLib.common_util import domain_list
 from XenKvmLib import enumclass
 from XenKvmLib.classes import get_typed_class
 from XenKvmLib.test_doms import destroy_and_undefine_all
@@ -53,7 +53,7 @@
         status = FAIL
 
     try:
-        live_cs = live.domain_list(options.ip, options.virt)
+        live_cs = domain_list(options.ip, options.virt)
         vssd_class = get_typed_class(options.virt, "VirtualSystemSettingData")
         syslst = enumclass.EnumInstances(options.ip, vssd_class) 
         found = 0
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/VirtualSystemManagementService/02_destroysystem.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/02_destroysystem.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/02_destroysystem.py	Tue Oct 28 22:58:20 2008 -0700
@@ -25,7 +25,7 @@
 import pywbem
 from pywbem.cim_obj import CIMInstanceName
 from VirtLib import utils
-from VirtLib.live import domain_list, active_domain_list
+from XenKvmLib.common_util import domain_list, active_domain_list
 from XenKvmLib import vsms, vxml
 from XenKvmLib.classes import get_typed_class
 from XenKvmLib.const import do_main
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/VirtualSystemManagementService/08_modifyresource.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/08_modifyresource.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/08_modifyresource.py	Tue Oct 28 22:58:20 2008 -0700
@@ -26,7 +26,7 @@
 import pywbem
 from pywbem.cim_obj import CIMInstanceName
 from VirtLib import utils
-from VirtLib.live import network_by_bridge
+from XenKvmLib.common_util import network_by_bridge
 from XenKvmLib import vsms
 from XenKvmLib import vxml
 from CimTest.Globals import logger
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/cimtest/VirtualSystemManagementService/10_hv_version.py
--- a/suites/libvirt-cim/cimtest/VirtualSystemManagementService/10_hv_version.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/cimtest/VirtualSystemManagementService/10_hv_version.py	Tue Oct 28 22:58:20 2008 -0700
@@ -22,7 +22,7 @@
 
 import sys
 import pywbem
-from VirtLib import live
+from XenKvmLib import common_util
 from XenKvmLib import vsms
 from XenKvmLib.const import do_main
 from CimTest.Globals import logger
@@ -47,7 +47,7 @@
 
     try:
         cim_ver = service["Caption"]
-        local_ver = live.get_hv_ver(options.ip, options.virt)
+        local_ver = common_util.get_hv_ver(options.ip, options.virt)
 
         if cim_ver != local_ver:
             logger.error("CIM says version is `%s', but libvirt says `%s'" \
diff -r 0f340004e1cd -r 5b2b14ed9401 suites/libvirt-cim/lib/XenKvmLib/common_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py	Fri Oct 24 01:04:38 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py	Tue Oct 28 22:58:20 2008 -0700
@@ -36,7 +36,6 @@
 from CimTest.Globals import logger, CIM_ERROR_ENUMERATE, \
                             CIM_ERROR_GETINSTANCE
 from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC
-from VirtLib.live import diskpool_list, virsh_version, net_list, domain_list
 from XenKvmLib.vxml import PoolXML, NetXML
 from VirtLib import utils 
 from XenKvmLib.const import default_pool_name, default_network_name
@@ -512,4 +511,215 @@
         logger.error("Exception: %s", detail)
 
     Globals.CIM_NS = 'root/virt'
-    return status, linux_cs 
+    return status, linux_cs
+
+def xm_domname(ip, domid):
+
+    cmd = "xm domname %s" % domid
+
+    rc, out = utils.run_remote(ip, cmd)
+    if rc != 0:
+        return None
+
+    return out
+
+def list_guests_on_bridge(ip, bridge):
+    """Returns a list of domU names that have vifs in the
+    specified bridge.
+    """
+
+    cmd = "brctl show %s | grep 'vif' | grep -v vif0.*" % bridge
+
+    rc, out = utils.run_remote(ip, cmd)
+    if rc != 0:
+        return []
+
+    ret = []
+    lines = out.splitlines()
+    for l in lines:
+        vif = l.split()[-1]
+        domid = vif.replace('vif', '').split('.')[0]
+        domname = xm_domname(ip, domid)
+        if domname != None:
+            ret.append(domname)
+
+    return ret
+
+def disk_list(ip, vs_name):
+    """Returns the list of disk of the specified VS
+    """
+
+    guest_cmd = "cat /proc/partitions | awk '/^ /{ print $4 } ' "
+    rc, out = utils.run_remote_guest(ip, vs_name, guest_cmd)
+
+    if rc != 0:
+        return None
+
+    return out
+
+def max_free_mem(server):
+    """Function to get max free mem on dom0.
+
+    Returns an int containing the value in MB.
+    """
+
+    xm_ret, mfm = utils.run_remote(server,
+                    "xm info | awk -F ': ' '/max_free_memory/ {print \$2}'")
+    if xm_ret != 0:
+        return None
+
+    return int(mfm)
+
+def domain_list(server, virt="Xen"):
+    """Function to list all domains"""
+    if virt == "XenFV":
+       virt = "Xen"
+
+    cmd = "virsh -c %s list --all | sed -e '1,2 d' -e '$ d'" % \
+                utils.virt2uri(virt)
+    ret, out = utils.run_remote(server, cmd)
+
+    if ret != 0:
+        return None
+    names = []
+    lines = out.split("\n")
+    for line in lines:
+        dinfo = line.split()
+        if len(dinfo) > 1:
+            names.append(dinfo[1])
+
+    return names
+
+def active_domain_list(server, virt="Xen"):
+    """Function to list all active domains"""
+    if virt == "XenFV":
+        virt = "Xen"
+
+    cmd = "virsh -c %s list | sed -e '1,2 d' -e '$ d'" % \
+                utils.virt2uri(virt)
+    ret, out = utils.run_remote(server, cmd)
+
+    if ret != 0:
+        return None
+    names = []
+    lines = out.split("\n")
+    for line in lines:
+        dinfo = line.split()
+        if len(dinfo) > 1:
+            names.append(dinfo[1])
+
+    return names
+
+def bootloader(server, gtype = 0):
+    """
+       Function to find the bootloader to be used.
+       It uses the following steps to determine the bootloader.
+       1) The function checks if the machine is full virt or para virt.
+       2) Checks if a Full virt guest option is set
+          NOTE : gtype = 1 for FV and gtype = 0 for PV
+          i) If yes, then verifies if the machine has the support to
+             create the full virt guest. If both options are true then
+             bootloader is set to 'hvmloader'
+          ii) Otherwise, a paravirt guest creation is requested.
+              a) Verfies the OS on which it is running is Red hat/Fedora/SLES.
+              b) sets the bootloader to pygrub for Red hat/Fedora
+                 or domUloader.py for SLES.
+       3) returns the bootloader.
+    """
+    if fv_cap(server) and gtype == 1:
+        bootloader = "/usr/lib/xen/boot/hvmloader"
+    else:
+        cmd = "cat /etc/issue | grep -v ^$ | egrep 'Red Hat|Fedora'"
+        ret, out = utils.run_remote(server,cmd)
+        if ret != 0:
+        # For SLES
+            bootloader = "/usr/lib/xen/boot/domUloader.py"
+        else:
+        # For Red Hat or Fedora
+            bootloader = "/usr/bin/pygrub"
+    return bootloader
+
+def net_list(server, virt="Xen"):
+    """Function to list active network"""
+    names = []
+    cmd = "virsh -c %s net-list | sed -e '1,2 d' -e '$ d'" % \
+                utils.virt2uri(virt)
+    ret, out = utils.run_remote(server, cmd)
+
+    if ret != 0:
+        return names
+    lines = out.split("\n")
+    for line in lines:
+        virt_network = line.split()
+        if len(virt_network) >= 1 and virt_network[1] == "active":
+            names.append(virt_network[0])
+
+    return names
+
+def get_bridge_from_network_xml(network, server, virt="Xen"):
+    """Function returns bridge name for a given virtual network"""
+
+    cmd = "virsh -c %s net-dumpxml %s | awk '/bridge name/ { print $2 }'" % \
+                (utils.virt2uri(virt), network)
+    ret, out = utils.run_remote(server, cmd)
+
+    if ret != 0:
+        return None
+    bridge = out.split("'")
+    if len(bridge) > 1:
+        return bridge[1]
+
+def network_by_bridge(bridge, server, virt="Xen"):
+    """Function returns virtual network for a given bridge"""
+
+    networks = net_list(server, virt)
+    if len(networks) == 0:
+        return None
+
+    for network in networks:
+        if bridge == get_bridge_from_network_xml(network, server, virt):
+            return network
+
+    return None
+
+def virsh_version(server, virt="KVM"):
+    cmd = "virsh -c %s -v " % utils.virt2uri(virt)
+    ret, out = utils.run_remote(server, cmd)
+    if ret != 0:
+        return None
+    return out
+
+def diskpool_list(server, virt="KVM"):
+    """Function to list active DiskPool list"""
+    names = []
+    cmd = "virsh -c %s pool-list | sed -e '1,2 d' -e '$ d'" % \
+           utils.virt2uri(virt)
+    ret, out = utils.run_remote(server, cmd)
+
+    if ret != 0:
+        return names
+
+    lines = out.split("\n")
+    for line in lines:
+        disk_pool = line.split()
+        if len(disk_pool) >= 1 and disk_pool[1] == "active":
+            names.append(disk_pool[0])
+
+    return names
+
+def virsh_vcpuinfo(server, dom, virt="Xen"):
+    cmd = "virsh -c %s vcpuinfo %s | grep VCPU | wc -l" % (utils.virt2uri(virt),
+          dom)
+    ret, out = utils.run_remote(server, cmd)
+    if out.isdigit():
+        return out
+    return None
+
+def get_hv_ver(server, virt="Xen"):
+    cmd = "virsh -c %s version | grep ^Running | cut -d ' ' -f 3,4" % utils.virt2uri(virt)
+    ret, out = utils.run_remote(server, cmd)
+    if ret == 0:
+        return out
+    else:
+        return None
+ 




More information about the Libvirt-cim mailing list