You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
3.2 KiB
Python

2 years ago
from getmac import get_mac_address as gma
import socket
import yaml
import os
2 years ago
import stat
2 years ago
import psutil
2 years ago
from string import Template
2 years ago
class MachineData():
def get_ip_address(self):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
return s.getsockname()[0]
def __init__(self):
self.mac_address = gma()
self.ip_address = str(self.get_ip_address())
self.hostname = socket.gethostname()
self.client_version = "v0.0.1alpha"
self.cpu_count = os.cpu_count()
self.ram_size = (psutil.virtual_memory().total / 1024) / 1024
try:
with open("config.yml", "r") as stream:
try:
config_file = yaml.safe_load(stream)
except Exception as e:
print(e)
except FileNotFoundError as e:
print(str(e))
exit(-1)
config = config_file
try:
server_url_override = os.environ.get("VALHALLA_SERVER_URL")
server_port_override = os.environ.get("VALHALLA_SERVER_PORT")
server_password_override = os.environ.get("VALHALLA_SERVER_PASSWORD")
server_access_username_override = os.environ.get(
"VALHALLA_SERVER_ACCESS_USERNAME")
client_logging_override = os.environ.get("VALHALLA_CLIENT_LOGLEVEL")
if server_port_override:
config["server_port"] = server_port_override
if server_url_override:
config["server_url"] = server_url_override
if server_password_override:
config["server_password"] = server_password_override
if server_access_username_override:
config["server_access_username"] = server_access_username_override
if client_logging_override:
config["client_loglevel"] = client_logging_override
self.server_url = config["server_url"]
self.server_port = config["server_port"]
self.server_password = config["server_password"]
self.server_access_username = config["server_access_username"]
self.client_loglevel = config["client_loglevel"]
except KeyError as ke:
print(str(ke))
pass
except TypeError as te:
print(str(te))
pass
except Exception as e:
print(str(e))
exit(-1)
2 years ago
def generate_runner_script(self, file_path: str):
substitution_mapper = {
2 years ago
"CPU_CORES_COUNT": int(self.cpu_count/2),
"MEMORY_ALLOCATION_SIZE": f"{int(self.ram_size/2)}M",
"IMAGE_PATH": f"{os.getcwd()}/{file_path}/image.qcow2"
2 years ago
}
try:
with open("vm_run_script.template", "r") as file:
src = file.read()
temp_src = Template(src)
result = temp_src.substitute(substitution_mapper)
result_file = open(f"{file_path}/run.sh", "w")
result_file.write(result)
result_file.flush()
result_file.close()
2 years ago
st = os.stat(file_path)
2 years ago
os.chmod(file_path, 0o0777)
2 years ago
2 years ago
except Exception as ex:
print(str(ex))