mirror of
				https://github.com/retspen/webvirtcloud
				synced 2025-07-31 12:41:08 +00:00 
			
		
		
		
	logger updates (#31)
* Log for failed login attempts * Logger configuration for logging to file * interface fixes * login log fix, added logged in too * bootstrap icons setup * font-awesome icons replaced with bootstrap icons * replaced i-tags with django_bootstrap_icons * removed icons library from project * bug fix --------- Co-authored-by: catborise <catborise@gmail.com>
This commit is contained in:
		
							parent
							
								
									07d7a6d752
								
							
						
					
					
						commit
						1cbdf76df6
					
				
					 59 changed files with 344 additions and 291 deletions
				
			
		| 
						 | 
				
			
			@ -1,7 +1,8 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
{% if request.user.is_superuser %}
 | 
			
		||||
    <button type="button" class="btn btn-success float-end" data-bs-toggle="modal" data-bs-target="#addInstanceNetwork">
 | 
			
		||||
        <span class="fa fa-plus" aria-hidden="true"></span>
 | 
			
		||||
        <span aria-hidden="true">{% bs_icon 'plus'%} </span>
 | 
			
		||||
    </button>
 | 
			
		||||
 | 
			
		||||
    <!-- Modal pool -->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,8 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
{% if request.user.is_superuser %}
 | 
			
		||||
    <a href="#addInstanceOwner" type="button" class="btn btn-success float-end" data-bs-toggle="modal">
 | 
			
		||||
        <span class="fa fa-plus" aria-hidden="true"></span>
 | 
			
		||||
        <span aria-hidden="true">{% bs_icon 'plus'%} </span>
 | 
			
		||||
    </a>
 | 
			
		||||
 | 
			
		||||
    <!-- Modal pool -->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,8 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
{% if request.user.is_superuser %}
 | 
			
		||||
    <a href="#addvol" type="button" class="btn btn-success float-end" data-bs-toggle="modal" title="{% trans "Add Volume" %}">
 | 
			
		||||
        <span class="fa fa-plus" aria-hidden="true"></span>
 | 
			
		||||
        <span aria-hidden="true">{% bs_icon 'plus'%} </span>
 | 
			
		||||
    </a>
 | 
			
		||||
 | 
			
		||||
    <!-- Modal pool -->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,5 @@
 | 
			
		|||
{% extends "base.html" %}
 | 
			
		||||
{% load i18n %}
 | 
			
		||||
{% load icons %}
 | 
			
		||||
{% load static %}
 | 
			
		||||
{% block title %}{% trans "Instances" %}{% endblock %}
 | 
			
		||||
{% block style %}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load icons %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
<table class="table table-hover sortable-theme-bootstrap" data-sortable>
 | 
			
		||||
    <thead>
 | 
			
		||||
        <tr>
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +20,7 @@
 | 
			
		|||
            {% if compute.status is True and compute.instance_set.count > 0 %}
 | 
			
		||||
                <tr class="table-secondary fw-bold border-bottom border-dark">
 | 
			
		||||
                    <td>
 | 
			
		||||
                        <span id="collapse_host_instances_{{ compute.id }}" class="fa fa-chevron-up" onclick="hide_host_instances('{{ compute.id }}');"></span>
 | 
			
		||||
                        <span id="collapse_host_instances_{{ compute.id }}" onclick="hide_host_instances('{{ compute.id }}');">{% bs_icon 'chevron-up'%} </span>
 | 
			
		||||
                    </td>
 | 
			
		||||
                    <td>
 | 
			
		||||
                        <a class="link-dark" href="{% url 'overview' compute.id %}">{{ compute.name }}</a>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
<nav class="navbar navbar-expand-sm fixed-bottom navbar-light bg-light" aria-label="Instance bottom navbar">
 | 
			
		||||
    <div class="container">
 | 
			
		||||
        <a class="navbar-brand" href="#">{% trans 'HOST' %}</a>  
 | 
			
		||||
| 
						 | 
				
			
			@ -9,15 +10,15 @@
 | 
			
		|||
            <ul class="navbar-nav">
 | 
			
		||||
                <li class="nav-item">
 | 
			
		||||
                    <a class="nav-link" href="{% url 'overview' compute.id %}">
 | 
			
		||||
                        <i class="fa fa-server"></i>
 | 
			
		||||
                        {% bs_icon 'server'%} 
 | 
			
		||||
                        {{ compute.name }} {% if compute.name != compute.hostname %} - {{ compute.hostname }}{% endif %}
 | 
			
		||||
                    </a>
 | 
			
		||||
                </li>
 | 
			
		||||
                <li class="nav-item">
 | 
			
		||||
                    <a class="nav-link" href="{% url 'instances' compute.id %}"><i class="fa fa-desktop"></i> {% trans "Instances" %}</a>
 | 
			
		||||
                    <a class="nav-link" href="{% url 'instances' compute.id %}">{% bs_icon 'laptop'%}  {% trans "Instances" %}</a>
 | 
			
		||||
                </li>
 | 
			
		||||
                <li class="nav-item active">
 | 
			
		||||
                    <a class="nav-link" href="{% url 'instances:instance' instance.id %}"><i class="fa fa-hdd-o"></i> {{ instance.name }}</a>
 | 
			
		||||
                    <a class="nav-link" href="{% url 'instances:instance' instance.id %}">{% bs_icon 'device-hdd'%}  {{ instance.name }}</a>
 | 
			
		||||
                </li>
 | 
			
		||||
            </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,9 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load django_bootstrap5 %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
{% if request.user.is_superuser %}
 | 
			
		||||
    <button href="#addFlavor" type="button" class="btn btn-success btn-header float-end" data-bs-toggle="modal">
 | 
			
		||||
        <span class="fa fa-plus" aria-hidden="true"></span>
 | 
			
		||||
        <span aria-hidden="true">{% bs_icon 'plus'%} </span>
 | 
			
		||||
    </button>
 | 
			
		||||
 | 
			
		||||
    <!-- Modal Flavor -->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
<a href="#AddInstance" type="button" class="btn btn-success btn-header float-end" data-bs-toggle="modal">
 | 
			
		||||
    <span class="fa fa-plus" aria-hidden="true"></span>
 | 
			
		||||
    <span aria-hidden="true">{% bs_icon 'plus'%} </span>
 | 
			
		||||
</a>
 | 
			
		||||
 | 
			
		||||
<!-- Modal pool -->
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +29,7 @@
 | 
			
		|||
                            <tbody>
 | 
			
		||||
                                {% for compute in computes %}
 | 
			
		||||
                                    {% if compute.status is True %}
 | 
			
		||||
                                        <tr>
 | 
			
		||||
                                        <tr style="text-decoration: none">
 | 
			
		||||
                                            <td>{{ compute.name }}</td>
 | 
			
		||||
                                            <td>{{ compute.cpu_count }}</td>
 | 
			
		||||
                                            <td>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
{% extends "base.html" %}
 | 
			
		||||
{% load i18n %}
 | 
			
		||||
{% load static %}
 | 
			
		||||
{% load icons %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
{% block title %}{% trans "Create new instance" %}{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block style %}
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +37,7 @@
 | 
			
		|||
                <ul class="nav nav-tabs" role="tablist" aria-label="Instance create method">
 | 
			
		||||
                     <li class="nav-item" role="presentation">
 | 
			
		||||
                        <button class="nav-link float-end" data-bs-toggle="tab" data-bs-target="#" type="button" role="tab" aria-controls="go_compute" onclick="goto_compute()">
 | 
			
		||||
                            <span class="fa fa-arrow-left"></span>
 | 
			
		||||
                            <span>{% bs_icon 'arrow-left'%} </span>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </li>
 | 
			
		||||
                    <li class="nav-item" role="presentation">
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +64,7 @@
 | 
			
		|||
                        {% if not flavors %}
 | 
			
		||||
                            <div class="col-lg-12">
 | 
			
		||||
                                <div class="alert alert-warning shadow-sm">
 | 
			
		||||
                                    <i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning" %}:</strong> {% trans "Hypervisor doesn't have any Flavors" %}
 | 
			
		||||
                                    {% bs_icon 'exclamation-triangle'%}  <strong>{% trans "Warning" %}:</strong> {% trans "Hypervisor doesn't have any Flavors" %}
 | 
			
		||||
                                </div>
 | 
			
		||||
                            </div>
 | 
			
		||||
                        {% else %}
 | 
			
		||||
| 
						 | 
				
			
			@ -173,7 +173,7 @@
 | 
			
		|||
                                                                    <label class="col-sm-4 col-form-label">{% trans "Advanced" %}</label>
 | 
			
		||||
                                                                    <div class="d-grid col-sm-7">
 | 
			
		||||
                                                                        <button class="btn btn-outline-light" type="button" data-bs-toggle="collapse" data-bs-target="#flav-add-collapse" aria-expanded="false" aria-controls="flav-add-collapse">
 | 
			
		||||
                                                                            <span class="fa fa-caret-down"></span>
 | 
			
		||||
                                                                            <span>{% bs_icon 'caret-down'%} </span>
 | 
			
		||||
                                                                        </button>
 | 
			
		||||
                                                                    </div>        
 | 
			
		||||
                                                                </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -303,14 +303,14 @@
 | 
			
		|||
                                                </div>
 | 
			
		||||
                                            </div>
 | 
			
		||||
                                            <a data-bs-toggle="modal" href="#addVMflavor{{ forloop.counter }}" class="btn btn-sm btn-secondary">
 | 
			
		||||
                                                <span class="fa fa-plus"></span>
 | 
			
		||||
                                                <span >{% bs_icon 'plus'%} </span>
 | 
			
		||||
                                            </a>
 | 
			
		||||
                                        </td>
 | 
			
		||||
                                        <td style="width:5px;">
 | 
			
		||||
                                            <form action="{% url 'instances:flavor_delete' flavor.id %}" method="post" role="form" aria-label="Delete flavor form">
 | 
			
		||||
                                                {% csrf_token %}
 | 
			
		||||
                                                <button type="submit" class="btn btn-sm btn-secondary" name="delete_flavor" onclick="return confirm('{% trans "Are you sure?" %}')">
 | 
			
		||||
                                                    {% icon 'trash' %}
 | 
			
		||||
                                                    {% bs_icon 'trash' %}
 | 
			
		||||
                                                </button>
 | 
			
		||||
                                            </form>
 | 
			
		||||
                                        </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -428,7 +428,7 @@
 | 
			
		|||
                        <label class="col-sm-3 col-form-label">{% trans "Advanced" %}</label>
 | 
			
		||||
                        <div class="d-grid col-sm-7">
 | 
			
		||||
                            <button class="btn btn-outline-light" type="button" data-bs-toggle="collapse" data-bs-target="#custadvcollapse" aria-expanded="false" aria-controls="custadvcollapse">
 | 
			
		||||
                                <span class="fa fa-caret-down"></span>
 | 
			
		||||
                                <span>{% bs_icon 'caret-down'%} </span>
 | 
			
		||||
                            </button>
 | 
			
		||||
                        </div>        
 | 
			
		||||
                    </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -670,7 +670,7 @@
 | 
			
		|||
                            <label class="col-sm-3 col-form-label">{% trans "Advanced" %}</label>
 | 
			
		||||
                            <div class="d-grid col-sm-7">
 | 
			
		||||
                                <button class="btn btn-outline-light" type="button" data-bs-toggle="collapse" data-bs-target="#tempAdvCollapse" aria-expanded="false" aria-controls="tempAdvCollapse">
 | 
			
		||||
                                    <span class="fa fa-caret-down"></span>
 | 
			
		||||
                                    <span>{% bs_icon 'caret-down'%} </span>
 | 
			
		||||
                                </button>
 | 
			
		||||
                            </div>        
 | 
			
		||||
                        </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -865,7 +865,7 @@
 | 
			
		|||
                                    '{% endfor %}' +
 | 
			
		||||
                                '</select>' +
 | 
			
		||||
                                ' -> ' + value + ' ' +
 | 
			
		||||
                                '<a class="btn-link float-end" onclick="javascript:$(\'#image-control\').multiselect(\'deselect\', \'' + value + '\', true)"><i class="fa fa-remove"></i></a></li>';
 | 
			
		||||
                                '<a class="btn-link float-end" onclick="javascript:$(\'#image-control\').multiselect(\'deselect\', \'' + value + '\', true)">{% bs_icon 'trash'%} </a></li>';
 | 
			
		||||
                        selected_list_html += li;
 | 
			
		||||
                        counter++;
 | 
			
		||||
                    });
 | 
			
		||||
| 
						 | 
				
			
			@ -899,7 +899,7 @@
 | 
			
		|||
                        let li = '<li><input type="text" class="input-xs" name="mac'+ net_counter +'" maxlength="17" required pattern="[a-zA-Z0-9:]+" onchange="populate_mac(' + net_counter +')">' +
 | 
			
		||||
                                ' eth' + net_counter +
 | 
			
		||||
                                ' -> ' + value + ' ' +
 | 
			
		||||
                                '<a class="btn-link float-end" onclick="$(\'#network-control\').multiselect(\'deselect\', \'' + value + '\', true)"><i class="fa fa-remove"></i></a></li>';
 | 
			
		||||
                                '<a class="btn-link float-end" onclick="$(\'#network-control\').multiselect(\'deselect\', \'' + value + '\', true)">{% bs_icon 'trash'%} </a></li>';
 | 
			
		||||
                        random_mac(net_counter);
 | 
			
		||||
                        selected_list_html += li;
 | 
			
		||||
                        net_counter++;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
{% extends "base.html" %}
 | 
			
		||||
{% load static %}
 | 
			
		||||
{% load i18n %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
 | 
			
		||||
{% block title %}{% trans "Instance" %} - {{ instance.name }}{% endblock %}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -33,10 +34,10 @@
 | 
			
		|||
                {% else %}
 | 
			
		||||
                    class="badge bg-danger"
 | 
			
		||||
                    title="{% trans "Guest Agent Not Enabled & Not Connected" %}"
 | 
			
		||||
                {% endif %}><i class="fa fa-plug"></i></span>
 | 
			
		||||
                {% endif %}>{% bs_icon 'plug' %} </span>
 | 
			
		||||
            |
 | 
			
		||||
            {% if instance.snapshots %}
 | 
			
		||||
                <i class="fa fa-camera link-primary" title="There are {{ instance.snapshots|length }} snapshot(s)"></i>
 | 
			
		||||
                {% bs_icon 'camera'%} <i title="There are {{ instance.snapshots|length }} snapshot(s)"></i>
 | 
			
		||||
            |
 | 
			
		||||
            {% endif %}
 | 
			
		||||
            {% if instance.cur_vcpu %}
 | 
			
		||||
| 
						 | 
				
			
			@ -57,11 +58,11 @@
 | 
			
		|||
            {% endfor %}
 | 
			
		||||
            {% if instance.guest_agent_ready %}
 | 
			
		||||
            <a class="link-secondary" title="{% trans 'Show Instance OS details' %}" onclick="get_osinfo();">
 | 
			
		||||
                <span class="fa fa-info-circle"></span>
 | 
			
		||||
                <span>{% bs_icon 'info-circle'%} </span>
 | 
			
		||||
            </a>
 | 
			
		||||
            {% endif %}
 | 
			
		||||
            <a class="link-secondary" href="{% url 'instances:instance' instance.id %}" title="{% trans 'Refresh instance info' %}">
 | 
			
		||||
                <span class="fa fa-refresh"></span>
 | 
			
		||||
                <span>{% bs_icon 'repeat'%} </span>
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
        {% if user_quota_msg %}
 | 
			
		||||
| 
						 | 
				
			
			@ -77,45 +78,45 @@
 | 
			
		|||
        <ul class="nav nav-pills nav-fill" id="navbtn" role="tablist" aria-label="Instance actions">
 | 
			
		||||
            <li class="nav-item" role="presentation">
 | 
			
		||||
                <button class="nav-link action-button active" id="power-tab" aria-controls="power" data-bs-toggle="pill" data-bs-target="#power" type="button" role="tab" aria-selected="true">
 | 
			
		||||
                    <span id="action-block" class="fa fa-power-off fa-2x" aria-hidden="true"></span>
 | 
			
		||||
                    <span id="action-block" aria-hidden="true">{% bs_icon 'power' size='2em'%} </span>
 | 
			
		||||
                    {% trans "Power" %}
 | 
			
		||||
                </button>
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="nav-item" role="presentation">
 | 
			
		||||
                <button class="nav-link action-button" id="access-tab" aria-controls="access" data-bs-toggle="pill" data-bs-target="#access" type="button" role="tab" aria-selected="false">
 | 
			
		||||
                    <span id="action-block" class="fa fa-lock" aria-hidden="true"></span>
 | 
			
		||||
                    <span id="action-block" aria-hidden="true">{% bs_icon 'lock' size='2em'%} </span>
 | 
			
		||||
                    {% trans "Access" %}
 | 
			
		||||
                </button>
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="nav-item" role="presentation">
 | 
			
		||||
                <button class="nav-link action-button" id="resize-tab" aria-controls="resize" data-bs-toggle="pill" data-bs-target="#resize" type="button" role="tab" aria-selected="false">
 | 
			
		||||
                    <span id="action-block" class="fa fa-expand" aria-hidden="true"></span>
 | 
			
		||||
                    <span id="action-block" aria-hidden="true">{% bs_icon 'arrows-angle-expand' size='2em'%} </span>
 | 
			
		||||
                    {% trans "Resize" %}
 | 
			
		||||
                </button>
 | 
			
		||||
            </li>
 | 
			
		||||
            {% if allow_admin_or_not_template and 'instances.snapshot_instances' in perms %}
 | 
			
		||||
            <li class="nav-item" role="presentation">
 | 
			
		||||
                <button class="nav-link action-button" id="snapshots-tab" aria-controls="snapshots" data-bs-toggle="pill" data-bs-target="#snapshots" type="button" role="tab" aria-selected="false">
 | 
			
		||||
                    <span id="action-block" class="fa fa-camera" aria-hidden="true"></span>
 | 
			
		||||
                    <span id="action-block" aria-hidden="true">{% bs_icon 'camera' size='2em'%} </span>
 | 
			
		||||
                    {% trans "Snapshot" %}
 | 
			
		||||
                </button>
 | 
			
		||||
            </li>
 | 
			
		||||
            {% endif %}
 | 
			
		||||
            <li class="nav-item" role="presentation">
 | 
			
		||||
                <button class="nav-link action-button" id="settings-tab" aria-controls="settings" data-bs-toggle="pill" data-bs-target="#settings" type="button" role="tab" aria-selected="false">
 | 
			
		||||
                    <span id="action-block" class="fa fa-cog" aria-hidden="true"></span>
 | 
			
		||||
                    <span id="action-block" aria-hidden="true">{% bs_icon 'gear-wide-connected' size='2em'%} </span>
 | 
			
		||||
                    {% trans "Settings" %}
 | 
			
		||||
                </button>
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="nav-item" role="presentation">
 | 
			
		||||
                <button class="nav-link action-button" id="graphics-tab" aria-controls="graphics" data-bs-toggle="pill" data-bs-target="#graphics" type="button" role="tab" aria-selected="false">
 | 
			
		||||
                    <span id="action-block" class="fa fa-bar-chart" aria-hidden="true"></span>
 | 
			
		||||
                    <span id="action-block" aria-hidden="true">{% bs_icon 'bar-chart-line' size='2em'%} </span>
 | 
			
		||||
                    {% trans "Stats" %}
 | 
			
		||||
                </button>
 | 
			
		||||
            </li>
 | 
			
		||||
                <li class="nav-item" role="presentation">
 | 
			
		||||
                <button class="nav-link action-button" id="undefine-tab" aria-controls="undefine" data-bs-toggle="pill" data-bs-target="#undefine" type="button" role="tab" aria-selected="false">
 | 
			
		||||
                    <span id="action-block" class="fa fa-trash" aria-hidden="true"></span>
 | 
			
		||||
                    <span id="action-block" aria-hidden="true">{% bs_icon 'trash' size='2em'%} </span>
 | 
			
		||||
                    {% trans "Destroy" %}
 | 
			
		||||
                </button>
 | 
			
		||||
            </li>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,45 +1,45 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load icons %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
<form action="" method="post" role="form" aria-label="Shortcut instance action form">{% csrf_token %}
 | 
			
		||||
    {% if instance.proxy.instance.info.0 == 5 %}
 | 
			
		||||
        {% if instance.is_template %}
 | 
			
		||||
            <a href="{% url 'instances:instance' instance.id %}#clone" class="btn btn-sm btn-secondary" title="{% trans "Clone" %}">
 | 
			
		||||
                {% icon 'clone' %}
 | 
			
		||||
                {% bs_icon 'clone' %}
 | 
			
		||||
            </a>
 | 
			
		||||
        {% else %}
 | 
			
		||||
            <a class="btn btn-sm btn-secondary" href="{% url 'instances:poweron' instance.id %}" onclick="showPleaseWaitDialog()" title="{% trans "Power On" %}">
 | 
			
		||||
                {% icon 'play' %}
 | 
			
		||||
                {% bs_icon 'play' %}
 | 
			
		||||
            </a>
 | 
			
		||||
        {% endif %}
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Suspend" %}">{% icon 'pause' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Power Off" %}">{% icon 'power-off' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Power Cycle" %}">{% icon 'refresh' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Suspend" %}">{% bs_icon 'pause' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Power Off" %}">{% bs_icon 'power' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Power Cycle" %}">{% bs_icon 'repeat' %}</a>
 | 
			
		||||
        <button class="btn btn-sm btn-secondary disabled" title="{% trans "VNC Console" %}" disabled>
 | 
			
		||||
            <span class="fa fa-eye"></span>
 | 
			
		||||
            <span>{% bs_icon 'eye' %}</span>
 | 
			
		||||
        </button>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    {% if instance.proxy.instance.info.0 == 3 %}
 | 
			
		||||
        <a class="btn btn-sm btn-secondary" href="{% url 'instances:resume' instance.id %}" title="{% trans "Resume" %}">
 | 
			
		||||
            {% icon 'play' %}
 | 
			
		||||
            {% bs_icon 'play' %}
 | 
			
		||||
        </a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Suspend" %}">{% icon 'pause' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Suspend" %}">{% bs_icon 'pause' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary" href="{% url 'instances:force_off' instance.id %}" title="{% trans "Force Off" %}">
 | 
			
		||||
            {% icon 'power-off' %}
 | 
			
		||||
            {% bs_icon 'power' %}
 | 
			
		||||
        </a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Power Cycle" %}">{% icon 'refresh' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" title="{% trans "Power Cycle" %}">{% bs_icon 'repeat' %}</a>
 | 
			
		||||
        <button class="btn btn-sm btn-secondary disabled" title="{% trans "VNC Console" %}" disabled>
 | 
			
		||||
            <span class="fa fa-eye"></span>
 | 
			
		||||
            <span>{% bs_icon 'eye'%} </span>
 | 
			
		||||
        </button>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    {% if instance.proxy.instance.info.0 == 1 %}
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" onclick="showPleaseWaitDialog()" title="{% trans "Power On" %}">{% icon 'play' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary disabled" onclick="showPleaseWaitDialog()" title="{% trans "Power On" %}">{% bs_icon 'play' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary" href="{% url 'instances:suspend' instance.id %}"
 | 
			
		||||
            title="{% trans "Suspend" %}">{% icon 'pause' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary" href="{% url 'instances:poweroff' instance.id %}">{% icon 'power-off' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary" href="{% url 'instances:powercycle' instance.id %}">{% icon 'refresh' %}</a>
 | 
			
		||||
            title="{% trans "Suspend" %}">{% bs_icon 'pause' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary" href="{% url 'instances:poweroff' instance.id %}">{% bs_icon 'power' %}</a>
 | 
			
		||||
        <a class="btn btn-sm btn-secondary" href="{% url 'instances:powercycle' instance.id %}">{% bs_icon 'repeat' %}</a>
 | 
			
		||||
        <button class="btn btn-sm btn-secondary" type="button" onclick='open_console("{{ instance.compute.id }}-{{ instance.get_uuid }}")'
 | 
			
		||||
            title="{% trans "Console" %}">
 | 
			
		||||
            <span class="fa fa-eye"></span>
 | 
			
		||||
            <span>{% bs_icon 'eye'%} </span>
 | 
			
		||||
        </button>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
</form>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,8 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
{% if request.user.is_superuser %}
 | 
			
		||||
    <button href="#editvol{{ id }}" type="button" class="btn btn-sm btn-secondary" data-bs-toggle="modal" title="{% trans "Edit Volume" %}">
 | 
			
		||||
        <i class="fa fa-edit" aria-hidden="true"></i>
 | 
			
		||||
        {% bs_icon 'pencil-square' %}
 | 
			
		||||
    </button>
 | 
			
		||||
 | 
			
		||||
    <!-- Modal pool -->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load django_bootstrap5 %}
 | 
			
		||||
{% load icons %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
<div class="tab-pane" id="settings" role="tabpanel">
 | 
			
		||||
    <!-- Nav tabs -->
 | 
			
		||||
    <ul class="nav nav-tabs" role="tablist" aria-label="Instance settings">
 | 
			
		||||
| 
						 | 
				
			
			@ -8,7 +8,7 @@
 | 
			
		|||
            {% if instance.guest_agent_ready %}
 | 
			
		||||
            <li class="nav-item" role="presentation">
 | 
			
		||||
                <button class="px-1 nav-link" data-bs-toggle="tab" id="osinfo-tab" data-bs-target="#osinfo" type="button" role="tab" aria-controls="osinfo" aria-selected="false" onclick="get_osinfo();">
 | 
			
		||||
                    <span class="fa fa-info-circle"></span>
 | 
			
		||||
                    <span>{% bs_icon 'info-circle' %} </span>
 | 
			
		||||
                </button>
 | 
			
		||||
            </li>
 | 
			
		||||
            {% endif %}
 | 
			
		||||
| 
						 | 
				
			
			@ -134,10 +134,10 @@
 | 
			
		|||
                        </div>
 | 
			
		||||
                        <div>
 | 
			
		||||
                            <div class="row mt-4">
 | 
			
		||||
                                <a href="#" id="boot_order_up" class="btn btn-light shadow-sm"><span class="fa fa-arrow-up" title="{% trans 'up: move selected devices' %}"></span></a>
 | 
			
		||||
                                <a href="#" id="boot_order_up" class="btn btn-light shadow-sm"><span title="{% trans 'up: move selected devices' %}">{% bs_icon 'arrow-up' %} </span></a>
 | 
			
		||||
                            </div>
 | 
			
		||||
                            <div class="row mt-2">
 | 
			
		||||
                                <a href="#" id="boot_order_down" class="btn btn-light shadow-sm"><span class="fa fa-arrow-down" title="{% trans 'down: move selected devices' %}"></span></a>
 | 
			
		||||
                                <a href="#" id="boot_order_down" class="btn btn-light shadow-sm"><span title="{% trans 'down: move selected devices' %}">{% bs_icon 'arrow-down' %} </span></a>
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +158,7 @@
 | 
			
		|||
                                type="submit" type="button"
 | 
			
		||||
                                title="{% trans 'Add CD-ROM' %}"
 | 
			
		||||
                                {% if instance.status != 5 %} disabled {% endif %}>
 | 
			
		||||
                            <span class="fa fa-plus"></span>
 | 
			
		||||
                            <span>{% bs_icon 'plus' %} </span>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </p>
 | 
			
		||||
                </form>
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +199,7 @@
 | 
			
		|||
                                    {% endif %}
 | 
			
		||||
                                    {% if instance.status == 5 and allow_admin_or_not_template %}
 | 
			
		||||
                                        <a  href="{% url 'instances:detach_cdrom' instance.id cd.dev %}" class="btn btn-sm btn-danger float-end" title="{% trans "Detach CD-ROM (remove device)" %}">
 | 
			
		||||
                                            {% icon 'remove' %}
 | 
			
		||||
                                            {% bs_icon 'dash-circle' %}
 | 
			
		||||
                                        </a>
 | 
			
		||||
                                    {% endif %}
 | 
			
		||||
                                    
 | 
			
		||||
| 
						 | 
				
			
			@ -274,7 +274,7 @@
 | 
			
		|||
                                                        <strong>IO Mode:</strong> {{ disk.io }} <br/>
 | 
			
		||||
                                                        <strong>Discard:</strong> {{ disk.discard }} <br/>
 | 
			
		||||
                                                        <strong>Detect Zeroes:</strong> {{ disk.detect_zeroes }}">
 | 
			
		||||
                                    <span class="fa fa-info"></span>
 | 
			
		||||
                                    <span>{% bs_icon 'info' %} </span>
 | 
			
		||||
                                </button>
 | 
			
		||||
                                {{ disk.dev }}
 | 
			
		||||
                            </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -307,11 +307,11 @@
 | 
			
		|||
                                    <input type="hidden" name="name" value="{{ disk.image }}">
 | 
			
		||||
                                    {% if instance.status == 5 %}
 | 
			
		||||
                                        <button type="submit" class="btn btn-sm btn-secondary" value="{{ disk.dev }}" title="{% trans "Detach" %}" onclick="return confirm('{% trans "Are you sure to detach volume?" %}')">
 | 
			
		||||
                                            {% icon 'eject' %}
 | 
			
		||||
                                            {% bs_icon 'eject' %}
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                    {% else %}
 | 
			
		||||
                                        <button class="btn btn-sm btn-secondary disabled" value="{{ disk.dev }}" title="{% trans "Detach" %}" onclick="return confirm('{% trans "Are you sure? This may lead data corruption!" %}')">
 | 
			
		||||
                                            {% icon 'eject' %}
 | 
			
		||||
                                            {% bs_icon 'eject' %}
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                    {% endif %}
 | 
			
		||||
                                </form>
 | 
			
		||||
| 
						 | 
				
			
			@ -323,11 +323,11 @@
 | 
			
		|||
                                    <input type="hidden" name="name" value="{{ disk.image }}">
 | 
			
		||||
                                    {% if instance.status == 5 %}
 | 
			
		||||
                                        <button type="submit" class="btn btn-sm btn-secondary" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure to delete volume?" %}')">
 | 
			
		||||
                                            <i class="fa fa-trash"></i>
 | 
			
		||||
                                            {% bs_icon 'trash' %}
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                    {% else %}
 | 
			
		||||
                                        <button class="btn btn-sm btn-secondary disabled" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure? This may lead data corruption!" %}')">
 | 
			
		||||
                                            <i class="fa fa-trash"></i>
 | 
			
		||||
                                            {% bs_icon 'trash' %}
 | 
			
		||||
                                        </button>
 | 
			
		||||
                                    {% endif %}
 | 
			
		||||
                                </form>
 | 
			
		||||
| 
						 | 
				
			
			@ -393,7 +393,7 @@
 | 
			
		|||
                                            title="{% trans "Edit NIC" %}" 
 | 
			
		||||
                                            data-bs-target="#editInstanceNetwork{{ forloop.counter0 }}"
 | 
			
		||||
                                            data-bs-toggle="modal">
 | 
			
		||||
                                            <span class="fa fa-edit" aria-hidden="true"></span>
 | 
			
		||||
                                            <span aria-hidden="true">{% bs_icon 'pencil-square' %} </span>
 | 
			
		||||
                                    </button>
 | 
			
		||||
 | 
			
		||||
                                    <div class="modal fade" id="editInstanceNetwork{{ forloop.counter0 }}" role="dialog" aria-labelledby="editInstanceNetworkLabel" aria-hidden="true">
 | 
			
		||||
| 
						 | 
				
			
			@ -471,7 +471,7 @@
 | 
			
		|||
                                <form action="{% url 'instances:delete_network' instance.id %}" method="post" name="delete_network" role="form">{% csrf_token %}
 | 
			
		||||
                                    <button class="btn btn-sm btn-danger" value="{{ network.mac }}" name="delete_network" title="{% trans "Delete Device" %}"
 | 
			
		||||
                                        onclick="return confirm('{% trans "Are you sure?" %}')">
 | 
			
		||||
                                        <i class="fa fa-trash"></i>
 | 
			
		||||
                                        {% bs_icon 'trash' %} 
 | 
			
		||||
                                    </button>
 | 
			
		||||
                                </form>
 | 
			
		||||
                            </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -547,7 +547,7 @@
 | 
			
		|||
                                            <button type="submit" class="btn btn-sm btn-primary"
 | 
			
		||||
                                                    name="set_qos" data-bs-toggle="modal"
 | 
			
		||||
                                                    title="{% trans "Edit QoS" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
 | 
			
		||||
                                                <span class="fa fa-save"></span>
 | 
			
		||||
                                                <span>{% bs_icon 'save' %} </span>
 | 
			
		||||
                                            </button>
 | 
			
		||||
                                    </form>
 | 
			
		||||
                                            <form action="{% url 'instances:unset_qos' instance.id %}" method="post" role="form" aria-label="Instance QoS configuration form">
 | 
			
		||||
| 
						 | 
				
			
			@ -557,7 +557,7 @@
 | 
			
		|||
                                                <button type="submit" class="btn btn-sm btn-danger"
 | 
			
		||||
                                                        name="unset_qos"
 | 
			
		||||
                                                        title="{% trans "Delete QoS" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
 | 
			
		||||
                                                    <i class="fa fa-trash"></i>
 | 
			
		||||
                                                        {% bs_icon 'trash' %} 
 | 
			
		||||
                                                </button>
 | 
			
		||||
                                            </form>
 | 
			
		||||
                                        </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -694,7 +694,7 @@
 | 
			
		|||
                            <td><a href="{% url 'accounts:account' userinstance.user.id %}">{{ userinstance.user }}</a></td>
 | 
			
		||||
                            <td style="width:30px;">
 | 
			
		||||
                                <a href="{% url 'accounts:user_instance_delete' userinstance.id %}?next={% url 'instances:instance' instance.id %}#users">
 | 
			
		||||
                                    {% icon 'trash' %}
 | 
			
		||||
                                    {% bs_icon 'trash' %}
 | 
			
		||||
                                </a>
 | 
			
		||||
                            </td>
 | 
			
		||||
                        </tr>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load icons %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
<div class="tab-pane" id="snapshots" role="tabpanel">
 | 
			
		||||
    <!-- Nav tabs -->
 | 
			
		||||
    <ul class="nav nav-tabs" role="tablist" aria-label="Instance snapshot menu">
 | 
			
		||||
| 
						 | 
				
			
			@ -90,12 +90,12 @@
 | 
			
		|||
                                                <input type="hidden" name="name" value="{{ snap.name }}">
 | 
			
		||||
                                                {% if instance.status == 5 %}
 | 
			
		||||
                                                    <button type="submit" class="btn btn-sm btn-primary" name="revert_snapshot" title="{% trans 'Revert to this Snapshot' %}" onclick="return confirm('Are you sure?')">
 | 
			
		||||
                                                            <span class="fa fa-download"></span>
 | 
			
		||||
                                                            <span>{% bs_icon 'download' %} </span>
 | 
			
		||||
                                                    </button>
 | 
			
		||||
                                                {% else %}
 | 
			
		||||
                                                    <button type="button" class="btn btn-sm btn-primary disabled"
 | 
			
		||||
                                                            title="{% trans "To restore snapshots you need Power Off the instance." %}">
 | 
			
		||||
                                                            <span class="fa fa-download"></span>
 | 
			
		||||
                                                            <span>{% bs_icon 'download' %} </span>
 | 
			
		||||
                                                    </button>
 | 
			
		||||
                                                {% endif %}
 | 
			
		||||
                                            </form>
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +104,7 @@
 | 
			
		|||
                                            <form action="{% url 'instances:delete_snapshot' instance.id %}" method="post" role="form" aria-label="Delete snapshot form">{% csrf_token %}
 | 
			
		||||
                                                <input type="hidden" name="name" value="{{ snap.name }}">
 | 
			
		||||
                                                <button type="submit" class="btn btn-sm btn-danger" title="{% trans 'Delete Snapshot' %}" onclick="return confirm('{% trans "Are you sure?" %}')">
 | 
			
		||||
                                                    {% icon 'trash' %}
 | 
			
		||||
                                                    {% bs_icon 'trash' %}
 | 
			
		||||
                                                </button>
 | 
			
		||||
                                            </form>
 | 
			
		||||
                                        </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -123,7 +123,7 @@
 | 
			
		|||
                                                <input type="hidden" name="date" value="{{ ext_snap.date }}">
 | 
			
		||||
                                                <input type="hidden" name="desc" value="{{ ext_snap.description }}">
 | 
			
		||||
                                                <button type="submit" class="btn btn-sm btn-primary" name="revert_external_snapshot" title="{% trans 'Revert to this Snapshot' %}" onclick="return confirm('You are going to lose your unsaved work by reverting to this snapshot state. Are you sure?')">
 | 
			
		||||
                                                        <span class="fa fa-download"></span>
 | 
			
		||||
                                                        <span>{% bs_icon 'download' %} </span>
 | 
			
		||||
                                                </button>
 | 
			
		||||
                                            </form>
 | 
			
		||||
                                        </td>
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +131,7 @@
 | 
			
		|||
                                            <form action="{% url 'instances:delete_external_snapshot' instance.id %}" method="post" role="form" aria-label="Delete external snapshot form">{% csrf_token %}
 | 
			
		||||
                                                <input type="hidden" name="name" value="{{ ext_snap.name }}">
 | 
			
		||||
                                                <button type="submit" class="btn btn-sm btn-danger" name="delete_external_snapshot" title="{% trans 'Delete Snapshot' %}" onclick="return confirm('You are about to delete this snapshot and merge it with base image. Are you sure?')">
 | 
			
		||||
                                                    {% icon 'trash' %}
 | 
			
		||||
                                                    {% bs_icon 'trash' %}
 | 
			
		||||
                                                </button>
 | 
			
		||||
                                            </form>
 | 
			
		||||
                                        </td>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
{% load i18n %}
 | 
			
		||||
{% load bootstrap_icons %}
 | 
			
		||||
<div class="tab-pane" id="graphics" role="tabpanel" >
 | 
			
		||||
    <!-- Nav tabs -->
 | 
			
		||||
    <ul class="nav nav-tabs" role="tablist" aria-label="Instance graphs and logs menu">
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +19,7 @@
 | 
			
		|||
        <div role="tabpanel" class="tab-pane tab-pane-bordered active" id="graphs">
 | 
			
		||||
            <div class="mb-1 card border-success">
 | 
			
		||||
                <div class="card-header">
 | 
			
		||||
                    <h5 class="card-title"><i class="fa fa-long-arrow-right"></i>
 | 
			
		||||
                    <h5 class="card-title">{% bs_icon 'arrow-right' %} 
 | 
			
		||||
                        {% trans "CPU Usage" %}
 | 
			
		||||
                    </h5>
 | 
			
		||||
                </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +33,7 @@
 | 
			
		|||
            </div>
 | 
			
		||||
            <div class="mb-1 card border-danger">
 | 
			
		||||
                <div class="card-header">
 | 
			
		||||
                    <h5 class="card-title"><i class="fa fa-long-arrow-right"></i>
 | 
			
		||||
                    <h5 class="card-title">{% bs_icon 'arrow-right' %} 
 | 
			
		||||
                        {% trans "Memory Usage" %}
 | 
			
		||||
                    </h5>
 | 
			
		||||
                </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +48,7 @@
 | 
			
		|||
            {% for net in instance.networks %}
 | 
			
		||||
            <div class="mb-1 card border-info">
 | 
			
		||||
                <div class="card-header">
 | 
			
		||||
                    <h5 class="card-title"><i class="fa fa-long-arrow-right"></i>
 | 
			
		||||
                    <h5 class="card-title">{% bs_icon 'arrow-right' %} 
 | 
			
		||||
                        {% trans "Bandwidth Device" %}: eth{{ forloop.counter0 }}
 | 
			
		||||
                    </h5>
 | 
			
		||||
                </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +64,7 @@
 | 
			
		|||
            {% for disk in instance.disks %}
 | 
			
		||||
            <div class="mb-1 card border-warning">
 | 
			
		||||
                <div class="card-header">
 | 
			
		||||
                    <h5 class="card-title"><i class="fa fa-long-arrow-right"></i>
 | 
			
		||||
                    <h5 class="card-title">{% bs_icon 'arrow-right' %} 
 | 
			
		||||
                        {% trans "Disk I/O device" %}: {{ disk.dev }}
 | 
			
		||||
                    </h5>
 | 
			
		||||
                </div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue