mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 08:48:13 +00:00
Additional work to allow registering of remote clients
This commit is contained in:
15
dashboard.py
15
dashboard.py
@@ -64,11 +64,13 @@ def create_node_tree(all_server_data) -> Tree:
|
|||||||
|
|
||||||
for server_host, server_data in all_server_data['servers'].items():
|
for server_host, server_data in all_server_data['servers'].items():
|
||||||
|
|
||||||
if server_host == local_hostname:
|
node_title_local = f"[cyan bold]{server_host}[/] [yellow](This Computer)[default]"
|
||||||
node_tree_text = f"[cyan bold]{server_host}[/] [yellow](This Computer)[default] - [green]Running"
|
node_title_remote = f"[cyan]{server_host} [magenta](Remote)[default]"
|
||||||
else:
|
node_tree_text = node_title_local if (server_host == local_hostname) else node_title_remote
|
||||||
node_tree_text = f"[cyan]{server_host} [magenta](Remote)[default] - [green]Running"
|
|
||||||
|
|
||||||
|
if server_data.get('is_online', False):
|
||||||
|
|
||||||
|
node_tree_text = node_tree_text + " - [green]Running"
|
||||||
node_tree = Tree(node_tree_text)
|
node_tree = Tree(node_tree_text)
|
||||||
|
|
||||||
stats_text = f"CPU: [yellow]{server_data['status']['cpu_percent']}% [default]| RAM: " \
|
stats_text = f"CPU: [yellow]{server_data['status']['cpu_percent']}% [default]| RAM: " \
|
||||||
@@ -99,6 +101,11 @@ def create_node_tree(all_server_data) -> Tree:
|
|||||||
|
|
||||||
node_tree.add(jobs_tree)
|
node_tree.add(jobs_tree)
|
||||||
main_tree.add(node_tree)
|
main_tree.add(node_tree)
|
||||||
|
else:
|
||||||
|
# if server is offline
|
||||||
|
node_tree_text = node_tree_text + " - [red]Offline"
|
||||||
|
node_tree = Tree(node_tree_text)
|
||||||
|
main_tree.add(node_tree)
|
||||||
return main_tree
|
return main_tree
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<h1>Upload a file</h1>
|
<h1>Upload a file</h1>
|
||||||
|
|
||||||
<form action="http://localhost:8080/uploader" method="POST"
|
<form action="/uploader" method="POST"
|
||||||
enctype="multipart/form-data">
|
enctype="multipart/form-data">
|
||||||
<div>
|
<div>
|
||||||
<input type="file" name="file"/><br>
|
<input type="file" name="file"/><br>
|
||||||
|
|||||||
@@ -284,12 +284,12 @@ class RenderServer:
|
|||||||
return success
|
return success
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = requests.get(f"https://{hostname}/status", timeout=1)
|
response = requests.get(f"http://{hostname}:8080/status", timeout=1)
|
||||||
if response.ok:
|
if response.ok:
|
||||||
cls.render_clients.append(hostname)
|
cls.render_clients.append(hostname)
|
||||||
logger.info(f"Client '{hostname}' successfully registered")
|
logger.info(f"Client '{hostname}' successfully registered")
|
||||||
success = True
|
success = True
|
||||||
except requests.exceptions.ConnectTimeout as e:
|
except requests.ConnectionError as e:
|
||||||
logger.error(f"Cannot connect to client at hostname: {hostname}")
|
logger.error(f"Cannot connect to client at hostname: {hostname}")
|
||||||
return success
|
return success
|
||||||
|
|
||||||
@@ -336,11 +336,11 @@ class RenderServer:
|
|||||||
|
|
||||||
if background_thread:
|
if background_thread:
|
||||||
server_thread = threading.Thread(
|
server_thread = threading.Thread(
|
||||||
target=lambda: app.run(host=cls.host_name, port=cls.port, debug=False, use_reloader=False))
|
target=lambda: app.run(host='0.0.0.0', port=cls.port, debug=False, use_reloader=False))
|
||||||
server_thread.start()
|
server_thread.start()
|
||||||
server_thread.join()
|
server_thread.join()
|
||||||
else:
|
else:
|
||||||
app.run(host=cls.host_name, port=cls.port, debug=config.get('flask_debug_enable', False),
|
app.run(host='0.0.0.0', port=cls.port, debug=config.get('flask_debug_enable', False),
|
||||||
use_reloader=False)
|
use_reloader=False)
|
||||||
|
|
||||||
|
|
||||||
@@ -378,11 +378,20 @@ def full_status():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
for client_hostname in RenderServer.render_clients:
|
for client_hostname in RenderServer.render_clients:
|
||||||
|
is_online = False
|
||||||
if client_hostname == local_hostname:
|
if client_hostname == local_hostname:
|
||||||
snapshot_results = snapshot()
|
snapshot_results = snapshot()
|
||||||
|
is_online = True
|
||||||
else:
|
else:
|
||||||
snapshot_results = requests.get(f'http://{client_hostname}:8080/snapshot', timeout=1).json()
|
snapshot_results = {}
|
||||||
server_data = {'status': snapshot_results.get('status'), 'jobs': snapshot_results.get('jobs')}
|
try:
|
||||||
|
snapshot_request = requests.get(f'http://{client_hostname}:8080/snapshot', timeout=1)
|
||||||
|
snapshot_results = snapshot_request.json()
|
||||||
|
is_online = snapshot_request.ok
|
||||||
|
except requests.ConnectionError as e:
|
||||||
|
pass
|
||||||
|
server_data = {'status': snapshot_results.get('status', {}), 'jobs': snapshot_results.get('jobs', {}),
|
||||||
|
'is_online': is_online}
|
||||||
full_results['servers'][client_hostname] = server_data
|
full_results['servers'][client_hostname] = server_data
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Exception fetching full status: {e}")
|
logger.error(f"Exception fetching full status: {e}")
|
||||||
@@ -505,4 +514,5 @@ def upload_file():
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
start_server()
|
RenderServer.start()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user