From 6fa36ec9957501e9e917a345fb93a8d95786199d Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Sun, 21 Dec 2025 18:06:22 +0100 Subject: Testsuite: T8111: make --iso and --disk optional arguments It is now possible to pass in an already existing qcow2 disk image to the Testsuite. This is necessary if we would like to boot wxisting flavor images like KVM or PROXMOX. --- scripts/check-qemu-install | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) (limited to 'scripts') diff --git a/scripts/check-qemu-install b/scripts/check-qemu-install index 7e55a5a7..07e59fc5 100755 --- a/scripts/check-qemu-install +++ b/scripts/check-qemu-install @@ -51,7 +51,8 @@ import tomli import pexpect EXCEPTION = 0 -now = datetime.now() +DISK_IMAGE_EXTENSION = '.raw' + tpm_folder = '/tmp/vyos_tpm_test' qemu_name = 'VyOS-QEMU' @@ -68,10 +69,8 @@ KEY_Y = chr(121) mok_password = '1234' parser = argparse.ArgumentParser(description='Install and start a test VyOS vm.') -parser.add_argument('iso', help='ISO file to install') -parser.add_argument('disk', help='name of disk image file', nargs='?', - default='testinstall-{}-{}.img'.format(now.strftime('%Y%m%d-%H%M%S'), - "%04x" % random.randint(0,65535))) +parser.add_argument('--iso', help='ISO file to install') +parser.add_argument('--disk', help='name of disk image file', nargs='?') parser.add_argument('--keep', help='Do not remove disk-image after installation', action='store_true', default=False) parser.add_argument('--silent', help='Do not show output on stdout unless an error has occured', @@ -142,10 +141,6 @@ class StreamToLogger(object): def flush(self): pass -OVMF_CODE = '/usr/share/OVMF/OVMF_CODE_4M.secboot.fd' -OVMF_VARS_TMP = args.disk.replace('.img', '.efivars') -if args.sbtest: - shutil.copy('/usr/share/OVMF/OVMF_VARS_4M.ms.fd', OVMF_VARS_TMP) def get_qemu_cmd(name, enable_uefi, disk_img, raid=None, iso_img=None, tpm=False, vnc_enabled=False, secure_boot=False): uefi = "" @@ -178,6 +173,10 @@ def get_qemu_cmd(name, enable_uefi, disk_img, raid=None, iso_img=None, tpm=False # RFC7042 section 2.1.2 MAC addresses used for documentation macbase = '00:00:5E:00:53' + + # Set QEmu disk image format - this differs if VyOS was installed via smoketest + # or we use an already ewxisting image + disk_format = 'qcow2' if args.disk.endswith('.qcow2') else 'raw' cmd = f'qemu-system-x86_64 \ -name "{name}" \ -smp {args.cpu},sockets=1,cores={args.cpu},threads=1 \ @@ -200,11 +199,11 @@ def get_qemu_cmd(name, enable_uefi, disk_img, raid=None, iso_img=None, tpm=False -netdev user,id=n6 -device virtio-net-pci,netdev=n6,mac={macbase}:06,romfile="" \ -netdev user,id=n7 -device virtio-net-pci,netdev=n7,mac={macbase}:07,romfile="" \ -device virtio-scsi-pci,id=scsi0 \ - -drive format=raw,file={disk_img},if=none,media=disk,id=drive-hd1,readonly=off \ + -drive format={disk_format},file={disk_img},if=none,media=disk,id=drive-hd1,readonly=off \ -device scsi-hd,bus=scsi0.0,drive=drive-hd1,id=hd1,bootindex=1' if raid: - cmd += f' -drive format=raw,file={raid},if=none,media=disk,id=drive-hd2,readonly=off' \ + cmd += f' -drive format={disk_format},file={raid},if=none,media=disk,id=drive-hd2,readonly=off' \ f' -device scsi-hd,bus=scsi0.0,drive=drive-hd2,id=hd2,bootindex=2' if tpm: @@ -276,14 +275,27 @@ if args.silent: else: output = sys.stdout.buffer -if not os.path.isfile(args.iso): - log.error('Unable to find iso image to install') - sys.exit(1) - if not os.path.exists('/dev/kvm'): log.error('KVM not enabled on host, proceeding with software emulation') sys.exit(1) +if not args.iso and not args.disk: + log.error('Neither ISO not QCOW2 disk image supplied - error!') + sys.exit(1) + +if not args.disk: + tmp_disk_time = datetime.now().strftime('%Y%m%d-%H%M%S') + tmp_disk_random = "%04x" % random.randint(0,65535) + args.disk = f'testinstall-{tmp_disk_time}-{tmp_disk_random}{DISK_IMAGE_EXTENSION}' + +if not args.iso or not os.path.isfile(args.iso): + log.debug('Unable to find ISO image to install ...') + +OVMF_CODE = '/usr/share/OVMF/OVMF_CODE_4M.secboot.fd' +OVMF_VARS_TMP = args.disk.replace(DISK_IMAGE_EXTENSION, '.efivars') +if args.sbtest: + shutil.copy('/usr/share/OVMF/OVMF_VARS_4M.ms.fd', OVMF_VARS_TMP) + # Creating diskimage!! diskname_raid = None def gen_disk(name): @@ -292,7 +304,7 @@ def gen_disk(name): c = subprocess.check_output(['qemu-img', 'create', name, '2G']) log.debug(c.decode()) else: - log.info(f'Diskimage "{name}" already exists, using the existing one.') + log.info(f'Re-using already existing disk image "{name}".') if args.raid: filename, ext = os.path.splitext(args.disk) -- cgit v1.2.3