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
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| pyvboxmanage-0.4.2.tar.gz | 11.5 kB | Without provenance | Details for pyvboxmanage-0.4.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyvboxmanage-0.4.2-py3-none-any.whl | Python 3 | none | any | Details for pyvboxmanage-0.4.2-py3-none-any.whl |
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
|
Security for pyvboxmanage 0.4.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.