dashboard: Show all servers, online or offline

Show in dashboard the list of all servers, regardless if they are online
or offline. If they are offline, uptime appears as 'offline'

Modify dashboard template to make it work with offline servers
master
Javier Hernandez 2024-01-29 10:38:52 +01:00 committed by OpenGnSys Support Team
parent 7c86ecf9a1
commit a45f664905
2 changed files with 39 additions and 13 deletions

View File

@ -30,14 +30,22 @@
<td>{{ server.images | length }}</td>
<td>
{% set disk = server.disk %}
{% if disk['total'] != 0 %}
{% set used = (((disk['total'] - disk['free']) / disk['total']) * 100)|int %}
{% else %}
{% set used = 0 %}
{% endif %}
<div class="progress progress-lg">
<div class="progress-bar bg-primary" style="width: {{used}}%"></div>
</div>
</td>
<td>
{% set memory = server.stats.memory %}
{% if memory['size'] != 0 %}
{% set used = (((memory['size'] - memory['free']) / memory['size']) * 100)|int %}
{% else %}
{% set used = 0 %}
{% endif %}
<div class="progress progress-lg">
<div class="progress-bar bg-primary" style="width: {{used}}%"></div>
</div>
@ -64,7 +72,7 @@
<hr />
<ul class="nav nav-tabs" id="serversTab" role="tablist">
{% for id, server in servers.items() %}
{% for id, server in servers.items() if server.online %}
<li class="nav-item" role="presentation">
<button class="nav-link {% if loop.first %}active{% endif %}" id="{{ id }}-tab" data-toggle="tab" data-target="#{{ id }}" type="button" role="tab" aria-controls="{{ id }}" aria-selected="true">
{{ server.name }}
@ -74,7 +82,7 @@
</ul>
<div class="tab-content" id="serversTabContent">
{% for id, server in servers.items() %}
{% for id, server in servers.items() if server.online %}
{% set stats = server.stats %}
{% set time_dict = server.time_dict %}
{% set images = server.images %}

View File

@ -391,17 +391,35 @@ def index():
dashboard_servers[server_id]['oglive_list'] = i['json']
all_stats = multi_request('get', '/stats')
for i in all_stats:
server_id = i['server'].id
stats = i['json']
dashboard_servers[server_id]['stats'] = stats
timestamp = datetime.datetime.fromtimestamp(stats.get('time').get('now'))
now = timestamp.strftime('%Y-%m-%d %H:%M:%S')
boot = display_time(stats.get('time').get('boot'))
start = display_time(stats.get('time').get('start'))
time_dict = {'now': now, 'boot': boot, 'start': start}
dashboard_servers[server_id]['time_dict'] = time_dict
for server in servers:
active = False
stat = None
for i in all_stats:
if i['server'].id == server.id:
active = True
stat = i
break
if active:
server_id = stat['server'].id
dashboard_servers[server_id]['online'] = True
stats = stat['json']
dashboard_servers[server_id]['stats'] = stats
timestamp = datetime.datetime.fromtimestamp(stats.get('time').get('now'))
now = timestamp.strftime('%Y-%m-%d %H:%M:%S')
boot = display_time(stats.get('time').get('boot'))
start = display_time(stats.get('time').get('start'))
time_dict = {'now': now, 'boot': boot, 'start': start}
dashboard_servers[server_id]['time_dict'] = time_dict
else:
dashboard_servers[server.id] = {}
dashboard_servers[server.id]['online'] = False
dashboard_servers[server.id]['name'] = server.name
dashboard_servers[server.id]['time_dict'] = {'now': None, 'boot': 'Offline', 'start': None}
dashboard_servers[server.id]['clients'] = []
dashboard_servers[server.id]['images'] = []
dashboard_servers[server.id]['disk'] = {'total': 0, 'free':0}
dashboard_servers[server.id]['stats'] = {'memory': {'free': 0, 'size':0}, 'swap': ''}
dashboard_servers[server.id]['oglive_list'] = []
clients_response = multi_request('get', '/clients')
for i in clients_response: