WIP:aryan/build #2

Draft
chopper wants to merge 7 commits from aryan/build into main

View file

@ -1,3 +1,44 @@
from subprocess import Popen, PIPE from subprocess import Popen, PIPE
import getpass
from pathlib import Path
import argparse
print("meow") def vm_start(nographic=False):
home = Path.home()
user = getpass.getuser()
Outdated
Review

Documentation suggests using getuser

Documentation suggests using [getuser](https://docs.python.org/3/library/getpass.html#getpass.getuser)
image_src = "var/lib/debian.qcow2"
vm_storage_location = f"/home/arvp/virtual_machines/{user}.qcow2"
image_dest = f"{home}/debian.qcow2"
initialize = [
"qemu-system-x86_64",
"-enable-kvm",
"-m", RAM, # ram allocation
Outdated
Review

Isn't this far too low? It should also be adjustable via argparse

Isn't this far too low? It should also be adjustable via argparse
"-nic", f'user,hostfwd=tcp::{PORT}-:22', #forward port 5555 in host to port 22 in vm
Outdated
Review

This port should be configurable, otherwise we can't run several vms at the same time. Best put it in argparse

This port should be configurable, otherwise we can't run several vms at the same time. Best put it in argparse
"-drive", "file=%s,media=disk,if=virtio" % image_dest,
]
if nographic:
Outdated
Review

What are these doing here?

What are these doing here?
initialize.append("-nographic")
initialize.append("-serial")
initialize.append("mon:stdio")
Review

Say I enable nographic. It seems like this display arg will conflict. Instead, it'd be better for these to be the else branch on the conditional below

Say I enable `nographic`. It seems like this display arg will conflict. Instead, it'd be better for these to be the else branch on the conditional below
else:
initialize.append("-vga")
initialize.append("virtio")
Outdated
Review

==True O.O

if nographic:

`==True` O.O `if nographic:`
initialize.append("-display")
initialize.append("sdl")
#copy the base image to a directory with everyones virtual machines. -n should not overwrite any existing vms.
#subprocess.run(["cp", "-n", image_src, vm_storage_location])
Popen(initialize)
if __name__ == "__main__":
Review

You'll want some sort of error handling here. What if the vm fails to start? Check the returncode and such on a .communicate()

You'll want some sort of error handling here. What if the vm fails to start? Check the returncode and such on a `.communicate()`
parser = argparse.ArgumentParser(
description="ARVP Onboarding Virtual Machine Launcher! Don't use --nographic if you are in a tmux session. it might explode :3")
parser.add_argument(
"-nographic",
action="store_true",
help="Run QEMU in nographic mode (runs the VM embedded in your terminal instead of opening a new window)",)
parser.add_argument("-port", help="Port to forward to the VM for ssh", default=5555)
parser.add_argument("-ram", help="Amount of RAM to allocate to the VM", default="4G")
Outdated
Review

Did you use black to format this? Looks a bit odd

Did you use `black` to format this? Looks a bit odd
args = parser.parse_args()
vm_start(nographic=args.nographic)