[PATCH] [TEST] Move some functions from utils.py to xm_virt_util.py

# HG changeset patch # User Guolian Yun <yunguol@cn.ibm.com> # Date 1225701642 28800 # Node ID 636e060429738891aae9d1c5ca43e12d1508773c # Parent d1614c101c281b57bd2bc98dfb6625f790748e54 [TEST] Move some functions from utils.py to xm_virt_util.py I will do below on the next: 1) Update common_util.py 2) Delete these functions in utils.py 3) Update all related tc Signed-off-by: Guolian Yun <yunguol@cn.ibm.com> diff -r d1614c101c28 -r 636e06042973 suites/libvirt-cim/lib/XenKvmLib/test_doms.py --- a/suites/libvirt-cim/lib/XenKvmLib/test_doms.py Wed Oct 29 20:11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/test_doms.py Mon Nov 03 00:40:42 2008 -0800 @@ -24,7 +24,7 @@ import tempfile import os from VirtLib import utils -from XenKvmLib.xm_virt_util import domain_list +from XenKvmLib.xm_virt_util import domain_list, virt2uri from CimTest.Globals import CIM_FUUID try: @@ -47,19 +47,19 @@ f.write(xml) f.close() - cmd = "virsh -c %s define %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s define %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd) return s == 0 def undefine_test_domain(name, server, virt="Xen"): - cmd = "virsh -c %s undefine %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s undefine %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd) return s == 0 def start_test_domain(name, server, virt="Xen"): - cmd = "virsh -c %s start %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s start %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd) return s == 0 @@ -68,7 +68,7 @@ """Get a list of domid from virsh""" cmd = "virsh -c %s list 2>/dev/null | sed '1,2 d; /^$/d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: return None @@ -109,7 +109,7 @@ def viruuid(name, server, virt="Xen"): """Return domain uuid given domid or domname""" cmd = "virsh -c %s domuuid %s 2>/dev/null | sed '/^$/d'" % \ - (utils.virt2uri(virt), name) + (virt2uri(virt), name) ret, out = utils.run_remote(server, cmd) if ret == 0: return out.strip(" \n") @@ -120,7 +120,7 @@ """Destroy and undefine a domain. name could be domid or domname""" cmd = "virsh -c %s 'destroy %s ; undefine %s'" % \ - (utils.virt2uri(virt), name, name) + (virt2uri(virt), name, name) utils.run_remote(server, cmd) def destroy_and_undefine_all(server, virt="Xen", aggressive = False): @@ -154,7 +154,7 @@ else: name = xmlfile_domname - vcmd = "virsh -c %s %s %s" % (utils.virt2uri(virt), cmd, name) + vcmd = "virsh -c %s %s %s" % (virt2uri(virt), cmd, name) s, o = utils.run_remote(server, vcmd) if cmd == "define" or cmd == "create": f.close() @@ -165,7 +165,7 @@ Get the vcpu lists. The input is either the domid or domname. """ cmd = "virsh -c %s vcpuinfo %s | grep '^$' | wc -l" % \ - (utils.virt2uri(virt), name_id) + (virt2uri(virt), name_id) ret, out = utils.run_remote(server, cmd) if ret != 0: @@ -180,7 +180,7 @@ nf.write(net_xml) nf.flush() fname = nf.name - cmd = "virsh -c %s net-create %s" % (utils.virt2uri(virt), fname) + cmd = "virsh -c %s net-create %s" % (virt2uri(virt), fname) ret, out = utils.run_remote(server, cmd) nf.close() if ret != 0: diff -r d1614c101c28 -r 636e06042973 suites/libvirt-cim/lib/XenKvmLib/test_xml.py --- a/suites/libvirt-cim/lib/XenKvmLib/test_xml.py Wed Oct 29 20:11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/test_xml.py Mon Nov 03 00:40:42 2008 -0800 @@ -35,7 +35,7 @@ from XenKvmLib.test_doms import set_uuid, create_vnet from VirtLib.live import available_bridges from XenKvmLib.xm_virt_util import net_list, get_bridge_from_network_xml, \ - bootloader + bootloader, virt2uri from CimTest.ReturnCodes import SKIP image_dir = "/tmp" @@ -201,7 +201,7 @@ def dumpxml(name, server, virt="Xen"): - cmd = "virsh -c %s dumpxml %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s dumpxml %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd) if s == 0: return o diff -r d1614c101c28 -r 636e06042973 suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py Wed Oct 29 20:11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py Mon Nov 03 00:40:42 2008 -0800 @@ -63,7 +63,7 @@ """ guest_cmd = "cat /proc/partitions | awk '/^ /{ print $4 } ' " - rc, out = utils.run_remote_guest(ip, vs_name, guest_cmd) + rc, out = run_remote_guest(ip, vs_name, guest_cmd) if rc != 0: return None @@ -89,7 +89,7 @@ virt = "Xen" cmd = "virsh -c %s list --all | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: @@ -109,7 +109,7 @@ virt = "Xen" cmd = "virsh -c %s list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: @@ -156,7 +156,7 @@ """Function to list active network""" names = [] cmd = "virsh -c %s net-list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: @@ -173,7 +173,7 @@ """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) + (virt2uri(virt), network) ret, out = utils.run_remote(server, cmd) if ret != 0: @@ -196,7 +196,7 @@ return None def virsh_version(server, virt="KVM"): - cmd = "virsh -c %s -v " % utils.virt2uri(virt) + cmd = "virsh -c %s -v " % virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: return None @@ -206,7 +206,7 @@ """Function to list active DiskPool list""" names = [] cmd = "virsh -c %s pool-list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: @@ -221,7 +221,7 @@ return names def virsh_vcpuinfo(server, dom, virt="Xen"): - cmd = "virsh -c %s vcpuinfo %s | grep VCPU | wc -l" % (utils.virt2uri(virt), + cmd = "virsh -c %s vcpuinfo %s | grep VCPU | wc -l" % (virt2uri(virt), dom) ret, out = utils.run_remote(server, cmd) if out.isdigit(): @@ -229,10 +229,70 @@ return None def get_hv_ver(server, virt="Xen"): - cmd = "virsh -c %s version | grep ^Running | cut -d ' ' -f 3,4" % utils.virt2uri(virt) + cmd = "virsh -c %s version | grep ^Running | cut -d ' ' -f 3,4" %virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret == 0: return out else: return None +def run_remote_guest(ip, domain, command): + """ Execute commands on remote guest console. + """ + + cmd = 'python %s %s "%s"' % (CONSOLE_APP_PATH, domain, command) + + return run_remote(ip, cmd) + + +def get_xmtest_files(ip, kernel): + # get the xm-test disk from morbo + rc, out = run_remote(ip, + "rm -rf /tmp/boot ; mkdir -p /tmp/boot /tmp/xmtest") + rc, out = run_remote(ip, + "cd /tmp/boot ; wget http://morbo.linux.ibm.com/pub/xmtest.disk.gz") + if rc != 0: + return 2, "fetching xmtest.disk failed:\n%s" % out + + # mount on /tmp/xmtest + rc, out = run_remote(ip, + "gzip -d /tmp/boot/xmtest.disk.gz ; mount -o loop /tmp/boot/xmtest.disk /tmp/xmtest") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "mounting xmtest.disk failed:\n%s" % out + + # We need "uname -r" to name the kernel correctly + rc, uname = run_remote(ip, "uname -r") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "uname failed:\n%s" % out + + # get the kernel binary, put in /tmp/boot + rc, out = run_remote(ip, + "wget %s -O /tmp/boot/vmlinuz-\`uname -r\`" % kernel) + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "fetching kernel failed:\n%s" % out + + return 0, "" + +def customize_xmtest_ramdisk(ip): + # customize modules on xm-test ramdisk + # cd $xmtestdir/ramdisk ; bin/add_modules_to_initrd ; cd + rc, out = run_remote(ip, + "cd /tmp/xmtest/ramdisk ; bin/add_modules_to_initrd") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "customizing ramdisk failed:\n%s" % out + + return 0, "" + +def virt2uri(virt): + # convert cimtest --virt param string to libvirt uri + if virt == "Xen" or virt == "XenFV": + return "xen:///" + if virt == "KVM": + return "qemu:///system" + if virt == "LXC": + return "lxc:///system" + return "" diff -r d1614c101c28 -r 636e06042973 suites/libvirt-cim/main.py --- a/suites/libvirt-cim/main.py Wed Oct 29 20:11:47 2008 -0700 +++ b/suites/libvirt-cim/main.py Mon Nov 03 00:40:42 2008 -0800 @@ -36,6 +36,7 @@ default_pool_name from XenKvmLib.reporting import gen_report, send_report from VirtLib import utils +from XenKvmLib.xm_virt_util import virt2uri from CimTest.ReturnCodes import PASS, FAIL from XenKvmLib.common_util import create_netpool_conf, destroy_netpool, \ create_diskpool_conf, destroy_diskpool @@ -90,12 +91,12 @@ print "Cleaned log files." def pre_check(ip, virt): - cmd = "virsh -c %s list --all" % utils.virt2uri(virt) + cmd = "virsh -c %s list --all" % virt2uri(virt) ret, out = utils.run_remote(ip, cmd) if ret != 0: return "This libvirt install does not support %s" % virt - cmd = "virsh -c %s version" % utils.virt2uri(virt) + cmd = "virsh -c %s version" % virt2uri(virt) ret, out = utils.run_remote(ip, cmd) if ret != 0: return "Encountered an error querying libvirt with: %s" % cmd

libvirt-cim-bounces@redhat.com wrote on 2008-11-03 16:40:49:
# HG changeset patch # User Guolian Yun <yunguol@cn.ibm.com> # Date 1225701642 28800 # Node ID 636e060429738891aae9d1c5ca43e12d1508773c # Parent d1614c101c281b57bd2bc98dfb6625f790748e54 [TEST] Move some functions from utils.py to xm_virt_util.py
I will do below on the next: 1) Update common_util.py 2) Delete these functions in utils.py 3) Update all related tc
Signed-off-by: Guolian Yun <yunguol@cn.ibm.com>
diff -r d1614c101c28 -r 636e06042973 suites/libvirt- cim/lib/XenKvmLib/test_doms.py --- a/suites/libvirt-cim/lib/XenKvmLib/test_doms.py Wed Oct 29 20: 11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/test_doms.py Mon Nov 03 00: 40:42 2008 -0800 @@ -24,7 +24,7 @@ import tempfile import os from VirtLib import utils -from XenKvmLib.xm_virt_util import domain_list +from XenKvmLib.xm_virt_util import domain_list, virt2uri from CimTest.Globals import CIM_FUUID
try: @@ -47,19 +47,19 @@ f.write(xml) f.close()
- cmd = "virsh -c %s define %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s define %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd)
return s == 0
def undefine_test_domain(name, server, virt="Xen"): - cmd = "virsh -c %s undefine %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s undefine %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd)
return s == 0
def start_test_domain(name, server, virt="Xen"): - cmd = "virsh -c %s start %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s start %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd)
return s == 0 @@ -68,7 +68,7 @@ """Get a list of domid from virsh"""
cmd = "virsh -c %s list 2>/dev/null | sed '1,2 d; /^$/d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: return None @@ -109,7 +109,7 @@ def viruuid(name, server, virt="Xen"): """Return domain uuid given domid or domname""" cmd = "virsh -c %s domuuid %s 2>/dev/null | sed '/^$/d'" % \ - (utils.virt2uri(virt), name) + (virt2uri(virt), name) ret, out = utils.run_remote(server, cmd) if ret == 0: return out.strip(" \n") @@ -120,7 +120,7 @@ """Destroy and undefine a domain. name could be domid or domname""" cmd = "virsh -c %s 'destroy %s ; undefine %s'" % \ - (utils.virt2uri(virt), name, name) + (virt2uri(virt), name, name) utils.run_remote(server, cmd)
def destroy_and_undefine_all(server, virt="Xen", aggressive = False): @@ -154,7 +154,7 @@ else: name = xmlfile_domname
- vcmd = "virsh -c %s %s %s" % (utils.virt2uri(virt), cmd, name) + vcmd = "virsh -c %s %s %s" % (virt2uri(virt), cmd, name) s, o = utils.run_remote(server, vcmd) if cmd == "define" or cmd == "create": f.close() @@ -165,7 +165,7 @@ Get the vcpu lists. The input is either the domid or domname. """ cmd = "virsh -c %s vcpuinfo %s | grep '^$' | wc -l" % \ - (utils.virt2uri(virt), name_id) + (virt2uri(virt), name_id) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -180,7 +180,7 @@ nf.write(net_xml) nf.flush() fname = nf.name - cmd = "virsh -c %s net-create %s" % (utils.virt2uri(virt), fname) + cmd = "virsh -c %s net-create %s" % (virt2uri(virt), fname) ret, out = utils.run_remote(server, cmd) nf.close() if ret != 0: diff -r d1614c101c28 -r 636e06042973 suites/libvirt- cim/lib/XenKvmLib/test_xml.py --- a/suites/libvirt-cim/lib/XenKvmLib/test_xml.py Wed Oct 29 20: 11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/test_xml.py Mon Nov 03 00: 40:42 2008 -0800 @@ -35,7 +35,7 @@ from XenKvmLib.test_doms import set_uuid, create_vnet from VirtLib.live import available_bridges from XenKvmLib.xm_virt_util import net_list, get_bridge_from_network_xml, \ - bootloader + bootloader, virt2uri from CimTest.ReturnCodes import SKIP
image_dir = "/tmp" @@ -201,7 +201,7 @@
def dumpxml(name, server, virt="Xen"): - cmd = "virsh -c %s dumpxml %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s dumpxml %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd) if s == 0: return o diff -r d1614c101c28 -r 636e06042973 suites/libvirt- cim/lib/XenKvmLib/xm_virt_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py Wed Oct 29 20:11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py Mon Nov 03 00:40:42 2008 -0800 @@ -63,7 +63,7 @@ """
guest_cmd = "cat /proc/partitions | awk '/^ /{ print $4 } ' " - rc, out = utils.run_remote_guest(ip, vs_name, guest_cmd) + rc, out = run_remote_guest(ip, vs_name, guest_cmd)
if rc != 0: return None @@ -89,7 +89,7 @@ virt = "Xen"
cmd = "virsh -c %s list --all | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -109,7 +109,7 @@ virt = "Xen"
cmd = "virsh -c %s list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -156,7 +156,7 @@ """Function to list active network""" names = [] cmd = "virsh -c %s net-list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -173,7 +173,7 @@ """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) + (virt2uri(virt), network) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -196,7 +196,7 @@ return None
def virsh_version(server, virt="KVM"): - cmd = "virsh -c %s -v " % utils.virt2uri(virt) + cmd = "virsh -c %s -v " % virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: return None @@ -206,7 +206,7 @@ """Function to list active DiskPool list""" names = [] cmd = "virsh -c %s pool-list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -221,7 +221,7 @@ return names
def virsh_vcpuinfo(server, dom, virt="Xen"): - cmd = "virsh -c %s vcpuinfo %s | grep VCPU | wc -l" % (utils. virt2uri(virt), + cmd = "virsh -c %s vcpuinfo %s | grep VCPU | wc -l" % (virt2uri(virt), dom) ret, out = utils.run_remote(server, cmd) if out.isdigit(): @@ -229,10 +229,70 @@ return None
def get_hv_ver(server, virt="Xen"): - cmd = "virsh -c %s version | grep ^Running | cut -d ' ' -f 3,4" % utils.virt2uri(virt) + cmd = "virsh -c %s version | grep ^Running | cut -d ' ' -f 3,4" %virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret == 0: return out else: return None
+def run_remote_guest(ip, domain, command): + """ Execute commands on remote guest console. + """ + + cmd = 'python %s %s "%s"' % (CONSOLE_APP_PATH, domain, command) + + return run_remote(ip, cmd) + +
Kaitlin, I think we can remove run_remote_guest to xm_virt_util.py under ../ libvirt-cim/lib/XenKvmLib, because it have to be used by live.py under lib/VirtLib. We have to make it stay in utils.py. Thoughts? If you agree to make it stay in utils.py, I will rework on this patch. Thanks!
+def get_xmtest_files(ip, kernel): + # get the xm-test disk from morbo + rc, out = run_remote(ip, + "rm -rf /tmp/boot ; mkdir -p /tmp/boot /tmp/xmtest") + rc, out = run_remote(ip, + "cd /tmp/boot ; wget http://morbo.linux.ibm.com/pub/xmtest.disk.gz") + if rc != 0: + return 2, "fetching xmtest.disk failed:\n%s" % out + + # mount on /tmp/xmtest + rc, out = run_remote(ip, + "gzip -d /tmp/boot/xmtest.disk.gz ; mount -o loop /tmp/boot/xmtest.disk /tmp/xmtest") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "mounting xmtest.disk failed:\n%s" % out + + # We need "uname -r" to name the kernel correctly + rc, uname = run_remote(ip, "uname -r") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "uname failed:\n%s" % out + + # get the kernel binary, put in /tmp/boot + rc, out = run_remote(ip, + "wget %s -O /tmp/boot/vmlinuz-\`uname -r\`" % kernel) + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "fetching kernel failed:\n%s" % out + + return 0, "" + +def customize_xmtest_ramdisk(ip): + # customize modules on xm-test ramdisk + # cd $xmtestdir/ramdisk ; bin/add_modules_to_initrd ; cd + rc, out = run_remote(ip, + "cd /tmp/xmtest/ramdisk ; bin/add_modules_to_initrd") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "customizing ramdisk failed:\n%s" % out + + return 0, "" + +def virt2uri(virt): + # convert cimtest --virt param string to libvirt uri + if virt == "Xen" or virt == "XenFV": + return "xen:///" + if virt == "KVM": + return "qemu:///system" + if virt == "LXC": + return "lxc:///system" + return "" diff -r d1614c101c28 -r 636e06042973 suites/libvirt-cim/main.py --- a/suites/libvirt-cim/main.py Wed Oct 29 20:11:47 2008 -0700 +++ b/suites/libvirt-cim/main.py Mon Nov 03 00:40:42 2008 -0800 @@ -36,6 +36,7 @@ default_pool_name from XenKvmLib.reporting import gen_report, send_report from VirtLib import utils +from XenKvmLib.xm_virt_util import virt2uri from CimTest.ReturnCodes import PASS, FAIL from XenKvmLib.common_util import create_netpool_conf, destroy_netpool, \ create_diskpool_conf, destroy_diskpool @@ -90,12 +91,12 @@ print "Cleaned log files."
def pre_check(ip, virt): - cmd = "virsh -c %s list --all" % utils.virt2uri(virt) + cmd = "virsh -c %s list --all" % virt2uri(virt) ret, out = utils.run_remote(ip, cmd) if ret != 0: return "This libvirt install does not support %s" % virt
- cmd = "virsh -c %s version" % utils.virt2uri(virt) + cmd = "virsh -c %s version" % virt2uri(virt) ret, out = utils.run_remote(ip, cmd) if ret != 0: return "Encountered an error querying libvirt with: %s" % cmd
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim

libvirt-cim-bounces@redhat.com wrote on 2008-11-03 16:57:39:
libvirt-cim-bounces@redhat.com wrote on 2008-11-03 16:40:49:
# HG changeset patch # User Guolian Yun <yunguol@cn.ibm.com> # Date 1225701642 28800 # Node ID 636e060429738891aae9d1c5ca43e12d1508773c # Parent d1614c101c281b57bd2bc98dfb6625f790748e54 [TEST] Move some functions from utils.py to xm_virt_util.py
I will do below on the next: 1) Update common_util.py 2) Delete these functions in utils.py 3) Update all related tc
Signed-off-by: Guolian Yun <yunguol@cn.ibm.com>
diff -r d1614c101c28 -r 636e06042973 suites/libvirt- cim/lib/XenKvmLib/test_doms.py --- a/suites/libvirt-cim/lib/XenKvmLib/test_doms.py Wed Oct 29 20: 11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/test_doms.py Mon Nov 03 00: 40:42 2008 -0800 @@ -24,7 +24,7 @@ import tempfile import os from VirtLib import utils -from XenKvmLib.xm_virt_util import domain_list +from XenKvmLib.xm_virt_util import domain_list, virt2uri from CimTest.Globals import CIM_FUUID
try: @@ -47,19 +47,19 @@ f.write(xml) f.close()
- cmd = "virsh -c %s define %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s define %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd)
return s == 0
def undefine_test_domain(name, server, virt="Xen"): - cmd = "virsh -c %s undefine %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s undefine %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd)
return s == 0
def start_test_domain(name, server, virt="Xen"): - cmd = "virsh -c %s start %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s start %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd)
return s == 0 @@ -68,7 +68,7 @@ """Get a list of domid from virsh"""
cmd = "virsh -c %s list 2>/dev/null | sed '1,2 d; /^$/d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: return None @@ -109,7 +109,7 @@ def viruuid(name, server, virt="Xen"): """Return domain uuid given domid or domname""" cmd = "virsh -c %s domuuid %s 2>/dev/null | sed '/^$/d'" % \ - (utils.virt2uri(virt), name) + (virt2uri(virt), name) ret, out = utils.run_remote(server, cmd) if ret == 0: return out.strip(" \n") @@ -120,7 +120,7 @@ """Destroy and undefine a domain. name could be domid or domname""" cmd = "virsh -c %s 'destroy %s ; undefine %s'" % \ - (utils.virt2uri(virt), name, name) + (virt2uri(virt), name, name) utils.run_remote(server, cmd)
def destroy_and_undefine_all(server, virt="Xen", aggressive = False): @@ -154,7 +154,7 @@ else: name = xmlfile_domname
- vcmd = "virsh -c %s %s %s" % (utils.virt2uri(virt), cmd, name) + vcmd = "virsh -c %s %s %s" % (virt2uri(virt), cmd, name) s, o = utils.run_remote(server, vcmd) if cmd == "define" or cmd == "create": f.close() @@ -165,7 +165,7 @@ Get the vcpu lists. The input is either the domid or domname. """ cmd = "virsh -c %s vcpuinfo %s | grep '^$' | wc -l" % \ - (utils.virt2uri(virt), name_id) + (virt2uri(virt), name_id) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -180,7 +180,7 @@ nf.write(net_xml) nf.flush() fname = nf.name - cmd = "virsh -c %s net-create %s" % (utils.virt2uri(virt), fname) + cmd = "virsh -c %s net-create %s" % (virt2uri(virt), fname) ret, out = utils.run_remote(server, cmd) nf.close() if ret != 0: diff -r d1614c101c28 -r 636e06042973 suites/libvirt- cim/lib/XenKvmLib/test_xml.py --- a/suites/libvirt-cim/lib/XenKvmLib/test_xml.py Wed Oct 29 20: 11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/test_xml.py Mon Nov 03 00: 40:42 2008 -0800 @@ -35,7 +35,7 @@ from XenKvmLib.test_doms import set_uuid, create_vnet from VirtLib.live import available_bridges from XenKvmLib.xm_virt_util import net_list,
get_bridge_from_network_xml, \
- bootloader + bootloader, virt2uri from CimTest.ReturnCodes import SKIP
image_dir = "/tmp" @@ -201,7 +201,7 @@
def dumpxml(name, server, virt="Xen"): - cmd = "virsh -c %s dumpxml %s" % (utils.virt2uri(virt), name) + cmd = "virsh -c %s dumpxml %s" % (virt2uri(virt), name) s, o = utils.run_remote(server, cmd) if s == 0: return o diff -r d1614c101c28 -r 636e06042973 suites/libvirt- cim/lib/XenKvmLib/xm_virt_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py Wed Oct 29 20:11:47 2008 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py Mon Nov 03 00:40:42 2008 -0800 @@ -63,7 +63,7 @@ """
guest_cmd = "cat /proc/partitions | awk '/^ /{ print $4 } ' " - rc, out = utils.run_remote_guest(ip, vs_name, guest_cmd) + rc, out = run_remote_guest(ip, vs_name, guest_cmd)
if rc != 0: return None @@ -89,7 +89,7 @@ virt = "Xen"
cmd = "virsh -c %s list --all | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -109,7 +109,7 @@ virt = "Xen"
cmd = "virsh -c %s list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -156,7 +156,7 @@ """Function to list active network""" names = [] cmd = "virsh -c %s net-list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -173,7 +173,7 @@ """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) + (virt2uri(virt), network) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -196,7 +196,7 @@ return None
def virsh_version(server, virt="KVM"): - cmd = "virsh -c %s -v " % utils.virt2uri(virt) + cmd = "virsh -c %s -v " % virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret != 0: return None @@ -206,7 +206,7 @@ """Function to list active DiskPool list""" names = [] cmd = "virsh -c %s pool-list | sed -e '1,2 d' -e '$ d'" % \ - utils.virt2uri(virt) + virt2uri(virt) ret, out = utils.run_remote(server, cmd)
if ret != 0: @@ -221,7 +221,7 @@ return names
def virsh_vcpuinfo(server, dom, virt="Xen"): - cmd = "virsh -c %s vcpuinfo %s | grep VCPU | wc -l" % (utils. virt2uri(virt), + cmd = "virsh -c %s vcpuinfo %s | grep VCPU | wc -l" % (virt2uri(virt), dom) ret, out = utils.run_remote(server, cmd) if out.isdigit(): @@ -229,10 +229,70 @@ return None
def get_hv_ver(server, virt="Xen"): - cmd = "virsh -c %s version | grep ^Running | cut -d ' ' -f 3,4" % utils.virt2uri(virt) + cmd = "virsh -c %s version | grep ^Running | cut -d ' ' -f 3,4" %virt2uri(virt) ret, out = utils.run_remote(server, cmd) if ret == 0: return out else: return None
+def run_remote_guest(ip, domain, command): + """ Execute commands on remote guest console. + """ + + cmd = 'python %s %s "%s"' % (CONSOLE_APP_PATH, domain, command) + + return run_remote(ip, cmd) + +
Kaitlin,
I think we can remove run_remote_guest to xm_virt_util.py under ../libvirt-cim/lib/XenKvmLib, because it have to be used by live.py under lib/VirtLib. We have to make it stay in utils.py.
Thoughts?
If you agree to make it stay in utils.py, I will rework on this
I'm sorry, I intend to say we cann't remove run_remote_guest() from ../lib/XenKvmLib to xm_virt_util.py =) patch.
Thanks!
+def get_xmtest_files(ip, kernel): + # get the xm-test disk from morbo + rc, out = run_remote(ip, + "rm -rf /tmp/boot ; mkdir -p /tmp/boot /tmp/xmtest") + rc, out = run_remote(ip, + "cd /tmp/boot ; wget http://morbo.linux.ibm.com/pub/xmtest.disk.gz ") + if rc != 0: + return 2, "fetching xmtest.disk failed:\n%s" % out + + # mount on /tmp/xmtest + rc, out = run_remote(ip, + "gzip -d /tmp/boot/xmtest.disk.gz ; mount -o loop /tmp/boot/xmtest.disk /tmp/xmtest") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "mounting xmtest.disk failed:\n%s" % out + + # We need "uname -r" to name the kernel correctly + rc, uname = run_remote(ip, "uname -r") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "uname failed:\n%s" % out + + # get the kernel binary, put in /tmp/boot + rc, out = run_remote(ip, + "wget %s -O /tmp/boot/vmlinuz-\`uname -r\`" % kernel) + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "fetching kernel failed:\n%s" % out + + return 0, "" + +def customize_xmtest_ramdisk(ip): + # customize modules on xm-test ramdisk + # cd $xmtestdir/ramdisk ; bin/add_modules_to_initrd ; cd + rc, out = run_remote(ip, + "cd /tmp/xmtest/ramdisk ; bin/add_modules_to_initrd") + if rc != 0: + run_remote(ip, "umount /tmp/xmtest") + return 2, "customizing ramdisk failed:\n%s" % out + + return 0, "" + +def virt2uri(virt): + # convert cimtest --virt param string to libvirt uri + if virt == "Xen" or virt == "XenFV": + return "xen:///" + if virt == "KVM": + return "qemu:///system" + if virt == "LXC": + return "lxc:///system" + return "" diff -r d1614c101c28 -r 636e06042973 suites/libvirt-cim/main.py --- a/suites/libvirt-cim/main.py Wed Oct 29 20:11:47 2008 -0700 +++ b/suites/libvirt-cim/main.py Mon Nov 03 00:40:42 2008 -0800 @@ -36,6 +36,7 @@ default_pool_name from XenKvmLib.reporting import gen_report, send_report from VirtLib import utils +from XenKvmLib.xm_virt_util import virt2uri from CimTest.ReturnCodes import PASS, FAIL from XenKvmLib.common_util import create_netpool_conf, destroy_netpool, \ create_diskpool_conf, destroy_diskpool @@ -90,12 +91,12 @@ print "Cleaned log files."
def pre_check(ip, virt): - cmd = "virsh -c %s list --all" % utils.virt2uri(virt) + cmd = "virsh -c %s list --all" % virt2uri(virt) ret, out = utils.run_remote(ip, cmd) if ret != 0: return "This libvirt install does not support %s" % virt
- cmd = "virsh -c %s version" % utils.virt2uri(virt) + cmd = "virsh -c %s version" % virt2uri(virt) ret, out = utils.run_remote(ip, cmd) if ret != 0: return "Encountered an error querying libvirt with: %s" % cmd
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim
Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim

+def run_remote_guest(ip, domain, command): + """ Execute commands on remote guest console. + """ + + cmd = 'python %s %s "%s"' % (CONSOLE_APP_PATH, domain, command) + + return run_remote(ip, cmd) + +
Kaitlin,
I think we can remove run_remote_guest to xm_virt_util.py under ../libvirt-cim/lib/XenKvmLib, because it have to be used by live.py under lib/VirtLib. We have to make it stay in utils.py.
I'm sorry, I intend to say we cann't remove run_remote_guest() from ../lib/XenKvmLib to xm_virt_util.py =)
Thoughts?
If you agree to make it stay in utils.py, I will rework on this patch. Thanks!
I'm sorry Daisy - I'm not sure I understand what you mean here. Are you saying that run_remote_guest() needs to stay in lib/VirtLib/utils.py? If so, why? -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

libvirt-cim-bounces@redhat.com wrote on 2008-11-04 06:13:53:
+def run_remote_guest(ip, domain, command): + """ Execute commands on remote guest console. + """ + + cmd = 'python %s %s "%s"' % (CONSOLE_APP_PATH, domain, command) + + return run_remote(ip, cmd) + +
Kaitlin,
I think we can remove run_remote_guest to xm_virt_util.py under ../libvirt-cim/lib/XenKvmLib, because it have to be used by live.py under lib/VirtLib. We have to make it stay in utils.py.
I'm sorry, I intend to say we cann't remove run_remote_guest() from ../lib/XenKvmLib to xm_virt_util.py =)
Thoughts?
If you agree to make it stay in utils.py, I will rework on this patch. Thanks!
I'm sorry Daisy - I'm not sure I understand what you mean here. Are you
saying that run_remote_guest() needs to stay in lib/VirtLib/utils.py?
Yeah, I want to say that run_remote_guest() needs to stay in lib/VirtLib/utils.py. It because that lib/VirtLib/live.py have to call run_remote_guest(), such as below function in live.py: def processors_count(ip, vs_name): """Returns the number of processors of the specified VS """ guest_cmd = "grep '^$' /proc/cpuinfo | wc -l" rc, out = utils.run_remote_guest(ip, vs_name, guest_cmd) if rc != 0: return -1 try: cpus = int(out) return cpus except ValueError: return -1 If we move it to /libvirt-cim/lib/XenKvmLib/xm_virt_util.py, how does live.py work? Thanks!
If so, why?
-- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim

I'm sorry Daisy - I'm not sure I understand what you mean here. Are you saying that run_remote_guest() needs to stay in lib/VirtLib/utils.py?
Yeah, I want to say that run_remote_guest() needs to stay in lib/VirtLib/utils.py. It because that lib/VirtLib/live.py have to call run_remote_guest(), such as below function in live.py:
def processors_count(ip, vs_name): """Returns the number of processors of the specified VS """
guest_cmd = "grep '^$' /proc/cpuinfo | wc -l"
rc, out = utils.run_remote_guest(ip, vs_name, guest_cmd) if rc != 0: return -1
try: cpus = int(out) return cpus except ValueError: return -1
If we move it to /libvirt-cim/lib/XenKvmLib/xm_virt_util.py, how does live.py work?
Oh, I see. I had missed this before when we discussed what functions should be moved. Any function that is run within the guest should also be moved. So the following should be moved to libvirt-cim/lib/XenKvmLib/xm_virt_util.p: processors_count() memory_count() network_macs() I had originally thought these were running on the host, not within the guest. Sorry for the confusion! -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

I'm sorry Daisy - I'm not sure I understand what you mean here. Are you saying that run_remote_guest() needs to stay in
libvirt-cim-bounces@redhat.com wrote on 2008-11-05 00:11:49: lib/VirtLib/utils.py?
Yeah, I want to say that run_remote_guest() needs to stay in lib/VirtLib/utils.py. It because that lib/VirtLib/live.py have to call run_remote_guest(), such as below function in live.py:
def processors_count(ip, vs_name): """Returns the number of processors of the specified VS """
guest_cmd = "grep '^$' /proc/cpuinfo | wc -l"
rc, out = utils.run_remote_guest(ip, vs_name, guest_cmd) if rc != 0: return -1
try: cpus = int(out) return cpus except ValueError: return -1
If we move it to /libvirt-cim/lib/XenKvmLib/xm_virt_util.py, how does live.py work?
Oh, I see. I had missed this before when we discussed what functions should be moved. Any function that is run within the guest should also be moved.
So the following should be moved to libvirt-cim/lib/XenKvmLib/xm_virt_util.p:
processors_count() memory_count() network_macs()
I had originally thought these were running on the host, not within the guest. Sorry for the confusion!
I have moved below functions to xm_virt_util.py: processors_count() memory_count() network_macs() run_remote_guest() So far, this work item is done. I'm going to fix the test failure. Thoughts? Thanks!
-- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim

Oh, I see. I had missed this before when we discussed what functions should be moved. Any function that is run within the guest should also be moved.
So the following should be moved to libvirt-cim/lib/XenKvmLib/xm_virt_util.p:
processors_count() memory_count() network_macs()
I had originally thought these were running on the host, not within the guest. Sorry for the confusion!
I have moved below functions to xm_virt_util.py:
processors_count() memory_count() network_macs() run_remote_guest()
So far, this work item is done. I'm going to fix the test failure. Thoughts?
Thanks
I have a minor comment on the last patch, but after that is fixed, I think this item is complete. -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

Oh, I see. I had missed this before when we discussed what
functions
should be moved. Any function that is run within the guest should also be moved.
So the following should be moved to libvirt-cim/lib/XenKvmLib/xm_virt_util.p:
processors_count() memory_count() network_macs()
I had originally thought these were running on the host, not within
libvirt-cim-bounces@redhat.com wrote on 2008-11-06 04:27:55: the
guest. Sorry for the confusion!
I have moved below functions to xm_virt_util.py:
processors_count() memory_count() network_macs() run_remote_guest()
So far, this work item is done. I'm going to fix the test failure. Thoughts?
Thanks
I have a minor comment on the last patch, but after that is fixed, I think this item is complete.
Cool. The #2 patch is on the way.
-- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim

libvirt-cim-bounces@redhat.com wrote on 2008-11-04 06:13:53:
+def run_remote_guest(ip, domain, command): + """ Execute commands on remote guest console. + """ + + cmd = 'python %s %s "%s"' % (CONSOLE_APP_PATH, domain, command) + + return run_remote(ip, cmd) + +
Kaitlin,
I think we can remove run_remote_guest to xm_virt_util.py under ../libvirt-cim/lib/XenKvmLib, because it have to be used by live.py under lib/VirtLib. We have to make it stay in utils.py.
I'm sorry, I intend to say we cann't remove run_remote_guest() from ../lib/XenKvmLib to xm_virt_util.py =)
Thoughts?
If you agree to make it stay in utils.py, I will rework on this patch. Thanks!
I'm sorry Daisy - I'm not sure I understand what you mean here. Are you
saying that run_remote_guest() needs to stay in lib/VirtLib/utils.py?
If so, why?
Kaitlin, I make run_remote_guest() stay in lib/VirtLib/utils in my patch today. Also I update all related helper functions. If this function has to be moved to libvirt-cim/lib/XenKvmLib, I will cook up it on follow up patch. Thanks!
-- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim
participants (3)
-
Guo Lian Yun
-
Kaitlin Rupert
-
yunguol@cn.ibm.com