It's a common virt-v2v test assistant module, which provides some necessary class/functions with virt-v2v testing.
Signed-off-by: Alex Jia <a...@redhat.com> Signed-off-by: Wayne Sun <g...@redhat.com> --- client/virt/virt_v2v_utils.py | 278 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 278 insertions(+) create mode 100644 client/virt/virt_v2v_utils.py diff --git a/client/virt/virt_v2v_utils.py b/client/virt/virt_v2v_utils.py new file mode 100644 index 0000000..f93e417 --- /dev/null +++ b/client/virt/virt_v2v_utils.py @@ -0,0 +1,278 @@ +""" +Virt-v2v test utility functions. + +@copyright: 2008-2012 Red Hat Inc. +""" + +import os, re, logging + +import ovirt +import libvirt_vm as lvirt + + +def build_esx_no_verify(params): + """ + Build esx no verify relationship. + """ + netrc = params.get('netrc') + path = os.path.join(os.getenv("HOME"), '.netrc') + fp = open(path, "a") + os.chmod(path, 0600) + fp.write("%s\n" %netrc) + fp.close() + + +class URI(object): + """ + This class is used for generating uri. + """ + def __init__(self, hypervisor): + if hypervisor is None: + # kvm is a default hypervisor + hypervisor = "kvm" + self.hyper = hypervisor + + def get_uri(self, hostname): + """ + This fucntion is a uri dispatcher. + """ + uri_func = getattr(self, "get_%s_uri" % self.hyper) + self.host = hostname + return uri_func() + + def get_kvm_uri(self): + """ + Return kvm uri. + """ + uri = "qemu+ssh://"+ self.host + "/system" + return uri + + def get_xen_uri(self): + """ + Return xen uri. + """ + uri = "xen+ssh://"+ self.host + "/" + return uri + + def get_esx_uri(self): + """ + Return esx uri. + """ + uri = "esx://"+ self.host + "/?no_verify=1" + return uri + + # add new hypervisor in here. + + +class TARGERT(object): + """ + This class is used for generating command options. + """ + def __init__(self, target, uri): + if target is None: + # libvirt is a default target + target = "libvirt" + self.tgt = target + self.uri = uri + + def get_cmd_options(self, params): + """ + This fucntion is a target dispatcher. + """ + opts_func = getattr(self, "get_%s_options" % self.tgt) + self.params = params + return opts_func() + + def get_libvirt_options(self): + """ + Return command options. + """ + options = " -ic %s -os %s -b %s %s " % (self.uri, + self.params.get('storage'), self.params.get('network'), + self.params.get('vms')) + return options + + def get_ovirt_options(self): + """ + Return command options. + """ + options = " -ic %s -o %s -os %s -n %s %s " % (self.uri, self.tgt, + self.params.get('storage'), self.params.get('network'), + self.params.get('vms')) + + return options + + # add new target in here. + + +class LinuxVMCheck(object): + """ + This class handles all basic linux VM check operations. + """ + def __init__(self, test, params, env): + self.vm = None + self.test = test + self.env = env + self.params = params + self.name = params.get('vms') + self.target = params.get('target') + + if self.name is None: + logging.error("vm name not exist") + + # libvirt is a default target + if self.target == "libvirt" or self.target is None: + self.vm = lvirt.VM(self.name, self.params, self.test.bindir, + self.env.get("address_cache")) + elif self.target == "ovirt": + self.vm = ovirt.VM(self.name, self.params, self.test.bindir, + self.env.get("address_cache")) + else: + logging.error("Doesn't support %s now" % self.target) + + if self.vm.is_alive(): + self.vm.shutdown() + self.vm.start() + else: + self.vm.start() + + def get_vm_kernel(self, session=None, nic_index=0, timeout=480): + """ + Get vm kernel info. + """ + cmd = "uname -r" + session = session or self.vm.wait_for_login(nic_index, timeout) + kernel_version = session.cmd_output(cmd) + logging.debug("The kernel of VM '%s' is: %s" % \ + (self.vm.name, kernel_version)) + session.close() + return kernel_version + + def get_vm_os_vendor(self, session=None, nic_index=0, timeout=480): + """ + Get vm os vendor info. + """ + cmd = "cat /etc/issue" + session = session or self.vm.wait_for_login(nic_index, timeout) + output = session.cmd_output(cmd).split('\n', 1)[0] + if re.search('Red Hat', output): + vendor = 'Red Hat' + elif re.search('Fedora', output): + vendor = 'Fedora Core' + elif re.search('SUSE', output): + vendor = 'SUSE' + elif re.search('Ubuntu', output): + vendor = 'Ubuntu' + elif re.search('Debian', output): + vendor = 'Debian' + else: + vendor = 'Unknown' + logging.debug("The os info is: %s" % output) + logging.debug("The os vendor of VM '%s' is: %s" % \ + (self.vm.name, vendor)) + session.close() + return vendor, output + + def get_vm_fdisk(self, session=None, nic_index=0, timeout=480): + """ + Get vm fdisk info. + """ + grep_cmd = "grep '(hd0)' /boot/grub/device.map | cut -d ' ' -f 6" + session = session or self.vm.wait_for_login(nic_index, timeout) + disk_path = session.cmd_output(grep_cmd) + logging.debug("Disk path is %s" % disk_path) + + fdisk_cmd = "fdisk -l %s" % disk_path + fdisk_output = session.cmd_output(fdisk_cmd) + fdisk_info = (fdisk_output.split('\n', 1)[1]).split('[', 1)[0] + logging.debug("The fdisk output is:\n %s" % fdisk_info) + + session.close() + return fdisk_info + + def get_vm_modprobe_conf(self, session=None, nic_index=0, timeout=480): + """ + Get /etc/modprobe.conf info. + """ + cmd = "cat /etc/modprobe.conf" + session = session or self.vm.wait_for_login(nic_index, timeout) + modprobe_output = session.cmd_output(cmd) + logging.debug("modprobe conf is:\n %s" % modprobe_output) + session.close() + return modprobe_output + + def get_vm_modules(self, session=None, nic_index=0, timeout=480): + """ + Get vm modules list. + """ + cmd = "lsmod" + session = session or self.vm.wait_for_login(nic_index, timeout) + modules = session.cmd_output(cmd) + logging.debug("VM modules list is:\n %s" % modules) + session.close() + return modules + + def get_vm_pci_list(self, session=None, nic_index=0, timeout=480): + """ + Get vm pci list. + """ + cmd = "lspci" + session = session or self.vm.wait_for_login(nic_index, timeout) + lspci_output = session.cmd_output(cmd) + logging.debug("VM pci devices list is:\n %s" % lspci_output) + session.close() + return lspci_output + + def get_vm_rc_local(self, session=None, nic_index=0, timeout=480): + """ + Get vm /etc/rc.local output. + """ + cmd = "cat /etc/rc.local" + session = session or self.vm.wait_for_login(nic_index, timeout) + rc_output = session.cmd_output(cmd) + session.close() + return rc_output + + def check_vmware_tools(self, session=None, nic_index=0, timeout=480): + """ + Check vmware tools. + """ + rpm_cmd = "rpm -q VMwareTools" + ls_cmd = "ls /usr/bin/vmware-uninstall-tools.pl" + session = session or self.vm.wait_for_login(nic_index, timeout) + rpm_output = session.cmd_output(rpm_cmd) + ls_output = session.cmd_output(ls_cmd) + session.close() + + if re.search("not installed", rpm_output) or \ + re.search("No such file", ls_output): + return True + else: + return False + + def get_vm_tty(self, session=None, nic_index=0, timeout=480): + """ + Get vm tty config. + """ + cmd = "cat /etc/securetty /etc/inittab /boot/grub/grub.conf" + session = session or self.vm.wait_for_login(nic_index, timeout) + tty = session.cmd_output(cmd) + session.close() + return tty + + def get_vm_video(self, session=None, nic_index=0, timeout=480): + """ + Get vm video config. + """ + cmd = "cat /etc/X11/xorg.conf /etc/X11/XF86Config" + session = session or self.vm.wait_for_login(nic_index, timeout) + xorg_output = session.cmd_output(cmd) + session.close() + return xorg_output + + +class WindowsVMCheck(object): + """ + This class handles all basic windows VM check operations. + """ + pass -- 1.7.10.2 _______________________________________________ Autotest mailing list Autotest@test.kernel.org http://test.kernel.org/cgi-bin/mailman/listinfo/autotest