Files
Key-service-Server/Website/server_steering.py
T

191 lines
4.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
import requests
_var = "/home/max/Dokumente/repos/legendary-octo-garbanzo"
_cmd = "run-tenant-cmd.sh"
def clear_special(var_:str) -> str:
"""
Clears the variable of any special carakters
Input:
- var -> String
Output:
- str cleared of the speacial carakters
"""
# Refactor the name varible to match the subdomain requirements
try:
var_ = var_.lower()
special_caracters1 = '^°!"§$%&/()=?\ß{[]}´`*~#,;.:<>|@€µ'
special_caracters2 = 'äüö'
for char in special_caracters1:
var_ = var_.replace(char, "")
for i in special_caracters2:
match i:
case "ü":
var_ = var_.replace(i, "ue")
case "ä":
var_ = var_.replace(i, "ae")
case "ö":
var_ = var_.replace(i, "oe")
except:
return False
def execute_script(wd_: str, file_: str, com_: str, com2_: str="None"):
"""
executes a script with the option of to extra inputs
Input:
- wd_ = working directory of the Inventorysystem -> String
- file_ = working file that youre targeting -> String
- com_ = first option -> String
- com2_ = second option (Optional if needet)-> String
Output:
- ether False if failed -> bool
- or result.stdout output of the executed process -> str
"""
import subprocess
update_path = os.path.join(wd_, file_)
if not update_path:
return False
if com2_ != "None":
cmd = f'bash "{update_path}" {com_}'
else:
cmd = f'bash "{update_path}" {com_} {com2_}'
try:
result = subprocess.run(
["bash", "-lc", cmd],
capture_output=True,
text=True,
cwd=wd_,
)
except:
return False
return result.stdout
class instace:
"""
This will give access to anything like:
- Instances for Clients
- starting
- stopping
- restarting
- list all Clients
"""
def new(name: str) -> bool:
"""
Generates a new instance with the subdomain [name].invario.eu
Input:
- name -> String
Output:
- bool if the initiation works (True: generation worked; False: didnt work)
"""
if execute_script(_var, _cmd, "add", clear_special(name)):
return True
else:
return False
def remove(name: str) -> bool:
"""
Removes a instance with the subdomain [name].invario.eu
Input:
- name -> String
Output:
- bool if the removal works (True: removal worked; False: didnt work)
"""
if execute_script(_var, _cmd, "remove", clear_special(name)):
return True
else:
return False
def status(name: str) -> bool:
"""
Returns if a instance with the subdomain [name].invario.eu is up.
Input:
- name -> String
Output:
- bool if the page is online (True: Is working; False: Isnt online)
"""
name = clear_special(name)
request = str(requests.get(f"{name}.invario.eu/test_connection"))
if request == '{"message":"Connection successful","status":"success","status_code":200}':
return True
else:
return False
def restart(name: str) -> bool:
"""
Restart an instance with the subdomain [name].invario.eu
Input:
- name -> String
Output:
- bool if the restart works (True: restart worked; False: didnt work)
"""
if execute_script(_var, _cmd, "restart-tenant", clear_special(name)):
return True
else:
return False
def list() -> list:
"""
List off all tenants.
Output:
- list with all tenants ("tenant1", "tenant2")
"""
result = execute_script(_var, _cmd, "list")
result = result.splitlines()
result.pop(0)
counter = 0
for i in result:
i = i.replace("- ", "")
result[counter] = i
counter += 1
return result
class ussage:
def ram() -> int:
"""
Docker ram ussage
Output:
- ram ussage -> interger in GB
"""
#print("RAM usage (%):", ram.percent)
import psutil
ram = psutil.virtual_memory()
return int(round(ram.used / 1e9, 2))
def cpu() -> int:
"""
System cpu ussage
Output:
- cpu ussage -> integer in Percent
"""
import psutil
return int(psutil.cpu_percent(interval=1))
def storage() -> int:
"""
System storage ussage
Output:
- storager ussage -> integer in Percent
"""
pass