Metadata-Version: 2.1
Name: pyvboxmanage
Version: 0.1.3
Summary: 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.
Home-page: https://pyvboxmanage.readthedocs.io
Author: Nicholas de Jong
Author-email: me@nicholasdejong.com
License: BSD2
Description: # PyVBoxManage
        [![PyPi](https://img.shields.io/pypi/v/pyvboxmanage.svg)](https://pypi.python.org/pypi/pyvboxmanage/)
        [![Python Versions](https://img.shields.io/pypi/pyversions/pyvboxmanage.svg)](https://github.com/ndejong/pyvboxmanage/)
        [![Build Status](https://api.travis-ci.org/ndejong/pyvboxmanage.svg?branch=master)](https://travis-ci.org/ndejong/pyvboxmanage/)
        [![Read the Docs](https://img.shields.io/readthedocs/pyvboxmanage)](https://pyvboxmanage.readthedocs.io)
        ![License](https://img.shields.io/github/license/ndejong/pyvboxmanage.svg)
        
        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)
        * Documentation https://pyvboxmanage.readthedocs.io
        
        ## Installation
        ```shell
        user@computer:~$ pip install pyvboxmanage
        ```
        
        ## Command Line Usage
        Run a pyvboxmanage example configuration with `--verbose` logging output
        ```shell
        user@computer:~$ pyvboxmanage -v examples/example01.yml 
        DEBUG - pyvboxmanage v0.1.0
        DEBUG - Loaded configuration_file examples/example01.yml
        DEBUG - VBoxManage binary available as vboxmanage
        DEBUG - Rendered command line: vboxmanage showvminfo Ubuntu-20.04-pipeline
        DEBUG - Command line exec timeout 120
        INFO - Successfully executed command line "vboxmanage showvminfo Ubuntu-20.04-pipeline"
        DEBUG - Trigger string "running" is not present
        DEBUG - Rendered command line: vboxmanage unregistervm Ubuntu-20.04-pipeline --delete
        DEBUG - Command line exec timeout 120
        INFO - Successfully executed command line "vboxmanage unregistervm Ubuntu-20.04-pipeline --delete"
        DEBUG - Rendered command line: vboxmanage clonevm Ubuntu-20.04-master --name "Ubuntu-20.04-pipeline" --basefolder "/opt/virtual-machines" --groups "/cicd" --register --mode "machine"
        DEBUG - Command line exec timeout 180
        INFO - Successfully executed command line "vboxmanage clonevm Ubuntu-20.04-master --name "Ubuntu-20.04-pipeline" --basefolder "/opt/virtual-machines" --groups "/cicd" --register --mode "machine""
        DEBUG - Rendered command line: vboxmanage modifyvm Ubuntu-20.04-pipeline --nic1 "bridged" --nic2 "bridged" --nic3 "bridged" --nic4 "bridged" --bridgeadapter1 "enp0s25" --bridgeadapter2 "enp0s25" --bridgeadapter3 "enp0s25" --bridgeadapter4 "enp0s25" --nictype1 "82543GC" --nictype2 "82543GC" --nictype3 "82543GC" --nictype4 "82543GC" --macaddress1 "08002722E901" --macaddress2 "08002722E902" --macaddress3 "08002722E903" --macaddress4 "08002722E904" --cableconnected1 "on" --cableconnected2 "on" --cableconnected3 "on" --cableconnected4 "on"
        DEBUG - Command line exec timeout 120
        INFO - Successfully executed command line "vboxmanage modifyvm Ubuntu-20.04-pipeline --nic1 "bridged" --nic2 "bridged" --nic3 "bridged" --nic4 "bridged" --bridgeadapter1 "enp0s25" --bridgeadapter2 "enp0s25" --bridgeadapter3 "enp0s25" --bridgeadapter4 "enp0s25" --nictype1 "82543GC" --nictype2 "82543GC" --nictype3 "82543GC" --nictype4 "82543GC" --macaddress1 "08002722E901" --macaddress2 "08002722E902" --macaddress3 "08002722E903" --macaddress4 "08002722E904" --cableconnected1 "on" --cableconnected2 "on" --cableconnected3 "on" --cableconnected4 "on""
        DEBUG - Rendered command line: vboxmanage startvm Ubuntu-20.04-pipeline --type "gui"
        DEBUG - Command line exec timeout 120
        INFO - Successfully executed command line "vboxmanage startvm Ubuntu-20.04-pipeline --type "gui""
        ```
        
        Plenty more configuration examples [available here](https://pyvboxmanage.readthedocs.io/en/latest/docs/configuration-examples/).
        
        ## Project
        * Github - [github.com/ndejong/pyvboxmanage](https://github.com/ndejong/pyvboxmanage)
        * PyPI - [pypi.python.org/pypi/pyvboxmanage](https://pypi.python.org/pypi/pyvboxmanage/)
        * TravisCI - [travis-ci.org/github/ndejong/pyvboxmanage](https://travis-ci.org/github/ndejong/pyvboxmanage)
        * ReadTheDocs - [pyvboxmanage.readthedocs.io](https://pyvboxmanage.readthedocs.io)
        
        ---
        Copyright &copy; 2020 Nicholas de Jong
        
Keywords: virtuabox,vbox,vboxmanage,devops
Platform: UNKNOWN
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: License :: OSI Approved :: BSD License
Requires-Python: >=3.5.0,<4.0.0
Description-Content-Type: text/markdown
