#!/usr/bin/env python
# vsphere-vm-destroy --- unregister and completely delete virtual machines

# Author: Noah Friedman <friedman@splode.com>
# Created: 2018-05-08
# Public domain

# $Id: vsphere-vm-destroy,v 1.6 2018/10/04 15:51:05 friedman Exp $

# Commentary:
# Code:

from   __future__ import print_function
import vspherelib     as vsl

import os
import sys

def power_off( vsi, vm ):
    if vm.runtime.powerState == 'poweredOn':
        print( 'Powering off {}... '.format( vm.name ), end='' )
        task = vm.PowerOff()
        succ = vsi.taskwait( task, printsucc=False )
        if not succ:
            return False
        print( 'success' )
    return True

def nuke( vsi, vm ):
    print( '{}: Unregistering vm and deleting data... '.format( vm.name ), end='' )
    task = vm.Destroy()
    succ = vsi.taskwait( task, printsucc=False )
    if not succ:
        return False
    print( 'success' )
    return True

def main():
    args = vsl.ArgumentParser( loadrc=True, rest='vm', required=True ).parse()
    vsi  = vsl.vmomiConnect( args )

    vmlist = vsi.find_vm( args.vm )
    for vm in vmlist:
        if vsl.yes_or_no_p( 'Really destroy {}?'.format( vm.name ), default=False ):
            power_off( vsi, vm ) and nuke( vsi, vm )
        else:
            print( "I could tell you weren't really serious." )

if __name__ == "__main__":
    main()

# vsphere-vm-destroy ends here
