#!/bin/python
## © University of Southampton IT Innovation Centre, 2017
##
## Copyright in this software belongs to University of Southampton
## IT Innovation Centre of Gamma House, Enterprise Road, 
## Chilworth Science Park, Southampton, SO16 7NS, UK.
##
## This software may not be used, sold, licensed, transferred, copied
## or reproduced in whole or in part in any manner or form or in or
## on any media by any person other than in accordance with the terms
## of the Licence Agreement supplied with the software, or otherwise
## without the prior written consent of the copyright owners.
##
## This software is distributed WITHOUT ANY WARRANTY, without even the
## implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
## PURPOSE, except where stated in the Licence Agreement supplied with
## the software.
##
##      Created By :            Michael Boniface
##      Created Date :          28-03-2018
##      Created for Project :   FLAME
import subprocess
import sys

proc = subprocess.Popen(['vboxmanage', 'list', 'vms'], stdout=subprocess.PIPE, shell=True)
out, err = proc.communicate()
if proc.returncode != 0:
    print("Could list virtualbox vms")
    sys.exit()

vms = out.strip().decode('ascii')
lines = vms.split("\n")
for vm in lines:
    vm_id = vm.split()[0].replace('"', '')
    print("Removing VM: {0}".format(vm_id))

    proc = subprocess.Popen(['vboxmanage', 'controlvm', vm_id, 'poweroff'], stdout=subprocess.PIPE, shell=True)
    out, err = proc.communicate()
    if proc.returncode != 0:
        print("Error power off VM: {0}, {1}, {2}".format(vm_id, out, err))
    
    proc = subprocess.Popen(['vboxmanage', 'unregistervm', vm_id, '--delete'], stdout=subprocess.PIPE, shell=True)
    out, err = proc.communicate()
    if proc.returncode != 0:
        print("Error unregister VM: {0}, {1}, {2}".format(vm_id, out, err))