mirror of
https://github.com/retspen/webvirtcloud
synced 2024-12-24 15:15:22 +00:00
Translate, indentation and typo fixes
This commit is contained in:
parent
f3b8b251b5
commit
b18290794e
23 changed files with 3013 additions and 3031 deletions
|
@ -2,139 +2,139 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block title %}{% trans "User" %} - {{ user }}{% endblock %}
|
{% block title %}{% trans "User" %} - {{ user }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% include 'create_user_inst_block.html' %}
|
{% include 'create_user_inst_block.html' %}
|
||||||
<h1 class="page-header">{{ user }}</h1>
|
<h1 class="page-header">{{ user }}</h1>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
|
||||||
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
|
{% if request.user.is_superuser and publickeys %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-bordered table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{% trans "Key name" %}</th>
|
||||||
|
<th>{% trans "Public key" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for publickey in publickeys %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ publickey.keyname }}</td>
|
||||||
|
<td title="{{ publickey.keypublic }}">{{ publickey.keypublic|truncatechars:64 }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
{% if request.user.is_superuser and publickeys %}
|
{% if not user_insts %}
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<div class="table-responsive">
|
<div class="alert alert-warning alert-dismissable">
|
||||||
<table class="table table-bordered table-hover">
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
<thead>
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "User doesn't have any Instace" %}
|
||||||
<tr>
|
|
||||||
<th>{% trans "Key name" %}</th>
|
|
||||||
<th>{% trans "Public key" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for publickey in publickeys %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ publickey.keyname }}</td>
|
|
||||||
<td title="{{ publickey.keypublic }}">{{ publickey.keypublic|truncatechars:64 }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% else %}
|
||||||
{% endif %}
|
<div class="table-responsive">
|
||||||
|
<table class="table table-bordered table-hover">
|
||||||
<div class="row">
|
<thead>
|
||||||
<div class="col-lg-12">
|
<tr>
|
||||||
{% if not user_insts %}
|
<th>#</th>
|
||||||
<div class="col-lg-12">
|
<th>{% trans "Instance" %}</th>
|
||||||
<div class="alert alert-warning alert-dismissable">
|
<th>{% trans "VNC" %}</th>
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
<th>{% trans "Resize" %}</th>
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "User doesn't have any Instace" %}
|
<th>{% trans "Delete" %}</th>
|
||||||
</div>
|
<th colspan="2">{% trans "Action" %}</th>
|
||||||
</div>
|
</tr>
|
||||||
{% else %}
|
</thead>
|
||||||
<div class="table-responsive">
|
<tbody>
|
||||||
<table class="table table-bordered table-hover">
|
{% for inst in user_insts %}
|
||||||
<thead>
|
<tr>
|
||||||
<tr>
|
<td>{{ forloop.counter }}</td>
|
||||||
<th>#</th>
|
<td><a href="{% url 'instance' inst.instance.compute.id inst.instance.name %}">{{ inst.instance.name }}</a></td>
|
||||||
<th>{% trans "Instance" %}</th>
|
<td>{{ inst.is_vnc }}</td>
|
||||||
<th>{% trans "VNC" %}</th>
|
<td>{{ inst.is_change }}</td>
|
||||||
<th>{% trans "Resize" %}</th>
|
<td>{{ inst.is_delete }}</td>
|
||||||
<th>{% trans "Delete" %}</th>
|
<td style="width:5px;">
|
||||||
<th colspan="2">{% trans "Action" %}</th>
|
<a href="#editPriv{{ forloop.counter }}" type="button" class="btn btn-xs btn-default" data-toggle="modal">
|
||||||
</tr>
|
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
|
||||||
</thead>
|
</a>
|
||||||
<tbody>
|
|
||||||
{% for inst in user_insts %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ forloop.counter }}</td>
|
|
||||||
<td><a href="{% url 'instance' inst.instance.compute.id inst.instance.name %}">{{ inst.instance.name }}</a></td>
|
|
||||||
<td>{{ inst.is_vnc }}</td>
|
|
||||||
<td>{{ inst.is_change }}</td>
|
|
||||||
<td>{{ inst.is_delete }}</td>
|
|
||||||
<td style="width:5px;">
|
|
||||||
<a href="#editPriv{{ forloop.counter }}" type="button" class="btn btn-xs btn-default" data-toggle="modal">
|
|
||||||
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<!-- Modal pool -->
|
<!-- Modal pool -->
|
||||||
<div class="modal fade" id="editPriv{{ forloop.counter }}" tabindex="-1" role="dialog" aria-labelledby="editPrivLabel" aria-hidden="true">
|
<div class="modal fade" id="editPriv{{ forloop.counter }}" tabindex="-1" role="dialog" aria-labelledby="editPrivLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">{% trans "Edit privilegies for" %} {{ inst.instance.name }}</h4>
|
<h4 class="modal-title">{% trans "Edit privilegies for" %} {{ inst.instance.name }}</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form class="form-horizontal" method="post" action="" role="form">{% csrf_token %}
|
||||||
|
<input type="hidden" name="user_inst" value="{{ inst.id }}">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "VNC" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<select type="text" class="form-control" name="inst_vnc">
|
||||||
|
<option value="">False</option>
|
||||||
|
<option value="1" {% if inst.is_vnc %}selected{% endif %}>True</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="form-group">
|
||||||
<form class="form-horizontal" method="post" action="" role="form">{% csrf_token %}
|
<label class="col-sm-4 control-label">{% trans "Resize" %}</label>
|
||||||
<input type="hidden" name="user_inst" value="{{ inst.id }}">
|
<div class="col-sm-6">
|
||||||
<div class="form-group">
|
<select type="text" class="form-control" name="inst_change">
|
||||||
<label class="col-sm-4 control-label">{% trans "VNC" %}</label>
|
<option value="">False</option>
|
||||||
<div class="col-sm-6">
|
<option value="1" {% if inst.is_change %}selected{% endif %}>True</option>
|
||||||
<select type="text" class="form-control" name="inst_vnc">
|
</select>
|
||||||
<option value="">False</option>
|
</div>
|
||||||
<option value="1" {% if inst.is_vnc %}selected{% endif %}>True</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Resize" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<select type="text" class="form-control" name="inst_change">
|
|
||||||
<option value="">False</option>
|
|
||||||
<option value="1" {% if inst.is_change %}selected{% endif %}>True</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Delete" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<select type="text" class="form-control" name="inst_delete">
|
|
||||||
<option value="">False</option>
|
|
||||||
<option value="1" {% if inst.is_delete %}selected{% endif %}>True</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="form-group">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
<label class="col-sm-4 control-label">{% trans "Delete" %}</label>
|
||||||
<button type="submit" class="btn btn-primary" name="permission">{% trans "Edit" %}</button>
|
<div class="col-sm-6">
|
||||||
|
<select type="text" class="form-control" name="inst_delete">
|
||||||
|
<option value="">False</option>
|
||||||
|
<option value="1" {% if inst.is_delete %}selected{% endif %}>True</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</div>
|
||||||
</div> <!-- /.modal-content -->
|
<div class="modal-footer">
|
||||||
</div> <!-- /.modal-dialog -->
|
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
||||||
</div> <!-- /.modal -->
|
<button type="submit" class="btn btn-primary" name="permission">{% trans "Edit" %}</button>
|
||||||
</td>
|
</div>
|
||||||
<td style="width:5px;">
|
</form>
|
||||||
<form action="" method="post" role="form">{% csrf_token %}
|
</div> <!-- /.modal-content -->
|
||||||
<input type="hidden" name="user_inst" value="{{ inst.id }}">
|
</div> <!-- /.modal-dialog -->
|
||||||
<button type="submit" class="btn btn-xs btn-default" name="delete" tittle="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
</div> <!-- /.modal -->
|
||||||
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
|
</td>
|
||||||
</button>
|
<td style="width:5px;">
|
||||||
</form>
|
<form action="" method="post" role="form">{% csrf_token %}
|
||||||
</td>
|
<input type="hidden" name="user_inst" value="{{ inst.id }}">
|
||||||
</tr>
|
<button type="submit" class="btn btn-xs btn-default" name="delete" tittle="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
{% endfor %}
|
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
|
||||||
</tbody>
|
</button>
|
||||||
</table>
|
</form>
|
||||||
</div>
|
</td>
|
||||||
{% endif %}
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -30,11 +30,11 @@
|
||||||
<table class="table table-striped table-hover">
|
<table class="table table-striped table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Username</th>
|
<th>{% trans "Username" %}</th>
|
||||||
<th>Status</th>
|
<th>{% trans "Status" %}</th>
|
||||||
<th>Staff</th>
|
<th>{% trans "Staff" %}</th>
|
||||||
<th>Superuser</th>
|
<th>{% trans "Superuser" %}</th>
|
||||||
<th>Clone</th>
|
<th>{% trans "Clone" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="searchable">
|
<tbody class="searchable">
|
||||||
|
|
|
@ -2,251 +2,250 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block title %}{% trans "Computes" %}{% endblock %}
|
{% block title %}{% trans "Computes" %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% include 'create_comp_block.html' %}
|
{% include 'create_comp_block.html' %}
|
||||||
<h1 class="page-header">{% trans "Computes" %}</h1>
|
<h1 class="page-header">{% trans "Computes" %}</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
<!-- /.row -->
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{% if computes_info %}
|
{% if computes_info %}
|
||||||
{% for compute in computes_info %}
|
{% for compute in computes_info %}
|
||||||
<div id="{{ compute.name }}" class="col-xs-12 col-sm-4">
|
<div id="{{ compute.name }}" class="col-xs-12 col-sm-4">
|
||||||
<div class="panel {% if compute.status %}panel-success{% else %}panel-danger{% endif %} panel-data">
|
<div class="panel {% if compute.status %}panel-success{% else %}panel-danger{% endif %} panel-data">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
{% ifequal compute.status 1 %}
|
{% ifequal compute.status 1 %}
|
||||||
<h3 class="panel-title">
|
<h3 class="panel-title">
|
||||||
<a href="{% url 'overview' compute.id %}"><strong>{{ compute.name }}</strong></a>
|
<a href="{% url 'overview' compute.id %}"><strong>{{ compute.name }}</strong></a>
|
||||||
<a data-toggle="modal" href="#editHost{{ compute.id }}" class="pull-right" title="{% trans "Edit" %}">
|
<a data-toggle="modal" href="#editHost{{ compute.id }}" class="pull-right" title="{% trans "Edit" %}">
|
||||||
<i class="fa fa-cog"></i>
|
<i class="fa fa-cog"></i>
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h3 class="panel-title"><strong>{{ compute.name }}</strong>
|
<h3 class="panel-title"><strong>{{ compute.name }}</strong>
|
||||||
<a data-toggle="modal" href="#editHost{{ compute.id }}" class="pull-right" title="{% trans "Edit" %}">
|
<a data-toggle="modal" href="#editHost{{ compute.id }}" class="pull-right" title="{% trans "Edit" %}">
|
||||||
<span class="glyphicon glyphicon-cog"></span>
|
<span class="glyphicon glyphicon-cog"></span>
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-4 col-sm-4">
|
||||||
|
<p><strong>{% trans "Status" %}:</strong></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="col-xs-4 col-sm-6">
|
||||||
<div class="row">
|
{% if compute.status %}
|
||||||
<div class="col-xs-4 col-sm-4">
|
<p>{% trans "Connected" %}</p>
|
||||||
<p><strong>{% trans "Status:" %}</strong></p>
|
{% else %}
|
||||||
</div>
|
<p>{% trans "Not Connected" %}</p>
|
||||||
<div class="col-xs-4 col-sm-6">
|
{% endif %}
|
||||||
{% if compute.status %}
|
{% if compute.details %}
|
||||||
<p>{% trans "Connected" %}</p>
|
<p>{% trans compute.details %}</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p>{% trans "Not Connected" %}</p>
|
<p>{% trans "No details available" %}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if compute.details %}
|
|
||||||
<p>{% trans compute.details %}</p>
|
|
||||||
{% else %}
|
|
||||||
<p>{% trans "No details available" %}</p>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Modal Edit -->
|
|
||||||
<div class="modal fade" id="editHost{{ compute.id }}" tabindex="-1" role="dialog" aria-labelledby="editHostLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h4 class="modal-title">{% trans "Edit connection" %}</h4>
|
|
||||||
</div>
|
|
||||||
{% ifequal compute.type 1 %}
|
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
|
||||||
<div class="modal-body">
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Label" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="hidden" name="host_id" value="{{ compute.id }}">
|
|
||||||
<input type="text" name="name" class="form-control" value="{{ compute.name }}" maxlength="20" required pattern="[a-zA-Z0-9\.\-_]+">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "FQDN / IP" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="hostname" class="form-control" value="{{ compute.hostname }}" required pattern="[a-z0-9\.\-_]+">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Username" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="login" class="form-control" value="{{ compute.login }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Password" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="password" name="password" class="form-control" value="{{ compute.password }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Details" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="details" class="form-control" placeholder="Details" value="{{ compute.details }}">
|
|
||||||
</div>
|
|
||||||
</div></div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="submit" class="pull-left btn btn-danger" name="host_del">
|
|
||||||
{% trans "Delete" %}
|
|
||||||
</button>
|
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">
|
|
||||||
{% trans "Close" %}
|
|
||||||
</button>
|
|
||||||
<button type="submit" class="btn btn-primary" name="host_edit">
|
|
||||||
{% trans "Change" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal compute.type 2 %}
|
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
|
||||||
<div class="modal-body">
|
|
||||||
<p class="modal-body">{% trans "Need create ssh <a href='https://github.com/retspen/webvirtmgr/wiki/Setup-SSH-Authorization'>authorization key</a>. If you have another SSH port on your server, you can add IP:PORT like '192.168.1.1:2222'." %}</p>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Label" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="hidden" name="host_id" value="{{ compute.id }}">
|
|
||||||
<input type="text" name="name" class="form-control" value="{{ compute.name }}" maxlength="20" required pattern="[a-z0-9\.\-_]+">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "FQDN / IP" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="hostname" class="form-control" value="{{ compute.hostname }}" required pattern="[a-z0-9\:\.\-_]+">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Username" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="login" class="form-control" value="{{ compute.login }}">
|
|
||||||
<input type="hidden" name="password" value="{{ compute.password }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Details" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="details" class="form-control" placeholder="Details" value="{{ compute.details }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="submit" class="pull-left btn btn-danger" name="host_del">
|
|
||||||
{% trans "Delete" %}
|
|
||||||
</button>
|
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">
|
|
||||||
{% trans "Close" %}
|
|
||||||
</button>
|
|
||||||
<button type="submit" class="btn btn-primary" name="host_edit">
|
|
||||||
{% trans "Change" %}
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal compute.type 3 %}
|
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Label" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="hidden" name="host_id" value="{{ compute.id }}">
|
|
||||||
<input type="text" name="name" class="form-control" value="{{ compute.name }}" maxlength="20" required pattern="[a-z0-9\.\-_]+">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "FQDN / IP" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="hostname" class="form-control" value="{{ compute.hostname }}" required pattern="[a-z0-9\:\.\-_]+">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Username" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="login" class="form-control" placeholder="{% trans "Name" %}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Password" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="password" name="password" class="form-control" value="{{ compute.password }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Details" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="details" class="form-control" placeholder="Details" value="{{ compute.details }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="submit" class="pull-left btn btn-danger" name="host_del">
|
|
||||||
{% trans "Delete" %}
|
|
||||||
</button>
|
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">
|
|
||||||
{% trans "Close" %}
|
|
||||||
</button>
|
|
||||||
<button type="submit" class="btn btn-primary" name="host_edit">
|
|
||||||
{% trans "Change" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal compute.type 4 %}
|
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Label" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="hidden" name="host_id" value="{{ compute.id }}">
|
|
||||||
<input type="text" name="name" class="form-control" value="{{ compute.name }}" maxlength="20" required pattern="[a-z0-9\.\-_]+">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-4 control-label">{% trans "Details" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" name="details" class="form-control" placeholder="Details" value="{{ compute.details }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="submit" class="pull-left btn btn-danger" name="host_del">
|
|
||||||
{% trans "Delete" %}
|
|
||||||
</button>
|
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">
|
|
||||||
{% trans "Close" %}
|
|
||||||
</button>
|
|
||||||
<button type="submit" class="btn btn-primary" name="host_edit">
|
|
||||||
{% trans "Change" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% endifequal %}
|
|
||||||
</div><!-- /.modal-content -->
|
|
||||||
</div><!-- /.modal-dialog -->
|
|
||||||
</div><!-- /.modal -->
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Modal Edit -->
|
||||||
|
<div class="modal fade" id="editHost{{ compute.id }}" tabindex="-1" role="dialog" aria-labelledby="editHostLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
<h4 class="modal-title">{% trans "Edit connection" %}</h4>
|
||||||
|
</div>
|
||||||
|
{% ifequal compute.type 1 %}
|
||||||
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
|
<div class="modal-body">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Label" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="hidden" name="host_id" value="{{ compute.id }}">
|
||||||
|
<input type="text" name="name" class="form-control" value="{{ compute.name }}" maxlength="20" required pattern="[a-zA-Z0-9\.\-_]+">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "FQDN / IP" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="hostname" class="form-control" value="{{ compute.hostname }}" required pattern="[a-z0-9\.\-_]+">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Username" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="login" class="form-control" value="{{ compute.login }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Password" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="password" name="password" class="form-control" value="{{ compute.password }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Details" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="details" class="form-control" placeholder="Details" value="{{ compute.details }}">
|
||||||
|
</div>
|
||||||
|
</div></div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="pull-left btn btn-danger" name="host_del">
|
||||||
|
{% trans "Delete" %}
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">
|
||||||
|
{% trans "Close" %}
|
||||||
|
</button>
|
||||||
|
<button type="submit" class="btn btn-primary" name="host_edit">
|
||||||
|
{% trans "Change" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal compute.type 2 %}
|
||||||
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
|
<div class="modal-body">
|
||||||
|
<p class="modal-body">{% trans "Need create ssh <a href='https://github.com/retspen/webvirtmgr/wiki/Setup-SSH-Authorization'>authorization key</a>. If you have another SSH port on your server, you can add IP:PORT like '192.168.1.1:2222'." %}</p>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Label" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="hidden" name="host_id" value="{{ compute.id }}">
|
||||||
|
<input type="text" name="name" class="form-control" value="{{ compute.name }}" maxlength="20" required pattern="[a-z0-9\.\-_]+">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "FQDN / IP" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="hostname" class="form-control" value="{{ compute.hostname }}" required pattern="[a-z0-9\:\.\-_]+">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Username" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="login" class="form-control" value="{{ compute.login }}">
|
||||||
|
<input type="hidden" name="password" value="{{ compute.password }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Details" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="details" class="form-control" placeholder="Details" value="{{ compute.details }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="pull-left btn btn-danger" name="host_del">
|
||||||
|
{% trans "Delete" %}
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">
|
||||||
|
{% trans "Close" %}
|
||||||
|
</button>
|
||||||
|
<button type="submit" class="btn btn-primary" name="host_edit">
|
||||||
|
{% trans "Change" %}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal compute.type 3 %}
|
||||||
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Label" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="hidden" name="host_id" value="{{ compute.id }}">
|
||||||
|
<input type="text" name="name" class="form-control" value="{{ compute.name }}" maxlength="20" required pattern="[a-z0-9\.\-_]+">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "FQDN / IP" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="hostname" class="form-control" value="{{ compute.hostname }}" required pattern="[a-z0-9\:\.\-_]+">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Username" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="login" class="form-control" placeholder="{% trans "Name" %}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Password" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="password" name="password" class="form-control" value="{{ compute.password }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Details" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="details" class="form-control" placeholder="Details" value="{{ compute.details }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="pull-left btn btn-danger" name="host_del">
|
||||||
|
{% trans "Delete" %}
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">
|
||||||
|
{% trans "Close" %}
|
||||||
|
</button>
|
||||||
|
<button type="submit" class="btn btn-primary" name="host_edit">
|
||||||
|
{% trans "Change" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal compute.type 4 %}
|
||||||
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Label" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="hidden" name="host_id" value="{{ compute.id }}">
|
||||||
|
<input type="text" name="name" class="form-control" value="{{ compute.name }}" maxlength="20" required pattern="[a-z0-9\.\-_]+">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-4 control-label">{% trans "Details" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="details" class="form-control" placeholder="Details" value="{{ compute.details }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="pull-left btn btn-danger" name="host_del">
|
||||||
|
{% trans "Delete" %}
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">
|
||||||
|
{% trans "Close" %}
|
||||||
|
</button>
|
||||||
|
<button type="submit" class="btn btn-primary" name="host_edit">
|
||||||
|
{% trans "Change" %}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{% endifequal %}
|
||||||
|
</div><!-- /.modal-content -->
|
||||||
|
</div><!-- /.modal-dialog -->
|
||||||
|
</div><!-- /.modal -->
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
</div>
|
||||||
{% else %}
|
</div>
|
||||||
<div class="col-lg-12">
|
{% endfor %}
|
||||||
<div class="alert alert-warning alert-dismissable">
|
{% else %}
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
<div class="col-lg-12">
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any Computes" %}
|
<div class="alert alert-warning alert-dismissable">
|
||||||
</div>
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
</div>
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning" %}:</strong> {% trans "Hypervisor doesn't have any Computes" %}
|
||||||
{% endif %}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -3,107 +3,107 @@
|
||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
{% block title %}{% trans "Overview" %} - {{ compute.name }}{% endblock %}
|
{% block title %}{% trans "Overview" %} - {{ compute.name }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<h1 class="page-header">{{ compute.name }}</h1>
|
<h1 class="page-header">{{ compute.name }}</h1>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<i class="fa fa-dashboard"></i> {% trans "Overview" %}
|
<i class="fa fa-dashboard"></i> {% trans "Overview" %}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
<!-- /.row -->
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
<div class="row" id="max-width-page">
|
<div class="row" id="max-width-page">
|
||||||
<h3 class="page-header">{% trans "Basic details" %}</h3>
|
<h3 class="page-header">{% trans "Basic details" %}</h3>
|
||||||
<div class="col-xs-4 col-sm-3">
|
<div class="col-xs-4 col-sm-3">
|
||||||
<p>{% trans "Hostname" %}</p>
|
<p>{% trans "Hostname" %}</p>
|
||||||
<p>{% trans "Hypervisors" %}</p>
|
<p>{% trans "Hypervisors" %}</p>
|
||||||
<p>{% trans "Emulator" %}</p>
|
<p>{% trans "Emulator" %}</p>
|
||||||
<p>{% trans "Version" %}</p>
|
<p>{% trans "Version" %}</p>
|
||||||
<p>{% trans "Memory" %}</p>
|
<p>{% trans "Memory" %}</p>
|
||||||
<p>{% trans "Architecture" %}</p>
|
<p>{% trans "Architecture" %}</p>
|
||||||
<p>{% trans "Logical CPUs" %}</p>
|
<p>{% trans "Logical CPUs" %}</p>
|
||||||
<p>{% trans "Processor" %}</p>
|
<p>{% trans "Processor" %}</p>
|
||||||
<p>{% trans "Connection" %}</p>
|
<p>{% trans "Connection" %}</p>
|
||||||
<p>{% trans "Details" %}</p>
|
<p>{% trans "Details" %}</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-8 col-sm-9">
|
||||||
|
<p>{{ hostname }}</p>
|
||||||
|
<p>{% for arch, hpv in hypervisor.items %}
|
||||||
|
<span class="glyphicon glyphicon-chevron-right"></span>
|
||||||
|
<span class="label label-default">{{ arch }}</span>
|
||||||
|
{% for h in hpv %}
|
||||||
|
<span class="label label-primary">{{ h }}</span>
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</p>
|
||||||
|
<p>{{ emulator }}</p>
|
||||||
|
<p>
|
||||||
|
<span class="label label-default">Qemu</span>
|
||||||
|
<span class="label label-primary">{{ version }}</span>
|
||||||
|
<span class="label label-default">Libvirt</span>
|
||||||
|
<span class="label label-primary">{{ lib_version }}</span>
|
||||||
|
</p>
|
||||||
|
<p>{{ host_memory|filesizeformat }}</p>
|
||||||
|
<p>{{ host_arch }}</p>
|
||||||
|
<p>{{ logical_cpu }}</p>
|
||||||
|
<p>{{ model_cpu }}</p>
|
||||||
|
<p>{{ uri_conn }}</p>
|
||||||
|
<p>{{ compute.details }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h3 class="page-header">{% trans "Performance" %}</h3>
|
||||||
|
<div class="panel panel-success">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> {% trans "CPU Utilization" %}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-8 col-sm-9">
|
<div class="panel-body">
|
||||||
<p>{{ hostname }}</p>
|
<div class="flot-chart">
|
||||||
<p>{% for arch, hpv in hypervisor.items %}
|
<div class="flot-chart-content" id="flot-moving-line-chart" style="padding: 0px; position: relative;">
|
||||||
<span class="glyphicon glyphicon-chevron-right"></span>
|
<canvas id="cpuChart" width="735" height="160"></canvas>
|
||||||
<span class="label label-default">{{ arch }}</span>
|
|
||||||
{% for h in hpv %}
|
|
||||||
<span class="label label-primary">{{ h }}</span>
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
</p>
|
|
||||||
<p>{{ emulator }}</p>
|
|
||||||
<p>
|
|
||||||
<span class="label label-default">{% trans 'Qemu' %} </span>
|
|
||||||
<span class="label label-primary">{{ version }}</span>
|
|
||||||
<span class="label label-default">{% trans 'Libvirt' %} </span>
|
|
||||||
<span class="label label-primary">{{ lib_version }}</span>
|
|
||||||
</p>
|
|
||||||
<p>{{ host_memory|filesizeformat }}</p>
|
|
||||||
<p>{{ host_arch }}</p>
|
|
||||||
<p>{{ logical_cpu }}</p>
|
|
||||||
<p>{{ model_cpu }}</p>
|
|
||||||
<p>{{ uri_conn }}</p>
|
|
||||||
<p>{{ compute.details }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h3 class="page-header">{% trans "Performance" %}</h3>
|
|
||||||
<div class="panel panel-success">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> {% trans "CPU Utilization" %}</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="flot-chart">
|
|
||||||
<div class="flot-chart-content" id="flot-moving-line-chart" style="padding: 0px; position: relative;">
|
|
||||||
<canvas id="cpuChart" width="735" height="160"></canvas>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel panel-info">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> {% trans "RAM Utilization" %}</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="flot-chart">
|
|
||||||
<div class="flot-chart-content" id="flot-moving-line-chart" style="padding: 0px; position: relative;">
|
|
||||||
<canvas id="memChart" width="735" height="160"></canvas>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="panel panel-info">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> {% trans "RAM Utilization" %}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="flot-chart">
|
||||||
|
<div class="flot-chart-content" id="flot-moving-line-chart" style="padding: 0px; position: relative;">
|
||||||
|
<canvas id="memChart" width="735" height="160"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script src="{% static "js/Chart.bundle.min.js" %}"></script>
|
<script src="{% static "js/Chart.bundle.min.js" %}"></script>
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "Name" %}</label>
|
<label class="col-sm-3 control-label">{% trans "Name" %}</label>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="text" name="label" class="form-control" placeholder="Micro" maxlength="20"
|
<input type="text" name="label" class="form-control" placeholder="Micro" maxlength="20"
|
||||||
required pattern="[a-zA-Z0-9]+">
|
required pattern="[a-zA-Z0-9]+">
|
||||||
|
@ -25,7 +24,6 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "VCPU" %}</label>
|
<label class="col-sm-3 control-label">{% trans "VCPU" %}</label>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="text" class="form-control" name="vcpu" value="1" maxlength="1" required
|
<input type="text" class="form-control" name="vcpu" value="1" maxlength="1" required
|
||||||
pattern="[0-9]">
|
pattern="[0-9]">
|
||||||
|
@ -33,7 +31,6 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "RAM" %}</label>
|
<label class="col-sm-3 control-label">{% trans "RAM" %}</label>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="text" class="form-control" name="memory" value="512" maxlength="5" required
|
<input type="text" class="form-control" name="memory" value="512" maxlength="5" required
|
||||||
pattern="[0-9]+">
|
pattern="[0-9]+">
|
||||||
|
@ -42,7 +39,6 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "HDD" %}</label>
|
<label class="col-sm-3 control-label">{% trans "HDD" %}</label>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input type="text" class="form-control" name="disk" value="10" maxlength="3" required
|
<input type="text" class="form-control" name="disk" value="10" maxlength="3" required
|
||||||
pattern="[0-9]+">
|
pattern="[0-9]+">
|
||||||
|
|
|
@ -224,7 +224,7 @@
|
||||||
<button class="btn btn-primary disabled">{% trans "Create" %}</button>
|
<button class="btn btn-primary disabled">{% trans "Create" %}</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -436,7 +436,6 @@
|
||||||
</div>
|
</div>
|
||||||
<label class="col-sm-1 control-label">{% trans "MB" %}</label>
|
<label class="col-sm-1 control-label">{% trans "MB" %}</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "HDD" %}</label>
|
<label class="col-sm-3 control-label">{% trans "HDD" %}</label>
|
||||||
<input id="images" name="images" type="hidden" value=""/>
|
<input id="images" name="images" type="hidden" value=""/>
|
||||||
|
@ -582,8 +581,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div><!-- /Tab panes -->
|
||||||
<!-- /Tab panes -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -607,7 +605,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
|
||||||
$('#image-control').multiselect({
|
$('#image-control').multiselect({
|
||||||
disableIfEmpty: true,
|
disableIfEmpty: true,
|
||||||
enableCaseInsensitiveFiltering: true,
|
enableCaseInsensitiveFiltering: true,
|
||||||
|
@ -716,7 +713,6 @@
|
||||||
|
|
||||||
function get_disk_bus_choices(compute_id, dev_idx, disk_type){
|
function get_disk_bus_choices(compute_id, dev_idx, disk_type){
|
||||||
get_diskBus_url = "/computes/" + compute_id + "/disk/" + disk_type + "/buses";
|
get_diskBus_url = "/computes/" + compute_id + "/disk/" + disk_type + "/buses";
|
||||||
|
|
||||||
$.getJSON(get_diskBus_url, function (data) {
|
$.getJSON(get_diskBus_url, function (data) {
|
||||||
$("#bus" + dev_idx).find('option').remove();
|
$("#bus" + dev_idx).find('option').remove();
|
||||||
$.each(data['bus'], function(i, item) {
|
$.each(data['bus'], function(i, item) {
|
||||||
|
|
|
@ -1,121 +1,62 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% if request.user.is_superuser %}
|
{% if request.user.is_superuser %}
|
||||||
<a href="#addvol" type="button" class="btn btn-success pull-right" data-toggle="modal" title="Add Volume">
|
<a href="#addvol" type="button" class="btn btn-success pull-right" data-toggle="modal" title="Add Volume">
|
||||||
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!-- Modal pool -->
|
<!-- Modal pool -->
|
||||||
<div class="modal fade" id="addvol" tabindex="-1" role="dialog" aria-labelledby="addInstanceVolumeLabel" aria-hidden="true">
|
<div class="modal fade" id="addvol" tabindex="-1" role="dialog" aria-labelledby="addInstanceVolumeLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">{% trans "Add Instance Volume" %}</h4>
|
<h4 class="modal-title">{% trans "Add Instance Volume" %}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
<li role="presentation" class="active"><a href="#NewDisk" data-toggle="tab">{% trans 'New Disk' %}</a></li>
|
<li role="presentation" class="active"><a href="#NewDisk" data-toggle="tab">{% trans 'New Disk' %}</a></li>
|
||||||
<li role="presentation"><a href="#ExistingDisk" data-toggle="tab">{% trans 'Existing Disk' %}</a></li>
|
<li role="presentation"><a href="#ExistingDisk" data-toggle="tab">{% trans 'Existing Disk' %}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
<div class="tab-pane active" id="NewDisk">
|
<div class="tab-pane active" id="NewDisk">
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
|
|
||||||
<p style="font-weight:bold;">{% trans "Volume parameters" %}</p>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Storage" %}</label>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<select name="storage" class="form-control image-format">
|
|
||||||
{% for storage in storages %}
|
|
||||||
<option value="{{ storage }}">{{ storage }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Name" %}</label>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Format" %}</label>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<select name="format" class="form-control image-format">
|
|
||||||
{% for format in formats %}
|
|
||||||
<option value="{{ format }}" {% if format == default_format %}selected{% endif %}>{% trans format %}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Size" %}</label>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<input type="text" class="form-control" name="size" value="10" maxlength="5" required pattern="[0-9]+">
|
|
||||||
</div>
|
|
||||||
<label class="col-sm-1 control-label">{% trans "GB" %}</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Bus" %}</label>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<select name="bus" class="form-control image-format">
|
|
||||||
{% for bus in busses %}
|
|
||||||
<option value="{{ bus }}" {% if bus == default_bus %}selected{% endif %}>{% trans bus %}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Cache" %}</label>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<select name="cache" class="form-control image-format">
|
|
||||||
{% for mode, name in cache_modes %}
|
|
||||||
<option value="{{ mode }}" {% if mode == default_cache %}selected{% endif %}>{% trans name %}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group meta-prealloc">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Metadata" %}</label>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<input type="checkbox" name="meta_prealloc" value="true">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="submit" class="btn btn-lg btn-success pull-right" name="add_new_vol">{% trans "Add Volume" %}</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="ExistingDisk">
|
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
|
||||||
<div class="modal-body">
|
|
||||||
<p style="font-weight:bold;">{% trans "Volume parameters" %}</p>
|
<p style="font-weight:bold;">{% trans "Volume parameters" %}</p>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "Storage" %}</label>
|
<label class="col-sm-3 control-label">{% trans "Storage" %}</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<div class="dropdown">
|
<select name="storage" class="form-control image-format">
|
||||||
<button id="select_storage" class="btn btn-default dropdown-toggle form-control" type="button" data-toggle="dropdown">{% trans 'Select Pool...' %}
|
{% for storage in storages %}
|
||||||
<span class="caret"></span></button>
|
<option value="{{ storage }}">{{ storage }}</option>
|
||||||
<ul class="dropdown-menu">
|
{% endfor %}
|
||||||
{% for storage in storages %}
|
</select>
|
||||||
<li><a href="#" onclick="get_volumes({{ compute_id }}, '{{ storage }}')">{{ storage }}</a></li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
<input id="selected_storage" name="selected_storage" hidden/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label" >{% trans "Volume" %}</label>
|
<label class="col-sm-3 control-label">{% trans "Name" %}</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<select id="vols" name="vols" class="form-control" disabled>
|
<input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+">
|
||||||
<option value="" selected>{% trans 'None' %}</option>
|
</div>
|
||||||
<!-- populate with javascript -->
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Format" %}</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<select name="format" class="form-control image-format">
|
||||||
|
{% for format in formats %}
|
||||||
|
<option value="{{ format }}" {% if format == default_format %}selected{% endif %}>{% trans format %}</option>
|
||||||
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Size" %}</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="text" class="form-control" name="size" value="10" maxlength="5" required pattern="[0-9]+">
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-1 control-label">{% trans "GB" %}</label>
|
||||||
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "Bus" %}</label>
|
<label class="col-sm-3 control-label">{% trans "Bus" %}</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
|
@ -136,16 +77,75 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group meta-prealloc">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Metadata" %}</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="checkbox" name="meta_prealloc" value="true">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="btn btn-lg btn-success pull-right" name="add_new_vol">{% trans "Add Volume" %}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="tab-pane" id="ExistingDisk">
|
||||||
<button type="submit" class="btn btn-lg btn-success pull-right" name="add_existing_vol">{% trans "Add Volume" %}</button>
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
|
<div class="modal-body">
|
||||||
|
<p style="font-weight:bold;">{% trans "Volume parameters" %}</p>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Storage" %}</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<div class="dropdown">
|
||||||
|
<button id="select_storage" class="btn btn-default dropdown-toggle form-control" type="button" data-toggle="dropdown">{% trans 'Select Pool...' %}
|
||||||
|
<span class="caret"></span></button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
{% for storage in storages %}
|
||||||
|
<li><a href="#" onclick="get_volumes({{ compute_id }}, '{{ storage }}')">{{ storage }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
<input id="selected_storage" name="selected_storage" hidden/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label" >{% trans "Volume" %}</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<select id="vols" name="vols" class="form-control" disabled>
|
||||||
|
<option value="" selected>{% trans 'None' %}</option>
|
||||||
|
<!-- populate with javascript -->
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Bus" %}</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<select name="bus" class="form-control image-format">
|
||||||
|
{% for bus in busses %}
|
||||||
|
<option value="{{ bus }}" {% if bus == default_bus %}selected{% endif %}>{% trans bus %}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Cache" %}</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<select name="cache" class="form-control image-format">
|
||||||
|
{% for mode, name in cache_modes %}
|
||||||
|
<option value="{{ mode }}" {% if mode == default_cache %}selected{% endif %}>{% trans name %}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="btn btn-lg btn-success pull-right" name="add_existing_vol">{% trans "Add Volume" %}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> <!-- row -->
|
||||||
</div> <!-- row -->
|
</div> <!-- /.modal-body -->
|
||||||
</div> <!-- /.modal-body -->
|
</div> <!-- /.modal-content -->
|
||||||
</div> <!-- /.modal-content -->
|
</div> <!-- /.modal-dialog -->
|
||||||
</div> <!-- /.modal-dialog -->
|
</div> <!-- /.modal -->
|
||||||
</div> <!-- /.modal -->
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -6,140 +6,140 @@
|
||||||
<link rel="stylesheet" href="{% static "css/sortable-theme-bootstrap.css" %}" />
|
<link rel="stylesheet" href="{% static "css/sortable-theme-bootstrap.css" %}" />
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% if request.user.is_superuser %}
|
{% if request.user.is_superuser %}
|
||||||
{% include 'create_inst_block.html' %}
|
{% include 'create_inst_block.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if all_host_vms or all_user_vms %}
|
{% if all_host_vms or all_user_vms %}
|
||||||
<div class="pull-right search">
|
<div class="pull-right search">
|
||||||
<input id="filter" class="form-control" type="text" placeholder="Search">
|
<input id="filter" class="form-control" type="text" placeholder="Search">
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<h1 class="page-header">{% trans "Instances" %}</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
|
||||||
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="table-responsive">
|
||||||
|
{% if request.user.is_superuser %}
|
||||||
|
{% if not all_host_vms %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="alert alert-warning alert-dismissable">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "You don't have any Instance" %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
<h1 class="page-header">{% trans "Instances" %}</h1>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="table-responsive">
|
|
||||||
{% if request.user.is_superuser %}
|
|
||||||
{% if not all_host_vms %}
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="alert alert-warning alert-dismissable">
|
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "You don't have any Instance" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
{% ifequal view_style "nongrouped" %}
|
|
||||||
{% include 'allinstances_index_nongrouped.html' %}
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal view_style "grouped" %}
|
|
||||||
{% include 'allinstances_index_grouped.html' %}
|
|
||||||
{% endifequal %}
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
{% if not all_user_vms %}
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="alert alert-warning alert-dismissable">
|
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "You don't have any Instance" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<table class="table table-hover table-striped sortable-theme-bootstrap" data-sortable>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>{% trans 'Name' %}</th>
|
|
||||||
<th>{% trans 'Status' %}</th>
|
|
||||||
<th>{% trans 'VCPU' %}</th>
|
|
||||||
<th>{% trans 'Memory' %}</th>
|
|
||||||
<th data-sortable="false" style="width: 165px;">{% trans 'Actions' %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="searchable">
|
|
||||||
{% for inst, vm in all_user_vms.items %}
|
|
||||||
<tr>
|
|
||||||
<td><a href="{% url 'instance' vm.compute_id vm.name %}">{{ vm.name }}</a><br><small><em>{{ vm.title }}</em></small></td>
|
|
||||||
<td>{% ifequal vm.status 1 %}
|
|
||||||
<span class="text-success">{% trans "Active" %}</span>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal vm.status 5 %}
|
|
||||||
<span class="text-danger">{% trans "Off" %}</span>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal vm.status 3 %}
|
|
||||||
<span class="text-warning">{% trans "Suspend" %}</span>
|
|
||||||
{% endifequal %}
|
|
||||||
</td>
|
|
||||||
<td>{{ vm.vcpu }}</td>
|
|
||||||
<td>{{ vm.memory }} {% trans "MB" %}</td>
|
|
||||||
<td><form action="" method="post" role="form">{% csrf_token %}
|
|
||||||
<input type="hidden" name="name" value="{{ vm.name }}"/>
|
|
||||||
<input type="hidden" name="compute_id" value="{{ vm.compute_id }}"/>
|
|
||||||
{% ifequal vm.status 5 %}
|
|
||||||
{% if inst.instance.is_template %}
|
|
||||||
<button class="btn btn-sm btn-default" type="button" name="clone" title="{% trans "Clone" %}" onclick="goto_instance_clone({{ vm.compute_id }}, '{{ vm.name }}');">
|
|
||||||
<span class="glyphicon glyphicon-duplicate"></span>
|
|
||||||
</button>
|
|
||||||
{% else %}
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="poweron" title="{% trans "Power On" %}">
|
|
||||||
<span class="glyphicon glyphicon-play"></span>
|
|
||||||
</button>
|
|
||||||
{% endif %}
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Off" %}">
|
|
||||||
<span class="glyphicon glyphicon-off"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Cycle" %}">
|
|
||||||
<span class="glyphicon glyphicon-refresh"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "VNC Console" %}">
|
|
||||||
<span class="glyphicon glyphicon-eye-open"></span>
|
|
||||||
</button>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal vm.status 3 %}
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power On" %}">
|
|
||||||
<span class="glyphicon glyphicon-play"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Off" %}">
|
|
||||||
<span class="glyphicon glyphicon-off"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Cycle" %}">
|
|
||||||
<span class="glyphicon glyphicon-refresh"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "VNC/Spice Console" %}">
|
|
||||||
<span class="glyphicon glyphicon-eye-open"></span>
|
|
||||||
</button>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal vm.status 1 %}
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power On" %}">
|
|
||||||
<span class="glyphicon glyphicon-play"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="poweroff" title="{% trans "Power Off" %}">
|
|
||||||
<span class="glyphicon glyphicon-off"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="powercycle" title="{% trans "Power Cycle" %}" onclick="return confirm('Are you sure?')">
|
|
||||||
<span class="glyphicon glyphicon-refresh"></span>
|
|
||||||
</button>
|
|
||||||
<a href="#" class="btn btn-sm btn-default" onclick='open_console("{{ vm.compute_id }}-{{ vm.uuid }}")' title="{% trans "Console" %}">
|
|
||||||
<span class="glyphicon glyphicon-eye-open"></span>
|
|
||||||
</a>
|
|
||||||
{% endifequal %}
|
|
||||||
</form>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% else %}
|
||||||
</div>
|
{% ifequal view_style "nongrouped" %}
|
||||||
|
{% include 'allinstances_index_nongrouped.html' %}
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal view_style "grouped" %}
|
||||||
|
{% include 'allinstances_index_grouped.html' %}
|
||||||
|
{% endifequal %}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% if not all_user_vms %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="alert alert-warning alert-dismissable">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning" %}:</strong> {% trans "You don't have any Instance" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<table class="table table-hover table-striped sortable-theme-bootstrap" data-sortable>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{% trans 'Name' %}</th>
|
||||||
|
<th>{% trans 'Status' %}</th>
|
||||||
|
<th>{% trans 'VCPU' %}</th>
|
||||||
|
<th>{% trans 'Memory' %}</th>
|
||||||
|
<th data-sortable="false" style="width: 165px;">{% trans 'Actions' %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="searchable">
|
||||||
|
{% for inst, vm in all_user_vms.items %}
|
||||||
|
<tr>
|
||||||
|
<td><a href="{% url 'instance' vm.compute_id vm.name %}">{{ vm.name }}</a><br><small><em>{{ vm.title }}</em></small></td>
|
||||||
|
<td>{% ifequal vm.status 1 %}
|
||||||
|
<span class="text-success">{% trans "Active" %}</span>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal vm.status 5 %}
|
||||||
|
<span class="text-danger">{% trans "Off" %}</span>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal vm.status 3 %}
|
||||||
|
<span class="text-warning">{% trans "Suspend" %}</span>
|
||||||
|
{% endifequal %}
|
||||||
|
</td>
|
||||||
|
<td>{{ vm.vcpu }}</td>
|
||||||
|
<td>{{ vm.memory }} {% trans "MB" %}</td>
|
||||||
|
<td><form action="" method="post" role="form">{% csrf_token %}
|
||||||
|
<input type="hidden" name="name" value="{{ vm.name }}"/>
|
||||||
|
<input type="hidden" name="compute_id" value="{{ vm.compute_id }}"/>
|
||||||
|
{% ifequal vm.status 5 %}
|
||||||
|
{% if inst.instance.is_template %}
|
||||||
|
<button class="btn btn-sm btn-default" type="button" name="clone" title="{% trans "Clone" %}" onclick="goto_instance_clone({{ vm.compute_id }}, '{{ vm.name }}');">
|
||||||
|
<span class="glyphicon glyphicon-duplicate"></span>
|
||||||
|
</button>
|
||||||
|
{% else %}
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="poweron" title="{% trans "Power On" %}">
|
||||||
|
<span class="glyphicon glyphicon-play"></span>
|
||||||
|
</button>
|
||||||
|
{% endif %}
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Off" %}">
|
||||||
|
<span class="glyphicon glyphicon-off"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Cycle" %}">
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "VNC Console" %}">
|
||||||
|
<span class="glyphicon glyphicon-eye-open"></span>
|
||||||
|
</button>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal vm.status 3 %}
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power On" %}">
|
||||||
|
<span class="glyphicon glyphicon-play"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Off" %}">
|
||||||
|
<span class="glyphicon glyphicon-off"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Cycle" %}">
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "VNC/Spice Console" %}">
|
||||||
|
<span class="glyphicon glyphicon-eye-open"></span>
|
||||||
|
</button>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal vm.status 1 %}
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power On" %}">
|
||||||
|
<span class="glyphicon glyphicon-play"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="poweroff" title="{% trans "Power Off" %}">
|
||||||
|
<span class="glyphicon glyphicon-off"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="powercycle" title="{% trans "Power Cycle" %}" onclick="return confirm('Are you sure?')">
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span>
|
||||||
|
</button>
|
||||||
|
<a href="#" class="btn btn-sm btn-default" onclick='open_console("{{ vm.compute_id }}-{{ vm.uuid }}")' title="{% trans "Console" %}">
|
||||||
|
<span class="glyphicon glyphicon-eye-open"></span>
|
||||||
|
</a>
|
||||||
|
{% endifequal %}
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script src="{% static "js/sortable.min.js" %}"></script>
|
<script src="{% static "js/sortable.min.js" %}"></script>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th><a href="#" id="hide_all_instances" onclick="hide_all_host_instances()">#</a> </th>
|
<th><a href="#" id="hide_all_instances" onclick="hide_all_host_instances()">#</a> </th>
|
||||||
<th>{% trans "Name" %}<br>{% trans "Description" %}</th></th>
|
<th>{% trans "Name" %}<br>{% trans "Description" %}</th>
|
||||||
<th>{% trans "User"%}</th>
|
<th>{% trans "User"%}</th>
|
||||||
<th>{% trans "Status" %}</th>
|
<th>{% trans "Status" %}</th>
|
||||||
<th>{% trans "VCPU" %}</th>
|
<th>{% trans "VCPU" %}</th>
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
<table class="table table-hover table-striped sortable-theme-bootstrap" data-sortable>
|
<table class="table table-hover table-striped sortable-theme-bootstrap" data-sortable>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name<br>Description</th>
|
<th>{% trans "Name" %}<br>{% trans "Description" %}</th>
|
||||||
<th>Host<br>User</th>
|
<th>{% trans "Host" %}<br>{% trans "User"%}</th>
|
||||||
<th>Status</th>
|
<th>{% trans "Status" %}</th>
|
||||||
<th>VCPU</th>
|
<th>{% trans "VCPU" %}</th>
|
||||||
<th>Memory</th>
|
<th>{% trans "Memory" %}</th>
|
||||||
<th data-sortable="false" style="width:205px;">{% trans "Actions" %}</th>
|
<th data-sortable="false" style="width:205px;">{% trans "Actions" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,156 +7,155 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% if request.user.is_superuser %}
|
{% if request.user.is_superuser %}
|
||||||
<a href="{% url 'create_instance' compute.id %}" type="button" class="btn btn-success btn-header pull-right" data-toggle="modal">
|
<a href="{% url 'create_instance' compute.id %}" type="button" class="btn btn-success btn-header pull-right" data-toggle="modal">
|
||||||
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if all_host_vms or all_user_vms %}
|
{% if all_host_vms or all_user_vms %}
|
||||||
<div class="pull-right search">
|
<div class="pull-right search">
|
||||||
<input id="filter" class="form-control" type="text" placeholder="Search">
|
<input id="filter" class="form-control" type="text" placeholder="Search">
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<h1 class="page-header">{{ compute.name }}</h1>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
{% endif %}
|
||||||
<div class="col-lg-12">
|
<h1 class="page-header">{{ compute.name }}</h1>
|
||||||
|
</div>
|
||||||
<ol class="breadcrumb">
|
</div>
|
||||||
<li class="active">
|
<div class="row">
|
||||||
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
<div class="col-lg-12">
|
||||||
</li>
|
<ol class="breadcrumb">
|
||||||
<li>
|
<li class="active">
|
||||||
<i class="fa fa-server"></i> {% trans "Instances" %}
|
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
<i class="fa fa-server"></i> {% trans "Instances" %}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
<li>
|
||||||
|
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
{% include 'errors_block.html' %}
|
||||||
|
<div class="row">
|
||||||
|
{% if not all_host_vms %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="alert alert-warning alert-dismissable">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning" %}:</strong> {% trans "Hypervisor doesn't have any instances" %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
{% else %}
|
||||||
|
<div class="col-lg-12">
|
||||||
{% include 'errors_block.html' %}
|
<table class="table table-hover table-striped sortable-theme-bootstrap" data-sortable>
|
||||||
<div class="row">
|
<thead>
|
||||||
{% if not all_host_vms %}
|
<tr>
|
||||||
<div class="col-lg-12">
|
<th>{% trans 'Name' %}<br>{% trans 'Description' %}</th>
|
||||||
<div class="alert alert-warning alert-dismissable">
|
<th>{% trans 'User' %}</th>
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
<th>{% trans 'Status' %}</th>
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any instances" %}
|
<th>{% trans 'VCPU' %}</th>
|
||||||
</div>
|
<th>{% trans 'Memory' %}</th>
|
||||||
</div>
|
<th data-sortable="false" style="width:205px;">{% trans 'Actions' %}</th>
|
||||||
{% else %}
|
</tr>
|
||||||
<div class="col-lg-12">
|
</thead>
|
||||||
<table class="table table-hover table-striped sortable-theme-bootstrap" data-sortable>
|
<tbody class="searchable">
|
||||||
<thead>
|
{% for host, inst in all_host_vms.items %}
|
||||||
|
{% for vm, info in inst.items %}
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% trans 'Name' %}<br>{% trans 'Description' %}</th>
|
<td><a href="{% url 'instance' host.0 vm %}">{{ vm }}</a><br><small><em>{{ info.title }}</em></small></td>
|
||||||
<th>{% trans 'Host' %}<br>{% trans 'User' %}</th>
|
<td><em>{% if info.userinstances.count > 0 %}{{ info.userinstances.first_user.user.username }}{% if info.userinstances.count > 1 %} (+{{ info.userinstances.count|add:"-1" }}){% endif %}{% endif %}</em></td>
|
||||||
<th>{% trans 'Status' %}</th>
|
<td>
|
||||||
<th>{% trans 'VCPU' %}</th>
|
{% ifequal info.status 1 %}<span class="text-success">{% trans "Active" %}</span>{% endifequal %}
|
||||||
<th>{% trans 'Memory' %}</th>
|
{% ifequal info.status 5 %}<span class="text-danger">{% trans "Off" %}</span>{% endifequal %}
|
||||||
<th data-sortable="false" style="width:205px;">{% trans 'Actions' %}</th>
|
{% ifequal info.status 3 %}<span class="text-warning">{% trans "Suspend" %}</span>{% endifequal %}
|
||||||
|
</td>
|
||||||
|
<td>{{ info.vcpu }}</td>
|
||||||
|
<td>{{ info.memory|filesizeformat }}</td>
|
||||||
|
<td>
|
||||||
|
<form action="" method="post" role="form">{% csrf_token %}
|
||||||
|
<input type="hidden" name="name" value="{{ vm }}"/>
|
||||||
|
<input type="hidden" name="compute_id" value="{{ host.0 }}"/>
|
||||||
|
{% ifequal info.status 5 %}
|
||||||
|
{% if info.is_template %}
|
||||||
|
<button class="btn btn-sm btn-default" type="button" name="clone" title="{% trans "Clone" %}" onclick="goto_instance_clone({{ host.0 }}, '{{ vm }}');">
|
||||||
|
<span class="glyphicon glyphicon-duplicate"></span>
|
||||||
|
</button>
|
||||||
|
{% else %}
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="poweron" title="{% trans "Power On" %}">
|
||||||
|
<span class="glyphicon glyphicon-play"></span>
|
||||||
|
</button>
|
||||||
|
{% endif %}
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Suspend" %}" disabled>
|
||||||
|
<span class="glyphicon glyphicon-pause"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Off" %}" disabled>
|
||||||
|
<span class="glyphicon glyphicon-off"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Cycle" %}" disabled>
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "VNC Console" %}" disabled>
|
||||||
|
<span class="glyphicon glyphicon-eye-open"></span>
|
||||||
|
</button>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal info.status 3 %}
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="resume" title="{% trans "Resume" %}">
|
||||||
|
<span class="glyphicon glyphicon-play"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Suspend" %}" disabled>
|
||||||
|
<span class="glyphicon glyphicon-pause"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="powerforce" title="{% trans "Force Off" %}" onclick="return confirm('Are you sure to force it down?')">
|
||||||
|
<span class="glyphicon glyphicon-off"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Cycle" %}" disabled>
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "VNC Console" %}" disabled>
|
||||||
|
<span class="glyphicon glyphicon-eye-open"></span>
|
||||||
|
</button>
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal info.status 1 %}
|
||||||
|
<button class="btn btn-sm btn-default disabled" title="{% trans "Power On" %}" disabled>
|
||||||
|
<span class="glyphicon glyphicon-play"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="suspend" title="{% trans "Suspend" %}">
|
||||||
|
<span class="glyphicon glyphicon-pause"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="poweroff" title="{% trans "Power Off" %}" onclick="return confirm('Are you sure?')">
|
||||||
|
<span class="glyphicon glyphicon-off"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default" type="submit" name="powercycle" title="{% trans "Power Cycle" %}" onclick="return confirm('Are you sure?')">
|
||||||
|
<span class="glyphicon glyphicon-refresh"></span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm btn-default" type="button" onclick='open_console("{{ host.0 }}-{{ info.uuid }}")' title="{% trans "Console" %}">
|
||||||
|
<span class="glyphicon glyphicon-eye-open"></span>
|
||||||
|
</button>
|
||||||
|
{% endifequal %}
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
{% endfor %}
|
||||||
<tbody class="searchable">
|
{% endfor %}
|
||||||
{% for host, inst in all_host_vms.items %}
|
</tbody>
|
||||||
{% for vm, info in inst.items %}
|
</table>
|
||||||
<tr>
|
</div>
|
||||||
<td><a href="{% url 'instance' host.0 vm %}">{{ vm }}</a><br><small><em>{{ info.title }}</em></small></td>
|
{% endif %}
|
||||||
<td><a href="{% url 'overview' host.0 %}">{{ host.1 }}</a><br><small><em>{% if info.userinstances.count > 0 %}{{ info.userinstances.first_user.user.username }}{% if info.userinstances.count > 1 %} (+{{ info.userinstances.count|add:"-1" }}){% endif %}{% endif %}</em></small></td>
|
</div>
|
||||||
<td>
|
|
||||||
{% ifequal info.status 1 %}<span class="text-success">{% trans "Active" %}</span>{% endifequal %}
|
|
||||||
{% ifequal info.status 5 %}<span class="text-danger">{% trans "Off" %}</span>{% endifequal %}
|
|
||||||
{% ifequal info.status 3 %}<span class="text-warning">{% trans "Suspend" %}</span>{% endifequal %}
|
|
||||||
</td>
|
|
||||||
<td>{{ info.vcpu }}</td>
|
|
||||||
<td>{{ info.memory|filesizeformat }}</td>
|
|
||||||
<td><form action="" method="post" role="form">{% csrf_token %}
|
|
||||||
<input type="hidden" name="name" value="{{ vm }}"/>
|
|
||||||
<input type="hidden" name="compute_id" value="{{ host.0 }}"/>
|
|
||||||
{% ifequal info.status 5 %}
|
|
||||||
{% if info.is_template %}
|
|
||||||
<button class="btn btn-sm btn-default" type="button" name="clone" title="{% trans "Clone" %}" onclick="goto_instance_clone({{ host.0 }}, '{{ vm }}');">
|
|
||||||
<span class="glyphicon glyphicon-duplicate"></span>
|
|
||||||
</button>
|
|
||||||
{% else %}
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="poweron" title="{% trans "Power On" %}">
|
|
||||||
<span class="glyphicon glyphicon-play"></span>
|
|
||||||
</button>
|
|
||||||
{% endif %}
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Suspend" %}" disabled>
|
|
||||||
<span class="glyphicon glyphicon-pause"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Off" %}" disabled>
|
|
||||||
<span class="glyphicon glyphicon-off"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Cycle" %}" disabled>
|
|
||||||
<span class="glyphicon glyphicon-refresh"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "VNC Console" %}" disabled>
|
|
||||||
<span class="glyphicon glyphicon-eye-open"></span>
|
|
||||||
</button>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal info.status 3 %}
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="resume" title="{% trans "Resume" %}">
|
|
||||||
<span class="glyphicon glyphicon-play"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Suspend" %}" disabled>
|
|
||||||
<span class="glyphicon glyphicon-pause"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="powerforce" title="{% trans "Force Off" %}" onclick="return confirm('Are you sure to force it down?')">
|
|
||||||
<span class="glyphicon glyphicon-off"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power Cycle" %}" disabled>
|
|
||||||
<span class="glyphicon glyphicon-refresh"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "VNC Console" %}" disabled>
|
|
||||||
<span class="glyphicon glyphicon-eye-open"></span>
|
|
||||||
</button>
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal info.status 1 %}
|
|
||||||
<button class="btn btn-sm btn-default disabled" title="{% trans "Power On" %}" disabled>
|
|
||||||
<span class="glyphicon glyphicon-play"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="suspend" title="{% trans "Suspend" %}">
|
|
||||||
<span class="glyphicon glyphicon-pause"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="poweroff" title="{% trans "Power Off" %}" onclick="return confirm('Are you sure?')">
|
|
||||||
<span class="glyphicon glyphicon-off"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default" type="submit" name="powercycle" title="{% trans "Power Cycle" %}" onclick="return confirm('Are you sure?')">
|
|
||||||
<span class="glyphicon glyphicon-refresh"></span>
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-sm btn-default" type="button" onclick='open_console("{{ host.0 }}-{{ info.uuid }}")' title="{% trans "Console" %}">
|
|
||||||
<span class="glyphicon glyphicon-eye-open"></span>
|
|
||||||
</button>
|
|
||||||
{% endifequal %}
|
|
||||||
</form>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script src="{% static "js/sortable.min.js" %}"></script>
|
<script src="{% static "js/sortable.min.js" %}"></script>
|
||||||
|
|
|
@ -2,72 +2,72 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block title %}{% trans "Interface" %} - {{ iface }}{% endblock %}
|
{% block title %}{% trans "Interface" %} - {{ iface }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<h1 class="page-header">{% trans "Interface:" %} {{ iface }}</h1>
|
<h1 class="page-header">{% trans "Interface:" %} {{ iface }}</h1>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
<!-- /.row -->
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6 col-sm-4">
|
<div class="col-xs-6 col-sm-4">
|
||||||
<p>{% trans "Interface:" %}</p>
|
<p>{% trans "Interface" %}:</p>
|
||||||
<p>{% trans "IPv4:" %} ({% ifequal ipv4 None %}None{% else %}{{ ipv4_type }}{% endifequal %})</p>
|
<p>{% trans "IPv4" %}: ({% ifequal ipv4 None %}{% trans 'None' %}{% else %}{{ ipv4_type }}{% endifequal %})</p>
|
||||||
<p>{% trans "IPv6:" %} ({% ifequal ipv6 None %}None{% else %}{{ ipv6_type }}{% endifequal %})</p>
|
<p>{% trans "IPv6" %}: ({% ifequal ipv6 None %}{% trans 'None' %}{% else %}{{ ipv6_type }}{% endifequal %})</p>
|
||||||
<p>{% trans "MAC Adress:" %}</p>
|
<p>{% trans "MAC Adress" %}:</p>
|
||||||
<p>{% trans "Interface Type:" %}</p>
|
<p>{% trans "Interface Type" %}:</p>
|
||||||
{% ifequal itype 'bridge' %}
|
{% ifequal itype 'bridge' %}
|
||||||
<p>{% trans "Bridge device" %}</p>
|
<p>{% trans "Bridge device" %}</p>
|
||||||
|
{% endifequal %}
|
||||||
|
<p>{% trans "Boot Mode" %}:</p>
|
||||||
|
<p>{% trans "State" %}:</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-6 col-sm-6">
|
||||||
|
<p><strong>{{ iface }}</strong></p>
|
||||||
|
<p>{{ ipv4 }}</p>
|
||||||
|
<p>{{ ipv6 }}</p>
|
||||||
|
<p>{{ mac }}</p>
|
||||||
|
<p>{{ itype }}</p>
|
||||||
|
{% ifequal itype 'bridge' %}
|
||||||
|
<p>{{ bridge }}</p>
|
||||||
|
{% endifequal %}
|
||||||
|
<p>{{ start_mode }}</p>
|
||||||
|
<p>
|
||||||
|
<form action="" method="post" role="form">{% csrf_token %}
|
||||||
|
{% ifequal state 0 %}
|
||||||
|
<input type="submit" class="btn btn-xs btn-default" name="start" value="{% trans "Start" %}">
|
||||||
|
<input type="submit" class="btn btn-xs btn-default" name="delete" value="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
|
{% else %}
|
||||||
|
<input type="submit" class="btn btn-xs btn-default" name="stop" value="{% trans "Stop" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
<p>{% trans "Boot Mode:" %}</p>
|
</form>
|
||||||
<p>{% trans "State:" %}</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 col-sm-6">
|
</div>
|
||||||
<p><strong>{{ iface }}</strong></p>
|
|
||||||
<p>{{ ipv4 }}</p>
|
|
||||||
<p>{{ ipv6 }}</p>
|
|
||||||
<p>{{ mac }}</p>
|
|
||||||
<p>{{ itype }}</p>
|
|
||||||
{% ifequal itype 'bridge' %}
|
|
||||||
<p>{{ bridge }}</p>
|
|
||||||
{% endifequal %}
|
|
||||||
<p>{{ start_mode }}</p>
|
|
||||||
<p>
|
|
||||||
<form action="" method="post" role="form">{% csrf_token %}
|
|
||||||
{% ifequal state 0 %}
|
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="start" value="{% trans "Start" %}">
|
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="delete" value="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
|
||||||
{% else %}
|
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="stop" value="{% trans "Stop" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
|
||||||
{% endifequal %}
|
|
||||||
</form>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -3,73 +3,73 @@
|
||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
{% block title %}{% trans "Interfaces" %} - {{ compute.name }}{% endblock %}
|
{% block title %}{% trans "Interfaces" %} - {{ compute.name }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% include 'create_iface_block.html' %}
|
{% include 'create_iface_block.html' %}
|
||||||
<h1 class="page-header">{{ compute.name }}</h1>
|
<h1 class="page-header">{{ compute.name }}</h1>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-wifi"></i> {% trans "Interfaces" %}
|
<i class="fa fa-wifi"></i> {% trans "Interfaces" %}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
|
||||||
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
{% if not ifaces_all %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="alert alert-warning alert-dismissable">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any Interfaces" %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
{% else %}
|
||||||
|
{% for iface in ifaces_all %}
|
||||||
{% include 'errors_block.html' %}
|
<div class="col-xs-12 col-sm-4">
|
||||||
|
<div class="panel {% ifequal iface.state 1 %}panel-success{% else %}panel-danger{% endifequal %} panel-data">
|
||||||
<div class="row">
|
<div class="panel-heading">
|
||||||
{% if not ifaces_all %}
|
<h3 class="panel-title"><a href="{% url 'interface' compute.id iface.name %}">{{ iface.name }}</a>
|
||||||
<div class="col-lg-12">
|
</h3>
|
||||||
<div class="alert alert-warning alert-dismissable">
|
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any Interfaces" %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="panel-body">
|
||||||
{% else %}
|
<div class="row">
|
||||||
{% for iface in ifaces_all %}
|
<div class="col-xs-4 col-sm-4">
|
||||||
<div class="col-xs-12 col-sm-4">
|
<p><strong>{% trans "Type:" %}</strong></p>
|
||||||
<div class="panel {% ifequal iface.state 1 %}panel-success{% else %}panel-danger{% endifequal %} panel-data">
|
<p><strong>{% trans "MAC:" %}</strong></p>
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><a href="{% url 'interface' compute.id iface.name %}">{{ iface.name }}</a>
|
|
||||||
</h3>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="col-xs-6 col-sm-7">
|
||||||
<div class="row">
|
<p>{{ iface.type }}</p>
|
||||||
<div class="col-xs-4 col-sm-4">
|
<p>{{ iface.mac }}</p>
|
||||||
<p><strong>{% trans "Type:" %}</strong></p>
|
|
||||||
<p><strong>{% trans "MAC:" %}</strong></p>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-6 col-sm-7">
|
|
||||||
<p>{{ iface.type }}</p>
|
|
||||||
<p>{{ iface.mac }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
</div>
|
||||||
{% endif %}
|
</div>
|
||||||
</div>
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if has_next_page %}
|
{% if has_next_page %}
|
||||||
<a href="{% url 'showlogspage' page|add:"1" %}">→</a>
|
<a href="{% url 'showlogspage' page|add:"1" %}">→</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -2,53 +2,53 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block title %}{% trans "Logs" %}{% endblock %}
|
{% block title %}{% trans "Logs" %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<h1 class="page-header">{% trans "Logs" %}</h1>
|
<h1 class="page-header">{% trans "Logs" %}</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
<!-- /.row -->
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
{% if not logs %}
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% if not logs %}
|
<div class="alert alert-warning alert-dismissable">
|
||||||
<div class="col-lg-12">
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
<div class="alert alert-warning alert-dismissable">
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning" %}:</strong> {% trans "You don't have any Logs" %}
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
</div>
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "You don't have any Logs" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
{% include "paging.html" %}
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-bordered table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>#</th>
|
|
||||||
<th>{% trans "Date" %}</th>
|
|
||||||
<th>{% trans "User" %}</th>
|
|
||||||
<th>{% trans "Instance" %}</th>
|
|
||||||
<th>{% trans "Message" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for log in logs %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ log.id }}</td>
|
|
||||||
<td style="width:130px;">{{ log.date|date:"M d H:i:s" }}</td>
|
|
||||||
<td>{{ log.user }}</a></td>
|
|
||||||
<td>{{ log.instance }}</a></td>
|
|
||||||
<td>{{ log.message }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% include "paging.html" %}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% else %}
|
||||||
|
{% include "paging.html" %}
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-bordered table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>#</th>
|
||||||
|
<th>{% trans "Date" %}</th>
|
||||||
|
<th>{% trans "User" %}</th>
|
||||||
|
<th>{% trans "Instance" %}</th>
|
||||||
|
<th>{% trans "Message" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for log in logs %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ log.id }}</td>
|
||||||
|
<td style="width:130px;">{{ log.date|date:"M d H:i:s" }}</td>
|
||||||
|
<td>{{ log.user }}</td>
|
||||||
|
<td>{{ log.instance }}</td>
|
||||||
|
<td>{{ log.message }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% include "paging.html" %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
<input type="text" class="form-control" name="mac" required pattern="[0-9\/\:]+">
|
<input type="text" class="form-control" name="mac" required pattern="[0-9\/\:]+">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
|
|
|
@ -3,219 +3,219 @@
|
||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
{% block title %}{% trans "Network" %} - {{ pool }}{% endblock %}
|
{% block title %}{% trans "Network" %} - {{ pool }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<h1 class="page-header">{% trans "Network:" %} {{ pool }}</h1>
|
<h1 class="page-header">{% trans "Network:" %} {{ pool }}</h1>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
<!-- /.row -->
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
{% include 'errors_block.html' %}
|
||||||
{% include 'messages_block.html' %}
|
{% include 'messages_block.html' %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6 col-sm-4">
|
<div class="col-xs-6 col-sm-4">
|
||||||
<p>{% trans "Network name" %}:</p>
|
<p>{% trans "Network name" %}:</p>
|
||||||
<p>{% trans "Device" %}:</p>
|
<p>{% trans "Device" %}:</p>
|
||||||
<p>{% trans "State" %}:</p>
|
<p>{% trans "State" %}:</p>
|
||||||
<p>{% trans "Autostart" %}:</p>
|
<p>{% trans "Autostart" %}:</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 col-sm-6">
|
<div class="col-xs-6 col-sm-6">
|
||||||
<p>{{ pool }}</p>
|
<p>{{ pool }}</p>
|
||||||
<p>{{ device }}</p>
|
<p>{{ device }}</p>
|
||||||
<p>
|
<p>
|
||||||
<form action="" method="post" role="form">{% csrf_token %}
|
<form action="" method="post" role="form">{% csrf_token %}
|
||||||
{% ifequal state 0 %}
|
{% ifequal state 0 %}
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="start" value="{% trans "Start" %}">
|
<input type="submit" class="btn btn-xs btn-default" name="start" value="{% trans "Start" %}">
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="delete" value="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
<input type="submit" class="btn btn-xs btn-default" name="delete" value="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
{% else %}
|
{% else %}
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="stop" value="{% trans "Stop" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
<input type="submit" class="btn btn-xs btn-default" name="stop" value="{% trans "Stop" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
</form>
|
</form>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<form action="" method="post" role="form">{% csrf_token %}
|
<form action="" method="post" role="form">{% csrf_token %}
|
||||||
{% ifequal autostart 0 %}
|
{% ifequal autostart 0 %}
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="set_autostart" value="{% trans "Enable" %}">
|
<input type="submit" class="btn btn-xs btn-default" name="set_autostart" value="{% trans "Enable" %}">
|
||||||
{% else %}
|
{% else %}
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="unset_autostart" onclick="return confirm('{% trans "Are you sure?" %}')" value="{% trans "Disable" %}">
|
<input type="submit" class="btn btn-xs btn-default" name="unset_autostart" onclick="return confirm('{% trans "Are you sure?" %}')" value="{% trans "Disable" %}">
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
</form>
|
</form>
|
||||||
</p>
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<h3 class="page-header"></h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-group" id="accordion">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
|
||||||
|
{% trans 'XML' %}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div id="collapseOne" class="panel-collapse collapse">
|
||||||
|
<div class="panel-body">
|
||||||
|
<form class="form-inline" method="post" role="form">{% csrf_token %}
|
||||||
|
<div class="col-xs-12" id="xmlheight">
|
||||||
|
<input type="hidden" name="edit_xml"/>
|
||||||
|
<textarea id="edit_editor">{{ xml }}</textarea>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-primary pull-right" name="edit_network">
|
||||||
|
{% trans "Edit" %}
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
</div>
|
||||||
<h3 class="page-header"></h3>
|
</div>
|
||||||
</div>
|
<div class="row">
|
||||||
<div class="panel-group" id="accordion">
|
<h3 class="page-header">{% trans "IPv4 Configuration" %}</h3>
|
||||||
<div class="panel panel-default">
|
</div>
|
||||||
<div class="panel-heading">
|
<div class="row">
|
||||||
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
|
<div class="col-xs-6 col-sm-4">
|
||||||
{% trans 'XML' %}
|
<p>{% trans "IPv4 Forwarding:" %}</p>
|
||||||
</a>
|
<p>{% trans "Network:" %}</p>
|
||||||
</div>
|
<p>{% trans "DHCP:" %}</p>
|
||||||
<div id="collapseOne" class="panel-collapse collapse">
|
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
|
||||||
<div class="panel-body">
|
<p>{% trans "Start:" %}</p>
|
||||||
<form class="form-inline" method="post" role="form">{% csrf_token %}
|
<p>{% trans "End:" %}</p>
|
||||||
<div class="col-xs-12" id="xmlheight">
|
|
||||||
<input type="hidden" name="edit_xml"/>
|
|
||||||
<textarea id="edit_editor">{{ xml }}</textarea>
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-primary pull-right" name="edit_network">
|
|
||||||
{% trans "Edit" %}
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<h3 class="page-header">{% trans "IPv4 Configuration" %}</h3>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-6 col-sm-4">
|
|
||||||
<p>{% trans "IPv4 Forwarding:" %}</p>
|
|
||||||
<p>{% trans "Network:" %}</p>
|
|
||||||
<p>{% trans "DHCP:" %}</p>
|
|
||||||
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
|
|
||||||
<p>{% trans "Start:" %}</p>
|
|
||||||
<p>{% trans "End:" %}</p>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-6 col-sm-4">
|
|
||||||
<p>
|
|
||||||
{% ifequal ipv4_forward.0 'nat' %}
|
|
||||||
{% trans "NAT" %}
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal ipv4_forward.0 'route' %}
|
|
||||||
{% trans "ROUTE" %}
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal ipv4_forward.0 'bridge' %}
|
|
||||||
{% trans "BRIDGE" %}
|
|
||||||
{% endifequal %}
|
|
||||||
{% if not ipv4_forward.0 %}
|
|
||||||
{% trans "ISOLATE" %}
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
||||||
<p>{{ ipv4_network }}</p>
|
|
||||||
<p>
|
|
||||||
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
|
|
||||||
<span class="text-success">{% trans "ON" %}</span>
|
|
||||||
{% else %}
|
|
||||||
<span class="text-danger">{% trans "OFF" %}</span>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
||||||
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
|
|
||||||
<form method="post" role="form">{% csrf_token %}
|
|
||||||
{% if state %}
|
|
||||||
<p>{{ ipv4_dhcp_range_start }}</p>
|
|
||||||
<p>{{ ipv4_dhcp_range_end }}</p>
|
|
||||||
{% else %}
|
|
||||||
<p><input name="range_start" value="{{ ipv4_dhcp_range_start }}"/></p>
|
|
||||||
<p><input name="range_end" value="{{ ipv4_dhcp_range_end }}"/></p>
|
|
||||||
<div class="col-xs-10 col-sm-8">
|
|
||||||
<input type="submit" class="btn btn-primary btn-block" value="Apply"
|
|
||||||
name="modify_dhcp_range"
|
|
||||||
title="Edit DHCP Range" onclick="return confirm('{% trans "Are you sure?" %}')"/>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</form>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% ifequal ipv4_forward.0 'nat' %}
|
|
||||||
{% if state %}
|
|
||||||
{% include 'modify_fixed_address.html' %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="row">
|
</div>
|
||||||
<h3 class="page-header">{% trans "Fixed Address" %}</h3>
|
<div class="col-xs-6 col-sm-4">
|
||||||
</div>
|
<p>
|
||||||
{% endifequal %}
|
{% ifequal ipv4_forward.0 'nat' %}
|
||||||
{% if fixed_address %}
|
{% trans "NAT" %}
|
||||||
<div class="row">
|
{% endifequal %}
|
||||||
<div class="col-xs-12">
|
{% ifequal ipv4_forward.0 'route' %}
|
||||||
<div class="panel-group" id="accordion">
|
{% trans "ROUTE" %}
|
||||||
<div class="panel panel-default">
|
{% endifequal %}
|
||||||
<div class="panel-heading">
|
{% ifequal ipv4_forward.0 'bridge' %}
|
||||||
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
|
{% trans "BRIDGE" %}
|
||||||
{% trans 'Show' %}
|
{% endifequal %}
|
||||||
</a>
|
{% if not ipv4_forward.0 %}
|
||||||
</div>
|
{% trans "ISOLATE" %}
|
||||||
<div id="collapseTwo" class="panel-collapse collapse">
|
{% endif %}
|
||||||
<div class="panel-body">
|
</p>
|
||||||
|
<p>{{ ipv4_network }}</p>
|
||||||
|
<p>
|
||||||
|
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
|
||||||
|
<span class="text-success">{% trans "ON" %}</span>
|
||||||
|
{% else %}
|
||||||
|
<span class="text-danger">{% trans "OFF" %}</span>
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
|
||||||
|
<form method="post" role="form">{% csrf_token %}
|
||||||
|
{% if state %}
|
||||||
|
<p>{{ ipv4_dhcp_range_start }}</p>
|
||||||
|
<p>{{ ipv4_dhcp_range_end }}</p>
|
||||||
|
{% else %}
|
||||||
|
<p><input name="range_start" value="{{ ipv4_dhcp_range_start }}"/></p>
|
||||||
|
<p><input name="range_end" value="{{ ipv4_dhcp_range_end }}"/></p>
|
||||||
|
<div class="col-xs-10 col-sm-8">
|
||||||
|
<input type="submit" class="btn btn-primary btn-block" value="Apply"
|
||||||
|
name="modify_dhcp_range"
|
||||||
|
title="Edit DHCP Range" onclick="return confirm('{% trans "Are you sure?" %}')"/>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% ifequal ipv4_forward.0 'nat' %}
|
||||||
|
{% if state %}
|
||||||
|
{% include 'modify_fixed_address.html' %}
|
||||||
|
{% endif %}
|
||||||
|
<div class="row">
|
||||||
|
<h3 class="page-header">{% trans "Fixed Address" %}</h3>
|
||||||
|
</div>
|
||||||
|
{% endifequal %}
|
||||||
|
{% if fixed_address %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<div class="panel-group" id="accordion">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
|
||||||
|
{% trans 'Show' %}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div id="collapseTwo" class="panel-collapse collapse">
|
||||||
|
<div class="panel-body">
|
||||||
|
|
||||||
<div class="input-append form-inline pull-right">
|
<div class="input-append form-inline pull-right">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="text" class="form-control" id="filter_input">
|
<input type="text" class="form-control" id="filter_input">
|
||||||
</div>
|
|
||||||
<input type="button" class="btn btn-default" id="filter_button" value="Filter">
|
|
||||||
<button type="button" class="btn btn-default" id="filter_clear">{% trans 'Clear' %}</button>
|
|
||||||
</div>
|
|
||||||
<table class="table table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th style="text-align: center">{% trans "MAC" %}</th>
|
|
||||||
<th style="text-align: center">{% trans "Address" %}</th>
|
|
||||||
<th style="text-align: center">{% trans "Name" %}</th>
|
|
||||||
<th style="text-align: center">{% trans "Action" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody style="text-align: center">
|
|
||||||
{% for fix in fixed_address %}
|
|
||||||
<tr>
|
|
||||||
<form method="post" role="form">{% csrf_token %}
|
|
||||||
<td><label class="form-control" disabled="true">{{ fix.mac }}</label></td>
|
|
||||||
<td><input class="form-control" value="{{ fix.ip }}" name="address" /></td>
|
|
||||||
<td><input class="form-control" value="{{ fix.name }}" name="name" /></td>
|
|
||||||
<td>
|
|
||||||
<input hidden name="mac" value="{{ fix.mac }}"/>
|
|
||||||
<button type="submit" class="btn btn-sm btn-primary"
|
|
||||||
name="modify_fixed_address"
|
|
||||||
title="Edit entry" onclick="return confirm('{% trans "Are you sure?" %}')">
|
|
||||||
<i class="glyphicon glyphicon-save"></i>
|
|
||||||
</button>
|
|
||||||
<button type="submit" class="btn btn-sm btn-danger"
|
|
||||||
name="delete_fixed_address"
|
|
||||||
title="Delete entry" onclick="return confirm('{% trans "Are you sure?" %}')">
|
|
||||||
<i class="glyphicon glyphicon-trash"></i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</form>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
|
<input type="button" class="btn btn-default" id="filter_button" value="Filter">
|
||||||
|
<button type="button" class="btn btn-default" id="filter_clear">{% trans 'Clear' %}</button>
|
||||||
</div>
|
</div>
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="text-align: center">{% trans "MAC" %}</th>
|
||||||
|
<th style="text-align: center">{% trans "Address" %}</th>
|
||||||
|
<th style="text-align: center">{% trans "Name" %}</th>
|
||||||
|
<th style="text-align: center">{% trans "Action" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody style="text-align: center">
|
||||||
|
{% for fix in fixed_address %}
|
||||||
|
<tr>
|
||||||
|
<form method="post" role="form">{% csrf_token %}
|
||||||
|
<td><label class="form-control" disabled="true">{{ fix.mac }}</label></td>
|
||||||
|
<td><input class="form-control" value="{{ fix.ip }}" name="address" /></td>
|
||||||
|
<td><input class="form-control" value="{{ fix.name }}" name="name" /></td>
|
||||||
|
<td>
|
||||||
|
<input hidden name="mac" value="{{ fix.mac }}"/>
|
||||||
|
<button type="submit" class="btn btn-sm btn-primary"
|
||||||
|
name="modify_fixed_address"
|
||||||
|
title="Edit entry" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
|
<i class="glyphicon glyphicon-save"></i>
|
||||||
|
</button>
|
||||||
|
<button type="submit" class="btn btn-sm btn-danger"
|
||||||
|
name="delete_fixed_address"
|
||||||
|
title="Delete entry" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
|
<i class="glyphicon glyphicon-trash"></i>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</form>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -2,72 +2,72 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block title %}{% trans "Networks" %} - {{ compute.name }}{% endblock %}
|
{% block title %}{% trans "Networks" %} - {{ compute.name }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% include 'create_net_block.html' %}
|
{% include 'create_net_block.html' %}
|
||||||
<h1 class="page-header">{{ compute.name }}</h1>
|
<h1 class="page-header">{{ compute.name }}</h1>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-sitemap"></i> {% trans "Networks" %}
|
<i class="fa fa-sitemap"></i> {% trans "Networks" %}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
|
||||||
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
{% if not networks %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="alert alert-warning alert-dismissable">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
|
<i class="fa fa-exclamation-triangle"></i><strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any Networks" %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
{% else %}
|
||||||
|
{% for pool in networks %}
|
||||||
{% include 'errors_block.html' %}
|
<div class="col-xs-12 col-sm-4">
|
||||||
|
<div class="panel {% if pool.status %}panel-success{% else %}panel-danger{% endif %} panel-data">
|
||||||
<div class="row">
|
<div class="panel-heading">
|
||||||
{% if not networks %}
|
<h3 class="panel-title"><a href="{% url 'network' compute.id pool.name %}">{{ pool.name }}</a></h3>
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="alert alert-warning alert-dismissable">
|
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any Networks" %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="panel-body">
|
||||||
{% else %}
|
<div class="row">
|
||||||
{% for pool in networks %}
|
<div class="col-xs-4 col-sm-4">
|
||||||
<div class="col-xs-12 col-sm-4">
|
<p><strong>{% trans "Device:" %}</strong></p>
|
||||||
<div class="panel {% if pool.status %}panel-success{% else %}panel-danger{% endif %} panel-data">
|
<p><strong>{% trans "Forward:" %}</strong></p>
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><a href="{% url 'network' compute.id pool.name %}">{{ pool.name }}</a></h3>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="col-xs-6 col-sm-7">
|
||||||
<div class="row">
|
<p>{{ pool.device }}</p>
|
||||||
<div class="col-xs-4 col-sm-4">
|
<p>{{ pool.forward|upper }}</p>
|
||||||
<p><strong>{% trans "Device:" %}</strong></p>
|
|
||||||
<p><strong>{% trans "Forward:" %}</strong></p>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-6 col-sm-7">
|
|
||||||
<p>{{ pool.device }}</p>
|
|
||||||
<p>{{ pool.forward|upper }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
</div>
|
||||||
{% endif %}
|
</div>
|
||||||
</div>
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% if request.user.is_superuser %}
|
{% if request.user.is_superuser %}
|
||||||
<a href="#AddNWFilterRule" type="button" class="btn btn-success pull-right" data-toggle="modal">
|
<a href="#AddNWFilterRule" type="button" class="btn btn-success pull-right" data-toggle="modal">
|
||||||
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!-- Modal Secret -->
|
<!-- Modal Secret -->
|
||||||
<div class="modal fade" id="AddNWFilterRule" tabindex="-1" role="dialog" aria-labelledby="AddNWFilterRule" aria-hidden="true">
|
<div class="modal fade" id="AddNWFilterRule" tabindex="-1" role="dialog" aria-labelledby="AddNWFilterRule" aria-hidden="true">
|
||||||
|
|
|
@ -3,158 +3,158 @@
|
||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
{% block title %}{% trans "NWFilters" %} - {{ compute.name }}{% endblock %}
|
{% block title %}{% trans "NWFilters" %} - {{ compute.name }}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% include 'create_nwfilter_block.html' %}
|
{% include 'create_nwfilter_block.html' %}
|
||||||
<h1 class="page-header">{{ compute.name }}</h1>
|
<h1 class="page-header">{{ compute.name }}</h1>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-filter"></i> {% trans "NWFilters" %}
|
<i class="fa fa-filter"></i> {% trans "NWFilters" %}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
|
||||||
|
{% include 'errors_block.html' %}
|
||||||
|
{% include 'messages_block.html' %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
|
||||||
|
<div class="pull-right">
|
||||||
|
<input id="filter" class="form-control" type="text" placeholder="Search">
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
<div class="row">
|
||||||
|
<h3 class="page-header">{% trans "NWFilters" %}</h3>
|
||||||
{% include 'errors_block.html' %}
|
</div>
|
||||||
{% include 'messages_block.html' %}
|
{% if nwfilters %}
|
||||||
|
<div class="table-responsive">
|
||||||
<div class="row">
|
<table class="table table-striped sortable-theme-bootstrap" data-sortable>
|
||||||
<div class="col-lg-12">
|
<thead>
|
||||||
|
|
||||||
<div class="pull-right">
|
|
||||||
<input id="filter" class="form-control" type="text" placeholder="Search">
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<h3 class="page-header">{% trans "NWFilters" %}</h3>
|
|
||||||
</div>
|
|
||||||
{% if nwfilters %}
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-striped sortable-theme-bootstrap" data-sortable>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th style="width: 45px;">#</th>
|
|
||||||
<th>{% trans "UUID" %}</th>
|
|
||||||
<th>{% trans "Name" %}</th>
|
|
||||||
<th data-sortable="false" colspan="3">{% trans "Action" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="searchable">
|
|
||||||
{% for nwfilter in nwfilters %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ forloop.counter }}</td>
|
<th style="width: 45px;">#</th>
|
||||||
<td><a href="{% url "nwfilter" compute.id nwfilter.name %} ">{{ nwfilter.uuid }}</a></td>
|
<th>{% trans "UUID" %}</th>
|
||||||
<td>{{ nwfilter.name }}</td>
|
<th>{% trans "Name" %}</th>
|
||||||
<td style="width:30px;">
|
<th data-sortable="false" colspan="3">{% trans "Action" %}</th>
|
||||||
<div class="modal fade" id="Show{{ forloop.counter }}" tabindex="-1" role="dialog" aria-labelledby="showNWFilter" aria-hidden="true">
|
</tr>
|
||||||
<div class="modal-dialog">
|
</thead>
|
||||||
<div class="modal-content">
|
<tbody class="searchable">
|
||||||
<div class="modal-header">
|
{% for nwfilter in nwfilters %}
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<tr>
|
||||||
<h4 class="modal-title">{% trans "Details of NWFilter" %}: <span class="text-danger">{{ nwfilter.name }}</span></h4>
|
<td>{{ forloop.counter }}</td>
|
||||||
</div>
|
<td><a href="{% url "nwfilter" compute.id nwfilter.name %} ">{{ nwfilter.uuid }}</a></td>
|
||||||
<div class="modal-body">
|
<td>{{ nwfilter.name }}</td>
|
||||||
<pre>
|
<td style="width:30px;">
|
||||||
<code>
|
<div class="modal fade" id="Show{{ forloop.counter }}" tabindex="-1" role="dialog" aria-labelledby="showNWFilter" aria-hidden="true">
|
||||||
{{ nwfilter.xml }}
|
<div class="modal-dialog">
|
||||||
</code>
|
<div class="modal-content">
|
||||||
</pre>
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
<h4 class="modal-title">{% trans "Details of NWFilter" %}: <span class="text-danger">{{ nwfilter.name }}</span></h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-body">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
<pre>
|
||||||
|
<code>
|
||||||
|
{{ nwfilter.xml }}
|
||||||
|
</code>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
||||||
|
</div>
|
||||||
|
</div> <!-- /.modal-content -->
|
||||||
|
</div> <!-- /.modal-dialog -->
|
||||||
|
</div> <!-- /.modal -->
|
||||||
|
<a data-toggle="modal" href="#Show{{ forloop.counter }}" class="btn btn-sm btn-default" title="{% trans "Show" %}"><i class="fa fa-eye"></i></a>
|
||||||
|
</td>
|
||||||
|
<td style="width:30px;">
|
||||||
|
<div class="modal fade" id="Clone{{ forloop.counter }}" tabindex="-1" role="dialog" aria-labelledby="addNwFilterLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
<h4 class="modal-title">{% trans "Clone nwfilter" %} <span class="text-danger">{{ nwfilter.name }}</span></h4>
|
||||||
</div>
|
</div>
|
||||||
</div> <!-- /.modal-content -->
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
</div> <!-- /.modal-dialog -->
|
<div class="modal-body">
|
||||||
</div> <!-- /.modal -->
|
<div class="form-group">
|
||||||
<a data-toggle="modal" href="#Show{{ forloop.counter }}" class="btn btn-sm btn-default" title="{% trans "Show" %}"><i class="fa fa-eye"></i></a>
|
<label class="col-sm-3 control-label">{% trans "Name" %}</label>
|
||||||
</td>
|
<div class="col-sm-6">
|
||||||
<td style="width:30px;">
|
<input type="text" class="form-control" name="cln_name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+">
|
||||||
<div class="modal fade" id="Clone{{ forloop.counter }}" tabindex="-1" role="dialog" aria-labelledby="addNwFilterLabel" aria-hidden="true">
|
<input type="hidden" name="nwfiltername" value="{{ nwfilter.name }}">
|
||||||
<div class="modal-dialog">
|
</div>
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h4 class="modal-title">{% trans "Clone nwfilter" %} <span class="text-danger">{{ nwfilter.name }}</span></h4>
|
|
||||||
</div>
|
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Name" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" name="cln_name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+">
|
|
||||||
<input type="hidden" name="nwfiltername" value="{{ nwfilter.name }}">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="modal-footer">
|
||||||
<div class="modal-footer">
|
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
<button type="submit" class="btn btn-primary" name="cln_nwfilter">{% trans "Clone" %}</button>
|
||||||
<button type="submit" class="btn btn-primary" name="cln_nwfilter">{% trans "Clone" %}</button>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</form>
|
</div> <!-- /.modal-content -->
|
||||||
</div> <!-- /.modal-content -->
|
</div> <!-- /.modal-dialog -->
|
||||||
</div> <!-- /.modal-dialog -->
|
</div> <!-- /.modal -->
|
||||||
</div> <!-- /.modal -->
|
<a data-toggle="modal" href="#Clone{{ forloop.counter }}" class="btn btn-sm btn-default" title="{% trans "Clone" %}"><i class="fa fa-files-o"></i></a>
|
||||||
<a data-toggle="modal" href="#Clone{{ forloop.counter }}" class="btn btn-sm btn-default" title="{% trans "Clone" %}"><i class="fa fa-files-o"></i></a>
|
</td>
|
||||||
</td>
|
<td style="width:30px;">
|
||||||
<td style="width:30px;">
|
<form action="" method="post" style="height:10px" role="form">{% csrf_token %}
|
||||||
<form action="" method="post" style="height:10px" role="form">{% csrf_token %}
|
<input type="hidden" name="nwfiltername" value="{{ nwfilter.name }}">
|
||||||
<input type="hidden" name="nwfiltername" value="{{ nwfilter.name }}">
|
<button type="submit" class="btn btn-sm btn-default" name="del_nwfilter" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
<button type="submit" class="btn btn-sm btn-default" name="del_nwfilter" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
<i class="fa fa-trash"></i>
|
||||||
<i class="fa fa-trash"></i>
|
</button>
|
||||||
</button>
|
</form>
|
||||||
</form>
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
{% endfor %}
|
||||||
{% endfor %}
|
</tbody>
|
||||||
</tbody>
|
</table>
|
||||||
</table>
|
</div>
|
||||||
</div>
|
{% else %}
|
||||||
{% else %}
|
<div class="col-lg-12">
|
||||||
<div class="col-lg-12">
|
<div class="alert alert-warning alert-dismissable">
|
||||||
<div class="alert alert-warning alert-dismissable">
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any NWFilters" %}
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any NWFilters" %}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script src="{% static "js/sortable.min.js" %}"></script>
|
<script src="{% static "js/sortable.min.js" %}"></script>
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
(function ($) {
|
(function ($) {
|
||||||
$('#filter').keyup(function () {
|
$('#filter').keyup(function () {
|
||||||
var rex = new RegExp($(this).val(), 'i');
|
var rex = new RegExp($(this).val(), 'i');
|
||||||
$('.searchable tr').hide();
|
$('.searchable tr').hide();
|
||||||
$('.searchable tr').filter(function () {
|
$('.searchable tr').filter(function () {
|
||||||
return rex.test($(this).text());
|
return rex.test($(this).text());
|
||||||
}).show();
|
}).show();
|
||||||
})
|
})
|
||||||
}(jQuery));
|
}(jQuery));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script src="{% static "js/ace.js" %}"></script>
|
<script src="{% static "js/ace.js" %}"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
@ -6,122 +6,122 @@
|
||||||
<link rel="stylesheet" href="{% static "css/sortable-theme-bootstrap.css" %}" />
|
<link rel="stylesheet" href="{% static "css/sortable-theme-bootstrap.css" %}" />
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
{% include 'create_secret_block.html' %}
|
{% include 'create_secret_block.html' %}
|
||||||
<h1 class="page-header">{% trans "Secrets" %}</h1>
|
<h1 class="page-header">{% trans "Secrets" %}</h1>
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="fa fa-key"></i> {% trans "Secrets" %}
|
<i class="fa fa-key"></i> {% trans "Secrets" %}
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
|
||||||
|
{% include 'errors_block.html' %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
{% if not secrets_all %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="alert alert-warning alert-dismissable">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any Secrets" %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
{% else %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-hover sortable-theme-bootstrap" data-sortable>
|
||||||
|
<thead>
|
||||||
|
<tr class="active">
|
||||||
|
<th>{% trans "UUID" %}</th>
|
||||||
|
<th>{% trans "Type" %}</th>
|
||||||
|
<th>{% trans "Usage" %}</th>
|
||||||
|
<th data-sortable="false" style="width:90px;">{% trans "Action" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for secret in secrets_all %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ secret.uuid }}</td>
|
||||||
|
<td>{% ifequal secret.usageType 0 %}
|
||||||
|
{% trans "volume" %}
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal secret.usageType 1 %}
|
||||||
|
{% trans "iscsi" %}
|
||||||
|
{% endifequal %}
|
||||||
|
{% ifequal secret.usageType 2 %}
|
||||||
|
{% trans "ceph" %}
|
||||||
|
{% endifequal %}
|
||||||
|
</td>
|
||||||
|
<td>{{ secret.usage }}</td>
|
||||||
|
<td>
|
||||||
|
<form action="" method="post" role="form">{% csrf_token %}
|
||||||
|
<input type="hidden" name="uuid" value="{{ secret.uuid }}"/>
|
||||||
|
<a data-toggle="modal" href="#editSecret{{ secret.uuid }}" class="btn btn-sm btn-default" title="{% trans "Edit" %}">
|
||||||
|
<span class="glyphicon glyphicon-pencil"></span>
|
||||||
|
</a>
|
||||||
|
<button type="submit" class="btn btn-sm btn-default" name="delete" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
|
<span class="glyphicon glyphicon-trash"></span>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
<!-- Modal -->
|
||||||
|
<div class="modal fade" id="editSecret{{ secret.uuid }}" tabindex="-1" role="dialog"
|
||||||
<div class="row">
|
aria-labelledby="editSecret" aria-hidden="true">
|
||||||
{% if not secrets_all %}
|
<div class="modal-dialog">
|
||||||
<div class="col-lg-12">
|
<div class="modal-content">
|
||||||
<div class="alert alert-warning alert-dismissable">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any Secrets" %}
|
<h4 class="modal-title">{% trans "Set secret value" %}</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="tab-content">
|
||||||
{% else %}
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
<div class="col-lg-12">
|
<div class="form-group">
|
||||||
<div class="table-responsive">
|
<label class="col-sm-3 control-label">{% trans "Value" %}</label>
|
||||||
<table class="table table-hover sortable-theme-bootstrap" data-sortable>
|
<div class="col-sm-6">
|
||||||
<thead>
|
<input type="hidden" name="uuid" value="{{ secret.uuid }}">
|
||||||
<tr class="active">
|
<input type="text" name="value" class="form-control" value="{{ secret.value }}" maxlength="45" required pattern="[a-zA-Z0-9]$+">
|
||||||
<th>{% trans "UUID" %}</th>
|
</div>
|
||||||
<th>{% trans "Type" %}</th>
|
|
||||||
<th>{% trans "Usage" %}</th>
|
|
||||||
<th data-sortable="false" style="width:90px;">{% trans "Action" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for secret in secrets_all %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ secret.uuid }}</td>
|
|
||||||
<td>{% ifequal secret.usageType 0 %}
|
|
||||||
{% trans "volume" %}
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal secret.usageType 1 %}
|
|
||||||
{% trans "iscsi" %}
|
|
||||||
{% endifequal %}
|
|
||||||
{% ifequal secret.usageType 2 %}
|
|
||||||
{% trans "ceph" %}
|
|
||||||
{% endifequal %}
|
|
||||||
</td>
|
|
||||||
<td>{{ secret.usage }}</td>
|
|
||||||
<td>
|
|
||||||
<form action="" method="post" role="form">{% csrf_token %}
|
|
||||||
<input type="hidden" name="uuid" value="{{ secret.uuid }}"/>
|
|
||||||
<a data-toggle="modal" href="#editSecret{{ secret.uuid }}" class="btn btn-sm btn-default" title="{% trans "Edit" %}">
|
|
||||||
<span class="glyphicon glyphicon-pencil"></span>
|
|
||||||
</a>
|
|
||||||
<button type="submit" class="btn btn-sm btn-default" name="delete" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
|
||||||
<span class="glyphicon glyphicon-trash"></span>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<!-- Modal -->
|
|
||||||
<div class="modal fade" id="editSecret{{ secret.uuid }}" tabindex="-1" role="dialog"
|
|
||||||
aria-labelledby="editSecret" aria-hidden="true">
|
|
||||||
<div class="modal-dialog">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h4 class="modal-title">{% trans "Set secret value" %}</h4>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-content">
|
<div class="modal-footer">
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
||||||
<div class="form-group">
|
<button type="submit" class="btn btn-primary" name="set_value">{% trans "Set" %}</button>
|
||||||
<label class="col-sm-3 control-label">{% trans "Value" %}</label>
|
</div>
|
||||||
<div class="col-sm-6">
|
</form>
|
||||||
<input type="hidden" name="uuid" value="{{ secret.uuid }}">
|
</div> <!-- /.modal-content -->
|
||||||
<input type="text" name="value" class="form-control" value="{{ secret.value }}" maxlength="45" required pattern="[a-zA-Z0-9]$+">
|
</div> <!-- /.tab-content -->
|
||||||
</div>
|
</div> <!-- /.modal-dialog -->
|
||||||
</div>
|
</div> <!-- /.modal -->
|
||||||
<div class="modal-footer">
|
</td>
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
</tr>
|
||||||
<button type="submit" class="btn btn-primary" name="set_value">{% trans "Set" %}</button>
|
{% endfor %}
|
||||||
</div>
|
</tbody>
|
||||||
</form>
|
</table>
|
||||||
</div> <!-- /.modal-content -->
|
</div>
|
||||||
</div> <!-- /.tab-content -->
|
|
||||||
</div> <!-- /.modal-dialog -->
|
|
||||||
</div> <!-- /.modal -->
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script src="{% static "js/sortable.min.js" %}"></script>
|
<script src="{% static "js/sortable.min.js" %}"></script>
|
||||||
|
|
|
@ -7,194 +7,194 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<!-- Page Heading -->
|
<!-- Page Heading -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
|
||||||
{% include 'create_stg_vol_block.html' %}
|
|
||||||
<h1 class="page-header">{% trans "Storage:" %} {{ pool }}</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
{% include 'errors_block.html' %}
|
|
||||||
{% include 'messages_block.html' %}
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-6 col-sm-6">
|
|
||||||
<p>{% trans "Pool name:" %}</p>
|
|
||||||
<p>{% trans "Pool type:" %}</p>
|
|
||||||
<p>{% trans "Pool path:" %}</p>
|
|
||||||
<p>{% trans "Pool status:" %}</p>
|
|
||||||
<p>{% trans "Size:" %} ({{ size|filesizeformat }} / {{ used|filesizeformat }})</p>
|
|
||||||
<p>{% trans "State:" %}</p>
|
|
||||||
<p>{% trans "Autostart:" %}</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-6 col-sm-6">
|
|
||||||
<p>{{ pool }}</p>
|
|
||||||
<p>{% if not type %}{% trans "None" %}{% else %}{{ type }}{% endif %}</p>
|
|
||||||
<p>{% if not path %}{% trans "None" %}{% else %}{{ path }}{% endif %}</p>
|
|
||||||
<p>{% if not status %}{% trans "None" %}{% else %}{{ status }}{% endif %}</p>
|
|
||||||
<p>{% trans "Usage:" %} {{ percent }}%</p>
|
|
||||||
<p>
|
|
||||||
<form action="" method="post" role="form">{% csrf_token %}
|
|
||||||
{% ifequal state 0 %}
|
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="start" value="{% trans "Start" %}">
|
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="delete" value="{% trans "Delete" %}"
|
|
||||||
onclick="return confirm('{% trans "Are you sure?" %}')">
|
|
||||||
{% else %}
|
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="stop" value="{% trans "Stop" %}"
|
|
||||||
onclick="return confirm('{% trans "Are you sure?" %}')">
|
|
||||||
{% endifequal %}
|
|
||||||
</form>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<form action="" method="post" role="form">{% csrf_token %}
|
|
||||||
{% ifequal autostart 0 %}
|
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="set_autostart"
|
|
||||||
value="{% trans "Enable" %}">
|
|
||||||
{% else %}
|
|
||||||
<input type="submit" class="btn btn-xs btn-default" name="unset_autostart"
|
|
||||||
onclick="return confirm('{% trans "Are you sure?" %}')" value="{% trans "Disable" %}">
|
|
||||||
{% endifequal %}
|
|
||||||
</form>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
{% if state %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="pull-right">
|
|
||||||
<input id="filter" class="form-control" type="text" placeholder="Search">
|
|
||||||
</div>
|
|
||||||
<h3 class="page-header">{% trans "Volumes" %}</h3>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{% if volumes %}
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-striped sortable-theme-bootstrap" data-sortable>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th style="width: 45px;">#</th>
|
|
||||||
<th>{% trans "Name" %}</th>
|
|
||||||
<th>{% trans "Allocated" %}</th>
|
|
||||||
<th>{% trans "Size" %}</th>
|
|
||||||
<th>{% trans "Format" %}</th>
|
|
||||||
<th data-sortable="false" colspan="2">{% trans "Action" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="searchable">
|
|
||||||
{% for volume in volumes %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ forloop.counter }}</td>
|
|
||||||
<td>{{ volume.name }}</td>
|
|
||||||
<td>{{ volume.allocation|filesizeformat }}</td>
|
|
||||||
<td>{{ volume.size|filesizeformat }}</td>
|
|
||||||
<td>{{ volume.type }}</td>
|
|
||||||
<td style="width:30px;">
|
|
||||||
<!-- Modal Clone -->
|
|
||||||
<div class="modal fade" id="Clone{{ forloop.counter }}" tabindex="-1" role="dialog"
|
|
||||||
aria-labelledby="addHostLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h4 class="modal-title">{% trans "Clone image" %} <span class="text-danger">{{ volume.name }}</span></h4>
|
|
||||||
</div>
|
|
||||||
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Name" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+">
|
|
||||||
<input type="hidden" name="image" value="{{ volume.name }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group" id="image_format">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Convert" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input class="volume-convert" type="checkbox" name="convert" value="true">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group format-convert">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Format" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<select name="format" class="form-control image-format">
|
|
||||||
<option value="raw">{% trans "raw" %}</option>
|
|
||||||
<option value="qcow">{% trans "qcow" %}</option>
|
|
||||||
<option value="qcow2">{% trans "qcow2" %}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group meta-prealloc" style="display: none;">
|
|
||||||
<label class="col-sm-3 control-label">{% trans "Metadata" %}</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="checkbox" name="meta_prealloc" value="true">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
|
||||||
<button type="submit" class="btn btn-primary" name="cln_volume" onclick="showPleaseWaitDialog();">{% trans "Clone" %}</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div> <!-- /.modal-content -->
|
|
||||||
</div> <!-- /.modal-dialog -->
|
|
||||||
</div> <!-- /.modal -->
|
|
||||||
{% ifnotequal volume.type "iso" %}
|
|
||||||
<a data-toggle="modal" href="#Clone{{ forloop.counter }}" class="btn btn-sm btn-default" title="{% trans "Clone" %}"><i class="fa fa-files-o"></i></a>
|
|
||||||
{% else %}
|
|
||||||
<a class="btn btn-sm btn-default disabled"><i class="fa fa-files-o"></i></a>
|
|
||||||
{% endifnotequal %}
|
|
||||||
</td>
|
|
||||||
<td style="width:30px;">
|
|
||||||
<form action="" method="post" style="height:10px" role="form">{% csrf_token %}
|
|
||||||
<input type="hidden" name="volname" value="{{ volume.name }}">
|
|
||||||
<button type="submit" class="btn btn-sm btn-default" name="del_volume" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
|
||||||
<i class="fa fa-trash"></i>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<div class="alert alert-warning alert-dismissable">
|
{% include 'create_stg_vol_block.html' %}
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
<h1 class="page-header">{% trans "Storage:" %} {{ pool }}</h1>
|
||||||
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning:" %}</strong> {% trans "Hypervisor doesn't have any Volumes" %}
|
<ol class="breadcrumb">
|
||||||
</div>
|
<li class="active">
|
||||||
|
<i class="fa fa-dashboard"></i> <a href="{% url 'overview' compute.id %}">{% trans "Overview" %}</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fa fa-server"></i> <a href="{% url 'instances' compute.id %}">{% trans "Instances" %}</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fa fa-hdd-o"></i> <a href="{% url 'storages' compute.id %}">{% trans "Storages" %}</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fa fa-sitemap"></i> <a href="{% url 'networks' compute.id %}">{% trans "Networks" %}</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fa fa-wifi"></i> <a href="{% url 'interfaces' compute.id %}">{% trans "Interfaces" %}</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fa fa-filter"></i> <a href="{% url 'nwfilters' compute.id %}">{% trans "NWFilters" %}</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fa fa-key"></i> <a href="{% url 'secrets' compute.id %}">{% trans "Secrets" %}</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<!-- /.row -->
|
||||||
{% include 'pleasewaitdialog.html' %}
|
|
||||||
|
{% include 'errors_block.html' %}
|
||||||
|
{% include 'messages_block.html' %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-6 col-sm-6">
|
||||||
|
<p>{% trans "Pool name" %}:</p>
|
||||||
|
<p>{% trans "Pool type" %}:</p>
|
||||||
|
<p>{% trans "Pool path" %}:</p>
|
||||||
|
<p>{% trans "Pool status" %}:</p>
|
||||||
|
<p>{% trans "Size" %}: ({{ size|filesizeformat }} / {{ used|filesizeformat }})</p>
|
||||||
|
<p>{% trans "State" %}:</p>
|
||||||
|
<p>{% trans "Autostart" %}:</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-6 col-sm-6">
|
||||||
|
<p>{{ pool }}</p>
|
||||||
|
<p>{% if not type %}{% trans "None" %}{% else %}{{ type }}{% endif %}</p>
|
||||||
|
<p>{% if not path %}{% trans "None" %}{% else %}{{ path }}{% endif %}</p>
|
||||||
|
<p>{% if not status %}{% trans "None" %}{% else %}{{ status }}{% endif %}</p>
|
||||||
|
<p>{% trans "Usage" %}: {{ percent }}%</p>
|
||||||
|
<p>
|
||||||
|
<form action="" method="post" role="form">{% csrf_token %}
|
||||||
|
{% ifequal state 0 %}
|
||||||
|
<input type="submit" class="btn btn-xs btn-default" name="start" value="{% trans "Start" %}">
|
||||||
|
<input type="submit" class="btn btn-xs btn-default" name="delete" value="{% trans "Delete" %}"
|
||||||
|
onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
|
{% else %}
|
||||||
|
<input type="submit" class="btn btn-xs btn-default" name="stop" value="{% trans "Stop" %}"
|
||||||
|
onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
|
{% endifequal %}
|
||||||
|
</form>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<form action="" method="post" role="form">{% csrf_token %}
|
||||||
|
{% ifequal autostart 0 %}
|
||||||
|
<input type="submit" class="btn btn-xs btn-default" name="set_autostart"
|
||||||
|
value="{% trans "Enable" %}">
|
||||||
|
{% else %}
|
||||||
|
<input type="submit" class="btn btn-xs btn-default" name="unset_autostart"
|
||||||
|
onclick="return confirm('{% trans "Are you sure?" %}')" value="{% trans "Disable" %}">
|
||||||
|
{% endifequal %}
|
||||||
|
</form>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
{% if state %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="pull-right">
|
||||||
|
<input id="filter" class="form-control" type="text" placeholder="Search">
|
||||||
|
</div>
|
||||||
|
<h3 class="page-header">{% trans "Volumes" %}</h3>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{% if volumes %}
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-striped sortable-theme-bootstrap" data-sortable>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="width: 45px;">#</th>
|
||||||
|
<th>{% trans "Name" %}</th>
|
||||||
|
<th>{% trans "Allocated" %}</th>
|
||||||
|
<th>{% trans "Size" %}</th>
|
||||||
|
<th>{% trans "Format" %}</th>
|
||||||
|
<th data-sortable="false" colspan="2">{% trans "Action" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="searchable">
|
||||||
|
{% for volume in volumes %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ forloop.counter }}</td>
|
||||||
|
<td>{{ volume.name }}</td>
|
||||||
|
<td>{{ volume.allocation|filesizeformat }}</td>
|
||||||
|
<td>{{ volume.size|filesizeformat }}</td>
|
||||||
|
<td>{{ volume.type }}</td>
|
||||||
|
<td style="width:30px;">
|
||||||
|
<!-- Modal Clone -->
|
||||||
|
<div class="modal fade" id="Clone{{ forloop.counter }}" tabindex="-1" role="dialog"
|
||||||
|
aria-labelledby="addHostLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
<h4 class="modal-title">{% trans "Clone image" %} <span class="text-danger">{{ volume.name }}</span></h4>
|
||||||
|
</div>
|
||||||
|
<form class="form-horizontal" method="post" role="form">{% csrf_token %}
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Name" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+">
|
||||||
|
<input type="hidden" name="image" value="{{ volume.name }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group" id="image_format">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Convert" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input class="volume-convert" type="checkbox" name="convert" value="true">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group format-convert">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Format" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<select name="format" class="form-control image-format">
|
||||||
|
<option value="raw">{% trans "raw" %}</option>
|
||||||
|
<option value="qcow">{% trans "qcow" %}</option>
|
||||||
|
<option value="qcow2">{% trans "qcow2" %}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group meta-prealloc" style="display: none;">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Metadata" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="checkbox" name="meta_prealloc" value="true">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>
|
||||||
|
<button type="submit" class="btn btn-primary" name="cln_volume" onclick="showPleaseWaitDialog();">{% trans "Clone" %}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div> <!-- /.modal-content -->
|
||||||
|
</div> <!-- /.modal-dialog -->
|
||||||
|
</div> <!-- /.modal -->
|
||||||
|
{% ifnotequal volume.type "iso" %}
|
||||||
|
<a data-toggle="modal" href="#Clone{{ forloop.counter }}" class="btn btn-sm btn-default" title="{% trans "Clone" %}"><i class="fa fa-files-o"></i></a>
|
||||||
|
{% else %}
|
||||||
|
<a class="btn btn-sm btn-default disabled"><i class="fa fa-files-o"></i></a>
|
||||||
|
{% endifnotequal %}
|
||||||
|
</td>
|
||||||
|
<td style="width:30px;">
|
||||||
|
<form action="" method="post" style="height:10px" role="form">{% csrf_token %}
|
||||||
|
<input type="hidden" name="volname" value="{{ volume.name }}">
|
||||||
|
<button type="submit" class="btn btn-sm btn-default" name="del_volume" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')">
|
||||||
|
<i class="fa fa-trash"></i>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="alert alert-warning alert-dismissable">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||||
|
<i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning" %}:</strong> {% trans "Hypervisor doesn't have any Volumes" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% include 'pleasewaitdialog.html' %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block script %}
|
{% block script %}
|
||||||
<script src="{% static "js/sortable.min.js" %}"></script>
|
<script src="{% static "js/sortable.min.js" %}"></script>
|
||||||
|
|
Loading…
Reference in a new issue