mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 19:26:48 +00:00
Twenty-five prompts asked only "Are you sure?", and on the storage page one handler asked the same before every button, Start and Enable included. Each destructive button now names its object and says what happens: a stopped network cuts running VMs off, a deleted pool keeps its files, a deleted volume loses its data, a reverted snapshot loses the changes made since. Saves no longer ask, and disabled buttons lose prompts they could not show. The VM QoS messages said to restart the network where the VM has to be powered off and on. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
107 lines
No EOL
5.4 KiB
HTML
107 lines
No EOL
5.4 KiB
HTML
{% extends "base.html" %}
|
|
{% load i18n %}
|
|
{% load bootstrap_icons %}
|
|
|
|
{% block title %}{% trans "Interface" %} - {{ iface }}{% endblock %}
|
|
|
|
{% block page_heading %}{% trans "Interface" %}: {{ iface }}{% endblock page_heading %}
|
|
|
|
{% block content %}
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<ol class="breadcrumb shadow-sm">
|
|
<li class="breadcrumb-item">
|
|
<a href="{% url 'overview' compute.id %}">{% bs_icon 'laptop' %} {% trans "Overview" %}</a>
|
|
</li>
|
|
<li class="breadcrumb-item">
|
|
<a href="{% url 'instances' compute.id %}">{% bs_icon 'server' %} {% trans "Instances" %}</a>
|
|
</li>
|
|
<li class="breadcrumb-item">
|
|
<a href="{% url 'storages' compute.id %}">{% bs_icon 'device-hdd' %} {% trans "Storages" %}</a>
|
|
</li>
|
|
<li class="breadcrumb-item">
|
|
<a href="{% url 'networks' compute.id %}">{% bs_icon 'hdd-network' %} {% trans "Networks" %}</a>
|
|
</li>
|
|
<li class="breadcrumb-item">
|
|
<a href="{% url 'interfaces' compute.id %}">{% bs_icon 'wifi' %} {% trans "Interfaces" %}</a>
|
|
</li>
|
|
<li class="breadcrumb-item">
|
|
<a href="{% url 'nwfilters' compute.id %}">{% bs_icon 'filter' %} {% trans "NWFilters" %}</a>
|
|
</li>
|
|
<li class="breadcrumb-item">
|
|
<a href="{% url 'virtsecrets' compute.id %}">{% bs_icon 'key' %} {% trans "Secrets" %}</a>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
{% if changeable is False %}{% include 'interfaces_unchangeable.html' %}{% endif %}
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<dl class="ms-3 row">
|
|
<dt class="col-4">{% trans "Interface" %}</dt>
|
|
<dd class="col-8"><strong>{{ iface }}</strong></dd>
|
|
<dt class="col-4">{% trans "IPv4" %} ({% if ipv4 == None %}{% trans 'None' %}{% else %}{{ ipv4_type }}{% endif %})</dt>
|
|
<dd class="col-8">{{ ipv4 }}</dd>
|
|
<dt class="col-4">{% trans "IPv6" %} ({% if ipv6 == None %}{% trans 'None' %}{% else %}{{ ipv6_type }}{% endif %})</dt>
|
|
<dd class="col-8">{{ ipv6 }}</dd>
|
|
<dt class="col-4">{% trans "MAC" %}</dt>
|
|
<dd class="col-8">{{ mac }}</dd>
|
|
<dt class="col-4">{% trans "Interface Type" %}</dt>
|
|
<dd class="col-8">{{ itype }}</dd>
|
|
{% if itype == 'bridge' %}
|
|
<dt class="col-4">{% trans "Bridge Device" %}</dt>
|
|
<dd class="col-8">{{ bridge }}</dd>
|
|
{% endif %}
|
|
<dt class="col-4">{% trans "Boot Mode" %}</dt>
|
|
<dd class="col-8">{{ start_mode }}</dd>
|
|
<dt class="col-4">{% trans "State" %}</dt>
|
|
<dd class="col-8">
|
|
{% if changeable is False %}
|
|
{% if state == 0 %}{% trans "Inactive" %}{% else %}{% trans "Active" %}{% endif %}
|
|
{% else %}
|
|
<form action="" method="post" role="form" aria-label="Interface start/stop/delete form">{% csrf_token %}
|
|
{% if state == 0 %}
|
|
<input type="submit" class="btn btn-sm btn-primary" name="start" value="{% trans "Start" %}">
|
|
<input type="submit" class="btn btn-sm btn-danger" name="delete" value="{% trans "Delete" %}" data-confirm="{% blocktrans with name=iface %}Delete interface {{ name }}? Its definition is removed from the host.{% endblocktrans %}" onclick="return confirm(this.dataset.confirm)">
|
|
{% else %}
|
|
<input type="submit" class="btn btn-sm btn-secondary" name="stop" value="{% trans "Stop" %}" data-confirm="{% blocktrans with name=iface %}Stop interface {{ name }}? The host and its VMs lose their connections through it at once; if you reach the host through it, you lose the host.{% endblocktrans %}" onclick="return confirm(this.dataset.confirm)">
|
|
{% endif %}
|
|
</form>
|
|
{% endif %}
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
|
|
<div class="col-sm-12">
|
|
<h5>{% trans 'Slaves' %}</h5>
|
|
{% if itype == 'bridge' %}
|
|
<div class="table-responsive">
|
|
<table class="table table-bordered">
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">{% trans 'MAC' %}</th>
|
|
<th scope="col">{% trans 'Name' %}</th>
|
|
<th scope="col">{% trans 'Type' %}</th>
|
|
<th scope="col">{% trans 'Speed' %}</th>
|
|
<th scope="col">{% trans 'State' %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for iface in slave_ifaces %}
|
|
<tr>
|
|
<td>{{ iface.mac }}</td>
|
|
<td>{{ iface.name }}</td>
|
|
<td>{{ iface.type }}</td>
|
|
<td>{{ iface.speed }}</td>
|
|
<td>{{ iface.state }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %} |