mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-10 20:26:48 +00:00
The overview page decided whether the host is up with a TCP probe of the compute's hostname. For an ssh compute named by an ssh_config alias or reached through ProxyJump, that name and port cannot be reached from WebVirtCloud directly, so the probe failed while the connection worked: the page showed the host details and never started the CPU and memory graphs. The overview now uses Compute.status, the connection WebVirtCloud uses for everything else. The compute list shows why a host is not connected (Compute.connection_error) under "Not Connected", for example a host key verification failure. Checked against the ssh compute of the test setup through an ssh_config alias: the previous code renders the overview with the graphs off, the new one with them on. Both new tests fail on the previous code.
70 lines
3.2 KiB
HTML
70 lines
3.2 KiB
HTML
{% extends "base.html" %}
|
|
{% load i18n %}
|
|
{% load static %}
|
|
{% load common_tags %}
|
|
{% load bootstrap_icons %}
|
|
{% block title %}{% trans "Computes" %}{% endblock %}
|
|
{% block content %}
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
{% include 'create_comp_block.html' %}
|
|
{% include 'search_block.html' %}
|
|
<h3 class="page-header">{% trans "Computes" %}</h3>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
{% if not computes %}
|
|
<div class="col-lg-12">
|
|
<div class="alert alert-warning shadow-sm">
|
|
{% bs_icon 'exclamation-triangle'%} <strong>{% trans "Warning" %}:</strong> {% trans "You don't have any computes" %}
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
<div class="col-lg-12">
|
|
<table class="table table-striped table-hover sortable-theme-bootstrap" data-sortable>
|
|
<thead>
|
|
<tr>
|
|
<th span="col" class="col-sm-3">{% trans "Name" %}</th>
|
|
<th span="col" class="col-sm-2">{% trans "Status" %}</th>
|
|
<th span="col" class="col-sm-5">{% trans "Details" %}</th>
|
|
<th span="col" class="col-sm-2 text-center">{% trans "Actions" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="searchable">
|
|
{% for compute in computes %}
|
|
<tr>
|
|
<td class="col-sm-3">
|
|
{{ compute.name }}
|
|
</td>
|
|
<td class="col-sm-2">
|
|
{% if compute.status is True %}{% trans "Connected" %}{% else %}{% trans "Not Connected" %}
|
|
<br><small class="text-danger">{{ compute.connection_error }}</small>
|
|
{% endif %}
|
|
</td>
|
|
<td class="col-sm-5">
|
|
{{ compute.details|default:"" }}
|
|
</td>
|
|
<td class="col-sm-2">
|
|
<div class="float-end btn-group">
|
|
{% if compute.status is True %}
|
|
<a class="btn btn-success" title="{%trans "Overview" %}" href="{% url 'overview' compute.id %}">{% bs_icon 'eye-fill' %}</a>
|
|
{% else %}
|
|
<a class="btn btn-light" title="{%trans "Overview" %}">{% bs_icon 'eye' %}</a>
|
|
{% endif %}
|
|
<a class="btn btn-primary" title="{%trans "Edit" %}" href="{% url 'compute_update' compute.id %}">{% bs_icon 'pencil-fill' %}</a>
|
|
<a class="btn btn-danger" title="{%trans "Delete" %}" href="{% url 'compute_delete' compute.id %}">{% bs_icon 'x-circle-fill' %}</a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endblock content %}
|
|
|
|
{% block script %}
|
|
<script src="{% static 'js/sortable.min.js' %}"></script>
|
|
<script src="{% static 'js/filter-table.js' %}"></script>
|
|
{% endblock script %}
|