diff --git a/xCAT-UI/js/configure/configure.js b/xCAT-UI/js/configure/configure.js
index 22f20bc3a..01a67b3ed 100644
--- a/xCAT-UI/js/configure/configure.js
+++ b/xCAT-UI/js/configure/configure.js
@@ -75,7 +75,7 @@ function loadConfigPage() {
tab.add('discoverTab', 'Discover', '', false);
// Add the self-service tab
- tab.add('serviceTab', 'Service', '', false);
+ tab.add('serviceTab', 'Service', '', false);
// Get list of tables and their descriptions
$.ajax({
@@ -98,7 +98,7 @@ function loadConfigPage() {
return;
}
- if (ui.index == 1) {
+ if (ui.index == 1) {
loadUpdatePage();
} else if (ui.index == 2) {
loadUserPage();
diff --git a/xCAT-UI/js/configure/users.js b/xCAT-UI/js/configure/users.js
index dba4dfa2c..d50152278 100644
--- a/xCAT-UI/js/configure/users.js
+++ b/xCAT-UI/js/configure/users.js
@@ -328,8 +328,6 @@ function openCreateUserDialog(data) {
args += ' policy.name=' + usrName;
} if (host) {
args += " policy.host='" + host + "'";
- } if (commands) {
- args += " policy.commands='" + commands + "'";
} if (parameters) {
args += " policy.parameters='" + parameters + "'";
} if (nodeRange) {
@@ -347,6 +345,13 @@ function openCreateUserDialog(data) {
args += " policy.comments=''";
}
+ // Handle cases where there are commands and no commands
+ if (commands) {
+ args += " policy.commands='" + commands + "'";
+ } else {
+ args += " policy.commands=''";
+ }
+
// Trim any extra spaces
args = jQuery.trim(args);
@@ -396,21 +401,30 @@ function openCreateUserDialog(data) {
// Change comments if access checkbox is checked
typeSelect.change(function() {
var comments = createUserForm.find('input[name=comments]').val();
- var tag = "privilege:root";
- comments = jQuery.trim(comments);
+ var cmds = createUserForm.find('input[name=commands]').val();
+ comments = jQuery.trim(comments);
+ cmds = jQuery.trim(cmds);
- // Append tag to comments
+ var tag = "privilege:root";
+
+ // The list of every command used by the self-service page
+ // Every command must be separated by a comma
+ var authorizedCmds = "authcheck,lsdef,nodestat,tabdump,rinv,rpower,rmvm,webportal,webrun";
+
+ // Append tag to commands and comments
if (typeSelect.val().indexOf("admin") > -1) {
if (comments && comments.charAt(comments.length - 1) != ";") {
comments += ";";
}
comments += tag;
- createUserForm.find('input[name=comments]').val(comments);
+ createUserForm.find('input[name=comments]').val(comments);
+ createUserForm.find('input[name=commands]').val("");
} else {
comments = comments.replace(tag, "");
comments = comments.replace(";;", ";");
- createUserForm.find('input[name=comments]').val(comments);
+ createUserForm.find('input[name=comments]').val(comments);
+ createUserForm.find('input[name=commands]').val(authorizedCmds);
}
// Strip off leading semi-colon
@@ -453,6 +467,9 @@ function openCreateUserDialog(data) {
if (comments.indexOf("privilege:root") > -1) {
typeSelect.val("admin");
}
+ } else {
+ // Default user type to guest
+ typeSelect.val("guest").change();
}
}
/**
diff --git a/xCAT-UI/js/custom/zvm.js b/xCAT-UI/js/custom/zvm.js
index 407209b1c..12f8b3c5c 100644
--- a/xCAT-UI/js/custom/zvm.js
+++ b/xCAT-UI/js/custom/zvm.js
@@ -2085,12 +2085,12 @@ zvmPlugin.prototype.addNode = function() {
var args = "";
if (type == 'host') {
args = node + ';zvm.hcp=' + hcp
- + ';nodehm.mgt=zvm;hypervisor.type=zvm;groups=' + group
+ + ';nodehm.mgt=zvm;nodetype.arch=s390x;hypervisor.type=zvm;groups=' + group
+ ';nodetype.os=' + os;
} else {
args = node + ';zvm.hcp=' + hcp
+ ';zvm.userid=' + userId
- + ';nodehm.mgt=zvm' + ';groups=' + group;
+ + ';nodehm.mgt=zvm' + ';nodetype.arch=s390x' + ';groups=' + group;
}
if (ipRange != "" && ipRange != null) {
@@ -2164,12 +2164,12 @@ zvmPlugin.prototype.addNode = function() {
var args = "";
if (type == 'host') {
args = nodeRange + ';zvm.hcp=' + hcp
- + ';nodehm.mgt=zvm;hypervisor.type=zvm;groups=' + group
+ + ';nodehm.mgt=zvm;nodetype.arch=s390x;hypervisor.type=zvm;groups=' + group
+ ';nodetype.os=' + os;
} else {
args = nodeRange + ';zvm.hcp=' + hcp
+ ';zvm.userid=' + userIdRange
- + ';nodehm.mgt=zvm' + ';groups=' + group;
+ + ';nodehm.mgt=zvm' + ';nodetype.arch=s390x' + ';groups=' + group;
}
if (ipRange)
diff --git a/xCAT-UI/js/custom/zvmUtils.js b/xCAT-UI/js/custom/zvmUtils.js
index 464fe0213..402f20265 100644
--- a/xCAT-UI/js/custom/zvmUtils.js
+++ b/xCAT-UI/js/custom/zvmUtils.js
@@ -80,7 +80,7 @@ function loadHcpInfo(data) {
if (userEntry[0].indexOf('Failed') < 0) {
if (hcp) {
// If there is no cookie for the disk pool names
- if (!$.cookie(hcp + 'diskpools')) {
+ if (!$.cookie(hcp + 'diskpools') || $.cookie(hcp + 'diskpools') === null) {
// Get disk pools
$.ajax( {
url : 'lib/cmd.php',
@@ -97,7 +97,7 @@ function loadHcpInfo(data) {
}
// If there is no cookie for the zFCP pool names
- if (!$.cookie(hcp + 'zfcppools')) {
+ if (!$.cookie(hcp + 'zfcppools') || $.cookie(hcp + 'zfcppools') === null) {
// Get disk pools
$.ajax( {
url : 'lib/cmd.php',
@@ -114,7 +114,7 @@ function loadHcpInfo(data) {
}
// If there is no cookie for the network names
- if (!$.cookie(hcp + 'networks')) {
+ if (!$.cookie(hcp + 'networks') || $.cookie(hcp + 'networks') === null) {
// Get network names
$.ajax( {
url : 'lib/cmd.php',
@@ -955,7 +955,8 @@ function getZResources(data) {
for (var key in hcpHash) {
// Get the short host name
hcp = key.split('.')[0];
- hcps.push(hcp);
+ if (jQuery.inArray(hcp, hcps) == -1)
+ hcps.push(hcp);
}
// Set hardware control point cookie
@@ -1159,7 +1160,7 @@ function openAddProcDialog(node) {
procType.append(typeSelect);
addProcForm.append(procType);
- // Generate tooltips
+ // Generate tooltips
addProcForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -1248,7 +1249,7 @@ function openAddDiskDialog(node, hcp) {
var cookie = $.cookie(hcp + 'diskpools');
var pools = new Array();
if (cookie) {
- pools = cookie.split(',');
+ pools = cookie.split(',');
}
// Create form to add disk
@@ -1288,7 +1289,7 @@ function openAddDiskDialog(node, hcp) {
addDiskForm.append('
');
- // Generate tooltips
+ // Generate tooltips
addDiskForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -1411,7 +1412,7 @@ function openAddZfcpDialog(node, hcp, zvm) {
var cookie = $.cookie(hcp + 'zfcppools');
var pools = new Array();
if (cookie) {
- pools = cookie.split(',');
+ pools = cookie.split(',');
}
// Create form to add disk
@@ -1452,7 +1453,7 @@ function openAddZfcpDialog(node, hcp, zvm) {
advanced.toggle();
});
- // Generate tooltips
+ // Generate tooltips
addZfcpForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -1492,9 +1493,9 @@ function openAddZfcpDialog(node, hcp, zvm) {
var loaddev = $(this).find('input[name=diskLoaddev]');
var size = $(this).find('input[name=diskSize]').val();
var pool = $(this).find('select[name=diskPool]').val();
- var tag = $(this).find('select[name=diskTag]').val();
- var portName = $(this).find('select[name=diskPortName]').val();
- var unitNo = $(this).find('select[name=diskUnitNo]').val();
+ var tag = $(this).find('input[name=diskTag]').val();
+ var portName = $(this).find('input[name=diskPortName]').val();
+ var unitNo = $(this).find('input[name=diskUnitNo]').val();
// If inputs are not complete, show warning message
if (!node || !address || !size || !pool) {
@@ -1511,10 +1512,12 @@ function openAddZfcpDialog(node, hcp, zvm) {
if (tag && tag != "null") {
args += '||' + tag;
- } if (portName && tag != "null") {
- args += '||' + portName;
- } if (unitNo && tag != "null") {
- args += '||' + unitNo;
+ } else {
+ args += '|| ""';
+ }
+
+ if ((portName && portName != "null") && (unitNo && unitNo != "null")) {
+ args += '||' + portName + '||' + unitNo;
}
// Add zFCP device
@@ -1572,7 +1575,7 @@ function openDedicateDeviceDialog(node, hcp) {
'' +
'');
- // Generate tooltips
+ // Generate tooltips
dedicateForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -1675,7 +1678,7 @@ function openAddEckd2SystemDialog(hcp) {
// Append options for hardware control points
systemSelect.append($(''));
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
// Create info bar
@@ -1685,7 +1688,7 @@ function openAddEckd2SystemDialog(hcp) {
addE2SForm.append(system);
addE2SForm.append('');
- // Generate tooltips
+ // Generate tooltips
addE2SForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -1727,10 +1730,10 @@ function openAddEckd2SystemDialog(hcp) {
var args = new Array('select[name=system]', 'input[name=devNum]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -1787,7 +1790,7 @@ function openAddPageSpoolDialog(hcp) {
// Append options for hardware control points
systemSelect.append($(''));
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
// Create info bar
@@ -1805,7 +1808,7 @@ function openAddPageSpoolDialog(hcp) {
diskAttr.append('');
diskAttr.append('');
- // Generate tooltips
+ // Generate tooltips
addPageSpoolForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -1849,10 +1852,10 @@ function openAddPageSpoolDialog(hcp) {
var args = new Array('select[name=system]', 'input[name=volAddr]', 'input[name=volLabel]', 'select[name=volUse]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -1905,7 +1908,7 @@ function openShareDiskDialog(disks2share) {
var tgtVol = args[1];
if (!tgtVol || tgtVol == "undefined")
- tgtVol = "";
+ tgtVol = "";
// Create info bar
var info = createInfoBar('Indicate a full-pack minidisk is to be shared by the users of many real and virtual systems.');
@@ -1917,7 +1920,7 @@ function openShareDiskDialog(disks2share) {
var shareEnable = $('');
shareDiskForm.append(node, volAddr, shareEnable);
- // Generate tooltips
+ // Generate tooltips
shareDiskForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -1961,10 +1964,10 @@ function openShareDiskDialog(disks2share) {
var args = new Array('input[name=node]', 'input[name=volAddr]', 'select[name=shareEnable]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -2027,7 +2030,7 @@ function openAddScsi2SystemDialog(hcp) {
// Append options for hardware control points
systemSelect.append($(''));
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
var devNo = $('');
@@ -2109,7 +2112,7 @@ function openAddScsi2SystemDialog(hcp) {
devPathBody.append(devPathRow);
- // Generate tooltips
+ // Generate tooltips
addS2SForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -2138,17 +2141,17 @@ function openAddScsi2SystemDialog(hcp) {
devPathDiv.append(devPathTable);
var option = $('');
+ '' +
+ '' +
+ '' +
+ '');
var persist = $('');
+ '' +
+ '' +
+ '');
addS2SForm.append(system, devNo, devPathDiv, option, persist);
- // Generate tooltips
+ // Generate tooltips
addS2SForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -2212,10 +2215,10 @@ function openAddScsi2SystemDialog(hcp) {
var args = new Array('select[name=system]', 'input[name=devNum]', 'select[name=option]', 'select[name=persist]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -2261,7 +2264,7 @@ function openRemoveScsiDialog(hcp) {
// Create form to add disk
var removeScsiForm = $('');
- // Obtain mapping for zHCP to zVM system
+ // Obtain mapping for zHCP to zVM system
var hcp2zvm = new Object();
hcp2zvm = getHcpZvmHash();
@@ -2272,7 +2275,7 @@ function openRemoveScsiDialog(hcp) {
// Append options for hardware control points
systemSelect.append($(''));
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
// Create info bar
@@ -2280,11 +2283,11 @@ function openRemoveScsiDialog(hcp) {
removeScsiForm.append(info, system);
removeScsiForm.append('');
removeScsiForm.append('');
- // Create info bar
+ // Create info bar
var info = createInfoBar('Create a virtual switch or virtual network LAN.');
var netFS = $('');
@@ -2666,10 +2669,10 @@ function openAddVswitchVlanDialog(hcp) {
var networkTypeDiv = $('');
var networkType = $('
');
+ '' +
+ '' +
+ '' +
+ '');
networkTypeDiv.append(networkType)
netAttr.append(networkTypeDiv);
@@ -2683,7 +2686,7 @@ function openAddVswitchVlanDialog(hcp) {
hcp2zvm = getHcpZvmHash();
systemSelect.append($(''));
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
var typeAttr = $('');
@@ -2708,38 +2711,38 @@ function openAddVswitchVlanDialog(hcp) {
});
advanced.append($(''));
+ '' +
+ '' +
+ '' +
+ ''));
advanced.append($(''));
advanced.append($(''));
+ '' +
+ '' +
+ '' +
+ ''));
advanced.append($(''));
+ '' +
+ '' +
+ '' +
+ ''));
advanced.append($(''));
advanced.append($(''));
+ '' +
+ '' +
+ '' +
+ ''));
advanced.append($(''));
+ '' +
+ '' +
+ '' +
+ '' +
+ ''));
advanced.append($(''));
+ '' +
+ '' +
+ '' +
+ ''));
advanced.append($(''));
// Create VLAN parameters
@@ -2763,24 +2766,24 @@ function openAddVswitchVlanDialog(hcp) {
typeAttr.append(vswitchOptions, vlanOptions);
networkType.change(function() {
- typeFS.show();
+ typeFS.show();
if ($(this).val() == "vswitch") {
- typeFS.find("legend").text("vSwitch");
- vswitchOptions.show();
- vlanOptions.hide();
+ typeFS.find("legend").text("vSwitch");
+ vswitchOptions.show();
+ vlanOptions.hide();
} else if ($(this).val() == "vlan") {
- typeFS.find("legend").text("VLAN");
- vswitchOptions.hide();
- vlanOptions.show();
+ typeFS.find("legend").text("VLAN");
+ vswitchOptions.hide();
+ vlanOptions.show();
} else {
- typeFS.find("legend").text("");
- vswitchOptions.hide();
- vlanOptions.hide();
- typeFS.hide();
+ typeFS.find("legend").text("");
+ vswitchOptions.hide();
+ vlanOptions.hide();
+ typeFS.hide();
}
});
- // Generate tooltips
+ // Generate tooltips
addVswitchForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -2837,10 +2840,10 @@ function openAddVswitchVlanDialog(hcp) {
var args = new Array('select[name=system]', 'input[name=switchName]', 'input[name=deviceAddress]', 'input[name=controllerName]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -2911,10 +2914,10 @@ function openAddVswitchVlanDialog(hcp) {
var args = new Array('select[name=system]', 'input[name=vlanName]', 'input[name=vlanOwner]', 'select[name=vlanType]', 'select[name=vlanTransport]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -3014,7 +3017,7 @@ function openRemoveVswitchVlanDialog(networkList) {
infoMsg = data.rsp;
}
- openDialog("info", infoMsg);
+ openDialog("info", infoMsg);
}
});
} else if (type.indexOf("LAN") != -1) {
@@ -3029,7 +3032,7 @@ function openRemoveVswitchVlanDialog(networkList) {
},
success: function(data) {
- var infoMsg;
+ var infoMsg;
// Create info message
if (jQuery.isArray(data.rsp)) {
@@ -3041,7 +3044,7 @@ function openRemoveVswitchVlanDialog(networkList) {
infoMsg = data.rsp;
}
- openDialog("info", infoMsg);
+ openDialog("info", infoMsg);
}
});
}
@@ -3234,8 +3237,8 @@ function getDiskPool(data) {
} // End of if
} // End of for
} else {
- // Load empty table
- loadDiskPoolTable();
+ // Load empty table
+ loadDiskPoolTable();
}
}
@@ -3321,25 +3324,25 @@ function loadDiskPoolTable(data) {
var hcp2zvm = new Object();
var args, hcp, pool, stat, tmp;
if (data) {
- // Do not continue if the call failed
- if (!data.rsp.length && data.rsp[0].indexOf("Failed") > 0) {
- return;
- }
-
- // Obtain mapping for zHCP to zVM system
- hcp2zvm = getHcpZvmHash();
-
- args = data.msg.split(';');
- hcp = args[0].replace('hcp=', '');
- pool = args[1].replace('pool=', '');
- stat = args[2].replace('stat=', '');
- tmp = data.rsp[0].split(hcp + ': ');
+ // Do not continue if the call failed
+ if (!data.rsp.length && data.rsp[0].indexOf("Failed") > 0) {
+ return;
+ }
+
+ // Obtain mapping for zHCP to zVM system
+ hcp2zvm = getHcpZvmHash();
+
+ args = data.msg.split(';');
+ hcp = args[0].replace('hcp=', '');
+ pool = args[1].replace('pool=', '');
+ stat = args[2].replace('stat=', '');
+ tmp = data.rsp[0].split(hcp + ': ');
} else {
- // Provide empty values so the table will be generated
- hcp = '';
- pool = '';
- stat = '';
- tmp = new Array();
+ // Provide empty values so the table will be generated
+ hcp = '';
+ pool = '';
+ stat = '';
+ tmp = new Array();
}
// Resource tab ID
@@ -3515,23 +3518,23 @@ function loadZfcpPoolTable(data) {
var hcp2zvm = new Object();
var args, hcp, pool, tmp;
if (data) {
- // Do not continue if the call failed
- if (!data.rsp.length && data.rsp[0].indexOf("Failed") > 0) {
- return;
- }
-
- // Obtain mapping for zHCP to zVM system
- hcp2zvm = getHcpZvmHash();
-
- args = data.msg.split(';');
- hcp = args[0].replace('hcp=', '');
- pool = args[1].replace('pool=', '');
- tmp = data.rsp[0].split(hcp + ': ');
+ // Do not continue if the call failed
+ if (!data.rsp.length && data.rsp[0].indexOf("Failed") > 0) {
+ return;
+ }
+
+ // Obtain mapping for zHCP to zVM system
+ hcp2zvm = getHcpZvmHash();
+
+ args = data.msg.split(';');
+ hcp = args[0].replace('hcp=', '');
+ pool = args[1].replace('pool=', '');
+ tmp = data.rsp[0].split(hcp + ': ');
} else {
- // Provide empty values so the table will be generated
- hcp = '';
- pool = ''
- tmp = new Array();
+ // Provide empty values so the table will be generated
+ hcp = '';
+ pool = ''
+ tmp = new Array();
}
// Resource tab ID
@@ -3573,7 +3576,7 @@ function loadZfcpPoolTable(data) {
if (data) {
// Skip index 0 and 1 because it contains nothing
- var key = "";
+ var key = "";
for ( var i = 2; i < tmp.length; i++) {
tmp[i] = jQuery.trim(tmp[i]);
var diskAttrs = tmp[i].split(',');
@@ -3671,26 +3674,26 @@ function openRemoveDiskFromPoolDialog(disks2remove) {
var dialogId = 'zvmDeleteDiskFromPool';
var deleteDiskForm = $('');
- // Obtain mapping for zHCP to zVM system
+ // Obtain mapping for zHCP to zVM system
var hcp2zvm = new Object();
hcp2zvm = getHcpZvmHash();
var disks = new Array();
if (disks2remove.indexOf(',') > -1)
- disks = disks2remove.split(',');
+ disks = disks2remove.split(',');
else
- disks.push(disks2remove);
+ disks.push(disks2remove);
// Pick the last zHCP and pool it finds
var args, tgtHcp = "", tgtPool = "", tgtVol = "";
for (var i in disks) {
- args = disks[i].split('-');
+ args = disks[i].split('-');
tgtHcp = args[0];
tgtPool = args[1];
tgtVol += args[2] + ',';
}
- // Strip out last comma
+ // Strip out last comma
tgtVol = tgtVol.slice(0, -1);
// Create info bar
@@ -3718,7 +3721,7 @@ function openRemoveDiskFromPoolDialog(disks2remove) {
// Append options for hardware control points
systemSelect.append($(''));
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
systemSelect.val(tgtHcp);
@@ -3736,7 +3739,7 @@ function openRemoveDiskFromPoolDialog(disks2remove) {
}
});
- // Generate tooltips
+ // Generate tooltips
deleteDiskForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -3781,10 +3784,10 @@ function openRemoveDiskFromPoolDialog(disks2remove) {
var args = new Array('select[name=system]', 'select[name=action]', 'input[name=region]', 'input[name=group]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -3860,10 +3863,10 @@ function openAddDisk2PoolDialog() {
// Append options for hardware control points
systemSelect.append($(''));
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
- // Generate tooltips
+ // Generate tooltips
addDiskForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -3908,10 +3911,10 @@ function openAddDisk2PoolDialog() {
var args = new Array('select[name=system]', 'select[name=action]', 'input[name=volume]', 'input[name=group]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -4005,11 +4008,11 @@ function openRemoveZfcpFromPoolDialog(devices2remove) {
// Append options for hardware control points
systemSelect.append($(''));
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
systemSelect.val(tgtHcp);
- // Generate tooltips
+ // Generate tooltips
deleteDiskForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -4053,10 +4056,10 @@ function openRemoveZfcpFromPoolDialog(devices2remove) {
var args = new Array('select[name=system]', 'input[name=zfcpPool]', 'input[name=zfcpUnitNo]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -4074,7 +4077,7 @@ function openRemoveZfcpFromPoolDialog(devices2remove) {
var args = '--removezfcpfrompool;' + pool + ';' + unitNo;
if (portName) {
- args += ';' + portName;
+ args += ';' + portName;
}
$.ajax({
url : 'lib/cmd.php',
@@ -4130,10 +4133,10 @@ function openAddZfcp2PoolDialog() {
systemSelect.append($(''));
// Append options for hardware control points
for (var hcp in hcp2zvm) {
- systemSelect.append($(''));
+ systemSelect.append($(''));
}
- // Generate tooltips
+ // Generate tooltips
addDiskForm.find('div input[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -4186,10 +4189,10 @@ function openAddZfcp2PoolDialog() {
var args = new Array('select[name=system]', 'input[name=zfcpPool]', 'select[name=zfcpStatus]', 'input[name=zfcpPortName]', 'input[name=zfcpUnitNo]');
for (var i in args) {
if (!$(this).find(args[i]).val()) {
- $(this).find(args[i]).css('border', 'solid #FF0000 1px');
+ $(this).find(args[i]).css('border', 'solid #FF0000 1px');
ready = false;
} else {
- $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
+ $(this).find(args[i]).css('border', 'solid #BDBDBD 1px');
}
}
@@ -4205,13 +4208,21 @@ function openAddZfcp2PoolDialog() {
'Close': function() {$(this).dialog("close");}
});
+ // zFCP range and owner are optional
+ var args = '--addzfcp2pool||' + tgtPool + '||' + tgtStatus + '||"' + tgtPortName + '"||' + tgtUnitNo + '||' + tgtSize;
+ if (tgtRange) {
+ args += '||' + tgtRange;
+ } if (tgtOwner) {
+ args += '||' + tgtOwner;
+ }
+
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'chhypervisor',
tgt : tgtSystem,
- args : '--addzfcp2pool||' + tgtPool + '||' + tgtStatus + '||"' + tgtPortName + '"||' + tgtUnitNo + '||' + tgtSize + '||' + tgtRange + '||' + tgtOwner,
+ args : args,
msg : dialogId
},
@@ -4326,10 +4337,10 @@ function loadNetworkTable(data) {
zvm = args[0].toLowerCase();
if (args[1].indexOf('.') != -1) {
- tmp = args[1].split('.');
- iHcp = tmp[0];
+ tmp = args[1].split('.');
+ iHcp = tmp[0];
} else {
- iHcp = args[1];
+ iHcp = args[1];
}
hcp2zvm[iHcp] = zvm;
@@ -4395,7 +4406,7 @@ function loadNetworkTable(data) {
// Determine the OSI layer
var layer = "3";
if (details.indexOf("ETHERNET") != -1) {
- layer = "2";
+ layer = "2";
}
// Find the vSwitch/VLAN owner
@@ -4409,7 +4420,7 @@ function loadNetworkTable(data) {
var controllers = "";
match = "";
while (match = regex.exec(details)) {
- controllers += match[1] + ",";
+ controllers += match[1] + ",";
}
controllers = controllers.substring(0, controllers.length - 1); // Delete last two characters
@@ -5271,11 +5282,11 @@ function createZProvisionNew(inst) {
var thisUserId = $('#' + thisTabId + ' input[name=userId]:visible');
var pos = thisUserEntry.val().indexOf('USER ' + thisUserId.val().toUpperCase());
if (pos < 0) {
-
- pos = thisUserEntry.val().indexOf('IDENTITY ' + thisUserId.val().toUpperCase());
+
+ pos = thisUserEntry.val().indexOf('IDENTITY ' + thisUserId.val().toUpperCase());
if (pos < 0) {
- errMsg = errMsg + 'The directory entry does not contain the correct user/identity ID.
';
- ready = false;
+ errMsg = errMsg + 'The directory entry does not contain the correct user/identity ID.
';
+ ready = false;
}
}
@@ -5713,7 +5724,7 @@ function setGoldenImagesCookies(data) {
var tmp = data.rsp[0].split(",");
for ( var i = 0; i < tmp.length; i++) {
if (tmp[i] != null && tmp[i] != "") {
- copies.push(tmp[i]);
+ copies.push(tmp[i]);
}
}
@@ -5764,6 +5775,20 @@ function setZfcpPoolCookies(data) {
}
}
+/**
+ * Set a cookie for zHCP host names
+ *
+ * @param zhcps List of zHCPs known
+ */
+function setzHcpCookies(zhcps) {
+ if (zhcps.length) {
+ // Set cookie to expire in 60 minutes
+ var exDate = new Date();
+ exDate.setTime(exDate.getTime() + (240 * 60 * 1000));
+ $.cookie('zhcps', zhcps, { expires: exDate });
+ }
+}
+
/**
* Create virtual machine (service page)
*
@@ -5887,7 +5912,7 @@ function configProfilePanel(panelId) {
deleteLnk.click(function() {
var profiles = getNodesChecked(tableId);
if (profiles) {
- deleteProfileDialog(profiles);
+ deleteProfileDialog(profiles);
}
});
@@ -6054,7 +6079,7 @@ function profileDialog() {
profileForm.append('');
profileForm.append('');
- // Generate tooltips
+ // Generate tooltips
profileForm.find('div input[title],textarea[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -6235,7 +6260,7 @@ function editProfileDialog(profile, pool, size, entry) {
profileForm.find('input[name=disk_size_eckd]').val(size);
profileForm.find('textarea[name=directory_entry]').val(entry);
- // Generate tooltips
+ // Generate tooltips
profileForm.find('div input[title],textarea[title],select[title]').tooltip({
position: "center right",
offset: [-2, 10],
@@ -6336,7 +6361,7 @@ function editProfileDialog(profile, pool, size, entry) {
* @returns Hash map containing the zHCP to z/VM system mapping
*/
function getHcpZvmHash() {
- // Get zVM host names
+ // Get zVM host names
if (!$.cookie('zvms')) {
$.ajax({
url : 'lib/cmd.php',
@@ -6363,10 +6388,10 @@ function getHcpZvmHash() {
zvm = args[0].toLowerCase();
if (args[1].indexOf('.') != -1) {
- tmp = args[1].split('.');
- iHcp = tmp[0];
+ tmp = args[1].split('.');
+ iHcp = tmp[0];
} else {
- iHcp = args[1];
+ iHcp = args[1];
}
hcp2zvm[iHcp] = zvm;
diff --git a/xCAT-UI/js/nodes/nodes.js b/xCAT-UI/js/nodes/nodes.js
index 22c5eea78..301d8075b 100644
--- a/xCAT-UI/js/nodes/nodes.js
+++ b/xCAT-UI/js/nodes/nodes.js
@@ -418,31 +418,31 @@ function mkAddNodeLink() {
var plugin;
switch(mgt) {
- case "kvm":
- plugin = new kvmPlugin();
- break;
- case "esx":
- plugin = new esxPlugin();
- break;
- case "blade":
- plugin = new bladePlugin();
- break;
- case "hmc":
- plugin = new hmcPlugin();
- break;
- case "ipmi":
- plugin = new ipmiPlugin();
- break;
- case "zvm":
- plugin = new zvmPlugin();
- break;
+ case "kvm":
+ plugin = new kvmPlugin();
+ break;
+ case "esx":
+ plugin = new esxPlugin();
+ break;
+ case "blade":
+ plugin = new bladePlugin();
+ break;
+ case "hmc":
+ plugin = new hmcPlugin();
+ break;
+ case "ipmi":
+ plugin = new ipmiPlugin();
+ break;
+ case "zvm":
+ plugin = new zvmPlugin();
+ break;
}
$(this).dialog('destroy').remove();
plugin.addNode();
},
'Cancel': function(){
- $(this).dialog('destroy').remove();
+ $(this).dialog('destroy').remove();
}
}
});
@@ -695,15 +695,15 @@ function loadNodes(data) {
// Create an instance of the plugin
var plugin;
switch(mgt) {
- case "kvm":
- plugin = new kvmPlugin();
- break;
- case "esx":
- plugin = new esxPlugin();
- break;
- case "zvm":
- plugin = new zvmPlugin();
- break;
+ case "kvm":
+ plugin = new kvmPlugin();
+ break;
+ case "esx":
+ plugin = new esxPlugin();
+ break;
+ case "zvm":
+ plugin = new zvmPlugin();
+ break;
}
plugin.loadClonePage(tgtNodes[i]);
@@ -732,7 +732,7 @@ function loadNodes(data) {
var scriptLnk = $('Run script');
scriptLnk.click(function() {
var tgtNodes = getNodesChecked(nodesTableId);
- if (tgtNodes) {
+ if (tgtNodes) {
loadScriptPage(tgtNodes);
}
});
@@ -740,21 +740,21 @@ function loadNodes(data) {
// Migrate VM
var migrateLnk = $('Migrate');
migrateLnk.click(function() {
- var tgtNodes = getNodesChecked(nodesTableId).split(',');
- var mgt = "", tmp = "";
+ var tgtNodes = getNodesChecked(nodesTableId).split(',');
+ var mgt = "", tmp = "";
for (var i in tgtNodes) {
- tmp = getNodeAttr(tgtNodes[i], 'mgt');
+ tmp = getNodeAttr(tgtNodes[i], 'mgt');
if (!mgt) {
- mgt = tmp
+ mgt = tmp
} else {
- if (tmp != mgt) {
- openDialog('warn', "You can pick only one type (mgt) of node to migrate!");
- return;
- }
+ if (tmp != mgt) {
+ openDialog('warn', "You can pick only one type (mgt) of node to migrate!");
+ return;
+ }
}
}
- // Create an instance of the plugin
+ // Create an instance of the plugin
var plugin;
switch(mgt) {
// Only hypervisors support migration
@@ -855,24 +855,24 @@ function loadNodes(data) {
// Create an instance of the plugin
var plugin;
switch(mgt) {
- case "kvm":
- plugin = new kvmPlugin();
- break;
- case "esx":
- plugin = new esxPlugin();
- break;
- case "blade":
- plugin = new bladePlugin();
- break;
- case "hmc":
- plugin = new hmcPlugin();
- break;
- case "ipmi":
- plugin = new ipmiPlugin();
- break;
- case "zvm":
- plugin = new zvmPlugin();
- break;
+ case "kvm":
+ plugin = new kvmPlugin();
+ break;
+ case "esx":
+ plugin = new esxPlugin();
+ break;
+ case "blade":
+ plugin = new bladePlugin();
+ break;
+ case "hmc":
+ plugin = new hmcPlugin();
+ break;
+ case "ipmi":
+ plugin = new ipmiPlugin();
+ break;
+ case "zvm":
+ plugin = new zvmPlugin();
+ break;
}
plugin.loadLogPage(tgtNodes[i]);
@@ -1636,24 +1636,24 @@ function loadNode(e) {
// Create an instance of the plugin
var plugin;
switch(mgt) {
- case "kvm":
- plugin = new kvmPlugin();
- break;
- case "esx":
- plugin = new esxPlugin();
- break;
- case "blade":
- plugin = new bladePlugin();
- break;
- case "hmc":
- plugin = new hmcPlugin();
- break;
- case "ipmi":
- plugin = new ipmiPlugin();
- break;
- case "zvm":
- plugin = new zvmPlugin();
- break;
+ case "kvm":
+ plugin = new kvmPlugin();
+ break;
+ case "esx":
+ plugin = new esxPlugin();
+ break;
+ case "blade":
+ plugin = new bladePlugin();
+ break;
+ case "hmc":
+ plugin = new hmcPlugin();
+ break;
+ case "ipmi":
+ plugin = new ipmiPlugin();
+ break;
+ case "zvm":
+ plugin = new zvmPlugin();
+ break;
}
// Get tab area where a new tab will be inserted
@@ -1758,13 +1758,13 @@ function loadUnlockPage(tgtNodes) {
*/
var unlockBtn = createButton('Unlock');
unlockBtn.css({
- 'width': '80px',
- 'display': 'block'
+ 'width': '80px',
+ 'display': 'block'
});
unlockBtn.click(function() {
- // Remove any warning messages
- $(this).parents('.ui-tabs-panel').find('.ui-state-error').remove();
-
+ // Remove any warning messages
+ $(this).parents('.ui-tabs-panel').find('.ui-state-error').remove();
+
// If a password is given
var password = $('#' + newTabId + ' input[name=password]').css('border', 'solid #BDBDBD 1px');
if (password.val()) {
@@ -1822,7 +1822,7 @@ function loadScriptPage(tgtNodes) {
// Create remote script form
var scriptForm = $('');
- // Create status bar
+ // Create status bar
var barId = 'scriptStatusBar' + inst;
var statBar = createStatusBar(barId);
statBar.hide();
@@ -1896,12 +1896,12 @@ function loadScriptPage(tgtNodes) {
*/
var runBtn = createButton('Run');
runBtn.css({
- 'width': '80px'
+ 'width': '80px'
});
runBtn.click(function() {
- // Remove any warning messages
- $(this).parents('.ui-tabs-panel').find('.ui-state-error').remove();
-
+ // Remove any warning messages
+ $(this).parents('.ui-tabs-panel').find('.ui-state-error').remove();
+
// Get script to run
var textarea = $('#' + newTabId + ' textarea').css('border', 'solid #BDBDBD 1px');
@@ -2010,7 +2010,7 @@ function loadDeletePage(tgtNodes) {
// Create delete form
var deleteForm = $('');
- // Create status bar, hide on load
+ // Create status bar, hide on load
var statBarId = 'deleteStatusBar' + inst;
var statBar = createStatusBar(statBarId).hide();
@@ -2041,12 +2041,12 @@ function loadDeletePage(tgtNodes) {
*/
var deleteBtn = createButton('Delete');
deleteBtn.click(function() {
- var cmd = "rmvm";
- // Only delete entries in database if checked
- if ($("#" + newTabId + " input[name='db-only']").attr('checked')) {
- cmd = "noderm";
- }
-
+ var cmd = "rmvm";
+ // Only delete entries in database if checked
+ if ($("#" + newTabId + " input[name='db-only']").attr('checked')) {
+ cmd = "noderm";
+ }
+
// Delete the virtual server
$.ajax( {
url : 'lib/cmd.php',
@@ -2164,7 +2164,7 @@ function updateStatusBar(data) {
*/
function updatePowerStatus(data) {
// Hide power loader
- var powerCol = $('#' + nodesTableId + '_wrapper .dataTables_scrollHead .datatable thead tr th:eq(3)');
+ var powerCol = $('#' + nodesTableId + '_wrapper .dataTables_scrollHead .datatable thead tr th:eq(3)');
powerCol.find('img').hide();
// Get datatable
@@ -2218,8 +2218,8 @@ function runScript(inst) {
var statBarId = 'scriptStatusBar' + inst;
$('#' + statBarId).show(); // Show status bar
- $('#' + statBarId + ' img').show(); // Show loader
- $('#' + statBarId + ' p').remove(); // Clear status bar
+ $('#' + statBarId + ' img').show(); // Show loader
+ $('#' + statBarId + ' p').remove(); // Clear status bar
// Disable all fields
$('#' + tabId + ' input').attr('disabled', 'true');
@@ -3250,14 +3250,16 @@ function advancedLoad(group){
}
var args;
+ var shortzHcps = new Array();
for (var h in hcps) {
// Get node without domain name
args = h.split('.');
+ shortzHcps.push(args[0]);
// If there are no disk pools or network names cookie for this hcp
if (!$.cookie(args[0] + 'diskpools') || !$.cookie(args[0] + 'networks')) {
// Check if SMAPI is online
- $.ajax( {
+ $.ajax({
url : 'lib/cmd.php',
dataType : 'json',
data : {
@@ -3270,10 +3272,13 @@ function advancedLoad(group){
// Load hardware control point specific info
// Get disk pools and network names
success : loadHcpInfo
- });
+ });
}
} // End of for
+ // Save zHCPs as a cookie
+ setzHcpCookies(shortzHcps);
+
// Retrieve z/VM hypervisors and their zHCPs
if (!$.cookie('zvms')) {
$.ajax( {
diff --git a/xCAT-UI/js/service/service.js b/xCAT-UI/js/service/service.js
index f8af4a044..e51dfee4e 100644
--- a/xCAT-UI/js/service/service.js
+++ b/xCAT-UI/js/service/service.js
@@ -536,7 +536,7 @@ function loadNodesTable(data) {
}
});
- // Power softoff
+ // Power softoff
var powerSoftoffLnk = $('Shutdown');
powerSoftoffLnk.click(function() {
var tgtNodes = getNodesChecked(nodesDTId);
diff --git a/xCAT-UI/xcat/plugins/web.pm b/xCAT-UI/xcat/plugins/web.pm
index 39d9ae53d..6edf205e7 100644
--- a/xCAT-UI/xcat/plugins/web.pm
+++ b/xCAT-UI/xcat/plugins/web.pm
@@ -419,7 +419,7 @@ sub web_unlock {
my $password = $request->{arg}->[2];
# Unlock a node by setting up the SSH keys
- my $out = `DSH_REMOTE_PASSWORD=$password xdsh $node -K`;
+ my $out = `DSH_REMOTE_PASSWORD=$password /opt/xcat/bin/xdsh $node -K`;
$callback->( { data => $out } );
}
@@ -429,7 +429,7 @@ sub web_gangliastatus {
# Get node range
my $nr = $request->{arg}->[1];
- my $out = `xdsh $nr "service gmond status"`;
+ my $out = `/opt/xcat/bin/xdsh $nr "service gmond status"`;
# Parse output, and use $callback to send back to the web interface
# Output looks like:
@@ -466,21 +466,21 @@ sub web_gangliaconf() {
my $output;
# Add gangliamon to the monitoring table (if not already)
- $output = `monadd gangliamon`;
+ $output = `/opt/xcat/bin/monadd gangliamon`;
# Run the ganglia configuration script on node
if ($nr) {
- $output = `moncfg gangliamon $nr -r`;
+ $output = `/opt/xcat/bin/moncfg gangliamon $nr -r`;
}
else {
# If no node range is given, then assume all nodes
# Handle localhost (this needs to be 1st)
- $output = `moncfg gangliamon`;
+ $output = `/opt/xcat/bin/moncfg gangliamon`;
# Handle remote nodes
- $output .= `moncfg gangliamon -r`;
+ $output .= `/opt/xcat/bin/moncfg gangliamon -r`;
}
my @lines = split( '\n', $output );
@@ -504,28 +504,28 @@ sub web_gangliastart() {
my $output;
# Add gangliamon to the monitoring table (if not already)
- $output = `monadd gangliamon`;
+ $output = `/opt/xcat/bin/monadd gangliamon`;
# Start the gmond daemon on node
if ($nr) {
- $output = `moncfg gangliamon $nr -r`;
- $output .= `monstart gangliamon $nr -r`;
+ $output = `/opt/xcat/bin/moncfg gangliamon $nr -r`;
+ $output .= `/opt/xcat/bin/monstart gangliamon $nr -r`;
}
else {
# If no node range is given, then assume all nodes
# Handle localhost (this needs to be 1st)
- $output = `moncfg gangliamon`;
+ $output = `/opt/xcat/bin/moncfg gangliamon`;
# Handle remote nodes
- $output .= `moncfg gangliamon -r`;
+ $output .= `/opt/xcat/bin/moncfg gangliamon -r`;
# Handle localhost (this needs to be 1st)
- $output .= `monstart gangliamon`;
+ $output .= `/opt/xcat/bin/monstart gangliamon`;
# Handle remote nodes
- $output .= `monstart gangliamon -r`;
+ $output .= `/opt/xcat/bin/monstart gangliamon -r`;
}
my @lines = split( '\n', $output );
@@ -550,17 +550,17 @@ sub web_gangliastop() {
# Stop the gmond daemon on node
if ($nr) {
- $output = `monstop gangliamon $nr -r`;
+ $output = `/opt/xcat/bin/monstop gangliamon $nr -r`;
}
else {
# If no node range is given, then assume all nodes
# Handle localhost (this needs to be 1st)
- $output = `monstop gangliamon`;
+ $output = `/opt/xcat/bin/monstop gangliamon`;
# Handle remote nodes
- $output .= `monstop gangliamon -r`;
+ $output .= `/opt/xcat/bin/monstop gangliamon -r`;
}
my @lines = split( '\n', $output );
@@ -585,7 +585,7 @@ sub web_gangliacheck() {
# Check if ganglia RPMs are installed
my $info;
- my $info = `xdsh $nr "rpm -q ganglia-gmond libganglia libconfuse"`;
+ my $info = `/opt/xcat/bin/xdsh $nr "rpm -q ganglia-gmond libganglia libconfuse"`;
$callback->( { info => $info } );
return;
}
@@ -686,7 +686,7 @@ sub web_installganglia() {
# Install Ganglia RPMs using updatenode
$callback->( { info => "$_: Installing Ganglia..." } );
- $info = `updatenode $_ -S`;
+ $info = `/opt/xcat/bin/updatenode $_ -S`;
$callback->( { info => "$info" } );
}
@@ -2032,9 +2032,9 @@ sub web_addnode {
}
if ( 'hmc' eq $nodetype ) {
- `chdef -t node -o $hcpname username=$username password=$passwd mgt=hmc nodetype=$nodetype ip=$ip groups=all`;
+ `/opt/xcat/bin/chdef -t node -o $hcpname username=$username password=$passwd mgt=hmc nodetype=$nodetype ip=$ip groups=all`;
} else {
- `chdef -t node -o $hcpname username=$username password=$passwd mgt=blade mpa=$hcpname nodetype=$nodetype id=0 groups=mm,all`;
+ `/opt/xcat/bin/chdef -t node -o $hcpname username=$username password=$passwd mgt=blade mpa=$hcpname nodetype=$nodetype id=0 groups=mm,all`;
}
return;
}
@@ -2052,7 +2052,7 @@ sub web_addnode {
$temphash{ $tempArray[$i] } = $tempArray[ $i + 1 ];
}
- `rscan $hcpname -z > /tmp/rscanall.tmp`;
+ `/opt/xcat/bin/rscan $hcpname -z > /tmp/rscanall.tmp`;
unless ( -e '/tmp/rscanall.tmp' ) {
return;
@@ -2292,7 +2292,7 @@ sub web_passwd() {
my $encrypted = `perl -e "print crypt($password, $random)"`;
# Save in xCAT passwd table
- `chtab username=$user passwd.key=xcat passwd.password=$encrypted`;
+ `/opt/xcat/sbin/chtab username=$user passwd.key=xcat passwd.password=$encrypted`;
my $info = "User password successfully updated";
$callback->( { info => $info } );
@@ -2307,7 +2307,7 @@ sub web_policy() {
my $args = $request->{arg}->[2];
# Save in xCAT passwd and policy tables
- my $out = `chtab priority=$priority $args`;
+ my $out = `/opt/xcat/sbin/chtab priority=$priority $args`;
my $info = "User policy successfully updated";
$callback->( { info => $info } );
@@ -2323,8 +2323,8 @@ sub web_deleteuser() {
# Delete user from xCAT passwd and policy tables
foreach (@users) {
- `chtab -d username=$_ passwd`;
- `chtab -d name=$_ policy`;
+ `/opt/xcat/sbin/chtab -d username=$_ passwd`;
+ `/opt/xcat/sbin/chtab -d name=$_ policy`;
}
my $info = "User successfully deleted";
@@ -2467,8 +2467,8 @@ sub web_updateosimage() {
my $provMethod = $request->{arg}->[7];
my $comments = $request->{arg}->[8];
- `chtab -d imagename=$name osimage`;
- `chtab osimage.imagename=$name osimage.imagetype=$type osimage.osarch=$arch osimage.osname=$osName osimage.osvers=$osVersion osimage.profile=$profile osimage.provmethod=$provMethod osimage.comments=$comments`;
+ `/opt/xcat/sbin/chtab -d imagename=$name osimage`;
+ `/opt/xcat/sbin/chtab osimage.imagename=$name osimage.imagetype=$type osimage.osarch=$arch osimage.osname=$osName osimage.osvers=$osVersion osimage.profile=$profile osimage.provmethod=$provMethod osimage.comments=$comments`;
my $info = "Image successfully updated";
$callback->( { info => $info } );
}
@@ -2483,7 +2483,7 @@ sub web_rmosimage() {
# Delete user from xCAT passwd and policy tables
foreach (@names) {
- `chtab -d imagename=$_ osimage`;
+ `/opt/xcat/sbin/chtab -d imagename=$_ osimage`;
}
my $info = "Image successfully deleted";
@@ -2505,8 +2505,8 @@ sub web_updategroup() {
my $comments = $request->{arg}->[4];
$comments =~ s/'//g;
- `chtab -d node=$name hosts`;
-`chtab node=$name hosts.ip="$ip" hosts.hostnames="$hostnames" hosts.comments="$comments"`;
+ `/opt/xcat/sbin/chtab -d node=$name hosts`;
+ `/opt/xcat/sbin/chtab node=$name hosts.ip="$ip" hosts.hostnames="$hostnames" hosts.comments="$comments"`;
my $info = "Group successfully updated";
$callback->( { info => $info } );
@@ -2522,7 +2522,7 @@ sub web_rmgroup() {
# Delete user from xCAT passwd and policy tables
foreach (@names) {
- `chtab -d node=$_ hosts`;
+ `/opt/xcat/sbin/chtab -d node=$_ hosts`;
`rm -rf /var/opt/xcat/ippool/$_.pool`;
}
diff --git a/xCAT-UI/xcat/plugins/webportal.pm b/xCAT-UI/xcat/plugins/webportal.pm
index 66df95545..6ad82fbda 100644
--- a/xCAT-UI/xcat/plugins/webportal.pm
+++ b/xCAT-UI/xcat/plugins/webportal.pm
@@ -105,11 +105,11 @@ sub provzlinux {
}
# Check the max # of virtual machines allowed
- my $out = `tabdump nodetype -w nodetype.comments=~"owner:$owner"`;
+ my $out = `/opt/xcat/sbin/tabdump nodetype -w nodetype.comments=~"owner:$owner"`;
my @tmp = split( /\n/, $out );
my $usrVM = scalar(@tmp) - 1;
- $out = `webportal getmaxvm $owner`;
+ $out = `/opt/xcat/bin/webportal getmaxvm $owner`;
$out =~ s/Max allowed: //g;
my $maxVM = int($out);
@@ -230,15 +230,15 @@ sub provzlinux {
# Set node definitions
# Also put node into all group
if ($group eq 'all') {
- $out = `mkdef -t node -o $node userid=$userid hcp=$hcp mgt=zvm groups=$group`;
+ $out = `/opt/xcat/bin/mkdef -t node -o $node userid=$userid hcp=$hcp mgt=zvm groups=$group`;
} else {
# Put node in all group
- $out = `mkdef -t node -o $node userid=$userid hcp=$hcp mgt=zvm groups=$group`;
+ $out = `/opt/xcat/bin/mkdef -t node -o $node userid=$userid hcp=$hcp mgt=zvm groups=$group`;
}
println( $callback, "$out" );
# Set nodetype definitions
- $out = `chtab node=$node hosts.ip=$ip hosts.hostnames=$hostname noderes.netboot=zvm nodetype.nodetype=osi nodetype.provmethod=install nodetype.os=$os nodetype.arch=$arch nodetype.profile=$profile nodetype.comments="owner:$owner"`;
+ $out = `/opt/xcat/sbin/chtab node=$node hosts.ip=$ip hosts.hostnames=$hostname noderes.netboot=zvm nodetype.nodetype=osi nodetype.provmethod=install nodetype.os=$os nodetype.arch=$arch nodetype.profile=$profile nodetype.comments="owner:$owner"`;
# Create user directory entry replacing LXUSR with user ID
# Use /opt/zhcp/conf/default.direct on zHCP as the template
@@ -246,7 +246,7 @@ sub provzlinux {
# INCLUDE LNXDFLT
# COMMAND SET VSWITCH VSW2 GRANT LXUSR
$out = `sed $default_direct -e s/LXUSR/$userid/g > /tmp/$node-direct.txt`;
- $out = `mkvm $node /tmp/$node-direct.txt`;
+ $out = `/opt/xcat/bin/mkvm $node /tmp/$node-direct.txt`;
`rm -rf /tmp/$node-direct.txt`;
println( $callback, "$out" );
if ( $out =~ m/Error/i ) {
@@ -286,7 +286,7 @@ sub provzlinux {
foreach (@$type) {
# Add ECKD disk
if ( $_ =~ m/dasd_eckd_mod/i ) {
- $out = `chvm $node --add3390 $disk_pool $virt_addr $eckd_size MR`;
+ $out = `/opt/xcat/bin/chvm $node --add3390 $disk_pool $virt_addr $eckd_size MR`;
println( $callback, "$out" );
if ( $out =~ m/Error/i ) {
return;
@@ -317,7 +317,7 @@ sub provzlinux {
# Add ECKD disk for each device found
for $dev ( keys %devices ) {
- $out = `chvm $node --add3390 $disk_pool $virt_addr $eckd_size MR`;
+ $out = `/opt/xcat/bin/chvm $node --add3390 $disk_pool $virt_addr $eckd_size MR`;
println( $callback, "$out" );
if ( $out =~ m/Error/i ) {
return;
@@ -328,36 +328,35 @@ sub provzlinux {
}
}
- # Update hosts table and DNS
- `makehosts`;
- `makedns`;
+ # Update hosts table
+ `/opt/xcat/sbin/makehosts`;
# Update DHCP
`makedhcp -a`;
# Toggle node power so COMMAND SET will get executed
- `rpower $node on`;
- `rpower $node off`;
+ `/opt/xcat/bin/rpower $node on`;
+ `/opt/xcat/bin/rpower $node off`;
# Punch kernel, initrd, and ramdisk to node reader
- $out = `nodeset $node install`;
+ $out = `/opt/xcat/sbin/nodeset $node install`;
println( $callback, "$out" );
if ( $out =~ m/Error/i ) {
return;
}
# IPL reader and begin installation
- $out = `rnetboot $node ipl=00C`;
+ $out = `/opt/xcat/bin/rnetboot $node ipl=00C`;
println( $callback, "$out" );
if ( $out =~ m/Error/i ) {
return;
}
# Configure Ganglia monitoring
- $out = `moncfg gangliamon $node -r`;
+ $out = `/opt/xcat/bin/moncfg gangliamon $node -r`;
# Show node information, e.g. IP, hostname, and root password
- $out = `lsdef $node -i ip,hostnames | egrep "ip=|hostnames="`;
+ $out = `/opt/xcat/bin/lsdef $node -i ip,hostnames | egrep "ip=|hostnames="`;
my $rootpw = getsysrootpw();
println( $callback, "Your virtual machine is ready. It may take a few minutes before you can logon using VNC ($node:1). Below is your VM attributes." );
println( $callback, "$out" );
@@ -569,7 +568,7 @@ sub gennodename {
}
# Check xCAT tables, /etc/hosts, and ping to see if hostname is already used
- while (`nodels $hostname` || `cat /etc/hosts | grep "$ipaddr "` || !(`ping -c 4 $ipaddr` =~ m/100% packet loss/)) {
+ while (`/opt/xcat/bin/nodels $hostname` || `cat /etc/hosts | grep "$ipaddr "` || !(`ping -c 4 $ipaddr` =~ m/100% packet loss/)) {
# Base digit invalid if over 254
if ($base_digit > $range_high) {
last;
@@ -603,11 +602,11 @@ sub clonezlinux {
my $owner = $request->{arg}->[3];
# Check the max # of virtual machines allowed
- my $out = `tabdump nodetype -w nodetype.comments=~"owner:$owner"`;
+ my $out = `/opt/xcat/sbin/tabdump nodetype -w nodetype.comments=~"owner:$owner"`;
my @tmp = split( /\n/, $out );
my $usrVM = scalar(@tmp) - 1;
- $out = `webportal getmaxvm $owner`;
+ $out = `/opt/xcat/bin/webportal getmaxvm $owner`;
$out =~ s/Max allowed: //g;
my $maxVM = int($out);
@@ -688,34 +687,34 @@ sub clonezlinux {
my $userid = $node;
# Set node definitions
- $out = `mkdef -t node -o $node userid=$userid hcp=$hcp mgt=zvm groups=$group`;
+ $out = `/opt/xcat/bin/mkdef -t node -o $node userid=$userid hcp=$hcp mgt=zvm groups=$group`;
println( $callback, "$out" );
# Set nodetype definitions
- $out = `chtab node=$node hosts.ip=$ip hosts.hostnames=$hostname noderes.netboot=zvm nodetype.nodetype=osi nodetype.provmethod=install nodetype.os=$os nodetype.arch=$arch nodetype.profile=$profile nodetype.comments="owner:$owner"`;
+ $out = `/opt/xcat/sbin/chtab node=$node hosts.ip=$ip hosts.hostnames=$hostname noderes.netboot=zvm nodetype.nodetype=osi nodetype.provmethod=install nodetype.os=$os nodetype.arch=$arch nodetype.profile=$profile nodetype.comments="owner:$owner"`;
- # Update hosts table and DNS
+ # Update hosts table
sleep(5); # Time needed to update /etc/hosts
- `makehosts`;
- `makedns`;
+ `/opt/xcat/sbin/makehosts`;
+ `/opt/xcat/sbin/makedns`;
# Update DHCP
- `makedhcp -a`;
+ `/opt/xcat/sbin/makedhcp -a`;
println( $callback, "hosts table, DHCP, and DNS updated" );
# Clone virtual machine
sleep(5); # Time needed to update /etc/hosts
- $out = `mkvm $node $src_node pool=$disk_pool`;
+ $out = `/opt/xcat/bin/mkvm $node $src_node pool=$disk_pool`;
println( $callback, "$out" );
if ( $out =~ m/Error/i || $out =~ m/Failed/i ) {
return;
}
-
+
# Configure Ganglia monitoring
- $out = `moncfg gangliamon $node -r`;
+ $out = `/opt/xcat/bin/moncfg gangliamon $node -r`;
# Show node information, e.g. IP, hostname, and root password
- $out = `lsdef $node | egrep "ip=|hostnames="`;
+ $out = `/opt/xcat/bin/lsdef $node | egrep "ip=|hostnames="`;
my $rootpw = getsysrootpw();
println( $callback, "Your virtual machine is ready. It may take a few minutes before you can logon. Below is your VM attributes." );
println( $callback, "$out" );
@@ -864,7 +863,7 @@ sub findfreenode {
if ($node && $ipaddr && $hostname) {
# Check against xCAT tables, /etc/hosts, and ping to see if hostname is already used
- if (`nodels $node` || `cat /etc/hosts | grep "$ipaddr "` || !(`ping -c 4 $ipaddr` =~ m/100% packet loss/)) {
+ if (`/opt/xcat/bin/nodels $node` || `cat /etc/hosts | grep "$ipaddr "` || !(`ping -c 4 $ipaddr` =~ m/100% packet loss/)) {
next;
} else {
$found = 1;