def check_result(result, status_error): """ Check virt-v2v command result """ libvirt.check_exit_status(result, status_error) output = result.stdout + result.stderr if checkpoint == 'empty_cdrom': if status_error: log_fail('Virsh dumpxml failed for empty cdrom image') elif not status_error: if output_mode == 'rhev': if not utils_v2v.import_vm_to_ovirt( params, address_cache, timeout=v2v_timeout): test.fail('Import VM failed') elif output_mode == 'libvirt': virsh.start(vm_name, debug=True) # Check guest following the checkpoint document after convertion logging.info('Checking common checkpoints for v2v') vmchecker = VMChecker(test, params, env) params['vmchecker'] = vmchecker if checkpoint not in ['GPO_AV', 'ovmf']: ret = vmchecker.run() if len(ret) == 0: logging.info("All common checkpoints passed") # Check specific checkpoints if checkpoint == 'cdrom': virsh_session = utils_sasl.VirshSessionSASL(params) virsh_session_id = virsh_session.get_id() check_device_exist('cdrom', virsh_session_id) if checkpoint.startswith('vmtools'): check_vmtools(vmchecker.checker, checkpoint) if checkpoint == 'modprobe': check_modprobe(vmchecker.checker) if checkpoint == 'device_map': check_device_map(vmchecker.checker) # Merge 2 error lists error_list.extend(vmchecker.errors) log_check = utils_v2v.check_log(params, output) if log_check: log_fail(log_check) if len(error_list): test.fail('%d checkpoints failed: %s' % (len(error_list), error_list))
def check_result(result, status_error): """ Check virt-v2v command result """ libvirt.check_exit_status(result, status_error) output = result.stdout + result.stderr if not status_error: if output_mode == 'rhev': if not utils_v2v.import_vm_to_ovirt( params, address_cache, timeout=v2v_timeout): raise exceptions.TestFail('Import VM failed') elif output_mode == 'libvirt': virsh.start(vm_name) # Check guest following the checkpoint document after convertion logging.info('Checking common checkpoints for v2v') vmchecker = VMChecker(test, params, env) params['vmchecker'] = vmchecker if checkpoint not in ['GPO_AV', 'ovmf']: ret = vmchecker.run() if len(ret) == 0: logging.info("All common checkpoints passed") # Check specific checkpoints if checkpoint == 'cdrom': virsh_session = utils_sasl.VirshSessionSASL(params) virsh_session_id = virsh_session.get_id() check_device_exist('cdrom', virsh_session_id) if checkpoint == 'vmtools': check_vmtools(vmchecker.checker) if checkpoint == 'GPO_AV': msg_list = [ 'virt-v2v: warning: this guest has Windows Group Policy Objects', 'virt-v2v: warning: this guest has Anti-Virus \(AV\) software' ] for msg in msg_list: if not utils_v2v.check_log(output, [msg]): log_fail('Not found error message:"%s"' % msg) # Merge 2 error lists error_list.extend(vmchecker.errors) check_v2v_log(output, checkpoint) if len(error_list): raise exceptions.TestFail('%d checkpoints failed: %s' % (len(error_list), error_list))
def check_disks(ori_disks): """ Check disk counts inside the VM """ vmcheck = params.get("vmcheck") if vmcheck is None: raise error.TestError("VM check object is None") # Initialize windows boot up os_type = params.get("os_type", "linux") if os_type == "windows": virsh_session = utils_sasl.VirshSessionSASL(params) virsh_session_id = virsh_session.get_id() vmcheck.virsh_session_id = virsh_session_id vmcheck.init_windows() virsh_session.close() # Creatge VM session vmcheck.create_session() expected_disks = int(params.get("added_disks_count", "1")) - ori_disks logging.debug("Expect %s disks im VM after convert", expected_disks) # Get disk counts disks = 0 if os_type == "linux": cmd = "lsblk |grep disk |wc -l" disks = int(vmcheck.session.cmd(cmd).strip()) else: cmd = r"echo list disk > C:\list_disk.txt" vmcheck.session.cmd(cmd) cmd = r"diskpart /s C:\list_disk.txt" output = vmcheck.session.cmd(cmd).strip() logging.debug("Disks in VM: %s", output) disks = len(output.splitlines()) - 6 logging.debug("Find %s disks in VM after convert", disks) vmcheck.session.close() if disks == expected_disks: logging.info("Disk counts is expected") else: raise error.TestFail("Disk counts is wrong")
def setup_session(self): if self.virsh_session and self.virsh_session_id: logging.debug('virsh session %s has already been set', self.virsh_session) return for index in range(RETRY_TIMES): logging.info('Trying %d times', index + 1) try: if self.target == "ovirt": self.virsh_session = utils_sasl.VirshSessionSASL( self.params) self.virsh_session_id = self.virsh_session.get_id() else: self.virsh_session = virsh.VirshPersistent(auto_close=True) self.virsh_session_id = self.virsh_session.session_id except Exception as detail: logging.error(detail) else: break logging.debug('new virsh session %s is created', self.virsh_session) if not self.virsh_session_id: raise exceptions.TestError('Fail to create virsh session')
def vm_check(status_error): """ Checking the VM """ if status_error: return if output_mode == 'json' and not check_json_output(params): test.fail('check json output failed') if output_mode == 'local' and not check_local_output(params): test.fail('check local output failed') if output_mode in ['null', 'json', 'local']: return # vmchecker must be put before skip_vm_check in order to clean up # the VM. vmchecker = VMChecker(test, params, env) params['vmchecker'] = vmchecker if skip_vm_check == 'yes': logging.info('Skip checking vm after conversion: %s' % skip_reason) return if output_mode == 'rhev': if not utils_v2v.import_vm_to_ovirt( params, address_cache, timeout=v2v_timeout): test.fail('Import VM failed') elif output_mode == 'libvirt': virsh.start(vm_name, debug=True) # Check guest following the checkpoint document after convertion logging.info('Checking common checkpoints for v2v') if checkpoint == 'ogac': # windows guests will reboot at any time after qemu-ga is # installed. The process cannot be controled. In order to # don't break vmchecker.run() process, It's better to put # check_windows_ogac before vmchecker.run(). Because in # check_windows_ogac, it waits until rebooting completes. vmchecker.checker.create_session() if os_type == 'windows': check_windows_ogac(vmchecker.checker) else: check_linux_ogac(vmchecker.checker) ret = vmchecker.run() if len(ret) == 0: logging.info("All common checkpoints passed") # Check specific checkpoints if checkpoint == 'cdrom': virsh_session = utils_sasl.VirshSessionSASL(params) virsh_session_id = virsh_session.get_id() check_device_exist('cdrom', virsh_session_id) virsh_session.close() if checkpoint.startswith('vmtools'): check_vmtools(vmchecker.checker, checkpoint) if checkpoint == 'modprobe': check_modprobe(vmchecker.checker) if checkpoint == 'device_map': check_device_map(vmchecker.checker) if checkpoint == 'resume_swap': check_resume_swap(vmchecker.checker) if checkpoint == 'rhev_file': check_rhev_file_exist(vmchecker.checker) if checkpoint == 'file_architecture': check_file_architecture(vmchecker.checker) if checkpoint == 'ubuntu_tools': check_ubuntools(vmchecker.checker) if checkpoint == 'without_default_net': if virsh.net_state_dict()[net_name]['active']: log_fail("Bridge virbr0 already started during conversion") # Merge 2 error lists error_list.extend(vmchecker.errors)
def run(test, params, env): """ Check VM after conversion """ target = params.get('target') vm_name = params.get('main_vm') os_type = params.get('os_type', 'linux') target = params.get('target', 'libvirt') def log_err(errs, msg): logging.error(msg) errs.append(msg) def check_linux_vm(check_obj): """ Check linux guest after v2v convert. """ # Create ssh session for linux guest check_obj.create_session() errs = [] # 1. Check OS vender and version logging.info("Check guest os info") os_info = check_obj.get_vm_os_info() os_vendor = check_obj.get_vm_os_vendor() if os_vendor == 'Red Hat': os_version = os_info.split()[6] else: err_msg = "Only support RHEL for now" log_err(errs, err_msg) # 2. Check OS kernel logging.info("Check guest kernel") kernel_version = check_obj.get_vm_kernel() if re.search('xen', kernel_version, re.IGNORECASE): err_msg = "Still find xen kernel" log_err(errs, err_msg) # 3. Check disk partition logging.info("Check 'vdX' in disk partiton") parted_info = check_obj.get_vm_parted() if os_version != '3': if not re.findall('/dev/vd\S+', parted_info): err_msg = "Not find vdX" log_err(errs, err_msg) # 4. Check virtio_net in /etc/modprobe.conf # BTW, this file is removed on RHEL6 and later releases logging.info("Check virtio_net module in modprobe.conf") modprobe_conf = check_obj.get_vm_modprobe_conf() if not re.search('No such file', modprobe_conf, re.IGNORECASE): virtio_mod = re.findall(r'(?m)^alias.*virtio', modprobe_conf) net_blk_mod = re.findall(r'(?m)^alias\s+scsi|(?m)^alias\s+eth', modprobe_conf) if len(virtio_mod) != len(net_blk_mod): err_msg = "Unexpected content in modprobe.conf" log_err(errs, err_msg) # 5. Check kernel modules # BTW, RHEL3 not support virtio, so it may use 'e1000' and 'ide' logging.info("Check kernel modules") modules = check_obj.get_vm_modules() if os_version == '3': if not re.search("e1000|^ide", modules, re.IGNORECASE): err_msg = "Not find e1000|^ide module" log_err(errs, err_msg) elif not re.search("virtio", modules, re.IGNORECASE): err_msg = "Not find virtio module" log_err(errs, err_msg) # 6. Check virtio PCI devices if os_version != '3': logging.info("Check virtio PCI devices") pci = check_obj.get_vm_pci_list() if (re.search('Virtio network', pci, re.IGNORECASE) and re.search('Virtio block', pci, re.IGNORECASE)): if (target != "ovirt" and not re.search('Virtio memory', pci, re.IGNORECASE)): err_msg = "Not find Virtio memory balloon" log_err(errs, err_msg) else: err_msg = "Not find Virtio network and block devices" log_err(errs, err_msg) # 7. Check tty logging.info("Check tty") tty = check_obj.get_vm_tty() if re.search('[xh]vc0', tty, re.IGNORECASE): err_msg = "Unexpected [xh]vc0" log_err(errs, err_msg) # 8. Check video logging.info("Check video") video = check_obj.get_vm_video() if target == 'ovirt': if not re.search('qxl', video, re.IGNORECASE): err_msg = "Not find QXL driver after convert vm to oVirt" log_err(errs, err_msg) else: # dump VM XML cmd = "virsh dumpxml %s |grep -A 3 '<video>'" % vm_name status, output = commands.getstatusoutput(cmd) if status: raise error.TestError(vm_name, output) video_model = "" video_type = re.search("type='[a-z]*'", output, re.IGNORECASE) if video_type: video_model = eval(video_type.group(0).split('=')[1]) if re.search('el7', kernel_version): if 'cirrus' in output: if not re.search('kms', video, re.IGNORECASE): err_msg = "Not find 'kms' for 'cirrus' video" log_err(errs, err_msg) else: if not re.search(video_model, video, re.IGNORECASE): err_msg = "Not find '%s' video" % video_model log_err(errs, err_msg) else: if not re.search(video_model, video, re.IGNORECASE): err_msg = "Not find '%s' video" % video_model log_err(errs, err_msg) # 9. Check device map logging.info("Check device map") dev_map = "" if re.search('el7', kernel_version): dev_map = '/boot/grub2/device.map' else: dev_map = '/boot/grub/device.map' if not check_obj.get_grub_device(dev_map): err_msg = "Not find vdX disk in device map" log_err(errs, err_msg) if errs: raise error.TestFail("Check failed: %s" % errs) else: logging.info("All check passed") def check_windows_vm(check_obj): """ Check windows guest after v2v convert. """ match_image_timeout = 300 logging.info("Initialize windows in %s seconds", match_image_timeout) compare_screenshot_vms = ["win2003", "win2008", "win2008r2", "win7"] timeout_msg = "Not match expected images in %s" % match_image_timeout timeout_msg += " seconds, try to login VM directly" match_image_list = [] if check_obj.os_version in compare_screenshot_vms: image_name_list = params.get("images_for_match", '').split(',') for image_name in image_name_list: match_image = os.path.join(data_dir.get_data_dir(), image_name) if not os.path.exists(match_image): raise error.TestError("%s not exist" % match_image) match_image_list.append(match_image) img_match_ret = check_obj.wait_for_match( match_image_list, timeout=match_image_timeout) if img_match_ret < 0: logging.error(timeout_msg) else: if check_obj.os_version == "win2003": if img_match_ret == 0: check_obj.click_left_button() # VM may have no response in awhile time.sleep(20) check_obj.click_left_button() check_obj.click_tab_enter() elif img_match_ret == 1: check_obj.click_left_button() time.sleep(20) check_obj.click_left_button() check_obj.click_tab_enter() check_obj.click_left_button() check_obj.send_win32_key('VK_RETURN') else: pass elif check_obj.os_version in ["win7", "win2008r2"]: if img_match_ret in [0, 1]: check_obj.click_left_button() check_obj.click_left_button() check_obj.send_win32_key('VK_TAB') check_obj.click_tab_enter() elif check_obj.os_version == "win2008": if img_match_ret in [0, 1]: check_obj.click_tab_enter() check_obj.click_install_driver() check_obj.move_mouse((0, -50)) check_obj.click_left_button() check_obj.click_tab_enter() else: check_obj.click_install_driver() else: # No need sendkey/click button for Win8, Win8.1, Win2012, Win2012r2 # So give a long timeout(10 min)for these VMs check_obj.timeout = 600 logging.info("%s is booting up ...", check_obj.os_version) # Try to create nc/telnet session for windows guest check_obj.create_session() errs = [] # 1. Check viostor file logging.info("Check windows viostor info") output = check_obj.get_viostor_info() if not output: err_msg = "Windows viostor info check failed" log_err(errs, err_msg) # 2. Check Red Hat drivers logging.info("Check Red Hat drivers") win_dirves = check_obj.get_driver_info() virtio_drivers = [ "Red Hat VirtIO SCSI", "Red Hat VirtIO Ethernet Adapte" ] for driver in virtio_drivers: if driver in win_dirves: logging.info("Find driver: %s", driver) else: err_msg = "Not find driver: %s" % driver errs.append(err_msg) log_err(errs, err_msg) # TODO: This part should be update after bug fix # Now, virt-v2v has bugs about video driver, all guests will # vga video after convirt except windows2008r2. video_driver = "vga" if target == "ovirt": video_driver = "qxl" win_dirves = check_obj.get_driver_info(signed=False) if video_driver in win_dirves: logging.info("Find driver: %s", video_driver) else: err_msg = "Not find driver: %s" % video_driver logging.error(err_msg) #log_err(errs, err_msg) # 3. Renew network logging.info("Renew network for windows guest") if not check_obj.get_network_restart(): err_msg = "Renew network failed" log_err(errs, err_msg) if errs: raise error.TestFail("Check failed: %s" % errs) else: logging.info("All check passed") check_obj = utils_v2v.VMCheck(test, params, env) try: virsh_session_id = None if target == "ovirt": virsh_session = utils_sasl.VirshSessionSASL(params) virsh_session_id = virsh_session.get_id() check_obj.virsh_session_id = virsh_session_id if os_type == "linux": check_linux_vm(check_obj) else: check_windows_vm(check_obj) finally: if check_obj: if check_obj.session: check_obj.session.close() check_obj.cleanup()
def check_result(result, status_error): """ Check virt-v2v command result """ libvirt.check_exit_status(result, status_error) output = result.stdout_text + result.stderr_text if checkpoint == 'empty_cdrom': if status_error: log_fail('Virsh dumpxml failed for empty cdrom image') elif not status_error: vmchecker = VMChecker(test, params, env) params['vmchecker'] = vmchecker if output_mode == 'rhev': if not utils_v2v.import_vm_to_ovirt(params, address_cache, timeout=v2v_timeout): test.fail('Import VM failed') elif output_mode == 'libvirt': virsh.start(vm_name, debug=True) # Check guest following the checkpoint document after convertion logging.info('Checking common checkpoints for v2v') if skip_vm_check != 'yes': if checkpoint == 'ogac': # windows guests will reboot at any time after qemu-ga is # installed. The process cannot be controled. In order to # don't break vmchecker.run() process, It's better to put # check_windows_ogac before vmchecker.run(). Because in # check_windows_ogac, it waits until rebooting completes. vmchecker.checker.create_session() if os_type == 'windows': check_windows_ogac(vmchecker.checker) else: check_linux_ogac(vmchecker.checker) ret = vmchecker.run() if len(ret) == 0: logging.info("All common checkpoints passed") else: logging.info( 'Skip checking vm after conversion: %s' % skip_reason) # Check specific checkpoints if checkpoint == 'cdrom': virsh_session = utils_sasl.VirshSessionSASL(params) virsh_session_id = virsh_session.get_id() check_device_exist('cdrom', virsh_session_id) virsh_session.close() if checkpoint.startswith('vmtools'): check_vmtools(vmchecker.checker, checkpoint) if checkpoint == 'modprobe': check_modprobe(vmchecker.checker) if checkpoint == 'device_map': check_device_map(vmchecker.checker) if checkpoint == 'resume_swap': check_resume_swap(vmchecker.checker) if checkpoint == 'rhev_file': check_rhev_file_exist(vmchecker.checker) if checkpoint == 'file_architecture': check_file_architecture(vmchecker.checker) if checkpoint == 'ubuntu_tools': check_ubuntools(vmchecker.checker) if checkpoint == 'without_default_net': if virsh.net_state_dict()[net_name]['active']: log_fail("Bridge virbr0 already started during conversion") # Merge 2 error lists error_list.extend(vmchecker.errors) log_check = utils_v2v.check_log(params, output) if log_check: log_fail(log_check) if len(error_list): test.fail('%d checkpoints failed: %s' % (len(error_list), error_list))
def run(test, params, env): """ Check VM after conversion """ target = params.get('target') vm_name = params.get('main_vm') os_type = params.get('os_type', 'linux') target = params.get('target', 'libvirt') def log_err(errs, msg): logging.error(msg) errs.append(msg) def check_linux_vm(check_obj): """ Check linux guest after v2v convert. """ # Create ssh session for linux guest check_obj.create_session() errs = [] # 1. Check OS vender and version logging.info("Check guest os info") os_info = check_obj.get_vm_os_info() os_vendor = check_obj.get_vm_os_vendor() if os_vendor == 'Red Hat': os_version = os_info.split()[6] else: err_msg = "Only support RHEL for now" log_err(errs, err_msg) # 2. Check OS kernel logging.info("Check guest kernel") kernel_version = check_obj.get_vm_kernel() if re.search('xen', kernel_version, re.IGNORECASE): err_msg = "Still find xen kernel" log_err(errs, err_msg) # 3. Check disk partition logging.info("Check 'vdX' in disk partiton") parted_info = check_obj.get_vm_parted() if os_version != '3': if not re.findall('/dev/vd\S+', parted_info): err_msg = "Not find vdX" log_err(errs, err_msg) # 4. Check virtio_net in /etc/modprobe.conf # BTW, this file is removed on RHEL6 and later releases logging.info("Check virtio_net module in modprobe.conf") modprobe_conf = check_obj.get_vm_modprobe_conf() if not re.search('No such file', modprobe_conf, re.IGNORECASE): virtio_mod = re.findall(r'(?m)^alias.*virtio', modprobe_conf) net_blk_mod = re.findall(r'(?m)^alias\s+scsi|(?m)^alias\s+eth', modprobe_conf) if len(virtio_mod) != len(net_blk_mod): err_msg = "Unexpected content in modprobe.conf" log_err(errs, err_msg) # 5. Check kernel modules # BTW, RHEL3 not support virtio, so it may use 'e1000' and 'ide' logging.info("Check kernel modules") modules = check_obj.get_vm_modules() if os_version == '3': if not re.search("e1000|^ide", modules, re.IGNORECASE): err_msg = "Not find e1000|^ide module" log_err(errs, err_msg) elif not re.search("virtio", modules, re.IGNORECASE): err_msg = "Not find virtio module" log_err(errs, err_msg) # 6. Check virtio PCI devices if os_version != '3': logging.info("Check virtio PCI devices") pci = check_obj.get_vm_pci_list() if (re.search('Virtio network', pci, re.IGNORECASE) and re.search('Virtio block', pci, re.IGNORECASE)): if (target != "ovirt" and not re.search('Virtio memory', pci, re.IGNORECASE)): err_msg = "Not find Virtio memory balloon" log_err(errs, err_msg) else: err_msg = "Not find Virtio network and block devices" log_err(errs, err_msg) # 7. Check tty logging.info("Check tty") tty = check_obj.get_vm_tty() if re.search('[xh]vc0', tty, re.IGNORECASE): err_msg = "Unexpected [xh]vc0" log_err(errs, err_msg) # 8. Check video logging.info("Check video") video = check_obj.get_vm_video() if target == 'ovirt': if not re.search('qxl', video, re.IGNORECASE): err_msg = "Not find QXL driver after convert vm to oVirt" log_err(errs, err_msg) else: # dump VM XML cmd = "virsh dumpxml %s |grep -A 3 '<video>'" % vm_name status, output = commands.getstatusoutput(cmd) if status: raise error.TestError(vm_name, output) video_model = "" video_type = re.search("type='[a-z]*'", output, re.IGNORECASE) if video_type: video_model = eval(video_type.group(0).split('=')[1]) if re.search('el7', kernel_version): if 'cirrus' in output: if not re.search('kms', video, re.IGNORECASE): err_msg = "Not find 'kms' for 'cirrus' video" log_err(errs, err_msg) else: if not re.search(video_model, video, re.IGNORECASE): err_msg = "Not find '%s' video" % video_model log_err(errs, err_msg) else: if not re.search(video_model, video, re.IGNORECASE): err_msg = "Not find '%s' video" % video_model log_err(errs, err_msg) # 9. Check device map logging.info("Check device map") dev_map = "" if re.search('el7', kernel_version): dev_map = '/boot/grub2/device.map' else: dev_map = '/boot/grub/device.map' if not check_obj.get_grub_device(dev_map): err_msg = "Not find vdX disk in device map" log_err(errs, err_msg) if errs: raise error.TestFail("Check failed: %s" % errs) else: logging.info("All check passed") def check_windows_vm(check_obj): """ Check windows guest after v2v convert. """ # Initialize windows boot up check_obj.init_windows() # Create nc/telnet session for windows guest check_obj.create_session() errs = [] # 1. Check viostor file logging.info("Check windows viostor info") output = check_obj.get_viostor_info() if not output: err_msg = "Windows viostor info check failed" log_err(errs, err_msg) # 2. Check Red Hat drivers logging.info("Check Red Hat drivers") win_dirves = check_obj.get_driver_info() virtio_drivers = [ "Red Hat VirtIO SCSI", "Red Hat VirtIO Ethernet Adapte" ] for driver in virtio_drivers: if driver in win_dirves: logging.info("Find driver: %s", driver) else: err_msg = "Not find driver: %s" % driver errs.append(err_msg) log_err(errs, err_msg) # TODO: This part should be update after bug fix # Now, virt-v2v has bugs about video driver, all guests will # vga video after convirt except windows2008r2. video_driver = "vga" if target == "ovirt": video_driver = "qxl" win_dirves = check_obj.get_driver_info(signed=False) if video_driver in win_dirves: logging.info("Find driver: %s", video_driver) else: err_msg = "Not find driver: %s" % video_driver logging.error(err_msg) #log_err(errs, err_msg) # 3. Renew network logging.info("Renew network for windows guest") if not check_obj.get_network_restart(): err_msg = "Renew network failed" log_err(errs, err_msg) if errs: raise error.TestFail("Check failed: %s" % errs) else: logging.info("All check passed") check_obj = utils_v2v.VMCheck(test, params, env) virsh_session = None try: virsh_session_id = None if target == "ovirt": virsh_session = utils_sasl.VirshSessionSASL(params) virsh_session_id = virsh_session.get_id() check_obj.virsh_session_id = virsh_session_id if os_type == "linux": check_linux_vm(check_obj) else: check_windows_vm(check_obj) finally: if virsh_session: virsh_session.close() if check_obj: if check_obj.session: check_obj.session.close() check_obj.cleanup()
def vm_check(status_error): """ Checking the VM """ if status_error: return if output_mode == 'json' and not check_json_output(params): test.fail('check json output failed') if output_mode == 'local' and not check_local_output(params): test.fail('check local output failed') if output_mode in ['null', 'json', 'local']: return # vmchecker must be put before skip_vm_check in order to clean up # the VM. vmchecker = VMChecker(test, params, env) params['vmchecker'] = vmchecker if skip_vm_check == 'yes': logging.info('Skip checking vm after conversion: %s' % skip_reason) return if output_mode == 'rhev': if not utils_v2v.import_vm_to_ovirt( params, address_cache, timeout=v2v_timeout): test.fail('Import VM failed') elif output_mode == 'libvirt': virsh.start(vm_name, debug=True) # Check guest following the checkpoint document after convertion logging.info('Checking common checkpoints for v2v') if 'ogac' in checkpoint: # windows guests will reboot at any time after qemu-ga is # installed. The process cannot be controled. In order to # don't break vmchecker.run() process, It's better to put # check_windows_ogac before vmchecker.run(). Because in # check_windows_ogac, it waits until rebooting completes. vmchecker.checker.create_session() if os_type == 'windows': services = ['qemu-ga'] V2V_UNSUPPORT_RHEV_APT_VER = "[virt-v2v-1.43.3-4.el9,)" if not utils_v2v.multiple_versions_compare( V2V_UNSUPPORT_RHEV_APT_VER): services.append('rhev-apt') if 'rhv-guest-tools' in os.getenv('VIRTIO_WIN'): services.append('spice-ga') for ser in services: check_windows_service(vmchecker.checker, ser) else: check_linux_ogac(vmchecker.checker) if 'mac_ip' in checkpoint: check_static_ip_conf(vmchecker.checker) ret = vmchecker.run() if len(ret) == 0: logging.info("All common checkpoints passed") # Check specific checkpoints if 'ogac' in checkpoint and 'signature' in checkpoint: check_windows_signature(vmchecker.checker, r'c:\rhev-apt.exe') if 'cdrom' in checkpoint: virsh_session = utils_sasl.VirshSessionSASL(params) virsh_session_id = virsh_session.get_id() check_device_exist('cdrom', virsh_session_id) virsh_session.close() if 'vmtools' in checkpoint: check_vmtools(vmchecker.checker, checkpoint) if 'modprobe' in checkpoint: check_modprobe(vmchecker.checker) if 'device_map' in checkpoint: check_device_map(vmchecker.checker) if 'resume_swap' in checkpoint: check_resume_swap(vmchecker.checker) if 'rhev_file' in checkpoint: check_rhev_file_exist(vmchecker.checker) if 'file_architecture' in checkpoint: check_file_architecture(vmchecker.checker) if 'ubuntu_tools' in checkpoint: check_ubuntools(vmchecker.checker) if 'vmware_tools' in checkpoint: check_windows_vmware_tools(vmchecker.checker) if 'without_default_net' in checkpoint: if virsh.net_state_dict()[net_name]['active']: log_fail("Bridge virbr0 already started during conversion") if 'rhsrvany_checksum' in checkpoint: check_rhsrvany_checksums(vmchecker.checker) # Merge 2 error lists error_list.extend(vmchecker.errors) # Virtio drivers will not be installed without virtio-win setup if 'virtio_win_unset' in checkpoint: missing_list = params.get('missing').split(',') expect_errors = ['Not find driver: ' + x for x in missing_list] logging.debug('Expect errors: %s' % expect_errors) logging.debug('Actual errors: %s' % error_list) if set(error_list) == set(expect_errors): error_list[:] = [] else: logging.error('Virtio drivers not meet expectation')