Fixed gennodename() to handle VLSM. Fixed provision page layouts.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@11265 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
phamt 2011-12-19 05:03:27 +00:00
parent 678db1648e
commit 17298c84b7
12 changed files with 361 additions and 100 deletions

View File

@ -592,6 +592,26 @@ function createBladeProvisionExisting(inst) {
// Create provision existing division
var provExisting = $('<div></div>');
// Create VM fieldset
var nodeFS = $('<fieldset></fieldset>');
var nodeLegend = $('<legend>Node</legend>');
nodeFS.append(nodeLegend);
var nodeAttr = $('<div style="display: inline-table; vertical-align: middle; width: 85%; margin-left: 10px;"></div>');
nodeFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/computer.png"></img></div>'));
nodeFS.append(nodeAttr);
// Create image fieldset
var imgFS = $('<fieldset></fieldset>');
var imgLegend = $('<legend>Image</legend>');
imgFS.append(imgLegend);
var imgAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
imgFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/operating_system.png"></img></div>'));
imgFS.append(imgAttr);
provExisting.append(nodeFS, imgFS);
// Create group input
var group = $('<div></div>');
var groupLabel = $('<label for="provType">Group:</label>');
@ -628,7 +648,7 @@ function createBladeProvisionExisting(inst) {
var groupInput = $('<input type="text" name="group"/>');
group.append(groupInput);
}
provExisting.append(group);
nodeAttr.append(group);
// Create node input
var node = $('<div></div>');
@ -636,7 +656,7 @@ function createBladeProvisionExisting(inst) {
var nodeDatatable = $('<div id="' + dTableDivId + '" style="display: inline-block; max-width: 800px;"><p>Select a group to view its nodes</p></div>');
node.append(nodeLabel);
node.append(nodeDatatable);
provExisting.append(node);
nodeAttr.append(node);
// Create boot method drop down
var method = $('<div></div>');
@ -651,7 +671,7 @@ function createBladeProvisionExisting(inst) {
);
method.append(methodLabel);
method.append(methodSelect);
provExisting.append(method);
imgAttr.append(method);
// Create operating system input
var os = $('<div></div>');
@ -668,7 +688,7 @@ function createBladeProvisionExisting(inst) {
});
os.append(osLabel);
os.append(osInput);
provExisting.append(os);
imgAttr.append(os);
// Create architecture input
var arch = $('<div></div>');
@ -685,7 +705,7 @@ function createBladeProvisionExisting(inst) {
});
arch.append(archLabel);
arch.append(archInput);
provExisting.append(arch);
imgAttr.append(arch);
// Create profile input
var profile = $('<div></div>');
@ -702,7 +722,7 @@ function createBladeProvisionExisting(inst) {
});
profile.append(profileLabel);
profile.append(profileInput);
provExisting.append(profile);
imgAttr.append(profile);
/**
* Provision existing

View File

@ -163,24 +163,39 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
var provForm = $('<div class="form"></div>');
// Create info bar
var infoBar = createInfoBar('Provision an VMware virtual machine.');
var infoBar = createInfoBar('Provision an KVM virtual machine.');
provForm.append(infoBar);
// Append to provision tab
$('#' + tabId).append(provForm);
// Create VM fieldset
var vmFS = $('<fieldset></fieldset>');
var vmLegend = $('<legend>Virtual Machine</legend>');
vmFS.append(vmLegend);
var vmAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
vmFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/computer.png"></img></div>'));
vmFS.append(vmAttr);
// Create hardware fieldset
var hwFS = $('<fieldset></fieldset>');
var hwLegend = $('<legend>Hardware</legend>');
hwFS.append(hwLegend);
var hwAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
hwFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/hardware.png"></img></div>'));
hwFS.append(hwAttr);
// Create image fieldset
var imgFS = $('<fieldset></fieldset>');
var imgLegend = $('<legend>Image</legend>');
imgFS.append(imgLegend);
var imgAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
imgFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/operating_system.png"></img></div>'));
imgFS.append(imgAttr);
provForm.append(vmFS, hwFS, imgFS);
// Create hypervisor input
@ -189,7 +204,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
host.append(hostLabel);
var hostInput = $('<input type="text" name="host"/>');
host.append(hostInput);
vmFS.append(host);
vmAttr.append(host);
// Create group input
var group = $('<div></div>');
@ -216,7 +231,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
var groupInput = $('<input type="text" name="group"/>');
group.append(groupInput);
}
vmFS.append(group);
vmAttr.append(group);
// Create node input
var node = $('<div></div>');
@ -224,7 +239,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
var nodeInput = $('<input type="text" name="node"/>');
node.append(nodeLabel);
node.append(nodeInput);
vmFS.append(node);
vmAttr.append(node);
// Create memory input
var memory = $('<div></div>');
@ -232,7 +247,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
var memoryInput = $('<input type="text" name="memory" size="5"/>');
memory.append(memoryLabel);
memory.append(memoryInput);
hwFS.append(memory);
hwAttr.append(memory);
// Create processor dropdown
var cpu = $('<div></div>');
@ -249,7 +264,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
);
cpu.append(cpuLabel);
cpu.append(cpuSelect);
hwFS.append(cpu);
hwAttr.append(cpu);
// Create NIC dropdown
var nic = $('<div></div>');
@ -257,7 +272,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
var nicInput = $('<input type="text" name="nic"/>');
nic.append(nicLabel);
nic.append(nicInput);
hwFS.append(nic);
hwAttr.append(nic);
// Create disk input
var disk = $('<div></div>');
@ -268,7 +283,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
'<option value="M">MB</option>'
);
disk.append(diskLabel, diskInput, diskSizeSelect);
hwFS.append(disk);
hwAttr.append(disk);
// Create disk storage input
var storage = $('<div></div>');
@ -276,7 +291,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
var storageInput = $('<input type="text" name="storage"/>');
storage.append(storageLabel);
storage.append(storageInput);
hwFS.append(storage);
hwAttr.append(storage);
// Create operating system input
var os = $('<div></div>');
@ -293,7 +308,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
});
os.append(osLabel);
os.append(osInput);
imgFS.append(os);
imgAttr.append(os);
// Create architecture input
var arch = $('<div></div>');
@ -310,7 +325,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
});
arch.append(archLabel);
arch.append(archInput);
imgFS.append(arch);
imgAttr.append(arch);
// Create profile input
var profile = $('<div></div>');
@ -327,7 +342,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
});
profile.append(profileLabel);
profile.append(profileInput);
imgFS.append(profile);
imgAttr.append(profile);
// Create boot method dropdown
var method = $('<div></div>');
@ -342,7 +357,7 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
);
method.append(methodLabel);
method.append(methodSelect);
imgFS.append(method);
imgAttr.append(method);
/**
* Provision existing

View File

@ -334,6 +334,26 @@ function createIpmiProvisionExisting(inst) {
// Create provision existing division
var provExisting = $('<div></div>');
// Create VM fieldset
var nodeFS = $('<fieldset></fieldset>');
var nodeLegend = $('<legend>Node</legend>');
nodeFS.append(nodeLegend);
var nodeAttr = $('<div style="display: inline-table; vertical-align: middle; width: 85%; margin-left: 10px;"></div>');
nodeFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/computer.png"></img></div>'));
nodeFS.append(nodeAttr);
// Create image fieldset
var imgFS = $('<fieldset></fieldset>');
var imgLegend = $('<legend>Image</legend>');
imgFS.append(imgLegend);
var imgAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
imgFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/operating_system.png"></img></div>'));
imgFS.append(imgAttr);
provExisting.append(nodeFS, imgFS);
// Create group input
var group = $('<div></div>');
var groupLabel = $('<label for="provType">Group:</label>');
@ -370,7 +390,7 @@ function createIpmiProvisionExisting(inst) {
var groupInput = $('<input type="text" name="group"/>');
group.append(groupInput);
}
provExisting.append(group);
nodeAttr.append(group);
// Create node input
var node = $('<div></div>');
@ -378,7 +398,7 @@ function createIpmiProvisionExisting(inst) {
var nodeDatatable = $('<div id="' + dTableDivId + '" style="display: inline-block; max-width: 800px;"><p>Select a group to view its nodes</p></div>');
node.append(nodeLabel);
node.append(nodeDatatable);
provExisting.append(node);
nodeAttr.append(node);
// Create boot method drop down
var method = $('<div></div>');
@ -393,7 +413,7 @@ function createIpmiProvisionExisting(inst) {
);
method.append(methodLabel);
method.append(methodSelect);
provExisting.append(method);
imgAttr.append(method);
// Create operating system input
var os = $('<div></div>');
@ -410,7 +430,7 @@ function createIpmiProvisionExisting(inst) {
});
os.append(osLabel);
os.append(osInput);
provExisting.append(os);
imgAttr.append(os);
// Create architecture input
var arch = $('<div></div>');
@ -427,7 +447,7 @@ function createIpmiProvisionExisting(inst) {
});
arch.append(archLabel);
arch.append(archInput);
provExisting.append(arch);
imgAttr.append(arch);
// Create profile input
var profile = $('<div></div>');
@ -444,7 +464,7 @@ function createIpmiProvisionExisting(inst) {
});
profile.append(profileLabel);
profile.append(profileInput);
provExisting.append(profile);
imgAttr.append(profile);
/**
* Provision existing

View File

@ -169,18 +169,33 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
// Append to provision tab
$('#' + tabId).append(provForm);
// Create VM fieldset
var vmFS = $('<fieldset></fieldset>');
var vmLegend = $('<legend>Virtual Machine</legend>');
vmFS.append(vmLegend);
var vmAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
vmFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/computer.png"></img></div>'));
vmFS.append(vmAttr);
// Create hardware fieldset
var hwFS = $('<fieldset></fieldset>');
var hwLegend = $('<legend>Hardware</legend>');
hwFS.append(hwLegend);
var hwAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
hwFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/hardware.png"></img></div>'));
hwFS.append(hwAttr);
// Create image fieldset
var imgFS = $('<fieldset></fieldset>');
var imgLegend = $('<legend>Image</legend>');
imgFS.append(imgLegend);
var imgAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
imgFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/operating_system.png"></img></div>'));
imgFS.append(imgAttr);
provForm.append(vmFS, hwFS, imgFS);
// Create hypervisor input
@ -189,7 +204,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
host.append(hostLabel);
var hostInput = $('<input type="text" name="host"/>');
host.append(hostInput);
vmFS.append(host);
vmAttr.append(host);
// Create group input
var group = $('<div></div>');
@ -216,7 +231,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
var groupInput = $('<input type="text" name="group"/>');
group.append(groupInput);
}
vmFS.append(group);
vmAttr.append(group);
// Create node input
var node = $('<div></div>');
@ -224,7 +239,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
var nodeInput = $('<input type="text" name="node"/>');
node.append(nodeLabel);
node.append(nodeInput);
vmFS.append(node);
vmAttr.append(node);
// Create memory input
var memory = $('<div></div>');
@ -232,7 +247,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
var memoryInput = $('<input type="text" name="memory" size="5"/>');
memory.append(memoryLabel);
memory.append(memoryInput);
hwFS.append(memory);
hwAttr.append(memory);
// Create processor dropdown
var cpu = $('<div></div>');
@ -249,7 +264,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
);
cpu.append(cpuLabel);
cpu.append(cpuSelect);
hwFS.append(cpu);
hwAttr.append(cpu);
// Create NIC dropdown
var nic = $('<div></div>');
@ -257,7 +272,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
var nicInput = $('<input type="text" name="nic"/>');
nic.append(nicLabel);
nic.append(nicInput);
hwFS.append(nic);
hwAttr.append(nic);
// Create disk input
var disk = $('<div></div>');
@ -268,7 +283,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
'<option value="M">MB</option>'
);
disk.append(diskLabel, diskInput, diskSizeSelect);
hwFS.append(disk);
hwAttr.append(disk);
// Create disk storage input
var storage = $('<div></div>');
@ -276,7 +291,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
var storageInput = $('<input type="text" name="storage"/>');
storage.append(storageLabel);
storage.append(storageInput);
hwFS.append(storage);
hwAttr.append(storage);
// Create operating system input
var os = $('<div></div>');
@ -293,7 +308,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
});
os.append(osLabel);
os.append(osInput);
imgFS.append(os);
imgAttr.append(os);
// Create architecture input
var arch = $('<div></div>');
@ -310,7 +325,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
});
arch.append(archLabel);
arch.append(archInput);
imgFS.append(arch);
imgAttr.append(arch);
// Create profile input
var profile = $('<div></div>');
@ -327,7 +342,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
});
profile.append(profileLabel);
profile.append(profileInput);
imgFS.append(profile);
imgAttr.append(profile);
// Create boot method dropdown
var method = $('<div></div>');
@ -342,7 +357,7 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
);
method.append(methodLabel);
method.append(methodSelect);
imgFS.append(method);
imgAttr.append(method);
/**
* Provision existing

View File

@ -504,20 +504,30 @@ zvmPlugin.prototype.loadClonePage = function(node) {
cloneForm.append(statBar);
cloneForm.append(infoBar);
// Create VM fieldset
var vmFS = $('<fieldset></fieldset>');
var vmLegend = $('<legend>Virtual Machine</legend>');
vmFS.append(vmLegend);
cloneForm.append(vmFS);
var vmAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
vmFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/computer.png"></img></div>'));
vmFS.append(vmAttr);
// Create hardware fieldset
var hwFS = $('<fieldset></fieldset>');
var hwLegend = $('<legend>Hardware</legend>');
hwFS.append(hwLegend);
cloneForm.append(hwFS);
vmFS.append('<div><label>Target node range:</label><input type="text" id="tgtNode" name="tgtNode" title="You must give a node or a node range. A node range must be given as: node1-node9 or node[1-9]."/></div>');
vmFS.append('<div><label>Target user ID range:</label><input type="text" id="tgtUserId" name="tgtUserId" title="You must give a user ID or a user ID range. A user ID range must be given as: user1-user9 or user[1-9]."/></div>');
vmFS.append('<div><label>Clone source:</label><input type="text" id="srcNode" name="srcNode" readonly="readonly" value="' + node + '" title="The source node to be cloned"/></div>');
vmFS.append('<div><label>Hardware control point:</label><input type="text" id="newHcp" name="newHcp" readonly="readonly" value="' + hcp + '" title="The System z hardware control point (zHCP) responsible for managing the node(s). It must be the same as the source node."/></div>');
var hwAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
hwFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/hardware.png"></img></div>'));
hwFS.append(hwAttr);
vmAttr.append('<div><label>Target node range:</label><input type="text" id="tgtNode" name="tgtNode" title="You must give a node or a node range. A node range must be given as: node1-node9 or node[1-9]."/></div>');
vmAttr.append('<div><label>Target user ID range:</label><input type="text" id="tgtUserId" name="tgtUserId" title="You must give a user ID or a user ID range. A user ID range must be given as: user1-user9 or user[1-9]."/></div>');
vmAttr.append('<div><label>Clone source:</label><input type="text" id="srcNode" name="srcNode" readonly="readonly" value="' + node + '" title="The source node to be cloned"/></div>');
vmAttr.append('<div><label>Hardware control point:</label><input type="text" id="newHcp" name="newHcp" readonly="readonly" value="' + hcp + '" title="The System z hardware control point (zHCP) responsible for managing the node(s). It must be the same as the source node."/></div>');
// Create group input
var group = $('<div></div>');
@ -534,7 +544,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
});
group.append(groupLabel);
group.append(groupInput);
vmFS.append(group);
vmAttr.append(group);
// Get list of disk pools
var temp = hcp.split('.');
@ -548,9 +558,9 @@ zvmPlugin.prototype.loadClonePage = function(node) {
});
poolDiv.append(poolLabel);
poolDiv.append(poolInput);
hwFS.append(poolDiv);
hwAttr.append(poolDiv);
hwFS.append('<div><label>Disk password:</label><input type="password" id="diskPw" name="diskPw" title="The password that will be used for accessing the disk. This input is optional."/></div>');
hwAttr.append('<div><label>Disk password:</label><input type="password" id="diskPw" name="diskPw" title="The password that will be used for accessing the disk. This input is optional."/></div>');
// Generate tooltips
cloneForm.find('div input[title]').tooltip({

View File

@ -1160,7 +1160,7 @@ function openAddProcDialog(node) {
// If inputs are not complete, show warning message
if (!node || !address || !type) {
var warn = createWarnBar('You are missing inputs.');
var warn = createWarnBar('Please provide a value for each missing field.');
warn.prependTo($(this));
} else {
// Add processor
@ -1269,7 +1269,7 @@ function openAddDiskDialog(node, hcp) {
// If inputs are not complete, show warning message
if (!node || !type || !address || !size || !pool || !mode) {
var warn = createWarnBar('You are missing inputs.');
var warn = createWarnBar('Please provide a value for each missing field.');
warn.prependTo($(this));
} else {
// Add disk
@ -1500,7 +1500,7 @@ function openAddNicDialog(node, hcp) {
// If inputs are not complete, show warning message
if (!node || !nicType || !networkType || !address) {
errMsg = 'You are missing inputs.<br>';
errMsg = 'Please provide a value for each missing field.<br>';
ready = false;
}
@ -1993,10 +1993,18 @@ function createZProvisionExisting(inst) {
vmFS.append(vmLegend);
provExisting.append(vmFS);
var vmAttr = $('<div style="display: inline-table; vertical-align: middle; width: 85%; margin-left: 10px;"></div>');
vmFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/computer.png"></img></div>'));
vmFS.append(vmAttr);
var osFS = $('<fieldset></fieldset>');
var osLegend = $('<legend>Operating System</legend>');
osFS.append(osLegend);
provExisting.append(osFS);
var osAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
osFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/operating_system.png"></img></div>'));
osFS.append(osAttr);
// Create group input
var group = $('<div></div>');
@ -2033,16 +2041,16 @@ function createZProvisionExisting(inst) {
var groupInput = $('<input type="text" name="group"/>');
group.append(groupInput);
}
vmFS.append(group);
vmAttr.append(group);
// Create node input
var node = $('<div></div>');
var nodeLabel = $('<label for="nodeName">Nodes:</label>');
var nodeDatatable = $('<div class="indent" id="zNodesDatatableDIV' + inst + '"><p>Select a group to view its nodes</p></div>');
var nodeDatatable = $('<div class="indent" id="zNodesDatatableDIV' + inst + '" style="display: inline-block; max-width: 800px;"><p>Select a group to view its nodes</p></div>');
node.append(nodeLabel);
node.append(nodeDatatable);
vmFS.append(node);
vmAttr.append(node);
// Create operating system image input
var os = $('<div></div>');
var osLabel = $('<label for="os">Operating system image:</label>');
@ -2059,7 +2067,7 @@ function createZProvisionExisting(inst) {
});
os.append(osLabel);
os.append(osInput);
osFS.append(os);
osAttr.append(os);
// Create boot method drop down
var bootMethod = $('<div></div>');
@ -2073,7 +2081,7 @@ function createZProvisionExisting(inst) {
);
bootMethod.append(methoddLabel);
bootMethod.append(methodSelect);
osFS.append(bootMethod);
osAttr.append(bootMethod);
// Generate tooltips
provExisting.find('div input[title]').tooltip({
@ -2184,22 +2192,37 @@ function createZProvisionExisting(inst) {
function createZProvisionNew(inst) {
// Create provision new node division
var provNew = $('<div></div>');
// Create VM fieldset
var vmFS = $('<fieldset></fieldset>');
var vmLegend = $('<legend>Virtual Machine</legend>');
vmFS.append(vmLegend);
provNew.append(vmFS);
var vmAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
vmFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/computer.png"></img></div>'));
vmFS.append(vmAttr);
// Create hardware fieldset
var hwFS = $('<fieldset></fieldset>');
var hwLegend = $('<legend>Hardware</legend>');
hwFS.append(hwLegend);
provNew.append(hwFS);
var hwAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
hwFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/hardware.png"></img></div>'));
hwFS.append(hwAttr);
// Create OS fieldset
var osFS = $('<fieldset></fieldset>');
var osLegend = $('<legend>Operating System</legend>');
osFS.append(osLegend);
provNew.append(osFS);
var osAttr = $('<div style="display: inline-table; vertical-align: middle;"></div>');
osFS.append($('<div style="display: inline-table; vertical-align: middle;"><img src="images/provision/operating_system.png"></img></div>'));
osFS.append(osAttr);
// Create group input
var group = $('<div></div>');
var groupLabel = $('<label>Group:</label>');
@ -2216,7 +2239,7 @@ function createZProvisionNew(inst) {
});
group.append(groupLabel);
group.append(groupInput);
vmFS.append(group);
vmAttr.append(group);
// Create node input
var nodeName = $('<div></div>');
@ -2224,11 +2247,11 @@ function createZProvisionNew(inst) {
var nodeInput = $('<input type="text" name="nodeName" title="You must give a node or a node range. A node range must be given as: node1-node9 or node[1-9]."/>');
nodeName.append(nodeLabel);
nodeName.append(nodeInput);
vmFS.append(nodeName);
vmAttr.append(nodeName);
// Create user ID input
var userId = $('<div><label>User ID:</label><input type="text" name="userId" title="You must give a user ID or a user ID range. A user ID range must be given as: user1-user9 or user[1-9]."/></div>');
vmFS.append(userId);
vmAttr.append(userId);
// Create hardware control point input
var hcpDiv = $('<div></div>');
@ -2256,7 +2279,7 @@ function createZProvisionNew(inst) {
});
hcpDiv.append(hcpLabel);
hcpDiv.append(hcpInput);
vmFS.append(hcpDiv);
vmAttr.append(hcpDiv);
// Create operating system image input
var os = $('<div></div>');
@ -2274,7 +2297,7 @@ function createZProvisionNew(inst) {
});
os.append(osLabel);
os.append(osInput);
osFS.append(os);
osAttr.append(os);
// Create user entry input
var defaultChkbox = $('<input type="checkbox" name="userEntry" value="default"/>').click(function() {
@ -2339,7 +2362,7 @@ function createZProvisionNew(inst) {
});
var userEntry = $('<div><label for="userEntry">Directory entry:</label><textarea/></textarea></div>');
userEntry.append($('<span></span>').append(defaultChkbox, 'Use default'));
hwFS.append(userEntry);
hwAttr.append(userEntry);
// Create disk table
var diskDiv = $('<div class="provision"></div>');
@ -2451,7 +2474,7 @@ function createZProvisionNew(inst) {
diskDiv.append(diskLabel);
diskDiv.append(diskTable);
hwFS.append(diskDiv);
hwAttr.append(diskDiv);
// Generate tooltips
provNew.find('div input[title]').tooltip({
@ -2510,7 +2533,7 @@ function createZProvisionNew(inst) {
// Show error message for missing inputs
if (!ready) {
errMsg = errMsg + 'You are missing inputs.<br>';
errMsg = errMsg + 'Please provide a value for each missing field.<br>';
}
// Check if user entry contains user ID

View File

@ -9,7 +9,8 @@ function loadHelpPage(){
helpForm.append(
'<fieldset>' +
'<legend>Quick Start</legend>' +
'<ol>' +
'<div style="display: inline-table; vertical-align: middle;"><img src="images/help/quick_start.png" style="width: 90%;"></img></div>' +
'<ol style="display: inline-table; vertical-align: middle;">' +
'<li><a href="configure.php" style="color: blue;">1. Discover hardware</a><br/>Discover all hardware in the cluster. Define them in the xCAT database. Initialize your cluster.</li>' +
'<li><a href="index.php" style="color: blue;">2. Verify defined nodes</a><br/>View nodes definition by groups in a table or graphical style.</li>' +
'<li><a href="configure.php" style="color: blue;">3. Install compute nodes</a><br/>Copy useful files from DVD onto harddisk. Create Linux images. Install compute nodes in stateful, stateless, and statelite style.</li>' +
@ -19,7 +20,8 @@ function loadHelpPage(){
'</fieldset>' +
'<fieldset>' +
'<legend>Advanced</legend>' +
'<ol>' +
'<div style="display: inline-table; vertical-align: middle;"><img src="images/help/advanced_settings.png" style="width: 90%;"></img></div>' +
'<ol style="display: inline-table; vertical-align: middle;">' +
'<li><a href="configure.php" style="color: blue;">a. Edit the xCAT database tables</a></li>' +
'<li><a href="configure.php" style="color: blue;">b. Update the xCAT RPM on the Management Node</a></li>' +
'</ol>' +

View File

@ -182,15 +182,20 @@ function loadMonitorPage() {
// Create radio buttons for platforms
var hwList = $('<ol>Platforms available:</ol>');
var ipmi = $('<li><input type="radio" name="hw" value="ipmi" checked/>iDataPlex</li>');
var esx = $('<li><input type="radio" name="hw" value="esx" checked/>ESX</li>');
var kvm = $('<li><input type="radio" name="hw" value="kvm"/>KVM</li>');
var zvm = $('<li><input type="radio" name="hw" value="zvm"/>z\/VM</li>');
var ipmi = $('<li><input type="radio" name="hw" value="ipmi"/>iDataPlex</li>');
var blade = $('<li><input type="radio" name="hw" value="blade"/>BladeCenter</li>');
var hmc = $('<li><input type="radio" name="hw" value="hmc"/>System p</li>');
var zvm = $('<li><input type="radio" name="hw" value="zvm"/>System z</li>');
hwList.append(ipmi);
hwList.append(blade);
hwList.append(hmc);
hwList.append(esx);
hwList.append(kvm);
hwList.append(zvm);
hwList.append(blade);
hwList.append(ipmi);
hwList.append(hmc);
resrcForm.append(hwList);
var okBtn = createButton('Ok');
@ -208,6 +213,12 @@ function loadMonitorPage() {
// Create an instance of the plugin
var plugin;
switch (hw) {
case "kvm":
plugin = new kvmPlugin();
break;
case "esx":
plugin = new esxPlugin();
break;
case "blade":
plugin = new bladePlugin();
break;

View File

@ -380,10 +380,12 @@ function mkAddNodeLink() {
addNodeForm.append(info);
addNodeForm.append('<div><label for="mgt">Hardware management:</label>'
+ '<select id="mgt" name="mgt">'
+ '<option value="esx">ESX</option>'
+ '<option value="kvm">KVM</option>'
+ '<option value="zvm">z\/VM</option>'
+ '<option value="ipmi">iDataPlex</option>'
+ '<option value="blade">BladeCenter</option>'
+ '<option value="hmc">System p</option>' // Documentation refers to 'IBM System p' (where p is NOT capitalized)
+ '<option value="zvm">System z</option>' // Documentation refers to 'IBM System z' (where z is NOT capitalized)
+ '</select>'
+ '</div>');
@ -439,6 +441,12 @@ function mkAddNodeLink() {
var plugin;
switch(mgt) {
case "kvm":
plugin = new kvmPlugin();
break;
case "esx":
plugin = new esxPlugin();
break;
case "blade":
plugin = new bladePlugin();
break;
@ -1874,6 +1882,10 @@ function sortAlpha(a, b) {
* @return Nothing
*/
function powerNode(node, power2) {
// Show power loader
var powerCol = $('#' + nodesTableId + '_wrapper .dataTables_scrollHead .datatable thead tr th:eq(3)');
powerCol.find('img').show();
node = node.replace('Power', '');
$.ajax( {
url : 'lib/cmd.php',
@ -2081,6 +2093,10 @@ function updateStatusBar(data) {
* @return Nothing
*/
function updatePowerStatus(data) {
// Hide power loader
var powerCol = $('#' + nodesTableId + '_wrapper .dataTables_scrollHead .datatable thead tr th:eq(3)');
powerCol.find('img').hide();
// Get datatable
var dTable = $('#' + nodesTableId).dataTable();
@ -3025,6 +3041,10 @@ function openSetAttrsDialog() {
* @return Nothing
*/
function monitorNode(node, monitor) {
// Show ganglia loader
var gangliaCol = $('#' + nodesTableId + '_wrapper .dataTables_scrollHead .datatable thead tr th:eq(4)');
gangliaCol.find('img').show();
if (monitor == 'on') {
// Append loader to warning bar
var warningBar = $('#nodesTab').find('.ui-state-error p');
@ -3084,13 +3104,27 @@ function monitorNode(node, monitor) {
data : {
cmd : 'webrun',
tgt : '',
args : 'gangliastart;' + data.msg,
msg : ''
args : 'gangliastart;' + data.msg + ';-r',
msg : data.msg
},
success : function(data) {
// Remove any warnings
$('#nodesTab').find('.ui-state-error').remove();
// Update datatable
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'webrun',
tgt : '',
args : 'gangliastatus;' + data.msg,
msg : ''
},
success : loadGangliaStatus
});
}
});
} // End of if (warn)
@ -3116,7 +3150,7 @@ function monitorNode(node, monitor) {
} else {
var args;
if (node) {
args = 'gangliastop;' + node;
args = 'gangliastop;' + node + ';-r';
} else {
args = 'gangliastop';
}
@ -3132,7 +3166,9 @@ function monitorNode(node, monitor) {
},
success : function(data) {
// Do nothing
// Hide ganglia loader
var gangliaCol = $('#' + nodesTableId + '_wrapper .dataTables_scrollHead .datatable thead tr th:eq(4)');
gangliaCol.find('img').hide();
}
});
}

View File

@ -85,17 +85,17 @@ function loadProvisionPage() {
var hwList = $('<ol>Platforms available:</ol>');
var esx = $('<li><input type="radio" name="hw" value="esx" checked/>ESX</li>');
var kvm = $('<li><input type="radio" name="hw" value="kvm"/>KVM</li>');
var zvm = $('<li><input type="radio" name="hw" value="zvm"/>z\/VM</li>');
var ipmi = $('<li><input type="radio" name="hw" value="ipmi"/>iDataPlex</li>');
var blade = $('<li><input type="radio" name="hw" value="blade"/>BladeCenter</li>');
var hmc = $('<li><input type="radio" name="hw" value="hmc"/>System p</li>');
var zvm = $('<li><input type="radio" name="hw" value="zvm"/>System z</li>');
hwList.append(esx);
hwList.append(kvm);
hwList.append(ipmi);
hwList.append(blade);
hwList.append(hmc);
hwList.append(zvm);
hwList.append(blade);
hwList.append(ipmi);
hwList.append(hmc);
provPg.append(hwList);
/**
@ -140,7 +140,7 @@ function loadProvisionPage() {
break;
case "zvm":
plugin = new zvmPlugin();
title = 'System z';
title = 'z/VM';
break;
}

View File

@ -175,14 +175,12 @@ function loadServiceProvisionPage(tabId) {
// Create radio buttons for platforms
var hwList = $('<ol>Platforms available:</ol>');
var ipmi = $('<li><input type="radio" name="hw" value="ipmi" checked/>iDataPlex</li>');
var blade = $('<li><input type="radio" name="hw" value="blade"/>BladeCenter</li>');
var hmc = $('<li><input type="radio" name="hw" value="hmc"/>System p</li>');
var zvm = $('<li><input type="radio" name="hw" value="zvm"/>System z</li>');
hwList.append(ipmi);
hwList.append(blade);
hwList.append(hmc);
var esx = $('<li><input type="radio" name="hw" value="esx" checked/>ESX</li>');
var kvm = $('<li><input type="radio" name="hw" value="kvm"/>KVM</li>');
var zvm = $('<li><input type="radio" name="hw" value="zvm"/>z\/VM</li>');
hwList.append(esx);
hwList.append(kvm);
hwList.append(zvm);
provPg.append(hwList);
@ -215,6 +213,14 @@ function loadServiceProvisionPage(tabId) {
// Create an instance of the plugin
var plugin;
switch (hw) {
case "kvm":
plugin = new kvmPlugin();
title = 'KVM';
break;
case "esx":
plugin = new esxPlugin();
title = 'ESX';
break;
case "blade":
plugin = new bladePlugin();
title = 'BladeCenter';
@ -229,7 +235,7 @@ function loadServiceProvisionPage(tabId) {
break;
case "zvm":
plugin = new zvmPlugin();
title = 'System z';
title = 'z/VM';
// Get zVM host names
if (!$.cookie('srv_zvm')){
@ -897,15 +903,25 @@ function setGroupCookies(data) {
var groups = new Array();
// Index 0 is the table header
var cols, name, ip, hostname, desc;
for ( var i = 1; i < data.rsp.length; i++) {
var cols, name, ip, hostname, desc, comments, tmp;
for (var i = 1; i < data.rsp.length; i++) {
// Split into columns:
// node, ip, hostnames, otherinterfaces, comments, disable
cols = data.rsp[i].split(',');
name = cols[0].replace(new RegExp('"', 'g'), '');
ip = cols[1].replace(new RegExp('"', 'g'), '');
hostname = cols[2].replace(new RegExp('"', 'g'), '');
desc = cols[4].replace(new RegExp('"', 'g'), '');
// It should return: "description: All machines; network: 10.1.100.0/24;"
comments = cols[4].replace(new RegExp('"', 'g'), '');
tmp = comments.split(';');
for (var j = 0; j < tmp.length; j++) {
if (tmp[j].indexOf('description:') > -1) {
desc = tmp[j].replace('description:', '');
desc = jQuery.trim(desc);
}
}
groups.push(name + ':' + ip + ':' + hostname + ':' + desc);
}

View File

@ -356,10 +356,13 @@ sub gennodename {
my $hostname_regex;
my $ipaddr_regex;
my @comments;
my $base_digit = 0;
my $base_hostname;
my $base_ipaddr;
my $network = "";
my $mask;
my $hostname;
my $ipaddr;
my $tmp;
@ -368,7 +371,7 @@ sub gennodename {
# Get regular expression for hostname in 'hosts' table
my $tab = xCAT::Table->new( 'hosts', -create => 1, -autocommit => 0 );
my @results = $tab->getAllAttribsWhere( "node='" . $group . "'", 'ip' );
my @results = $tab->getAllAttribsWhere( "node='" . $group . "'", 'ip', 'comments' );
foreach (@results) {
# It should return: |gpok(\d+)|10.1.100.($1+0)|
@ -385,9 +388,36 @@ sub gennodename {
# Get the ($1+0)
$ipaddr_regex =~ s/$base_ipaddr//g;
}
# Get the network within comments
# It should return: "description: All machines; network: 10.1.100.0/24;"
# This will help determine the 1st node in the group if none exists
@comments = split( /;/, $_->{'comments'} );
foreach (@comments) {
if ($_ =~ m/network:/i) {
$network = $_;
# Remove network header
$network =~ s/network://g;
# Trim network section
$network =~ s/\s*$//;
$network =~ s/^\s*//;
# Extract network
$tmp = rindex($network, '/');
if ($tmp > -1) {
$network = substr($network, 0, $tmp);
}
# Extract base digit, which depends on the netmask used
$base_digit = substr($network, rindex($network, '.') + 1);
}
} # End of foreach
} # End of foreach
# Are there nodes in this group already?
# If so, use the existing nodes as a base
my $out = `nodels $group`;
@args = split( /\n/, $out );
foreach (@args) {
@ -411,10 +441,73 @@ sub gennodename {
$ipaddr =~ s/$hostname_regex/$ipaddr_regex/gee;
$ipaddr = $base_ipaddr . $ipaddr;
# Get networks in 'networks' table
$tab = xCAT::Table->new( 'networks', -create => 1, -autocommit => 0 );
my $entries = $tab->getAllEntries();
# Go through each network
my $iprange;
foreach (@$entries) {
# Get network, mask, and range
$network = $_->{'net'};
$mask = $_->{'mask'};
$iprange = $_->{'dynamicrange'};
# If the host IP address is in this subnet, return
if (xCAT::NetworkUtils->ishostinsubnet($ipaddr, $mask, $network)) {
# Exit loop
last;
} else {
$network = "";
}
}
# Exit if no network exist for group
if (!$network) {
return;
}
# Find the network range for this group
my @ranges;
my $iprange_low = 1;
my $iprange_high = 254;
if ($iprange) {
@args = split( /;/, $iprange );
foreach (@args) {
# If a network range exists
if ($_ =~ m/-/) {
@ranges = split( /-/, $_ );
$iprange_low = $ranges[0];
$iprange_high = $ranges[1];
# Get the low and high ends digit
$iprange_low =~ s/$base_ipaddr//g;
$iprange_high =~ s/$base_ipaddr//g;
}
}
} # End of if ($iprange)
# If no nodes exist in group
# Set the base digit to the low end of the network range
if ($iprange_low && $base_digit == 1) {
$base_digit = $iprange_low;
# Generate hostname
$hostname = $base_hostname;
$hostname =~ s/#/$base_digit/g;
# Generate IP address
$ipaddr = $hostname;
$ipaddr =~ s/$hostname_regex/$ipaddr_regex/gee;
$ipaddr = $base_ipaddr . $ipaddr;
}
# 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/Destination Host Unreachable/)) {
while (`nodels $hostname` || `cat /etc/hosts | grep "$ipaddr "` || !(`ping -c 4 $ipaddr` =~ m/100% packet loss/)) {
# Base digit invalid if over 254
if ($base_digit > 254) {
if ($base_digit > $iprange_high) {
last;
}
@ -429,8 +522,8 @@ sub gennodename {
$ipaddr = $base_ipaddr . $ipaddr;
}
# Range must be between 1-255
if ($base_digit > 254) {
# Range must be within network range
if ($base_digit > $iprange_high) {
return;
} else {
return ($hostname, $ipaddr, $base_digit);