def get_guest_os_info(test_name, guest_os): """ Gets the correct asset and variant information depending on host OS, test name and guest OS. """ os_info = get_default_guest_os_info() cartesian_parser = cartesian_config.Parser() cartesian_parser.parse_file(data_dir.get_backend_cfg_path(test_name, 'guest-os.cfg')) cartesian_parser.only_filter(guest_os) for params in cartesian_parser.get_dicts(): image_name = params.get('image_name', 'image').split('/')[-1] os_info = {'asset': image_name, 'variant': guest_os} return os_info
def get_guest_os_info(test_name, guest_os): """ Gets the correct asset and variant information depending on host OS, test name and guest OS. """ os_info = get_default_guest_os_info() cartesian_parser = cartesian_config.Parser() cartesian_parser.parse_file( data_dir.get_backend_cfg_path(test_name, 'guest-os.cfg')) cartesian_parser.only_filter(guest_os) for params in cartesian_parser.get_dicts(): image_name = params.get('image_name', 'image').split('/')[-1] os_info = {'asset': image_name, 'variant': guest_os} return os_info
def bootstrap_tests(options): """ Bootstrap process (download the appropriate JeOS file to data dir). This function will check whether the JeOS is in the right location of the data dir, if not, it will download it non interactively. :param options: OptParse object with program command line options. """ if options.type: test_dir = data_dir.get_backend_dir(options.type) elif options.config: parent_config_dir = os.path.dirname(os.path.dirname(options.config)) parent_config_dir = os.path.dirname(parent_config_dir) options.type = parent_config_dir test_dir = os.path.abspath(parent_config_dir) if options.type == 'qemu': check_modules = arch.get_kvm_module_list() else: check_modules = None online_docs_url = "https://github.com/autotest/virt-test/wiki" if not options.config: restore_image = not options.keep_image else: restore_image = False os_info = defaults.get_default_guest_os_info() kwargs = {'test_name': options.type, 'test_dir': test_dir, 'base_dir': data_dir.get_data_dir(), 'default_userspace_paths': None, 'check_modules': check_modules, 'online_docs_url': online_docs_url, 'download_image': not options.no_downloads, 'selinux': options.selinux_setup, 'restore_image': restore_image, 'interactive': False, 'update_providers': options.update_providers, 'guest_os': options.guest_os or os_info['variant']} # Tolerance we have without printing a message for the user to wait (3 s) tolerance = 3 failed = False wait_message_printed = False bg = utils.InterruptedThread(bootstrap.bootstrap, kwargs=kwargs) t_begin = time.time() bg.start() while bg.isAlive(): t_elapsed = time.time() - t_begin if t_elapsed > tolerance and not wait_message_printed: print_stdout("Running setup. Please wait...") wait_message_printed = True # if bootstrap takes too long, we temporarily make stdout verbose # again, so the user can see what's taking so long sys.stdout.restore() time.sleep(0.1) # in case stdout was restored above, redirect it again sys.stdout.redirect() reason = None try: bg.join() except Exception, e: failed = True reason = e
def bootstrap_tests(options): """ Bootstrap process (download the appropriate JeOS file to data dir). This function will check whether the JeOS is in the right location of the data dir, if not, it will download it non interactively. :param options: OptParse object with program command line options. """ if options.type: test_dir = data_dir.get_backend_dir(options.type) elif options.config: parent_config_dir = os.path.dirname(os.path.dirname(options.config)) parent_config_dir = os.path.dirname(parent_config_dir) options.type = parent_config_dir test_dir = os.path.abspath(parent_config_dir) if options.type == 'qemu': check_modules = arch.get_kvm_module_list() else: check_modules = None online_docs_url = "https://github.com/autotest/virt-test/wiki" if not options.config: restore_image = not options.keep_image else: restore_image = False os_info = defaults.get_default_guest_os_info() kwargs = { 'test_name': options.type, 'test_dir': test_dir, 'base_dir': data_dir.get_data_dir(), 'default_userspace_paths': None, 'check_modules': check_modules, 'online_docs_url': online_docs_url, 'download_image': not options.no_downloads, 'selinux': options.selinux_setup, 'restore_image': restore_image, 'interactive': False, 'update_providers': options.update_providers, 'guest_os': options.guest_os or os_info['variant'] } # Tolerance we have without printing a message for the user to wait (3 s) tolerance = 3 failed = False wait_message_printed = False bg = utils.InterruptedThread(bootstrap.bootstrap, kwargs=kwargs) t_begin = time.time() bg.start() while bg.isAlive(): t_elapsed = time.time() - t_begin if t_elapsed > tolerance and not wait_message_printed: print_stdout("Running setup. Please wait...") wait_message_printed = True # if bootstrap takes too long, we temporarily make stdout verbose # again, so the user can see what's taking so long sys.stdout.restore() time.sleep(0.1) # in case stdout was restored above, redirect it again sys.stdout.redirect() reason = None try: bg.join() except Exception, e: failed = True reason = e