Skip to main content

PyVBoxManage

PyPi Python Versions Build Status Read the Docs License

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


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)

Source distribution for pyvboxmanage 0.4.2
File Size Uploaded
pyvboxmanage-0.4.2.tar.gz 11.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyvboxmanage 0.4.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page