1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

F #4901: Add support for values RESERVED_CPU and RESERVED_MEM

- Added new slider in info (hosts-tab)
This commit is contained in:
juanmont 2016-11-14 12:02:58 +01:00
parent 08d88e0119
commit f3355a0891
2 changed files with 74 additions and 18 deletions

View File

@ -13,12 +13,11 @@
/* See the License for the specific language governing permissions and */
/* limitations under the License. */
/* -------------------------------------------------------------------------- */
define(function(require) {
/*
DEPENDENCIES
*/
require('foundation');
var Locale = require('utils/locale');
var Humanize = require('utils/humanize');
var RenameTr = require('utils/panel/rename-tr');
@ -31,6 +30,7 @@ define(function(require) {
var DatastoresCapacityTable = require('../utils/datastores-capacity-table');
var CanImportWilds = require('../utils/can-import-wilds');
var Sunstone = require('sunstone');
var TemplateUtils = require('utils/template-utils');
/*
TEMPLATES
@ -59,7 +59,6 @@ define(function(require) {
that.icon = "fa-info-circle";
that.element = info[XML_ROOT];
that.canImportWilds = CanImportWilds(that.element);
// Hide information of the Wild VMs of the Host and the ESX Hosts
@ -88,7 +87,6 @@ define(function(require) {
/*
FUNCTION DEFINITIONS
*/
function _html() {
var templateTableHTML = TemplateTable.html(
this.strippedTemplate,
@ -101,6 +99,12 @@ define(function(require) {
var cpuBars = CPUBars.html(this.element);
var memoryBars = MemoryBars.html(this.element);
var datastoresCapacityTableHTML = DatastoresCapacityTable.html(this.element);
var realCPU = parseInt(this.element.HOST_SHARE.FREE_CPU);
if(this.element.HOST_SHARE.USED_CPU != "")
realCPU += parseInt(this.element.HOST_SHARE.USED_CPU);
var realMEM = parseInt(this.element.HOST_SHARE.FREE_MEM);
if(this.element.HOST_SHARE.USED_MEM != "")
realMEM += parseInt(this.element.HOST_SHARE.USED_MEM);
return TemplateInfo({
'element': this.element,
@ -111,10 +115,31 @@ define(function(require) {
'cpuBars': cpuBars,
'memoryBars': memoryBars,
'stateStr': OpenNebulaHost.stateStr(this.element.STATE),
'datastoresCapacityTableHTML': datastoresCapacityTableHTML
'datastoresCapacityTableHTML': datastoresCapacityTableHTML,
'maxReservedCPU': realCPU * 2,
'realCPU': realCPU,
'realMEM': Humanize.size(realMEM),
'maxReservedMEM': realMEM * 2,
'virtualMEMInput': Humanize.size(this.element.HOST_SHARE.MAX_MEM)
});
}
function changeBarCPU(){
document.getElementById('textInput_reserved_cpu').value = document.getElementById('change_bar_cpu').value;
}
function changeInputCPU(){
document.getElementById('change_bar_cpu').value = document.getElementById('textInput_reserved_cpu').value;
}
function changeBarMEM(){
document.getElementById('textInput_reserved_mem').value = Humanize.size(parseInt(document.getElementById('change_bar_mem').value));
}
function changeInputMEM(){
document.getElementById('change_bar_mem').value = parseInt(document.getElementById('textInput_reserved_mem').value);
}
function _setup(context) {
var that = this;
@ -123,7 +148,7 @@ define(function(require) {
TemplateTable.setup(this.strippedTemplate, RESOURCE, this.element.ID, context, this.unshownTemplate);
PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);
$(".edit_reserved", context).on("click", function(){
$("", context).on("click", function(){
var dialog = Sunstone.getDialog(OVERCOMMIT_DIALOG_ID);
dialog.setParams(
@ -137,6 +162,29 @@ define(function(require) {
return false;
});
//.off and .on prevent multiple clicks events
$(document).off('click', '.update_reserved').on("click", '.update_reserved', function(){
var reservedCPU = parseInt(document.getElementById('change_bar_cpu').value);
var CPU = parseInt(that.element.HOST_SHARE.FREE_CPU);
var reservedMem = parseInt(document.getElementById('change_bar_mem').value);
var MEM = parseInt(that.element.HOST_SHARE.FREE_MEM);
if(parseInt(that.element.HOST_SHARE.USED_CPU) > 0)
CPU += parseInt(that.element.HOST_SHARE.USED_CPU);
reservedCPU = CPU - reservedCPU;
if(parseInt(that.element.HOST_SHARE.USED_MEM) > 0)
MEM += parseInt(that.element.HOST_SHARE.USED_MEM);
reservedMem = MEM - reservedMem;
var obj = {RESERVED_CPU: reservedCPU, RESERVED_MEM: reservedMem};
Sunstone.runAction("Host.append_template", that.element.ID, TemplateUtils.templateToString(obj));
});
document.getElementById("change_bar_cpu").addEventListener("change", changeBarCPU);
document.getElementById("textInput_reserved_cpu").addEventListener("change", changeInputCPU);
document.getElementById("change_bar_mem").addEventListener("change", changeBarMEM);
document.getElementById("textInput_reserved_mem").addEventListener("change", changeInputMEM);
return false;
}
});

View File

@ -73,30 +73,38 @@
</tr>
</tbody>
</table>
{{{datastoresCapacityTableHTML}}}
</div>
</div>
<div class="row">
<div class="large-12 columns">
<table class="dataTable">
<thead>
<tr>
<th colspan="3">{{tr "Overcommitment"}}</th>
<th colspan="4">{{tr "Overcommitment"}}
<span class="right">
<button id="update_reserved" type="button" class="button small success update_reserved right radius">
{{tr "Update"}}
</button>
</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<tr colspan="3">
<td class="key_td">{{tr "Reserved CPU"}}</td>
<td class="value_td" style="width:50%;">{{valOrDefault element.TEMPLATE.RESERVED_CPU "-"}}</td>
<td>
<a class="edit_reserved edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>
</td>
<td><input type="range" name="rangeInput" id="change_bar_cpu" min="0" value="{{element.HOST_SHARE.MAX_CPU}}" max="{{maxReservedCPU}}">
<label align="center">{{realCPU}}</label></td>
<td><input type="text" id="textInput_reserved_cpu"value="{{element.HOST_SHARE.MAX_CPU}}" min="0" size="1"></td>
</tr>
<tr>
<tr colspan="3">
<td class="key_td">{{tr "Reserved Memory"}}</td>
<td class="value_td" style="width:50%;">{{humanizeSize "KB" element.TEMPLATE.RESERVED_MEM}}</td>
<td>
<a class="edit_reserved edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>
</td>
<td><input type="range" name="rangeInput" id="change_bar_mem" value="{{element.HOST_SHARE.MAX_MEM}}" max="{{maxReservedMEM}}">
<label align="center">{{realMEM}}</label></td>
<td><input type="text" id="textInput_reserved_mem" value="{{virtualMEMInput}}" min="0" size="1"></td>
</tr>
</tbody>
</table>
{{{datastoresCapacityTableHTML}}}
</div>
</div>
<div class="row">