Supported variables per backend
===============================

## COMMON backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| CASEDIR | string |  | Absolute or relative path to the test distribution. Specifying the variable is mandatory. Can also be a Git repository URL of a test distribution to check out with an optional refspec or Git commit hash into the current directory. It tries to follow the definition of https://docs.npmjs.com/cli/v7/configuring-npm/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`. Relative paths are considered relative to the working directory of `isotovideo`. |
| PRODUCTDIR | string |  | Absolute or relative path to the optional "product directory" which includes the test schedule entry point `main.pm` as well as a `needles` subdirectory with the needles to load. Defaults to `CASEDIR` with a fallback to `CASEDIR/products/DISTRI` as this is also a very common location. Relative paths are considered relative to `CASEDIR`. |
| NEEDLES_DIR | string |  | Absolute or relative path to the needles subdirectory. Defaults to `needles` within `PRODUCTDIR`. Can also be a Git repository URL, comparable to `CASEDIR`. Relative paths are considered relative to the working directory of `isotovideo`. |
| WHEELS_DIR | string |  | Absolute or relative path to the directory wheels are stored in if `CASEDIR` contains a `wheels.yaml`. Defaults to the working directory of `isotovideo`. Relative paths are considered relative to the working directory of `isotovideo`. |
| 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 |
| EXIT_AFTER_MODULE | string |  | name or fullname of test module after which the schedule will stop |
| SCHEDULE | string |  | comma, space or newline separated list of relative paths to test modules within CASEDIR to be scheduled instead of evaluating a schedule from the test distributions main.pm file, e.g. "boot,console/mod1". Test modules can be specified without the implicit file extension '.pm'. |
| _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 check out 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 check out 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. Examples: `ffmpeg -y -hide_banner -nostats -r 24 -f image2pipe -vcodec ppm -i - -pix_fmt yuv420p -c:v libvpx-vp9 -crf 35 -b:v 1500k -cpu-used 1`, `podman run --rm --workdir /pool -i -v .:/pool ghcr.io/tamara-schmitz/ffmpeg-docker-container-free -y -hide_banner -nostats -r 24 -f image2pipe -vcodec ppm -i - -pix_fmt yuv420p -c:v libsvtav1 -preset 10 -crf 35` |
| 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 |
| STALL_DETECT_FACTOR | float | 20 | Report test execution as stalled if console screen check interval takes longer than SCREENSHOTINTERVAL multiplied with this factor |
| NEEDLE_CHECK_FACTOR | float | 20 | Report warning if screen check interval takes longer than SCREENSHOTINTERVAL multiplied with this factor |
| SSH_COMMAND_TIMEOUT_S | integer | 300 | Timeout in seconds for any SSH based command in SSH based consoles, disabled for a value of 0. It can be overriden by particular run_ssh_cmd() calls. Check out the documentation of this function for details. |
| 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 |
| VNC_CONNECT_TIMEOUT_LOCAL | integer | 10 | Timeout for local VNC connections in seconds |
| VNC_CONNECT_TIMEOUT_REMOTE | integer | 60 | Timeout for remote VNC connections in seconds |
| _CHKSEL_RATE_WAIT_TIME | integer | 30 | The amount of time isotovideo is going to wait for the VNC console to become responsive |
| _CHKSEL_RATE_HITS | integer | 15000 | The amount 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 which also allows to continue test execution again. Note that this does not start a developer mode session. So you still need to confirm taking control over the test to access the developer mode controls. |
| 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. |
| PAUSE_ON_FAILURE | boolean | 0 | Pause test execution on a test failure (instead of invoking the post-fail hook and terminating). 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. |
| PRETTY_SERIAL_MARKER | boolean | 0 | Enable "pretty" serial markers. When enabled, os-autoinst attempts to automatically detect SUT shell capabilities (like bash PROMPT_COMMAND and fc history) to forward command exit codes to serial without typing them visibly over VNC. Falls back to regular serial markers if no advanced shell features are detected. |
| _WAIT_STILL_SCREEN_ON_HERE_DOC_INPUT | float | 0 | If this value is greater then 0, it is used by `wait_still_screen` before starting to write the script into the here document used in `testapi::script_output()` function (see: poo#60566). By default this depends on the backend. |
| AUTOINST_URL_HOSTNAME | string |  | hostname or IP address of host running the autoinst webserver endpoint, defaults to the local IP address within the qemu network for the qemu backend or the `WORKER_HOSTNAME` otherwise. |
| UPLOAD_METER | boolean | 0 | Display curl progress meter in `upload_logs()` and `upload_assets()` test API functions. |
| UPLOAD_MAX_MESSAGE_SIZE_GB | integer | 0 | Specifies the max. upload size in GiB for the test API functions `upload_logs()` and `upload_assets()` and the underlying command server API. Zero denotes infinity. |
| UPLOAD_INACTIVITY_TIMEOUT | integer | 300 | Specifies the inactivity timeout in seconds for the test API functions `upload_logs()` and `upload_assets()` and underlying the command server API. |
| NO_DEPRECATE_BACKEND_$backend | boolean | 0 | Only warn about deprecated backends instead of aborting |
| LLM_FAILURE_ANALYSIS | boolean | 0 | Enable LLM failure analysis |
| LLM_FAILURE_ANALYSIS_URL | string | http://localhost:8080/v1/chat/completions | OpenAI-compatible API endpoint |
| LLM_FAILURE_ANALYSIS_MODEL | string | gemma-4-26B-A4B-it | Model name sent in the API request |
| LLM_FAILURE_ANALYSIS_CMD | string |  | If set, run this CLI command instead of the HTTP API (prompt piped via stdin). For demo/one-off use. |
| XRES | integer | 1024 | Resolution of display on x axis. Sets the resolution of the video encoder, and in qemu, the initial console resolution when OFW is set (Power and SPARC), and the EDID resolution for devices that support EDID |
| YRES | integer | 768 | Resolution of display on y axis. Sets the resolution of the video encoder, and in qemu, the initial console resolution when OFW is set (Power and SPARC), and the EDID resolution for devices that support EDID |
| VIDEO_ENCODER_BLOCKING_PIPE | boolean | 0 | Whether the pipe for writing data to the video encoder should be blocking or not. Making it blocking might allow following the live view in realtime despite large screenshot file sizes but it is not a well tested configuration |
| DEFAULT_CLICK_SLEEP | float | 0.15 | Default single click time in seconds |
| DEFAULT_DCLICK_SLEEP | float | 0.10 | Default double/triple click time in seconds (both press time and interval between clicks) |
| GIT_CACHE_DIR | string |  | If set enables locally caching Git repositories in the specified directory when handling Git URLs in variables like `CASEDIR` and wheels |
| ENABLE_MODERN_PERL_FEATURES | boolean | 0 | Enables use of modern Perl features in test modules avoiding the need to use e.g. `use Mojo::Base 'basetest', -signatures;` in all test modules. This variable must be set before invoking `autotest::loadtest`. It only applies to the test modules themselves. It does *not* apply to e.g. `main.pm` and other Perl modules used via e.g. `use some::module`. |
| _HIDE_SECRETS_REGEX | string |  | If set, any test variables whose **NAME** (key) matches the specified regular expression, in addition to the default '^_SECRET_' and '_PASSWORD', are excluded from being saved into vars.json or further processing. For example, to hide all variables starting with 'SCC_REGCODE', use '^SCC_REGCODE'. |
| STORAGE_KEEP_FREE_RATIO | float | 0.2 | Ratio of total storage space to keep free (e.g. 0.2 for 20%). If the total requested HDD size exceeds the available space while keeping this ratio of total storage size free, the job is aborted early with "incomplete" status. Set to 0 to disable this check. Automatically disabled in CI environments (if `CI` or `GITHUB_ACTIONS` is set in the environment). |
| STORAGE_KEEP_FREE_GB | integer | 50 | Absolute free space threshold in GiB. If the total requested HDD size leaves less than this amount of free space, the job can only run if the relative check (`STORAGE_KEEP_FREE_RATIO`) is also satisfied. Set to 0 to disable the absolute threshold. Automatically disabled in CI environments (if `CI` or `GITHUB_ACTIONS` is set in the environment). |
| FAIL_ON_ALWAYS_ROLLBACK_NOT_SUPPORTED | boolean | 1 | Fail explicitly if a test module is scheduled with the `always_rollback` flag but snapshots are not supported by the backend. |
|  |

## ZVM backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| ZVM_HOST | string |  | Sets the remote hostname. |
| ZVM_GUEST | string |  | Sets the remote username. |
| ZVM_PASSWORD | string |  | Sets the remote password. |

## SSH backend

| 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

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| HARDWARE_CONSOLE_LOG | boolean | undef | Enable direct log capture of sol console, disabled by default |
| 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_OPTIONS | string | -I lanplus | Additional options 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 |
| IPMI_MC_RESET_MAX_TRIES | integer | 5 | Maximum number of overall retries for mc reset |
| IPMI_MC_RESET_SLEEP_TIME_S | integer | 10 | Time to sleep after sending mc reset command before trying to control IPMI |
| IPMI_MC_RESET_TIMEOUT | integer | 60 | Counts to try to reach IPMI interface after mc reset |
| IPMI_MC_RESET_PING_COUNT | integer | 1 | Ping counts that must be successful after mc reset |
| IPMI_MC_RESET_IPMI_TRIES | integer | 3 | Maximum number of IPMI command tries that are conducted after mc reset |
| IPMI_SOL_PERSISTENT_CONSOLE | boolean | 1 | Make SOL console persistent and don't reset it, enabled by default |
| IPMI_SOL_MAX_RECONNECTS | integer | 5 | Maximum number of SOL reconnects on connection failure |
| IPMI_$_ |  |  | Internal iterator variable |
| WORKER_HOSTNAME | string | undef | Worker hostname |

## QEMU backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| ARCH | x86_64\|i686\|aarch64\|... | depends on tested medium | Architecture of VM. |
| APPEND | string |  | Kernel options to pass when using the KERNEL variable, see https://qemu-project.gitlab.io/qemu/system/linuxboot.html |
| ATACONTROLLER | see qemu -device ?, e. g. for SATA: ich9-ahci |  | Controller for ATA devices, needed for connecting disks as SATA. |
| 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. Multi boot order is not supported. This variable can be overriden by `PXEBOOT`. See qemu -boot option and PXEBOOT variable. |
| CDMODEL | see qemu -device ? | undef | Storage device for virtualized CD |
| DELAYED_START | boolean |  | delay vm cpu start until resume_vm() is called |
| FIDO2 | boolean | 0 | Enable FIDO2 hardware token |
| HDDMODEL | see qemu -device ? | virtio-blk | Storage device for virtualized HDD. |
| HDDMODEL_$_ | 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 |
| HDDSECTORSIZE_$i | integer | undef | specifies the physical and logical block size and boot sector size of the HDD image |
| ISO | filename |  | Filename of ISO file to be attached to VM |
| INITRD | filename |  | Path to the initrd (initial ramdisk) image for direct kernel boot. Relative paths are assumed to be relative to `/usr/share/qemu/`. |
| ISO_$i | filename |  | Additional ISO to be attached to VM. Up to 9 |
| KEEPHDDS | boolean |  | Leave created HDD after test finishes. Useful for debugging tests |
| KERNEL | filename |  | Path to kernel image for direct kernel boot. When specified, QEMU will boot directly into this kernel without using a bootloader. Relative paths are assumed to be relative to `/usr/share/qemu/`. |
| LAPTOP | boolean or filename | 0 | If 1, loads HP EliteBook 820 G1 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, e.g when set to `hostfwd=tcp::2223-:22` would enable port forwarding. |
| NICVLAN | integer | undef | Comma-separated list of network (vlan) numbers to which the NIC should be connected, assigned by scheduler to jobs with NICTYPE != user |
| NICPCIADDR | integer | undef | Assign NIC device a specific address on the PCI bus |
| NUMDISKS | integer | 1 | Number of disks to be created and attached to VM, can be 0 to disable disks, if using RAIDLEVEL, will be set to 4 |
| 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 | (Deprecated, set QEMU_VIDEO_DEVICE=VGA) If set, and QEMU_VIDEO_DEVICE is not set, for arm systems use VGA as video adapter instead of virtio-gpu-pci |
| QEMU_DISABLE_SNAPSHOTS | boolean | undef | If set, disable snapshots in QEMU. This needs to be set when using vmdk disk images or 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'. If value is 1 or 'once' it sets `bootindex=N` for each network device. |
| QEMU | QEMU binary filename | undef | Filename of QEMU binary to use |
| QEMUCLUSTERS | integer | undef | Number of CPU clusters used by VM |
| QEMUCORES | integer | undef | Number of CPU cores used by VM |
| QEMUCPU | see qemu -cpu ? | undef | CPU to emulate |
| QEMUCPUS | integer | 1 | Number of CPUs to assign to VM |
| QEMUDIES | integer | undef | Number of CPU dies used by 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 |
| QEMUSOCKETS | integer | undef | Number of CPU sockets used by VM |
| QEMUTHREADS | integer | undef | 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. If a TPM device is available at QEMUTPM_PATH_PREFIX + X, where X is the value of QEMUTPM or the worker instance number if QEMUTPM is set to 'instance', it will be used. Otherwise it will be created at test startup. See QEMUTPM_VER in the latter case. |
| QEMUTPM_VER | '1.2' or '2.0' depending on which TPM chip should be emulated | '2.0' | If no TPM device has been setup otherwise, swtpm will be used internally to create one with a socket at /tmp/mytpmX |
| QEMUTPM_PATH_PREFIX | string | '/tmp/mytpm' | Path prefix to use or create TPM emulator device in |
| QEMUVGA | virtio,qxl,cirrus,std | See QEMU_VIDEO_DEVICE | (Deprecated, use QEMU_VIDEO_DEVICE instead) VGA device to use with VM (will be converted to a matching -device parameter) |
| 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 | 1 | Enable virtio random number generator |
| QEMU_VIRTIO_KEYBOARD | boolean | 0 | Enable virtio-keyboard. The virtio-keyboard is a paravirtualized device with no emulation, higher performance and for example allows the use of `kbdrate` in SUTs to disable (or tweak) key repetition to prevent mistyping errors. |
| 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 ? | had | 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. (For qemu < 9.1.0) |
| QEMU_COMPRESS_THREADS | integer | QEMUCPUS | Number of threads used for compressing memory dumps and snapshots. (For qemu < 9.1.0) |
| 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_MULTIFD_CHANNELS | integer | 2 | Number of channels used to migrate data in parallel (only when multifd is used, which means qemu >= 9.1.0). This is the same number that the number of sockets used for migration. Can be set from 1 to 255. |
| QEMU_APPEND | string |  | Append parameters on qemu command line. The first item will have '-' prepended to it. |
| QEMU_ENABLE_SMBD | boolean | 0 | Enable QEMU's built-in samba service for user network. Exported worker's pool will be accessible on `\\10.0.2.4\qemu` share. Requires `smbd` to be installed (usually part of the `samba` package). |
| 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. |
| QEMU_BALLOON_TIMEOUT | integer | 5 | Timeout for qemu balloon operations |
| RAIDLEVEL |  |  | Set the raid level, affects NUMDISKS. |
| 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_SECURE_BOOT | boolean | 1 | Whether the auto-selection of `UEFI_PFLASH_CODE` and `UEFI_PFLASH_VARS` should use firmware with SecureBoot enabled |
| 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 |
| UEFI_PFLASH_CERTS | string |  | Specify the semicolon-separated file names of certificates that should be enrolled into the UEFI firmware variables file using `virt-fw-vars`. |
| UEFI_PFLASH_SECURE_BOOT | boolean |  | Enable or disable secure boot in the UEFI firmware variables file using `virt-fw-vars`. |
| UEFI_PFLASH_RESOLUTION | string |  | Specify the resolution to configure via UEFI firmware variables file using `virt-fw-vars`, e.g. `800x600` for a width of 800 pixels and a height of 600 pixels. |
| PUBLISH_PFLASH_VARS | string |  | Specify the file name to publish the UEFI vars file as |
| UEFI_BIOS |  |  | Deprecated, use UEFI_PFLASH_CODE |
| USBBOOT | boolean | 0 | Mount ISO as USB disk and boot VM from it |
| USBSIZEGB | integer | size of ISO | Size of USB disk for USBBOOT |
| 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 |
| VNC_EXTRA_VARS | string |  | Additional variables passed to the qemu VNC parameter (`-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 hostname |
| QEMU_VIDEO_DEVICE | string | virtio-gpu-pci on ARM, VGA otherwise | Video device to use with VM (using -device, not -vga). Can have options appended e.g. "virtio-gpu-gl,edid=on", but it is better to set QEMU_VIDEO_DEVICE_OPTIONS. See qemu docs and https://www.kraxel.org/blog/2019/09/display-devices-in-qemu/ for valid choices |
| QEMU_VIDEO_DEVICE_OPTIONS | string | none | Additional options for QEMU_VIDEO_DEVICE (comma-separated). Will be appended after automatically-generated resolution setting options on devices that support EDID |
| SAVE_STORAGE_TIMEOUT | integer | 900 | Timeout for saving one storage volume in `save_storage` test API function. |

## SVIRT backend

| 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_USERNAME | string |  | Username on above host, defaults to root |
| VIRSH_PASSWORD | string |  | Password for user 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 authentication |
| VMWARE_DATASTORE | string | datastore1 | 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 |
| VMWARE_VNC_OVER_WS | boolean | 0 | Whether to use VNC over WebSockets (instead of raw VNC connection) |
| VMWARE_VNC_OVER_WS_INSECURE | boolean | 0 | Do not require a valid TLS certificate for VNC over WebSockets |
| VMWARE_VM_HWVERSION | integer |  | VM hardware version |
| GUESTINFO_COMBUSTION | string |  | Set the location of combustion's bash script file among the data folder |
| GUESTINFO_IGNITION | string |  | Set the location of ignition's config file formated in json, among the data folder |
| GUESTINFO_CLOUD_INIT | string |  | Set the location of user-data and meta-data files, separated by a comma in data folder |
| 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 |  | Name of Hyper-V's External Virtual Switch |
| NUMDISKS | integer | 1 | Number of disks to be created and attached to VM, can be 0 to disable disks, if using RAIDLEVEL, will be set to 4 |
| RAIDLEVEL | integer | undef | Sets the raid level, affects NUMDISKS. |
| SVIRT_KEEP_VM_RUNNING | boolean | undef | Keep VM running after execution, disabled by default |
| SVIRT_WORKER_CACHE | boolean | 0 | Use the openQA worker cache if possible to copy images to the svirt host - this means the path specified when invoking `add_disk` is **not** fully regarded, e.g. if the specified path points into the `fixed`-subdirectory but the openQA worker cached the same asset under the regular directory (which it prefers over the `fixed`-subdirectory) then the asset from the regular directory will be used |
| SVIRT_ASSET_DOWNLOAD_TIMEOUT_M | number | 15 | Timeout for asset downloads within svirt backend in minutes. |
| SVIRT_ASSET_DOWNLOAD_INACTIVITY_TIMEOUT_M | number | 2.5 | Inactvity timeout for asset downloads within svirt backend in minutes. |
| SVIRT_ASSET_DOWNLOAD_ATTEMPTS | integer | 3 | The number of attempts when syncing assets (without worker cache) runs into SVIRT_ASSET_DOWNLOAD_TIMEOUT_M. |
| WORKER_HOSTNAME | string | undef | Worker hostname |

## VAGRANT backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| VAGRANT_BOX | string | undef | The unique identifier/name of the vagrant box that should be used for the test. This is the same value as used when running `vagrant init $boxname`. When the box name is prefixed with a `/` then the backend expects the such a file in the directory `VAGRANT_ASSETDIR`. |
| VAGRANT_BOX_URL | string | undef | URL to the json file that contains the links to the published versions of the vagrant boxes. This is only required for boxes that are hosted in the Open Build Service and not for those hosted on Vagrant Cloud. |
| VAGRANT_PROVIDER | libvirt\|virtualbox | undef | The provider (= VM backend) that will be used by vagrant. |
| VAGRANT_UP_TIMEOUT | integer | 300 | The maximum time in seconds that `vagrant up` is allowed to take (note that this includes download times as well). |
| VAGRANT_ASSETDIR | string | undef | Directory on the worker in which it expects to find local vagrant boxes. This variable must be set when testing local boxes and can be left undefined otherwise. It is recommended to set this variable on the worker. |

## VIRT backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| QEMUCPUS | integer | undef | Number of CPUs |
| QEMURAM | integer | undef | Quantity of RAM |

## PVM backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| ARCH | string | undef | Architecture 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 |

## PVM_HMC backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| HARDWARE_CONSOLE_LOG | boolean | undef | Enable direct log capture of mkvterm console, disabled by default |
| HMC_MACHINE_NAME | string |  | Sets the public name of the host |
| HMC_HOSTNAME | string |  | Sets the remote host to connect tp |
| HMC_USERNAME | string |  | Username for the remote host, defaults to hscroot |
| HMC_PASSWORD | string |  | Password for the remote host |
| LPAR_ID | string | udef | LPAR id |

## GENERALHW backend

| 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_VNC_PASSWORD | string |  | Password for VNC server |
| GENERAL_HW_VNC_PORT | integer | 5900 | VNC Port number |
| GENERAL_HW_VNC_DEPTH | integer | 16 | Color depth for VNC server |
| GENERAL_HW_VNC_JPEG | integer | 0 | Advertise support for Tight JPEG encoding |
| GENERAL_HW_NO_SERIAL | boolean |  | Don't use serial |
| GENERAL_HW_VIDEO_STREAM_URL | string |  | Video stream URL (in ffmpeg's syntax) to receive, for example 'udp://@:5004' or '/dev/video0'. Using 'ustreamer:///dev/videoN' will use ustreamer from PiKVM instead of ffmpeg to read '/dev/videoN'. The URL can have '?fps=..' appended to specify desired FPS to capture with. The URL can also have 'format=' parameter to specify ustream format (default is UYVY, can be also set to BGR24, RGB24, RGB24swap). Ustreamer support requires pack("D") working, which rules out openSUSE 15.5's perl. |
| GENERAL_HW_VIDEO_CMD_PREFIX | string |  | Prefix to prepend to 'ffmpeg' and 'v4l2-ctl' commands, can be used to run them on a different host via SSH. Example: 'ssh root@pikvm'. Note: the value is tokenized on spaces, so avoid their use in command name or any of the parameters. |
| VIDEO_STREAM_PIPE_BUFFER_SIZE | integer | 1680*1050*3+20 | Buffer containing at least a single PPM frame for video capturing |
| GENERAL_HW_KEYBOARD_URL | string |  | URL to keyboard emulation device. eg. 'http://1.2.3.4/cmd' - see https://github.com/os-autoinst/os-autoinst-distri-opensuse/tree/master/data/generalhw_scripts/rpi_pico_w_keyboard[rpi_pico_w_keyboard] |
| GENERAL_HW_CMD_DIR | string |  | Directory with allowed CMD scripts. Note: This variable should be set in the workers.ini file, otherwise it will be ignored by openQA. |
| 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_IS_SHUTDOWN_CMD | string |  | Shell command to check if SUT is powered down (in CMD_DIR). Should return exit code 0 if it is, or 1 otherwise. |
| GENERAL_HW_IS_SHUTDOWN_ARGS | string |  | Arguments to pass GENERAL_HW_IS_SHUTDOWN_CMD shell script |
| GENERAL_HW_EJECT_CMD | string |  | Shell command to eject CD from SUT (in CMD_DIR). If 'id' is passed to eject_cd, it's converted to '--id=...' argument. If 'force' is passed to eject_cd, it's converted to '--force' argument. |
| GENERAL_HW_EJECT_ARGS | string |  | Arguments to pass GENERAL_HW_EJECT_CMD shell script |
| GENERAL_HW_FLASH_CMD | string |  | Shell command to flash a disk image on SUT (in CMD_DIR), optional |
| GENERAL_HW_FLASH_ARGS | string |  | Arguments to pass GENERAL_HW_FLASH_CMD shell script |
| GENERAL_HW_IMAGE_CMD | string |  | Shell command to extract disk image from SUT (in CMD_DIR), optional |
| GENERAL_HW_IMAGE_ARGS | string |  | Arguments to pass GENERAL_HW_IMAGE_CMD shell script. The script will get also extra arguments: disk number and file path to save it into. |
| GENERAL_HW_INPUT_CMD | string |  | Shell command to control keyboard/mouse of the SUT, should wait for keyboard events on its stdin (in syntax used in 'send_key'), or mouse events as 'mouse_move <x> <y>' or 'mouse_button <buttons-pressed-mask>'. The command should print an "ok" line for each input (or an error message in case of an error). This is used only if GENERAL_HW_VIDEO_STREAM_URL is set. |
| GENERAL_HW_INPUT_ARGS | string |  | Arguments to pass GENERAL_HW_INPUT_CMD shell script |
| GENERAL_HW_EDID | string |  | EDID to be set on relevant /dev/video device (see 'GENERAL_HW_VIDEO_STREAM_URL'), used directly as an argument for 'v4l2-ctl --set-edit'. Example values: 'type=hdmi', 'file=/some/path'. |
| HDDSIZEGB | integer | 10 | Creates HDD with specified size in GiB |
| HDD_$i | filename |  | Filename of HDD image to be used for machine. |
| HDDSIZEGB_$i | integer |  | Creates HDD with specified size in GiB for corresponding HDD |
| NUMDISKS | integer | 1 | Number of disks attached to machine |
| WORKER_HOSTNAME | string | undef | Worker hostname |

## AMT backend

| 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 |

## S390X backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| WORKER_HOSTNAME | string | undef | Worker hostname |

## SPVM backend

| Variable | Values allowed | Default value | Explanation |
| --- | --- | --- | --- |
| HARDWARE_CONSOLE_LOG | boolean | undef | Enable direct log capture of mkvterm console, disabled by default |
| WORKER_HOSTNAME | string | undef | Worker hostname |
| NOVALINK_HOSTNAME | string | undef | Novalink target host to connect to |
| NOVALINK_USERNAME | string | root | Username to authenticate on Novalink host |
| NOVALINK_PASSWORD | string | undef | Password to authenticate on Novalink host |
| NOVALINK_LPAR_ID | string | undef | LPAR ID on the Novalink target to control |
