1
0
mirror of https://github.com/gryf/boxpy.git synced 2025-12-18 21:10:17 +01:00

Added two new commands for starting and stopping VMs.

This commit is contained in:
2022-05-23 12:02:28 +02:00
parent 847279a990
commit 0fb0d64db6

37
box.py
View File

@@ -1427,6 +1427,35 @@ def connect(args):
f'@localhost:{conf.port}'], False).returncode
def _set_vmstate(name, state):
vbox = VBoxManage(name)
if not vbox.get_vm_info():
LOG.fatal(f'No machine has been found with a name `{name}`.')
return 20
if vbox.running and state == "start":
LOG.info(f'VM "{name}" is already running.')
return
if not vbox.running and state == "stop":
LOG.info(f'VM "{name}" is already stopped.')
return
if state == "start":
vbox.poweron()
else:
vbox.acpipowerbutton()
def vmstart(args):
_set_vmstate(args.name, 'start')
def vmstop(args):
_set_vmstate(args.name, 'stop')
def main():
parser = argparse.ArgumentParser(description="Automate deployment and "
"maintenance of VMs using cloud config,"
@@ -1521,6 +1550,14 @@ def main():
rebuild.add_argument('-v', '--version', help='distribution version')
rebuild.set_defaults(func=vmrebuild)
start = subparsers.add_parser('start', help='start VM')
start.add_argument('name', help='name or UUID of the VM')
start.set_defaults(func=vmstart)
stop = subparsers.add_parser('stop', help='stop VM')
stop.add_argument('name', help='name or UUID of the VM')
stop.set_defaults(func=vmstop)
completion = subparsers.add_parser('completion', help='generate shell '
'completion')
completion.add_argument('shell', choices=['bash'],