[Libvirt-cim] [PATCH] [TEST] #2 Create a new module of xm_virt_util.py in ../lib/XenKvmLib, move some functions from live.py under lib/XenKvmLib to it

Guo Lian Yun yunguol at cn.ibm.com
Thu Oct 30 02:56:31 UTC 2008


libvirt-cim-bounces at redhat.com wrote on 2008-10-30 10:53:32:

> # HG changeset patch
> # User Guolian Yun <yunguol at cn.ibm.com>
> # Date 1225335207 25200
> # Node ID 91f9a0bed4667b6b30a241569ef70a93b8bc0b2b
> # Parent  408dbb3a61b43bd0def587a9ea7e648105def002
> [TEST] #2 Create a new module of xm_virt_util.py in ..
> /lib/XenKvmLib, move some functions from live.py under lib/XenKvmLib to 
it

  Please ignore this patch, I missed my DCO here. I will resend a new 
patch.

  Thanks!
> 
> diff -r 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/AllocationCapabilities/02_alloccap_gi_errs.py
> --- a/suites/libvirt-
> cim/cimtest/AllocationCapabilities/02_alloccap_gi_errs.py   Mon Oct 
> 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-
> cim/cimtest/AllocationCapabilities/02_alloccap_gi_errs.py   Wed Oct 
> 29 19:53:27 2008 -0700
> @@ -57,7 +57,7 @@
>  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.xm_virt_util import 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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/ComputerSystem/01_enum.py
> --- a/suites/libvirt-cim/cimtest/ComputerSystem/01_enum.py   Mon Oct
> 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/ComputerSystem/01_enum.py   Wed Oct
> 29 19:53:27 2008 -0700
> @@ -25,7 +25,7 @@
>  import sys
>  from XenKvmLib.const import do_main
>  from XenKvmLib import enumclass
> -from VirtLib import live
> +from XenKvmLib.xm_virt_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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/ComputerSystem/02_nosystems.py
> --- a/suites/libvirt-cim/cimtest/ComputerSystem/02_nosystems.py 
> Mon Oct 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/ComputerSystem/02_nosystems.py 
> Wed Oct 29 19:53:27 2008 -0700
> @@ -25,7 +25,7 @@
>  import sys
>  import pywbem
>  from XenKvmLib import enumclass
> -from VirtLib import live
> +from XenKvmLib.xm_virt_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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/ElementCapabilities/01_forward.py
> --- a/suites/libvirt-cim/cimtest/ElementCapabilities/01_forward.py 
> Mon Oct 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/ElementCapabilities/01_forward.py 
> Wed Oct 29 19:53:27 2008 -0700
> @@ -22,7 +22,7 @@
> 
>  import sys
>  from VirtLib import utils
> -from VirtLib import live
> +from XenKvmLib.xm_virt_util import domain_list
>  from XenKvmLib import vxml
>  from XenKvmLib import assoc
>  from XenKvmLib import enumclass
> @@ -114,7 +114,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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/ElementCapabilities/02_reverse.py
> --- a/suites/libvirt-cim/cimtest/ElementCapabilities/02_reverse.py 
> Mon Oct 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/ElementCapabilities/02_reverse.py 
> Wed Oct 29 19:53:27 2008 -0700
> @@ -23,7 +23,7 @@
> 
>  import sys
>  from VirtLib import utils
> -from VirtLib import live
> +from XenKvmLib.xm_virt_util import domain_list
>  from XenKvmLib import assoc
>  from XenKvmLib import enumclass
>  from XenKvmLib import vxml
> @@ -154,7 +154,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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/EnabledLogicalElementCapabilities/01_enum.py
> --- a/suites/libvirt-
> cim/cimtest/EnabledLogicalElementCapabilities/01_enum.py   Mon Oct 
> 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-
> cim/cimtest/EnabledLogicalElementCapabilities/01_enum.py   Wed Oct 
> 29 19:53:27 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.xm_virt_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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/Processor/01_processor.py
> --- a/suites/libvirt-cim/cimtest/Processor/01_processor.py   Mon Oct
> 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/Processor/01_processor.py   Wed Oct
> 29 19:53:27 2008 -0700
> @@ -25,7 +25,7 @@
>  import sys
>  import pywbem
>  from VirtLib import utils
> -from VirtLib import live
> +from XenKvmLib.xm_virt_util import active_domain_list
>  from XenKvmLib.enumclass import GetInstance
>  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)
>      proc_class = get_typed_class(options.virt, "Processor")
>      if test_dom not in domlist:
>          status = FAIL
> diff -r 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/ResourcePool/01_enum.py
> --- a/suites/libvirt-cim/cimtest/ResourcePool/01_enum.py   Mon Oct 
> 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/ResourcePool/01_enum.py   Wed Oct 
> 29 19:53:27 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.xm_virt_util import net_list
>  from XenKvmLib.vsms import RASD_TYPE_PROC, RASD_TYPE_MEM, 
> RASD_TYPE_NET_ETHER, \
>  RASD_TYPE_DISK 
> 
> diff -r 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/ResourcePool/02_rp_gi_errors.py
> --- a/suites/libvirt-cim/cimtest/ResourcePool/02_rp_gi_errors.py 
> Mon Oct 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/ResourcePool/02_rp_gi_errors.py 
> Wed Oct 29 19:53:27 2008 -0700
> @@ -28,7 +28,7 @@
>  import os
>  import sys
>  import pywbem
> -from VirtLib.live import net_list
> +from XenKvmLib.xm_virt_util import net_list
>  from XenKvmLib import assoc
>  from XenKvmLib import vxml
>  from XenKvmLib.common_util import try_getinstance
> diff -r 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/SettingsDefineCapabilities/01_forward.py
> --- a/suites/libvirt-
> cim/cimtest/SettingsDefineCapabilities/01_forward.py   Mon Oct 27 
> 20:03:31 2008 -0700
> +++ b/suites/libvirt-
> cim/cimtest/SettingsDefineCapabilities/01_forward.py   Wed Oct 29 
> 19:53:27 2008 -0700
> @@ -57,7 +57,7 @@
>  from distutils.file_util import move_file
>  from XenKvmLib import assoc
>  from XenKvmLib import enumclass
> -from VirtLib.live import virsh_version
> +from XenKvmLib.xm_virt_util 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
> diff -r 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/VSSD/01_enum.py
> --- a/suites/libvirt-cim/cimtest/VSSD/01_enum.py   Mon Oct 27 20:03:
> 31 2008 -0700
> +++ b/suites/libvirt-cim/cimtest/VSSD/01_enum.py   Wed Oct 29 19:53:
> 27 2008 -0700
> @@ -27,7 +27,7 @@
>  # Date : 25-10-2007 
> 
>  import sys
> -from VirtLib import live
> +from XenKvmLib.xm_virt_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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/02_destroysystem.py
> --- a/suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/02_destroysystem.py   Mon
> Oct 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/02_destroysystem.py   Wed
> Oct 29 19:53:27 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.xm_virt_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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/08_modifyresource.py
> --- a/suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/08_modifyresource.py 
> Mon Oct 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/08_modifyresource.py 
> Wed Oct 29 19:53:27 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.xm_virt_util import network_by_bridge
>  from XenKvmLib import vsms
>  from XenKvmLib import vxml
>  from CimTest.Globals import logger
> diff -r 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/10_hv_version.py
> --- a/suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/10_hv_version.py   Mon 
> Oct 27 20:03:31 2008 -0700
> +++ b/suites/libvirt-
> cim/cimtest/VirtualSystemManagementService/10_hv_version.py   Wed 
> Oct 29 19:53:27 2008 -0700
> @@ -22,7 +22,7 @@
> 
>  import sys
>  import pywbem
> -from VirtLib import live
> +from XenKvmLib.xm_virt_util import get_hv_ver
>  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 = 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 408dbb3a61b4 -r 91f9a0bed466 suites/libvirt-
> cim/lib/XenKvmLib/xm_virt_util.py
> --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
> +++ b/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py   Wed Oct 29 
> 19:53:27 2008 -0700
> @@ -0,0 +1,238 @@
> +#
> +# Copyright 2008 IBM Corp.
> +#
> +# Authors:
> +#    Dan Smith <danms at us.ibm.com>
> +#    Deepti B. Kalakeri <dkalaker at in.ibm.com>
> +#    Kaitlin Rupert <karupert at us.ibm.com>
> +#    Veerendra Chandrappa <vechandr at in.ibm.com>
> +#    Zhengang Li <lizg at cn.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 os
> +from VirtLib import utils
> +import socket
> +
> +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
> +
> 
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-cim/attachments/20081030/863660fa/attachment.htm>


More information about the Libvirt-cim mailing list