1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-16 22:50:10 +03:00

F #1946: add quotas (#4781)

Signed-off-by: Jorge Lobo <jlobo@opennebula.io>
This commit is contained in:
Jorge Miguel Lobo Escalona 2020-05-20 20:06:40 +02:00 committed by GitHub
parent b9aa48f002
commit 376965d87e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 168 additions and 49 deletions

View File

@ -450,8 +450,15 @@ define(function(require) {
that.user = user;
QuotaWidgets.initEmptyQuotas(user);
if (user && user.VM_QUOTA && !$.isEmptyObject(user.VM_QUOTA)){
$("#provision_quotas_dashboard").show();
var default_user_quotas = QuotaDefaults.default_quotas(user.DEFAULT_USER_QUOTAS);
$("#provision_quotas_dashboard").show();
var default_user_quotas = QuotaDefaults.default_quotas(user.DEFAULT_USER_QUOTAS);
//running VMS
if(
default_user_quotas &&
default_user_quotas.VM_QUOTA &&
default_user_quotas.VM_QUOTA.VM &&
default_user_quotas.VM_QUOTA.VM.VMS
){
var vms = QuotaWidgets.quotaInfo(
user.VM_QUOTA.VM.VMS_USED,
user.VM_QUOTA.VM.VMS,
@ -459,6 +466,14 @@ define(function(require) {
$("#provision_dashboard_rvms_percentage").html(vms["percentage"]);
$("#provision_dashboard_rvms_str").html(vms["str"]);
$("#provision_dashboard_rvms_meter").val(vms["percentage"]);
}
//MEMORY
if(
default_user_quotas &&
default_user_quotas.VM_QUOTA &&
default_user_quotas.VM_QUOTA.VM &&
default_user_quotas.VM_QUOTA.VM.MEMORY
){
var memory = QuotaWidgets.quotaMBInfo(
user.VM_QUOTA.VM.MEMORY_USED,
user.VM_QUOTA.VM.MEMORY,
@ -466,6 +481,14 @@ define(function(require) {
$("#provision_dashboard_memory_percentage").html(memory["percentage"]);
$("#provision_dashboard_memory_str").html(memory["str"]);
$("#provision_dashboard_memory_meter").val(memory["percentage"]);
}
//CPU
if(
default_user_quotas &&
default_user_quotas.VM_QUOTA &&
default_user_quotas.VM_QUOTA.VM &&
default_user_quotas.VM_QUOTA.VM.CPU
){
var cpu = QuotaWidgets.quotaFloatInfo(
user.VM_QUOTA.VM.CPU_USED,
user.VM_QUOTA.VM.CPU,
@ -473,6 +496,59 @@ define(function(require) {
$("#provision_dashboard_cpu_percentage").html(cpu["percentage"]);
$("#provision_dashboard_cpu_str").html(cpu["str"]);
$("#provision_dashboard_cpu_meter").val(cpu["percentage"]);
}
//IP LEASES
if(
user &&
user.NETWORK_QUOTA &&
user.NETWORK_QUOTA.NETWORK
){
var used = 0;
var size = 0;
if(Array.isArray(user.NETWORK_QUOTA.NETWORK)){
user.NETWORK_QUOTA.NETWORK.map(function(network){
if(network.LEASES_USED){
used = used+parseInt(network.LEASES_USED,10);
}
if(network.LEASES){
size = size+parseInt(network.LEASES,10);
}
});
var ipLeases = QuotaWidgets.quotaInfo(used, size);
$("#provision_dashboard_ips_percentage").html(ipLeases["percentage"]);
$("#provision_dashboard_ips_str").html(ipLeases["str"]);
$("#provision_dashboard_ips_meter").val(ipLeases["percentage"]);
}
}
//SYSTEM DISK
if(
default_user_quotas &&
default_user_quotas.VM_QUOTA &&
default_user_quotas.VM_QUOTA.VM.SYSTEM_DISK_SIZE
){
var systemDisk = QuotaWidgets.quotaInfo(
user.VM_QUOTA.VM.SYSTEM_DISK_SIZE_USED,
user.VM_QUOTA.VM.SYSTEM_DISK_SIZE,
default_user_quotas.VM_QUOTA.VM.SYSTEM_DISK_SIZE);
$("#provision_dashboard_system_disk_percentage").html(systemDisk["percentage"]);
$("#provision_dashboard_system_disk_str").html(systemDisk["str"]);
$("#provision_dashboard_system_disk_meter").val(systemDisk["percentage"]);
}
//DATASTORE
if(
user &&
user.DATASTORE_QUOTA &&
user.DATASTORE_QUOTA.DATASTORE &&
user.DATASTORE_QUOTA.DATASTORE.SIZE &&
user.DATASTORE_QUOTA.DATASTORE.SIZE_USED
){
var datastore = QuotaWidgets.quotaInfo(
user.DATASTORE_QUOTA.DATASTORE.SIZE_USED,
user.DATASTORE_QUOTA.DATASTORE.SIZE);
$("#provision_dashboard_datastore_percentage").html(datastore["percentage"]);
$("#provision_dashboard_datastore_str").html(datastore["str"]);
$("#provision_dashboard_datastore_meter").val(datastore["percentage"]);
}
} else {
$("#provision_quotas_dashboard").hide();
}

View File

@ -14,53 +14,96 @@
{{! limitations under the License. }}
{{! -------------------------------------------------------------------------- }}
<fieldset class="large-12 columns dashboard-fieldset" id="provision_quotas_dashboard" hidden>
<div class="row">
<div class="large-12 columns dashboard-div-titles">
<div class="small-6 medium-8 columns">
<h5>{{tr "Quotas"}}</h5>
</div>
</div>
</div>
<div class="row">
<div class="large-11 medium-12 large-centered columns">
<div class="row">
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_rvms_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_rvms_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_rvms_str"></span>
<br>
<span class="subheader">{{tr "RUNNING VMS"}}</span>
</h6>
</div>
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_cpu_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_cpu_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_cpu_str"></span>
<br>
<span class="subheader">{{tr "CPU"}}</span>
</h6>
</div>
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_memory_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_memory_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_memory_str"></span>
<br>
<span class="subheader">{{tr "MEMORY"}}</span>
</h6>
<div class="row">
<div class="large-12 columns dashboard-div-titles">
<div class="small-6 medium-8 columns">
<h5>{{tr "Quotas"}}</h5>
</div>
</div>
</div>
<div class="row">
<div class="large-11 medium-12 large-centered columns">
<div class="row">
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_rvms_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_rvms_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_rvms_str"></span>
<br>
<span class="subheader">{{tr "RUNNING VMS"}}</span>
</h6>
</div>
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_cpu_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_cpu_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_cpu_str"></span>
<br>
<span class="subheader">{{tr "CPU"}}</span>
</h6>
</div>
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_memory_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_memory_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_memory_str"></span>
<br>
<span class="subheader">{{tr "MEMORY"}}</span>
</h6>
</div>
</div>
</div>
</div>
<br>
<div class="row">
<div class="large-11 medium-12 large-centered columns">
<div class="row">
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_ips_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_ips_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_ips_str"></span>
<br>
<span class="subheader">{{tr "IP LEASES"}}</span>
</h6>
</div>
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_system_disk_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_system_disk_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_system_disk_str"></span>
<br>
<span class="subheader">{{tr "SYSTEM DISK"}}</span>
</h6>
</div>
<div class="large-4 medium-4 columns text-center">
<h3>
<span id="provision_dashboard_datastore_percentage">0</span>
<small>%</small>
</h3>
<meter id="provision_dashboard_datastore_meter" min="0" low="33" high="66" optimum="0" max="100"></meter>
<h6>
<span id="provision_dashboard_datastore_str"></span>
<br>
<span class="subheader">{{tr "DATASTORE"}}</span>
</h6>
</div>
</div>
</div>
</div>
</div>
</fieldset>

View File

@ -1397,7 +1397,7 @@ define(function(require) {
function _quotaIntLimit(limit, default_limit){
i_limit = parseInt(limit, 10);
i_default_limit = parseInt(default_limit, 10);
i_default_limit = default_limit? parseInt(default_limit, 10) : i_limit;
if (limit == QUOTA_LIMIT_DEFAULT){
i_limit = i_default_limit;