summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/check-qemu-install44
1 files changed, 28 insertions, 16 deletions
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)