Skip to content

Commit

Permalink
Merge pull request #151 from juanmont/FF-4901
Browse files Browse the repository at this point in the history
F 4901
  • Loading branch information
tinova authored Nov 15, 2016
2 parents 08d88e0 + 90675e7 commit fdbba3f
Show file tree
Hide file tree
Showing 5 changed files with 152 additions and 75 deletions.
56 changes: 43 additions & 13 deletions src/sunstone/public/app/tabs/clusters-tab/panels/info.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ define(function(require) {
var RenameTr = require('utils/panel/rename-tr');
var TemplateTable = require('utils/panel/template-table');
var Sunstone = require('sunstone');
var TemplateUtils = require('utils/template-utils');

/*
CONSTANTS
Expand All @@ -47,12 +48,13 @@ define(function(require) {
this.icon = "fa-info-circle";

this.element = info[XML_ROOT];
this.percent = false;

// Hide information in the template table. Unshow values are stored
// in the unshownTemplate object to be used when the element info is updated.
that.unshownTemplate = {};
that.strippedTemplate = {};
var unshownKeys = ['RESERVED_CPU', 'RESERVED_MEM'];
var unshownKeys = ['HOST', 'RESERVED_CPU', 'RESERVED_MEM'];
$.each(that.element.TEMPLATE, function(key, value) {
if ($.inArray(key, unshownKeys) > -1) {
that.unshownTemplate[key] = value;
Expand Down Expand Up @@ -80,33 +82,61 @@ define(function(require) {
this.strippedTemplate,
RESOURCE,
Locale.tr("Attributes"));

var reservedMem;
(this.element.TEMPLATE.RESERVED_MEM != "0%" && this.element.TEMPLATE.RESERVED_MEM != "")?reservedMem = parseInt(this.element.TEMPLATE.RESERVED_MEM): reservedMem = 0;
var reservedCPU
(this.element.TEMPLATE.RESERVED_CPU != "0%" && this.element.TEMPLATE.RESERVED_CPU != "")? reservedCPU = parseInt(this.element.TEMPLATE.RESERVED_CPU): reservedCPU = 0;
return TemplateHTML({
'element': this.element,
'renameTrHTML': renameTrHTML,
'templateTableHTML': templateTableHTML
'templateTableHTML': templateTableHTML,
'percentCPU': reservedCPU,
'percentMEM': reservedMem,
});
}

function changeBarCPU(){
if(parseInt(document.getElementById('change_bar_cpu').value) > 0)
document.getElementById('textInput_reserved_cpu').style.backgroundColor = 'rgba(111, 220, 111,0.5)';
if(parseInt(document.getElementById('change_bar_cpu').value) < 0)
document.getElementById('textInput_reserved_cpu').style.backgroundColor = 'rgba(255, 80, 80,0.5)';
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(){
if(parseInt(document.getElementById('change_bar_mem').value) > 0)
document.getElementById('textInput_reserved_mem').style.backgroundColor = 'rgba(111, 220, 111,0.5)';
if(parseInt(document.getElementById('change_bar_mem').value) < 0)
document.getElementById('textInput_reserved_mem').style.backgroundColor = 'rgba(255, 80, 80,0.5)';
document.getElementById('textInput_reserved_mem').value = document.getElementById('change_bar_mem').value;
}

function changeInputMEM(){
document.getElementById('change_bar_mem').value = document.getElementById('textInput_reserved_mem').value;
}

function _setup(context) {
var that = this;

RenameTr.setup(TAB_ID, RESOURCE, this.element.ID, context);

TemplateTable.setup(this.strippedTemplate, RESOURCE, this.element.ID, context, this.unshownTemplate);

$(".edit_reserved", context).on("click", function(){
var dialog = Sunstone.getDialog(OVERCOMMIT_DIALOG_ID);
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);

dialog.setParams(
{ element: that.element,
action : "Cluster.append_template",
resourceName : Locale.tr("Cluster"),
tabId : TAB_ID
});
$(document).off('click', '.update_reserved').on("click", '.update_reserved', function(){
var reservedCPU = document.getElementById('change_bar_cpu').value+'%';
var reservedMem = document.getElementById('change_bar_mem').value+'%';

dialog.show();
return false;
var obj = {RESERVED_CPU: reservedCPU, RESERVED_MEM: reservedMem};
Sunstone.runAction("Cluster.append_template", that.element.ID, TemplateUtils.templateToString(obj));
});
}
});
54 changes: 31 additions & 23 deletions src/sunstone/public/app/tabs/clusters-tab/panels/info/html.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -31,31 +31,39 @@
{{{renameTrHTML}}}
</tbody>
</table>
<table class="dataTable">
<thead>
<tr>
<th colspan="3">{{tr "Overcommitment"}}</th>
</tr>
</thead>
<tbody>
<tr>
<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>
</tr>
<tr>
<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>
</tr>
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<table class="dataTable">
<thead>
<tr>
<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 colspan="3">
<td class="key_td">{{tr "Reserved CPU"}}</td>
<td><input type="range" name="rangeInput" id="change_bar_cpu" min="-100" value="{{percentCPU}}" max="100">
<label align="center">0%</label></td>
<td><input type="text" id="textInput_reserved_cpu" value="{{percentCPU}}" min="-100" max="100" size="1"></td>
</tr>
<tr colspan="3">
<td class="key_td">{{tr "Reserved Memory"}}</td>
<td><input type="range" name="rangeInput" id="change_bar_mem" min="-100" value="{{percentMEM}}" max="100">
<label align="center">0%</label></td>
<td><input type="text" id="textInput_reserved_mem" value="{{percentMEM}}" min="-100" max="100" size="1"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="large-9 columns">
{{{templateTableHTML}}}
Expand Down
70 changes: 50 additions & 20 deletions src/sunstone/public/app/tabs/hosts-tab/panels/info.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -88,19 +87,19 @@ define(function(require) {
/*
FUNCTION DEFINITIONS
*/

function _html() {
var templateTableHTML = TemplateTable.html(
this.strippedTemplate,
RESOURCE,
Locale.tr("Attributes"));

var renameTrHTML = RenameTr.html(TAB_ID, RESOURCE, this.element.NAME);
var clusterTrHTML = ClusterTr.html(this.element.CLUSTER);
var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);
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.TOTAL_CPU);
var realMEM = parseInt(this.element.HOST_SHARE.TOTAL_MEM);

return TemplateInfo({
'element': this.element,
Expand All @@ -111,10 +110,23 @@ define(function(require) {
'cpuBars': cpuBars,
'memoryBars': memoryBars,
'stateStr': OpenNebulaHost.stateStr(this.element.STATE),
'datastoresCapacityTableHTML': datastoresCapacityTableHTML
'datastoresCapacityTableHTML': datastoresCapacityTableHTML,
'maxReservedMEM': realMEM * 2,
'maxReservedCPU': realCPU * 2,
'realCPU': realCPU,
'realMEM': Humanize.size(realMEM),
'virtualMEMInput': Humanize.size(this.element.HOST_SHARE.MAX_MEM)
});
}

function changeInputCPU(){
document.getElementById('change_bar_cpu_hosts').value = document.getElementById('textInput_reserved_cpu_hosts').value;
}

function changeInputMEM(){
document.getElementById('change_bar_mem_hosts').value = parseInt(document.getElementById('textInput_reserved_mem_hosts').value);
}

function _setup(context) {
var that = this;

Expand All @@ -123,20 +135,38 @@ 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(){
var dialog = Sunstone.getDialog(OVERCOMMIT_DIALOG_ID);

dialog.setParams(
{ element: that.element,
action : "Host.append_template",
resourceName : Locale.tr("Host"),
tabId : TAB_ID
});

dialog.show();
return false;
//.off and .on prevent multiple clicks events
$(document).off('click', '.update_reserved_hosts').on("click", '.update_reserved', function(){
var reservedCPU = parseInt(document.getElementById('change_bar_cpu_hosts').value);
var CPU = parseInt(that.element.HOST_SHARE.FREE_CPU);
var reservedMem = parseInt(document.getElementById('change_bar_mem_hosts').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));
});

return false;

document.getElementById("change_bar_cpu_hosts").addEventListener("change", function(){
if(parseInt(document.getElementById('change_bar_cpu_hosts').value) > that.element.HOST_SHARE.TOTAL_CPU)
document.getElementById('textInput_reserved_cpu_hosts').style.backgroundColor = 'rgba(111, 220, 111,0.5)';
if(parseInt(document.getElementById('change_bar_cpu_hosts').value) < that.element.HOST_SHARE.TOTAL_CPU)
document.getElementById('textInput_reserved_cpu_hosts').style.backgroundColor = 'rgba(255, 80, 80,0.5)';
document.getElementById('textInput_reserved_cpu_hosts').value = document.getElementById('change_bar_cpu_hosts').value;
});
document.getElementById("textInput_reserved_cpu_hosts").addEventListener("change", changeInputCPU);
document.getElementById("change_bar_mem_hosts").addEventListener("change", function(){
if(parseInt(document.getElementById('change_bar_mem_hosts').value) > that.element.HOST_SHARE.TOTAL_MEM)
document.getElementById('textInput_reserved_mem_hosts').style.backgroundColor = 'rgba(111, 220, 111,0.5)';
if(parseInt(document.getElementById('change_bar_mem_hosts').value) < that.element.HOST_SHARE.TOTAL_MEM)
document.getElementById('textInput_reserved_mem_hosts').style.backgroundColor = 'rgba(255, 80, 80,0.5)';
document.getElementById('textInput_reserved_mem_hosts').value = Humanize.size(parseInt(document.getElementById('change_bar_mem_hosts').value));
});
document.getElementById("textInput_reserved_mem_hosts").addEventListener("change", changeInputMEM);
}
});
36 changes: 22 additions & 14 deletions src/sunstone/public/app/tabs/hosts-tab/panels/info/html.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -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_hosts" type="button" class="button small success update_reserved right radius">
{{tr "Update"}}
</button>
</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<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>
<tr colspan="3">
<td class="key_td">{{tr "CPU"}}</td>
<td><input type="range" name="rangeInput" id="change_bar_cpu_hosts" min="0" value="{{element.HOST_SHARE.MAX_CPU}}" max="{{maxReservedCPU}}">
<label align="center">{{realCPU}}</label></td>
<td><input type="text" id="textInput_reserved_cpu_hosts" value="{{element.HOST_SHARE.MAX_CPU}}" min="0" size="1"></td>
</tr>
<tr>
<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>
<tr colspan="3">
<td class="key_td">{{tr "Memory"}}</td>
<td><input type="range" name="rangeInput" id="change_bar_mem_hosts" value="{{element.HOST_SHARE.MAX_MEM}}" max="{{maxReservedMEM}}">
<label align="center">{{realMEM}}</label></td>
<td><input type="text" id="textInput_reserved_mem_hosts" value="{{virtualMEMInput}}" min="0" size="1"></td>
</tr>
</tbody>
</table>
{{{datastoresCapacityTableHTML}}}
</div>
</div>
<div class="row">
Expand Down
11 changes: 6 additions & 5 deletions src/sunstone/public/app/tabs/hosts-tab/panels/monitor.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,21 +76,22 @@ define(function(require) {
data: {
id: this.element.ID,
monitor: {
monitor_resources : "HOST_SHARE/CPU_USAGE,HOST_SHARE/USED_CPU,HOST_SHARE/MAX_CPU,HOST_SHARE/MEM_USAGE,HOST_SHARE/USED_MEM,HOST_SHARE/MAX_MEM"
monitor_resources : "HOST_SHARE/CPU_USAGE,HOST_SHARE/USED_CPU,HOST_SHARE/MAX_CPU,HOST_SHARE/TOTAL_CPU,HOST_SHARE/MEM_USAGE,HOST_SHARE/USED_MEM,HOST_SHARE/MAX_MEM,HOST_SHARE/TOTAL_MEM"
}
},
success: function(req, response) {
var host_graphs = [
{
monitor_resources : "HOST_SHARE/CPU_USAGE,HOST_SHARE/USED_CPU,HOST_SHARE/MAX_CPU",
labels : Locale.tr("Allocated") + "," + Locale.tr("Real") + "," + Locale.tr("Total"),
monitor_resources : "HOST_SHARE/CPU_USAGE,HOST_SHARE/USED_CPU,HOST_SHARE/MAX_CPU,HOST_SHARE/TOTAL_CPU",
labels : Locale.tr("Allocated") + "," + Locale.tr("Real") + "," + Locale.tr("Total") + "," + Locale.tr("Total +/- reserved"),
humanize_figures : false,
div_graph : $("#host_cpu_graph"),
div_legend : $("#host_cpu_legend")
},
{
monitor_resources : "HOST_SHARE/MEM_USAGE,HOST_SHARE/USED_MEM,HOST_SHARE/MAX_MEM",
labels : Locale.tr("Allocated") + "," + Locale.tr("Real") + "," + Locale.tr("Total"),
monitor_resources : "HOST_SHARE/MEM_USAGE,HOST_SHARE/USED_MEM,HOST_SHARE/MAX_MEM,HOST_SHARE/TOTAL_MEM",
labels : Locale.tr("Allocated") + "," + Locale.tr("Real") + "," + Locale.tr("Total") + "," + Locale.tr("Total +/- reserved"),
humanize_figures : false,
humanize_figures : true,
div_graph : $("#host_mem_graph"),
div_legend : $("#host_mem_legend")
Expand Down

0 comments on commit fdbba3f

Please sign in to comment.