Supported variables per backend
-------------------------------

.COMMON backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
CASEDIR;string;;Path to test distribution. Can be a git repository URL of a test distribution to checkout with an optional refspec or also git hash into the current directory. It tries to follow the definition of https://docs.npmjs.com/files/package.json#git-urls-as-dependencies (e.g. `https://github.com/os-autoinst/os-autoinst-distri-opensuse.git#feature/test` or `git@github.com:os-autoinst/os-autoinst-distri-opensuse.git`). Note that cloning via SSH is only possible if git is configured accordingly on the host where isotovideo is executed. Can be combined with `TEST_GIT_REFSPEC` and `NEEDLES_GIT_REFSPEC`.
PRODUCTDIR;string;;Path to optional "product directory" which includes the test schedule entry point "main.pm" as well as a "needles" subdirectory with the needles to load. Can be relative path.
NEEDLES_DIR;string;;Path to needles subdirectory to use, defaults to "needles" within `PRODUCTDIR`. Can be a git repository URL, comparable to `CASEDIR`
INCLUDE_MODULES;string;;comma separated names or fullnames of test modules to be included while excluding all that do not match, e.g. "boot,mod1"
EXCLUDE_MODULES;string;;comma separated names or fullnames of test modules to exclude. Can be combined with INCLUDE_MODULES and has precedence, e.g. to additionally exclude modules based on an include-list
SCHEDULE;string;;comma separated list of relative paths to test modules within CASEDIR without the implicit file extension '.pm' to be scheduled instead of evaluating a schedule from the test distributions main.pm file, e.g. "boot,console/mod1"
_EXIT_AFTER_SCHEDULE;boolean;0;Exit test execution immediately after evaluation of the test schedule, e.g. to check only which test modules would be executed
_SKIP_POST_FAIL_HOOKS;boolean;0;Skip the execution of post_fail_hook methods if set. This can be useful to save test execution time during test development when the post_fail_hook is not expected to provide any value as most likely the test developer already knows what needs to be done as a next step on a test fail.
TEST_GIT_REFSPEC;string;;git refspec to checkout within `CASEDIR` when `CASEDIR` is a git working copy. By default, does not change the content of `CASEDIR`. Overrides the optional git refspec in `CASEDIR`. Can be used to explicitly select a git commit within an existing git working copy and also to skip unnecessary git network transfers when `CASEDIR` is already providing the right git working copy.
NEEDLES_GIT_REFSPEC;string;;git refspec to checkout within `NEEDLES_DIR`. See `TEST_GIT_REFSPEC` for details.
EXTERNAL_VIDEO_ENCODER_CMD;string;;Specifies the command line for invoking a custom video encoder. It is supposed to accept a sequence of PPM images via stdin. The placeholder `%OUTPUT_FILE_NAME%` is replaced with the output file path. The output file path is appended if the placeholder is missing. Example: `ffmpeg -hide_banner -nostats -r 24 -f image2pipe -vcodec ppm -i - -pix_fmt yuv420p -c:v libvpx-vp9 -crf 35 -b:v 1500k -cpu-used 0`
EXTERNAL_VIDEO_ENCODER_OUTPUT_FILE_EXTENSION;string;webm;The extension of the output file when `EXTERNAL_VIDEO_ENCODER_CMD` is used.
EXTERNAL_VIDEO_ENCODER_ADDITIONALLY;boolean;0;Whether `EXTERNAL_VIDEO_ENCODER_CMD` should only be invoked additionally to the built-in Theora encoder. This means two videos will be created and uploaded which can be useful for comparison. (Configuring an external video encoder disables the built-in one by default.)
NOVIDEO;boolean;0;Whether the creation of the video should be disabled and also any `EXTERNAL_VIDEO_ENCODER_` variables be ignored.
NO_DEBUG_IO;boolean;0;Disable the I/O debug output in case of needle comparison times longer than expected
OSUTILS_WAIT_ATTEMPT_INTERVAL;float;1;The interval in seconds between "attempts" in osutils, e.g. used for connections to qemu qmp backend
SCREENSHOTINTERVAL;float;0.5;The interval in seconds at which screenshots are taken internally
SSH_CONNECT_RETRY;integer;5;Maximum retries to connect to SSH based console targets
SSH_CONNECT_RETRY_INTERVAL;float;10;Interval in seconds between retries to connect to SSH based console targets. Related to SSH_CONNECT_RETRY
VNC_STALL_THRESHOLD;integer;4;Time after which is VNC considered stalled
VNC_TYPING_LIMIT;integer;30;Maximum number of keys per second
_CHKSEL_RATE_WAIT_TIME;integer;30;The ammount of time isotovideo is going to wait for the VNC console to become responsive
_CHKSEL_RATE_HITS;integer;15000;The ammount of times, the select should return the same fileno during the _CHKSEL_RATE_WAIT_TIME seconds, to consider the VNC console unresponsive
TIMEOUT_SCALE;integer;1;This scale parameter can be used based on performance of workers to prevent false positive timeouts based on differing worker performance.
PAUSE_AT;string;;Test module (name or fullname) to pause test execution at. To be used together with the openQA developer mode to continue test execution. Be aware that the openQA web UI will only reflect this within the developer mode after confirming to control the test.
PAUSE_ON_SCREEN_MISMATCH;boolean;0;Pause test execution on the next screen mismatch. Same notes as for `PAUSE_AT` apply.
PAUSE_ON_NEXT_COMMAND;boolean;0;Pause test execution on the next test API command. Same notes as for `PAUSE_AT` apply.
_QUIET_SCRIPT_CALLS;boolean;0;Add quiet flag to all the calls to script_run, script_output and validate_script_output. It will omit all the squares "wait_serial expected" on the Details view of the test case. This option might be useful for serial terminal tests.
AUTOINST_URL_HOSTNAME;string;;hostname or IP adress of host running the autoinst webserver endpoint, defaults to the local IP adress within the qemu network for the qemu backend or the `WORKER_HOSTNAME` otherwise.

|====================

.SSH backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
_SSH_SERVER_ALIVE_COUNT_MAX;integer;480;Sets the number of server alive messages which may be sent without receiving any messages back from the server. If this threshold is reached while server alive messages are being sent, ssh will disconnect from the server, terminating the session.  The server alive mechanism is valuable when the client or server depend on knowing when a connection has become inactive.
_SSH_SERVER_ALIVE_INTERVAL;integer;60;Sets a timeout interval in seconds after which if no data has been received from the server, client will send a message through the encrypted channel to request a response from the server.
|====================

.IPMI backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
IPMI_HOSTNAME;string;undef;Hostname/IP for IPMI interface
IPMI_PASSWORD;string;undef;Password for the IPMI interface
IPMI_USER;string;undef;Username for the IPMI interface
IPMI_DO_NOT_POWER_OFF;boolean;undef;Don't power off the machine after test
IPMI_DO_NOT_RESTART_HOST;boolean;undef;Don't restart the machine before test
IPMI_BACKEND_MC_RESET;boolean;undef;Reset ipmi main board before test for sol console stability
IPMI_SKIP_SELFTEST;boolean;undef;Don't perform BMC selftest
IPMI_HW;string;supermicro;Hardware used for IPMI interface
|====================

.QEMU backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
ARCH;x86_64|i686|aarch64|...;depends on tested medium;Architecture of VM.
ATACONTROLLER;see qemu -device ?, e. g. for SATA: ich9-ahci;;Controller for ATA devices, needed for connecting disks as SATA.
BIOS;;;Set the filename for the BIOS
BOOT_HDD_IMAGE;boolean;;enables boot from HDD_1 (BOOTFROM has higher priority)
BOOT_MENU;boolean;undef;enables boot menu for selection of boot device
BOOT_MENU_TIMEOUT;integer;5000;boot menu timeout in ms. Needs BOOT_MENU
BOOTFROM;chars;undef;Influences order of boot devices. See qemu -boot option
CDMODEL;see qemu -device ?;undef;Storage device for virtualized CD
DELAYED_START;boolean;;delay vm cpu start until resume_vm() is called
HDDFORMAT;;;HDD format
HDDMODEL;see qemu -device ?;virtio-blk;Storage device for virtualized HDD.
HDDMODEL_$i;see qemu -device ?;virtio-blk;Storage device for virtualized HDD. Overrides global HDDMODEL for HDD_$i
HDDSIZEGB;integer;10;Creates HDD with specified size in GiB
HDD_$i;filename;;Filename of HDD image to be used for VM. Up to 9
HDDNUMQUEUES_$i;integer;-1;see qemu-system-x86_64 -device nvme,help - set the number of queues for HDD_$i
ISO;filename;;Filename of ISO file to be attached to VM
ISO_$i;filename;;Aditional ISO to be attached to VM. Up to 9
KEEPHDDS;boolean;;Leave created HDD after test finishes. Useful for debugging tests
LAPTOP;boolean or filename;0;If 1, loads Dell E6330 DMI. If filename, loads specified DMI
MAKETESTSNAPSHOTS;boolean;0;Save snapshot for each test module in qcow image
MULTIPATH;boolean;0;Add HDD drives as multipath devices. Override HDDMODEL to virtio-scsi-pci
NBF;boolean;0;open source network boot firmware e.g. to attach iscsi target on boot http://ipxe.org/
NICMAC;any MAC address;52:54:00:12:34:56;MAC address to be assigned to virtual network card
NICMODEL;see qemu -device ?;virtio-net;Network device virtual NIC.
NICTYPE;user|tap|vde;user;Instruct QEMU to either use user networking or to connect virtual NIC to existin system TAP device
NICTYPE_USER_OPTIONS;string;undef;Arbitrary options for NICTYPE
NICVLAN;integer;undef;network (vlan) number to which the NIC should be connected, assigned by scheduler to jobs with NICTYPE != user
NUMDISKS;integer;1;Number of disks to be created and attached to VM, can be 0 to disable disks
OFFLINE_SUT;boolean;0;Disable network for a VM
OFW;boolean;0;QEMU Open Firmware is in use
OVS_DEBUG;integer;undef;Set debug mode if value is 1
QEMU_ONLY_EXEC;boolean;undef;If set, only execute the qemu process but return early before connecting to the process. This can be helpful for cutting testing time or to connect to the qemu process manually.
QEMU_WAIT_FINISH;boolean;undef;Only used for internal testing, see comment in t/18-qemu-options.t for details.
QEMU_OVERRIDE_VIDEO_DEVICE_AARCH64;boolean;undef;If set, for aarch64 systems use VGA as video adapter
QEMU_DISABLE_SNAPSHOTS;boolean;undef;If set, disable snapshots in case the worker has slow disks to avoid save_vm calls failing due to timeouts (See https://bugzilla.suse.com/show_bug.cgi?id=1035453[bsc#1035453])
QEMU_QMP_CONNECT_ATTEMPTS;integer;20;The number of attempts to connect to qemu qmp. Usually used for internal testing
PATHCNT;integer;2;Number of paths in MULTIPATH scenario
PXEBOOT;boolean or 'once';0;Boot VM from network, on every boot or only once if set to 'once'
QEMU;QEMU binary filename;undef;Filename of QEMU binary to use
QEMUCPU;see qemu -cpu ?;undef;CPU to emulate
QEMUCPUS;integer;1;Number of CPUs to assign to VM
QEMUMACHINE;see qemu -machine ?;undef;Machine and chipset to emulate
QEMUPORT;integer;20002 + worker instance * 10;Port on which QEMU monitor should listen
QEMURAM;integer;1024;Size of RAM of VM in MiB
QEMUTHREADS;integer;0;Number of cpu threads used by VM
QEMUTPM;'instance' or appropriate value for local swtpm config;undef;Configure VM to use a TPM emulator device, with appropriate args for the arch. sysadmin is responsible for running swtpm with a socket at /tmp/mytpmX, where X is the value of QEMUTPM or the worker instance number if QEMUTPM is set to 'instance'
QEMUVGA;see qemu -device ?;cirrus;VGA device to use with VM
QEMU_COMPRESS_QCOW2;boolean;1;compress qcow2 images intended for upload
QEMU_IMG_CREATE_TRIES;integer;3;Define number of tries for qemu-img commands
QEMU_HUGE_PAGES_PATH;string;undef;Define a path to use huge pages (e.g. /dev/hugepages/)
QEMU_HOST_IP;string;10.0.2.2;The VM host IP used in usermode networking. Set `NICTYPE=user` and NICTYPE_USER_OPTIONS accordingly to match following https://wiki.qemu.org/Documentation/Networking#User_Networking_.28SLIRP.29
QEMU_MAX_MIGRATION_TIME;integer;240;Maximum time in seconds a migration to file may take for example for snapshot creation before being forcefully aborted.
QEMU_NO_FDC_SET;boolean;0;Don't disable the floppy drive.
QEMU_NO_KVM;boolean;0;Don't use KVM acceleration.
QEMU_NO_TABLET;boolean;0;Don't use USB tablet.
QEMU_VIRTIO_RNG;boolean;0;Enable virtio random number generator
QEMU_NUMA;boolean;0;Enable NUMA simulation, requires QEMUCPUS to be greater than one
QEMU_SMBIOS;see qemu -smbios ?;undef;pass this value to qemu -smbios
QEMU_SOUNDHW;see qemu -soundhw ?;hda;pass this value to qemu -soundhw (for qemu < 4.2)
QEMU_AUDIODEV;see qemu -device ?;intel-hda;Audio device to use with audiodev to qemu -device (for qemu >= 4.2)
QEMU_AUDIOBACKEND;see qemu -audio-help;none;Audio backend to use with audiodev (for qemu >= 4.2)
QEMU_COMPRESS_LEVEL;integer;6;Sets the compression level used for memory dumps and snapshots. Zero turns compression off and 9 is the maximum level. Generally there is little improvement in compression ratio by increasing the level, but the CPU time can be high on some platforms.
QEMU_COMPRESS_THREADS;integer;QEMUCPUS;Number of threads used for compressing memory dumps and snapshots.
QEMU_NON_FATAL_DBUS_CALL;boolean;0;Ignore failed dbus calls and ignore instead of fatal exits
QEMU_MAX_BANDWIDTH;integer;INT_MAX;Limits the transfer rate during a snapshot.
QEMU_DUMP_COMPRESS_METHOD;string;xz;The compression to use during a memory dump. Can be set to xz, bzip2 or internal (QEMU's internal compression, not compatible with crash or gdb). If xz is set, but not available, it will fallback to bzip2. Also see QEMU_COMPRESSION_LEVEL.
QEMU_APPEND;string;;Append parameters on qemu command line. The first item will have '-' prepended to it.
VIRTIO_CONSOLE;boolean;1;Enable/disable virtio console. (@see `-device virtconsole` qemu option)
VIRTIO_CONSOLE_NUM;integer;1;Number of virtio consoles.
QEMU_BALLOON_TARGET;integer;undef;The target guest RAM usage before a snapshot is taken. It is intended to speed up snapshots by forcing the guest to drop various caches. Setting this enables the virtio-balloon device which requires a kernel with a virtio-balloon driver. Setting this far below the RAM required by the guest will probably cause the guest to panic or deadlock. However it should be able to cope with it being set slightly below what is needed.
RAIDLEVEL;;;Set the raid level
SKIPTO;full name of test module;;Restore VM from snapshot and continue by running specified test module. Needs HDD image with snapshots present
TAPDEV;device name;undef;TAP device name to which virtual NIC should be connected. Usually undef so automatic matching is used
TAPDOWNSCRIPT;string;undef;Script used during the backend network shutdown
TAPSCRIPT;;;Script used during the backend network creation
TESTDEBUG;boolean;0;Enable test debugging: override 'milestone' and 'fatal' test flags to 1. Snapshot are created after each successful test module and each fail aborts test run
UEFI;boolean;0;Enable UEFI
UEFI_PFLASH_CODE;string;;Specify the file name of the UEFI firmware code which will be loaded onto a read-only PFLASH drive
UEFI_PFLASH_VARS;string;;Specify the file name which contains the UEFI firmware variables which will be loaded onto a mutable PFLASH drive
PUBLISH_PFLASH_VARS;string;;Specify the file name to publish the UEFI vars file as
UEFI_PFLASH;boolean;0;(Deprecated, use UEFI_PFLASH_VARS) Enable the pflash mode to write the UEFI variables directly into the firmware file instead of NVvars in the EFI system partition
UEFI_BIOS;;;Deprecated, use UEFI_PFLASH_CODE
USBBOOT;boolean;0;Mount ISO as USB disk and boot VM from it
VDE_PORT;integer;worker instance + 10;number of vde switch port to connect
VDE_SOCKETDIR;string;.;directory where vde_switch control socket is to be found
VDE_USE_SLIRP;integer;1;whether to start slirpvde
VNC;integer;worker instance + 90;Display on which VNC server is running. Actual port is 5900 + VNC
VNCKB;;;Set the keyboard layout if you are not using en-us
WORKER_CLASS;string;undef;qemu system types
WORKER_HOSTNAME;string;undef;Worker host name
|====================

.SVIRT backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
HDDSIZEGB;integer;15;Disk size in GB
QEMUCPUS;integer;1;Number of CPUs to assign to VM
QEMURAM;integer;1024;Size of RAM of VM in MiB
VIRSH_HOSTNAME;string;;SSH Host with virsh
VIRSH_PASSWORD;string;;Password for root account on above host
VIRSH_VMM_FAMILY;string;;Host's hypervisor ('kvm', 'xen')
VIRSH_VMM_TYPE;string;;Host's hypervisor type ('hvm' for full virtualization on 'kvm' and 'xen' families, 'linux' for paravirtualization on 'xen' family)
VIRSH_GUEST;string;;Where to look for VNC server (SUT or VM)
VIRSH_GUEST_PASSWORD;string;;VNC password of the guest
VIRSH_INSTANCE;integer;;VM's instance number on VIRSH_HOSTNAME
VMWARE_USERNAME;string;;Administrator's username ('@' is '%40')
VMWARE_PASSWORD;string;;Administrator's password
VMWARE_HOST;string;;VCS server for autentication
VMWARE_DATASTORE;string;;VMware datastore
VMWARE_NFS_DATASTORE;string;;VMware datastore with openQA NFS directories
VMWARE_SERIAL_PORT;string;;TCP port where is VM's serial port stream to be expected on the ESX server
VMWARE_BRIDGE;string;;VMware's bridge name (usual default is 'VM Network')
VMWARE_REMOTE_VMM;string;;Set the vmware Virtual Machine Manager
HYPERV_USERNAME;string;;Administrator account name
HYPERV_PASSWORD;string;;Password for above account
HYPERV_SERVER;string;;Windows Server (2008 R2, 2012 R2, or 2016) instance IP address
HYPERV_SERIAL_PORT;integer;;TCP port where is VM's serial port stream to be expected on the Hyper-V server
HYPERV_VIRTUAL_SWITCH;string;;ExternalVirtualSwitch;Name of Hyper-V's External Virtual Switch
NUMDISKS;integer;1;Number of disks
RAIDLEVEL;integer;undef;Sets the raid level
|====================

.VIRT backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
QEMUCPUS;integer;undef;Number of CPUs
QEMURAM;integer;undef;Quantity of RAM
|====================

.PVM backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
ARCH;string;undef;Arquitecture of the pvm backend
MEM;integer;2048;amount of RAM
LPAR;string;osauto;LPAR name to be created
LPARID;string;udef;LPAR id
NUMDISKS;integer;1;Number of disks
HDD_$hdd_num;string;udef;Name of the virtual disk to be attached
HDD_$i;string;udef;Additional disk to be attached
HDDSIZEGB;integer;15;Disk size in GB
NIC;string;sea;Type of NIC
NICVLAN;integer;1;VLAN to attach to
VSWITCH;string;VSWITCH0;A virtula switch to connect to
CPUS;integer;1;Number of CPUS for LPAR
ISO;string;undef;isos from nfs mount on VIO side to VMLibrary
VIOISO;string;undef;Virtual Optical Media ISO
VNC;integer;undef;VNC port
WORKER_ID;string;undef;osauto id

|====================

.GENERAL_HW backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
GENERAL_HW_VNC_IP;string;;Hostname of the gadget's network. If not set, SSH consoles will be used
GENERAL_HW_CMD_DIR;string;;Directory with allowed CMD scripts
GENERAL_HW_SOL_CMD;string;;Shell Script to output serial output (in CMD_DIR)
GENERAL_HW_SOL_ARGS;string;;Arguments to pass GENERAL_HW_SOL_CMD Shell script
GENERAL_HW_POWERON_CMD;string;;Shell Command to power on the SUT (in CMD_DIR)
GENERAL_HW_POWERON_ARGS;string;;Arguments to pass GENERAL_HW_POWERON_CMD Shell script
GENERAL_HW_POWEROFF_CMD;string;;Shell Command to power off the SUT (in CMD_DIR)
GENERAL_HW_POWEROFF_ARGS;string;;Arguments to pass GENERAL_HW_POWEROFF_CMD Shell script
GENERAL_HW_FLASH_CMD;string;;Shell Command to flash a disk image on SUT (in CMD_DIR), optionnal
GENERAL_HW_FLASH_ARGS;string;;Arguments to pass GENERAL_HW_FLASH_CMD Shell script
|====================

.AMT backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
AMT_HOSTNAME;string;;Hostname or IP of the target host
AMT_PASSWORD;string;;Password for admin AMT user on target host
