def test(self): #This is virtual cpu flags which are supported by #qemu but no with host cpu. cpu_model, extra_flags = parse_cpu_model() flags = HgFlags(cpu_model, extra_flags) logging.debug("Unsupported flags %s.", str(flags.host_all_unsupported_flags)) cpuf_model = cpu_model + ",enforce" # Add unsupported flags. for fadd in flags.host_all_unsupported_flags: cpuf_model += ",+" + str(fadd) vnc_port = virt_utils.find_free_port(5900, 6100) - 5900 cmd = "%s -cpu %s -vnc :%d" % (qemu_binary, cpuf_model, vnc_port) out = None try: try: out = utils.run(cmd, timeout=5, ignore_status=True).stderr except error.CmdError: logging.error("Host boot with unsupported flag") finally: uns_re = re.compile("^warning:.*flag '(.+)'", re.MULTILINE) warn_flags = set(map(virt_utils.Flag, uns_re.findall(out))) fwarn_flags = flags.host_all_unsupported_flags - warn_flags if fwarn_flags: raise error.TestFail("Qemu did not warn the use of " "flags %s" % str(fwarn_flags))
def test(self): #This is virtual cpu flags which are supported by #qemu but no with host cpu. cpu_model, extra_flags = parse_cpu_model() flags = HgFlags(cpu_model, extra_flags) logging.debug("Unsupported flags %s.", str(flags.host_all_unsupported_flags)) cpuf_model = cpu_model + ",enforce" # Add unsupported flags. for fadd in flags.host_all_unsupported_flags: cpuf_model += ",+" + fadd vnc_port = virt_utils.find_free_port(5900, 6100) - 5900 cmd = "%s -cpu %s -vnc :%d" % (qemu_binary, cpuf_model, vnc_port) out = None try: try: out = utils.run(cmd, timeout=5, ignore_status=True).stderr except error.CmdError: logging.error("Host boot with unsupported flag") finally: uns_re = re.compile("^warning:.*flag '(.+)'", re.MULTILINE) warn_flags = set(map(virt_utils.Flag, uns_re.findall(out))) fwarn_flags = flags.host_all_unsupported_flags - warn_flags if fwarn_flags: raise error.TestFail("Qemu did not warn the use of " "flags %s" % str(fwarn_flags))
def setup_unattended_http_server(self): ''' Setup a builtin http server for serving the kickstart file Does nothing if unattended file is not a kickstart file ''' if self.unattended_file.endswith('.ks'): # Red Hat kickstart install dest_fname = 'ks.cfg' answer_path = os.path.join(self.tmpdir, dest_fname) self.answer_kickstart(answer_path) if self.unattended_server_port is None: self.unattended_server_port = virt_utils.find_free_port( 8000, 8099, self.url_auto_content_ip) start_unattended_server_thread(self.unattended_server_port, self.tmpdir) # Point installation to this kickstart url ks_param = 'ks=http://%s:%s/%s' % ( self.url_auto_content_ip, self.unattended_server_port, dest_fname) self.kernel_params = getattr(self, 'kernel_params') if 'ks=' in self.kernel_params: kernel_params = re.sub('ks\=[\w\d\:\.\/]+', ks_param, self.kernel_params) else: kernel_params = '%s %s' % (self.kernel_params, ks_param) # reflect change on params self.kernel_params = kernel_params self.params['kernel_params'] = self.kernel_params
def setup_url_auto(self): """ Configures the builtin web server for serving content """ global _url_auto_content_server_thread global _url_auto_content_server_thread_event logging.debug("starting unattended content web server") if self.params.get('cdrom_cd1'): # setup and mount cdrom contents to be served by http server m_cmd = ('mount -t iso9660 -v -o loop,ro %s %s' % (self.cdrom_cd1, self.cdrom_cd1_mount)) utils.run(m_cmd) self.url_auto_content_port = virt_utils.find_free_port( 8100, 8199, self.url_auto_content_ip) if _url_auto_content_server_thread is None: _url_auto_content_server_thread_event = threading.Event() _url_auto_content_server_thread = threading.Thread( target=virt_http_server.http_server, args=(self.url_auto_content_port, self.cdrom_cd1_mount, terminate_auto_content_server_thread)) _url_auto_content_server_thread.start() auto_content_url = 'http://%s:%s' % (self.url_auto_content_ip, self.url_auto_content_port) self.params['auto_content_url'] = auto_content_url
def setup_url_auto(self): """ Configures the builtin web server for serving content """ global _url_auto_content_server_thread global _url_auto_content_server_thread_event logging.debug("starting unattended content web server") if self.params.get('cdrom_cd1'): # setup and mount cdrom contents to be served by http server m_cmd = ('mount -t iso9660 -v -o loop,ro %s %s' % (self.cdrom_cd1, self.cdrom_cd1_mount)) utils.run(m_cmd, verbose=DEBUG) self.url_auto_content_port = virt_utils.find_free_port( 8100, 8199, self.url_auto_content_ip) if _url_auto_content_server_thread is None: _url_auto_content_server_thread_event = threading.Event() _url_auto_content_server_thread = threading.Thread( target=virt_http_server.http_server, args=(self.url_auto_content_port, self.cdrom_cd1_mount, terminate_auto_content_server_thread)) _url_auto_content_server_thread.start() auto_content_url = 'http://%s:%s' % (self.url_auto_content_ip, self.url_auto_content_port) self.params['auto_content_url'] = auto_content_url
def nc_transfer(src, dst): nc_port = virt_utils.find_free_port(1025, 5334, vm_ip[dst]) listen_cmd = params.get("listen_cmd") send_cmd = params.get("send_cmd") #listen in dst listen_cmd = listen_cmd % (nc_port, "receive") session[dst].sendline(listen_cmd) time.sleep(2) #send file from src to dst send_cmd = send_cmd % (vlan_ip[dst], str(nc_port), "file") session[src].cmd(send_cmd, timeout=60) try: session[dst].read_up_to_prompt(timeout=60) except aexpect.ExpectError: raise error.TestFail("Fail to receive file" " from vm%s to vm%s" % (src + 1, dst + 1)) #check MD5 message digest of receive file in dst output = session[dst].cmd_output("md5sum receive").strip() digest_receive = re.findall(r'(\w+)', output)[0] if digest_receive == digest_origin[src]: logging.info("file succeed received in vm %s", vlan_ip[dst]) else: logging.info("digest_origin is %s", digest_origin[src]) logging.info("digest_receive is %s", digest_receive) raise error.TestFail("File transfered differ from origin") session[dst].cmd_output("rm -f receive")
def nc_transfer(src, dst): nc_port = virt_utils.find_free_port(1025, 5334, vm_ip[dst]) listen_cmd = params.get("listen_cmd") send_cmd = params.get("send_cmd") #listen in dst listen_cmd = listen_cmd % (nc_port, "receive") session[dst].sendline(listen_cmd) time.sleep(2) #send file from src to dst send_cmd = send_cmd % (vlan_ip[dst], str(nc_port), "file") session[src].cmd(send_cmd, timeout=60) try: session[dst].read_up_to_prompt(timeout=60) except aexpect.ExpectError: raise error.TestFail ("Fail to receive file" " from vm%s to vm%s" % (src+1, dst+1)) #check MD5 message digest of receive file in dst output = session[dst].cmd_output("md5sum receive").strip() digest_receive = re.findall(r'(\w+)', output)[0] if digest_receive == digest_origin[src]: logging.info("file succeed received in vm %s", vlan_ip[dst]) else: logging.info("digest_origin is %s", digest_origin[src]) logging.info("digest_receive is %s", digest_receive) raise error.TestFail("File transfered differ from origin") session[dst].cmd_output("rm -f receive")
def setup_unattended_http_server(self): ''' Setup a builtin http server for serving the kickstart file Does nothing if unattended file is not a kickstart file ''' global _unattended_server_thread, _unattended_server_thread_event if self.unattended_file.endswith('.ks'): # Red Hat kickstart install dest_fname = 'ks.cfg' answer_path = os.path.join(self.tmpdir, dest_fname) self.answer_kickstart(answer_path) if self.unattended_server_port is None: self.unattended_server_port = virt_utils.find_free_port( 8000, 8099, self.url_auto_content_ip) if _unattended_server_thread is None: _unattended_server_thread_event = threading.Event() _unattended_server_thread = threading.Thread( target=virt_http_server.http_server, args=(self.unattended_server_port, self.tmpdir, terminate_unattended_server_thread)) _unattended_server_thread.start() # Point installation to this kickstart url ks_param = 'ks=http://%s:%s/%s' % (self.url_auto_content_ip, self.unattended_server_port, dest_fname) self.extra_params = getattr(self, 'extra_params') if 'ks=' in self.extra_params: extra_params = re.sub('ks\=[\w\d\:\.\/]+', ks_param, self.extra_params) else: extra_params = '%s %s' % (self.extra_params, ks_param) # reflect change on params self.extra_params = extra_params self.params['extra_params'] = self.extra_params
def setup_unattended_http_server(self): ''' Setup a builtin http server for serving the kickstart file Does nothing if unattended file is not a kickstart file ''' if self.unattended_file.endswith('.ks'): # Red Hat kickstart install dest_fname = 'ks.cfg' answer_path = os.path.join(self.tmpdir, dest_fname) self.answer_kickstart(answer_path) if self.unattended_server_port is None: self.unattended_server_port = virt_utils.find_free_port( 8000, 8099, self.url_auto_content_ip) start_unattended_server_thread(self.unattended_server_port, self.tmpdir) # Point installation to this kickstart url ks_param = 'ks=http://%s:%s/%s' % (self.url_auto_content_ip, self.unattended_server_port, dest_fname) self.kernel_params = getattr(self, 'kernel_params') if 'ks=' in self.kernel_params: kernel_params = re.sub('ks\=[\w\d\:\.\/]+', ks_param, self.kernel_params) else: kernel_params = '%s %s' % (self.kernel_params, ks_param) # reflect change on params self.kernel_params = kernel_params self.params['kernel_params'] = self.kernel_params
def setup_cdrom(self): """ Mount cdrom and copy vmlinuz and initrd.img. """ error.context("Copying vmlinuz and initrd.img from install cdrom %s" % self.cdrom_cd1) m_cmd = ('mount -t iso9660 -v -o loop,ro %s %s' % (self.cdrom_cd1, self.cdrom_cd1_mount)) utils.run(m_cmd, verbose=DEBUG) try: if not os.path.isdir(self.image_path): os.makedirs(self.image_path) kernel_fetch_cmd = ("cp %s/%s/%s %s" % (self.cdrom_cd1_mount, self.boot_path, os.path.basename(self.kernel), self.kernel)) utils.run(kernel_fetch_cmd, verbose=DEBUG) initrd_fetch_cmd = ("cp %s/%s/%s %s" % (self.cdrom_cd1_mount, self.boot_path, os.path.basename(self.initrd), self.initrd)) utils.run(initrd_fetch_cmd, verbose=DEBUG) if self.unattended_file.endswith('.preseed'): self.preseed_initrd() finally: if self.params.get("vm_type") == "kvm": cleanup(self.cdrom_cd1_mount) if self.params.get("vm_type") == "libvirt": if self.vm.driver_type == self.vm.LIBVIRT_QEMU: # Virtinstall command needs files "vmlinuz" and "initrd.img" os.chdir(self.image_path) base_kernel = os.path.basename(self.kernel) base_initrd = os.path.basename(self.initrd) if base_kernel != 'vmlinuz': utils.run("mv %s vmlinuz" % base_kernel, verbose=DEBUG) if base_initrd != 'initrd.img': utils.run("mv %s initrd.img" % base_initrd, verbose=DEBUG) cleanup(self.cdrom_cd1_mount) elif ((self.vm.driver_type == self.vm.LIBVIRT_XEN) and (self.params.get('hvm_or_pv') == 'pv')): logging.debug("starting unattended content web server") self.url_auto_content_port = virt_utils.find_free_port( 8100, 8199, self.url_auto_content_ip) start_auto_content_server_thread(self.url_auto_content_port, self.cdrom_cd1_mount) self.medium = 'url' self.url = ( 'http://%s:%s' % (self.url_auto_content_ip, self.url_auto_content_port)) pxe_path = os.path.join(os.path.dirname(self.image_path), 'xen') if not os.path.isdir(pxe_path): os.makedirs(pxe_path) pxe_kernel = os.path.join(pxe_path, os.path.basename(self.kernel)) pxe_initrd = os.path.join(pxe_path, os.path.basename(self.initrd)) utils.run("cp %s %s" % (self.kernel, pxe_kernel)) utils.run("cp %s %s" % (self.initrd, pxe_initrd))
def setup_boot_disk(self): if self.unattended_file.endswith('.sif'): dest_fname = 'winnt.sif' setup_file = 'winnt.bat' boot_disk = FloppyDisk(self.floppy, self.qemu_img_binary, self.tmpdir) answer_path = boot_disk.get_answer_file_path(dest_fname) self.answer_windows_ini(answer_path) setup_file_path = os.path.join(self.unattended_dir, setup_file) boot_disk.copy_to(setup_file_path) if self.install_virtio == "yes": boot_disk.setup_virtio_win2003(self.virtio_floppy, self.virtio_oemsetup_id) boot_disk.copy_to(self.finish_program) elif self.unattended_file.endswith('.ks'): # Red Hat kickstart install dest_fname = 'ks.cfg' if ((self.params.get('vm_type') == 'libvirt') and (self.vm.driver_type == self.vm.LIBVIRT_XEN)): if self.params.get('hvm_or_pv') == 'hvm': ks_param = 'ks=cdrom:/isolinux/%s' % dest_fname kernel_params = getattr(self, 'kernel_params') if 'ks=' in kernel_params: kernel_params = re.sub('ks\=[\w\d\:\.\/]+', ks_param, kernel_params) else: kernel_params = '%s %s' % (kernel_params, ks_param) self.params['kernel_params'] = '' boot_disk = CdromInstallDisk(self.cdrom_unattended, self.tmpdir, self.cdrom_cd1_mount, kernel_params) # TODO: for pv guest create http server with ks file # TODO: for hvm guest create boot.iso with boot params with # ks and xen_emunl_unplug=never if self.params.get('hvm_or_pv') == 'pv': if self.unattended_server_port is None: self.unattended_server_port = virt_utils.find_free_port( 8000, 8099, self.url_auto_content_ip) path = os.path.join(os.path.dirname(self.cdrom_unattended), 'ks') boot_disk = RemoteInstall(path, self.url_auto_content_ip, self.unattended_server_port, dest_fname) ks_param = 'ks=%s' % boot_disk.get_url() kernel_params = getattr(self, 'kernel_params') if 'ks=' in kernel_params: kernel_params = re.sub('ks\=[\w\d\:\.\/]+', ks_param, kernel_params) else: kernel_params = '%s %s' % (kernel_params, ks_param) self.params['kernel_params'] = kernel_params elif self.cdrom_unattended: boot_disk = CdromDisk(self.cdrom_unattended, self.tmpdir) elif self.floppy: boot_disk = FloppyDisk(self.floppy, self.qemu_img_binary, self.tmpdir) else: raise ValueError("Neither cdrom_unattended nor floppy set " "on the config file, please verify") answer_path = boot_disk.get_answer_file_path(dest_fname) self.answer_kickstart(answer_path) elif self.unattended_file.endswith('.xml'): if "autoyast" in self.kernel_params: # SUSE autoyast install dest_fname = "autoinst.xml" if self.cdrom_unattended: boot_disk = CdromDisk(self.cdrom_unattended, self.tmpdir) elif self.floppy: boot_disk = FloppyDisk(self.floppy, self.qemu_img_binary, self.tmpdir) else: raise ValueError("Neither cdrom_unattended nor floppy set " "on the config file, please verify") answer_path = boot_disk.get_answer_file_path(dest_fname) self.answer_suse_xml(answer_path) else: # Windows unattended install dest_fname = "autounattend.xml" boot_disk = FloppyDisk(self.floppy, self.qemu_img_binary, self.tmpdir) answer_path = boot_disk.get_answer_file_path(dest_fname) self.answer_windows_xml(answer_path) if self.install_virtio == "yes": boot_disk.setup_virtio_win2008(self.virtio_floppy) boot_disk.copy_to(self.finish_program) else: raise ValueError('Unknown answer file type: %s' % self.unattended_file) boot_disk.close()
def setup_cdrom(self): """ Mount cdrom and copy vmlinuz and initrd.img. """ error.context("Copying vmlinuz and initrd.img from install cdrom %s" % self.cdrom_cd1) if not os.path.isdir(self.image_path): os.makedirs(self.image_path) if self.vm.driver_type == 'xen': i = iso9660.Iso9660Mount(self.cdrom_cd1) self.cdrom_cd1_mount = i.mnt_dir else: i = iso9660.iso9660(self.cdrom_cd1) if i is None: raise error.TestFail("Could not instantiate an iso9660 class") i.copy(os.path.join(self.boot_path, os.path.basename(self.kernel)), self.kernel) i.copy(os.path.join(self.boot_path, os.path.basename(self.initrd)), self.initrd) if self.vm.driver_type != 'xen': i.close() if self.unattended_file.endswith('.preseed'): self.preseed_initrd() if self.params.get("vm_type") == "libvirt": if self.vm.driver_type == 'qemu': # Virtinstall command needs files "vmlinuz" and "initrd.img" os.chdir(self.image_path) base_kernel = os.path.basename(self.kernel) base_initrd = os.path.basename(self.initrd) if base_kernel != 'vmlinuz': utils.run("mv %s vmlinuz" % base_kernel, verbose=DEBUG) if base_initrd != 'initrd.img': utils.run("mv %s initrd.img" % base_initrd, verbose=DEBUG) cleanup(self.cdrom_cd1_mount) elif ((self.vm.driver_type == 'xen') and (self.params.get('hvm_or_pv') == 'pv')): logging.debug("starting unattended content web server") self.url_auto_content_port = virt_utils.find_free_port(8100, 8199, self.url_auto_content_ip) start_auto_content_server_thread(self.url_auto_content_port, self.cdrom_cd1_mount) self.medium = 'url' self.url = ('http://%s:%s' % (self.url_auto_content_ip, self.url_auto_content_port)) pxe_path = os.path.join(os.path.dirname(self.image_path), 'xen') if not os.path.isdir(pxe_path): os.makedirs(pxe_path) pxe_kernel = os.path.join(pxe_path, os.path.basename(self.kernel)) pxe_initrd = os.path.join(pxe_path, os.path.basename(self.initrd)) utils.run("cp %s %s" % (self.kernel, pxe_kernel)) utils.run("cp %s %s" % (self.initrd, pxe_initrd))
def setup_boot_disk(self): if self.unattended_file.endswith('.sif'): dest_fname = 'winnt.sif' setup_file = 'winnt.bat' boot_disk = FloppyDisk(self.floppy, self.qemu_img_binary, self.tmpdir) answer_path = boot_disk.get_answer_file_path(dest_fname) self.answer_windows_ini(answer_path) setup_file_path = os.path.join(self.unattended_dir, setup_file) boot_disk.copy_to(setup_file_path) if self.install_virtio == "yes": boot_disk.setup_virtio_win2003(self.virtio_floppy, self.virtio_oemsetup_id) boot_disk.copy_to(self.finish_program) elif self.unattended_file.endswith('.ks'): # Red Hat kickstart install dest_fname = 'ks.cfg' if ((self.params.get('vm_type') == 'libvirt') and (self.vm.driver_type == 'xen')): if self.params.get('hvm_or_pv') == 'hvm': ks_param = 'ks=cdrom:/isolinux/%s' % dest_fname kernel_params = getattr(self, 'kernel_params') if 'ks=' in kernel_params: kernel_params = re.sub('ks\=[\w\d\:\.\/]+', ks_param, kernel_params) else: kernel_params = '%s %s' % (kernel_params, ks_param) self.params['kernel_params'] = '' boot_disk = CdromInstallDisk(self.cdrom_unattended, self.tmpdir, self.cdrom_cd1_mount, kernel_params) # TODO: for pv guest create http server with ks file # TODO: for hvm guest create boot.iso with boot params with # ks and xen_emunl_unplug=never if self.params.get('hvm_or_pv') == 'pv': if self.unattended_server_port is None: self.unattended_server_port = virt_utils.find_free_port( 8000, 8099, self.url_auto_content_ip) path = os.path.join(os.path.dirname(self.cdrom_unattended), 'ks') boot_disk = RemoteInstall(path, self.url_auto_content_ip, self.unattended_server_port, dest_fname) ks_param = 'ks=%s' % boot_disk.get_url() kernel_params = getattr(self, 'kernel_params') if 'ks=' in kernel_params: kernel_params = re.sub('ks\=[\w\d\:\.\/]+', ks_param, kernel_params) else: kernel_params = '%s %s' % (kernel_params, ks_param) self.params['kernel_params'] = kernel_params elif self.cdrom_unattended: boot_disk = CdromDisk(self.cdrom_unattended, self.tmpdir) elif self.floppy: boot_disk = FloppyDisk(self.floppy, self.qemu_img_binary, self.tmpdir) else: raise ValueError("Neither cdrom_unattended nor floppy set " "on the config file, please verify") answer_path = boot_disk.get_answer_file_path(dest_fname) self.answer_kickstart(answer_path) elif self.unattended_file.endswith('.xml'): if "autoyast" in self.kernel_params: # SUSE autoyast install dest_fname = "autoinst.xml" if self.cdrom_unattended: boot_disk = CdromDisk(self.cdrom_unattended, self.tmpdir) elif self.floppy: boot_disk = FloppyDisk(self.floppy, self.qemu_img_binary, self.tmpdir) else: raise ValueError("Neither cdrom_unattended nor floppy set " "on the config file, please verify") answer_path = boot_disk.get_answer_file_path(dest_fname) self.answer_suse_xml(answer_path) else: # Windows unattended install dest_fname = "autounattend.xml" boot_disk = FloppyDisk(self.floppy, self.qemu_img_binary, self.tmpdir) answer_path = boot_disk.get_answer_file_path(dest_fname) self.answer_windows_xml(answer_path) if self.install_virtio == "yes": boot_disk.setup_virtio_win2008(self.virtio_floppy) boot_disk.copy_to(self.finish_program) else: raise ValueError('Unknown answer file type: %s' % self.unattended_file) boot_disk.close()
def setup_cdrom(self): """ Mount cdrom and copy vmlinuz and initrd.img. """ error.context("Copying vmlinuz and initrd.img from install cdrom %s" % self.cdrom_cd1) m_cmd = ('mount -t iso9660 -v -o loop,ro %s %s' % (self.cdrom_cd1, self.cdrom_cd1_mount)) utils.run(m_cmd, verbose=DEBUG) try: if not os.path.isdir(self.image_path): os.makedirs(self.image_path) kernel_fetch_cmd = ("cp %s/%s/%s %s" % (self.cdrom_cd1_mount, self.boot_path, os.path.basename(self.kernel), self.kernel)) utils.run(kernel_fetch_cmd, verbose=DEBUG) initrd_fetch_cmd = ("cp %s/%s/%s %s" % (self.cdrom_cd1_mount, self.boot_path, os.path.basename(self.initrd), self.initrd)) utils.run(initrd_fetch_cmd, verbose=DEBUG) if self.unattended_file.endswith('.preseed'): self.preseed_initrd() finally: if self.params.get("vm_type") == "kvm": cleanup(self.cdrom_cd1_mount) if self.params.get("vm_type") == "libvirt": if self.vm.driver_type == self.vm.LIBVIRT_QEMU: # Virtinstall command needs files "vmlinuz" and "initrd.img" os.chdir(self.image_path) base_kernel = os.path.basename(self.kernel) base_initrd = os.path.basename(self.initrd) if base_kernel != 'vmlinuz': utils.run("mv %s vmlinuz" % base_kernel, verbose=DEBUG) if base_initrd != 'initrd.img': utils.run("mv %s initrd.img" % base_initrd, verbose=DEBUG) cleanup(self.cdrom_cd1_mount) elif ((self.vm.driver_type == self.vm.LIBVIRT_XEN) and (self.params.get('hvm_or_pv') == 'pv')): logging.debug("starting unattended content web server") self.url_auto_content_port = virt_utils.find_free_port(8100, 8199, self.url_auto_content_ip) start_auto_content_server_thread(self.url_auto_content_port, self.cdrom_cd1_mount) self.medium = 'url' self.url = ('http://%s:%s' % (self.url_auto_content_ip, self.url_auto_content_port)) pxe_path = os.path.join(os.path.dirname(self.image_path), 'xen') if not os.path.isdir(pxe_path): os.makedirs(pxe_path) pxe_kernel = os.path.join(pxe_path, os.path.basename(self.kernel)) pxe_initrd = os.path.join(pxe_path, os.path.basename(self.initrd)) utils.run("cp %s %s" % (self.kernel, pxe_kernel)) utils.run("cp %s %s" % (self.initrd, pxe_initrd))
def setup_cdrom(self): """ Mount cdrom and copy vmlinuz and initrd.img. """ error.context("Copying vmlinuz and initrd.img from install cdrom %s" % self.cdrom_cd1) if not os.path.isdir(self.image_path): os.makedirs(self.image_path) if self.vm.driver_type == 'xen': i = iso9660.Iso9660Mount(self.cdrom_cd1) self.cdrom_cd1_mount = i.mnt_dir else: i = iso9660.iso9660(self.cdrom_cd1) if i is None: raise error.TestFail("Could not instantiate an iso9660 class") i.copy(os.path.join(self.boot_path, os.path.basename(self.kernel)), self.kernel) i.copy(os.path.join(self.boot_path, os.path.basename(self.initrd)), self.initrd) if self.vm.driver_type != 'xen': i.close() if self.unattended_file.endswith('.preseed'): self.preseed_initrd() if self.params.get("vm_type") == "libvirt": if self.vm.driver_type == 'qemu': # Virtinstall command needs files "vmlinuz" and "initrd.img" os.chdir(self.image_path) base_kernel = os.path.basename(self.kernel) base_initrd = os.path.basename(self.initrd) if base_kernel != 'vmlinuz': utils.run("mv %s vmlinuz" % base_kernel, verbose=DEBUG) if base_initrd != 'initrd.img': utils.run("mv %s initrd.img" % base_initrd, verbose=DEBUG) cleanup(self.cdrom_cd1_mount) elif ((self.vm.driver_type == 'xen') and (self.params.get('hvm_or_pv') == 'pv')): logging.debug("starting unattended content web server") self.url_auto_content_port = virt_utils.find_free_port( 8100, 8199, self.url_auto_content_ip) start_auto_content_server_thread(self.url_auto_content_port, self.cdrom_cd1_mount) self.medium = 'url' self.url = ( 'http://%s:%s' % (self.url_auto_content_ip, self.url_auto_content_port)) pxe_path = os.path.join(os.path.dirname(self.image_path), 'xen') if not os.path.isdir(pxe_path): os.makedirs(pxe_path) pxe_kernel = os.path.join(pxe_path, os.path.basename(self.kernel)) pxe_initrd = os.path.join(pxe_path, os.path.basename(self.initrd)) utils.run("cp %s %s" % (self.kernel, pxe_kernel)) utils.run("cp %s %s" % (self.initrd, pxe_initrd))