PyVBoxManage
PyVBoxManage is a wrapper tool around VBoxManage that facilitates the orchestration of VBoxManage commands from a simple YAML configuration file that matches the input opts/args for VBoxManage. This makes it possible to implement common sequences of VBoxManage commands such as spinning up a new dev/test instance with different hardware just by using a single command line with a configuration file.
Variables, output redirection, exit-triggers and returncode-exceptions are available to make flexible setups.
Features
- Template variables
- Output redirection to STDOUT, STDERR, filename
- Exit triggers on string match within STDOUT or STDERR content (useful to prevent cloning/clobbering instance that is already running )
- Permit exit returncodes other than 0 in cases where they may occur (eg configuring a
--deleteaction when the instance does not yet exist) - Dry mode to test configurations before running them
- Manage timeouts to prevent excessively long running VBoxManage commands (default 120 seconds, useful to prevent stalled VBoxManage tasks)
- Variable overrides through command line args are possible
- Documentation https://pyvboxmanage.readthedocs.io
Installation
user@computer:~$ pip install pyvboxmanage
Command Line Usage
Run a pyvboxmanage example configuration with --verbose logging output and override the variable
target_vmname with a new value using the --setting argument.
user@computer:~$ pyvboxmanage --verbose examples/example01.yml --setting target_vmname=MyNewName
DEBUG - pyvboxmanage v0.4.0
DEBUG - Loaded configuration file examples/example01.yml
DEBUG - Dry mode VBoxManage binary set to vboxmanage
DEBUG - Rendered command line: vboxmanage showvminfo MyNewName
DEBUG - Command line exec timeout 120
INFO - Successfully executed command line "vboxmanage showvminfo MyNewName"
DEBUG - Trigger string "running" is not present
DEBUG - Rendered command line: vboxmanage unregistervm MyNewName --delete
DEBUG - Command line exec timeout 120
INFO - Successfully executed command line "vboxmanage unregistervm MyNewName --delete"
DEBUG - Rendered command line: vboxmanage clonevm Ubuntu-20.04-master --basefolder "/opt/virtual-machines" --groups "/cicd" --mode "machine" --name "MyNewName" --register
DEBUG - Command line exec timeout 180
INFO - Successfully executed command line "vboxmanage clonevm Ubuntu-20.04-master --basefolder "/opt/virtual-machines" --groups "/cicd" --mode "machine" --name "MyNewName" --register"
DEBUG - Rendered command line: vboxmanage modifyvm MyNewName --bridgeadapter1 "enp0s25" --bridgeadapter2 "enp0s25" --bridgeadapter3 "enp0s25" --bridgeadapter4 "enp0s25" --cableconnected1 "on" --cableconnected2 "on" --cableconnected3 "on" --cableconnected4 "on" --macaddress1 "08002722E901" --macaddress2 "08002722E902" --macaddress3 "08002722E903" --macaddress4 "08002722E904" --nic1 "bridged" --nic2 "bridged" --nic3 "bridged" --nic4 "bridged" --nictype1 "82543GC" --nictype2 "82543GC" --nictype3 "82543GC" --nictype4 "82543GC"
DEBUG - Command line exec timeout 120
INFO - Successfully executed command line "vboxmanage modifyvm MyNewName --bridgeadapter1 "enp0s25" --bridgeadapter2 "enp0s25" --bridgeadapter3 "enp0s25" --bridgeadapter4 "enp0s25" --cableconnected1 "on" --cableconnected2 "on" --cableconnected3 "on" --cableconnected4 "on" --macaddress1 "08002722E901" --macaddress2 "08002722E902" --macaddress3 "08002722E903" --macaddress4 "08002722E904" --nic1 "bridged" --nic2 "bridged" --nic3 "bridged" --nic4 "bridged" --nictype1 "82543GC" --nictype2 "82543GC" --nictype3 "82543GC" --nictype4 "82543GC""
DEBUG - Rendered command line: vboxmanage startvm MyNewName --type "gui"
DEBUG - Command line exec timeout 120
INFO - Successfully executed command line "vboxmanage startvm MyNewName --type "gui""
Plenty more configuration examples available here.
Project
- Github - github.com/ndejong/pyvboxmanage
- PyPI - pypi.python.org/pypi/pyvboxmanage
- TravisCI - travis-ci.org/github/ndejong/pyvboxmanage
- ReadTheDocs - pyvboxmanage.readthedocs.io
Copyright © 2021 Nicholas de Jong
Release files for pyvboxmanage 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyvboxmanage-0.4.2.tar.gz | 11.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyvboxmanage-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.7 kB
Release files / pyvboxmanage-0.4.2.tar.gz
| Download URL | pyvboxmanage-0.4.2.tar.gz |
|---|---|
| Size | 11.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea6a0858c6661c184cae763798b888a0f5647467198db6008aa99d50a9f89cfa
|
|
BLAKE2b-256 checksum How to use checksums |
630e760d46e363ba6c3aa4e55a14e0f1f8b400bd2b52adbe43566bec9773e409
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.4.2 requests/2.25.1 setuptools/57.0.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5
|
Release files / pyvboxmanage-0.4.2-py3-none-any.whl
| Download URL | pyvboxmanage-0.4.2-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
38e7bbfc845b647d56f4e89a32fb09b989d953a0d14eae102eb4bc76d2458f17
|
|
BLAKE2b-256 checksum How to use checksums |
f3db5da81cf663a430b5e5b46ddc15a8ebfea0ee86c4b8d2373696af6c0fc7f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.4.2 requests/2.25.1 setuptools/57.0.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5
|