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;;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 checkout 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
SCHEDULE;string;;comma or space 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 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. 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
SSH_COMMAND_TIMEOUT_S;integer;300;Timeout for any SSH based command in SSH based consoles, disabled for a value of 0. Time in seconds.
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.
_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
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

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

.ZVM backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
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
[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
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
[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. 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
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
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
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
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_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.
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.
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_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
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
[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_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
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
WORKER_HOSTNAME;string;undef;Worker hostname
|====================

.VAGRANT backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
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
[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;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
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
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
[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_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. 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_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
[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
|====================

.S390X backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
Variable;Values allowed;Default value;Explanation
WORKER_HOSTNAME;string;undef;Worker hostname
|====================

.SPVM backend
[grid="rows",format="csv"]
[options="header",cols="^m,^m,^m,v",separator=";"]
|====================
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
|====================
