Finished work on provision existing node page for other platforms. Cleaned up zVM code.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@6901 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
phamt 2010-07-28 20:24:29 +00:00
parent 261d06acc3
commit bf21e78b4d
10 changed files with 716 additions and 854 deletions

View File

@ -1,5 +1,8 @@
$(document).ready(function(){
// Include utility scripts
/**
* Execute when the DOM is fully loaded
*/
$(document).ready(function() {
// Load utility scripts
});
/**
@ -8,7 +11,7 @@ $(document).ready(function(){
* @return Nothing
*/
var bladePlugin = function() {
};
/**
@ -19,7 +22,7 @@ var bladePlugin = function() {
* @return Nothing
*/
bladePlugin.prototype.loadInventory = function(data) {
};
/**
@ -30,7 +33,7 @@ bladePlugin.prototype.loadInventory = function(data) {
* @return Nothing
*/
bladePlugin.prototype.loadClonePage = function(node) {
};
/**
@ -41,9 +44,7 @@ bladePlugin.prototype.loadClonePage = function(node) {
* @return Nothing
*/
bladePlugin.prototype.loadProvisionPage = function(tabId) {
var errMsg;
// Get the OS image names
// Get OS image names
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
@ -71,16 +72,15 @@ bladePlugin.prototype.loadProvisionPage = function(tabId) {
success : setGroupsCookies
});
// Generate new tab ID
// Get provision tab instance
var inst = tabId.replace('bladeProvisionTab', '');
// Open new tab
// Create provision form
var provForm = $('<div class="form"></div>');
// Create status bar
var barId = 'bladeProvisionStatBar' + inst;
var statBar = createStatusBar(barId);
var statBarId = 'bladeProvisionStatBar' + inst;
var statBar = createStatusBar(statBarId);
statBar.hide();
provForm.append(statBar);
@ -96,116 +96,41 @@ bladePlugin.prototype.loadProvisionPage = function(tabId) {
// Append to provision tab
$('#' + tabId).append(provForm);
// Node name
var nodeName = $('<div><label for="nodeName">Node:</label><input type="text" name="nodeName"/></div>');
provForm.append(nodeName);
// Group
var group = $('<div></div>');
var groupLabel = $('<label for="group">Group:</label>');
var groupInput = $('<input type="text" name="group"/>');
// Create provision type drop down
var provType = $('<div></div>');
var typeLabel = $('<label>Provision:</label>');
var typeSelect = $('<select></select>');
var provNewNode = $('<option value="new">New node</option>');
var provExistNode = $('<option value="existing">Existing node</option>');
typeSelect.append(provNewNode);
typeSelect.append(provExistNode);
provType.append(typeLabel);
provType.append(typeSelect);
provForm.append(provType);
// Get the groups on-focus
groupInput.one('focus', function(){
var groupNames = $.cookie('Groups');
// If there are groups, turn on auto-complete
if (groupNames) {
$(this).autocomplete(groupNames.split(','));
}
});
group.append(groupLabel);
group.append(groupInput);
provForm.append(group);
// Boot method (boot, install, stat, iscsiboot, netboot, statelite)
var method = $('<div></div>');
var methodLabel = $('<label for="method">Boot method:</label>');
var methodSelect = $('<select id="bootMethod" name="bootMethod"></select>');
methodSelect.append('<option value="boot">boot</option>');
methodSelect.append('<option value="install">install</option>');
methodSelect.append('<option value="iscsiboot">iscsiboot</option>');
methodSelect.append('<option value="netboot">netboot</option>');
methodSelect.append('<option value="statelite">statelite</option>');
method.append(methodLabel);
method.append(methodSelect);
provForm.append(method);
// Boot type (zvm, pxe, yaboot)
var type = $('<div></div>');
var typeLabel = $('<label for="type">Boot type:</label>');
var typeSelect = $('<select id="bootType" name="bootType"></select>');
typeSelect.append('<option value="zvm">zvm</option>');
typeSelect.append('<option value="install">pxe</option>');
typeSelect.append('<option value="iscsiboot">yaboot</option>');
type.append(typeLabel);
type.append(typeSelect);
provForm.append(type);
// Operating system
var os = $('<div></div>');
var osLabel = $('<label for="os">Operating system:</label>');
var osInput = $('<input type="text" name="os"/>');
// Get the OS versions on-focus
var tmp;
osInput.one('focus', function(){
tmp = $.cookie('OSVers');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
os.append(osLabel);
os.append(osInput);
provForm.append(os);
// Architecture
var arch = $('<div></div>');
var archLabel = $('<label for="arch">Architecture:</label>');
var archInput = $('<input type="text" name="arch"/>');
// Get the OS architectures on-focus
archInput.one('focus', function(){
tmp = $.cookie('OSArchs');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
arch.append(archLabel);
arch.append(archInput);
provForm.append(arch);
// Profiles
var profile = $('<div></div>');
var profileLabel = $('<label for="profile">Profile:</label>');
var profileInput = $('<input type="text" name="profile"/>');
// Get the profiles on-focus
profileInput.one('focus', function(){
tmp = $.cookie('Profiles');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
profile.append(profileLabel);
profile.append(profileInput);
provForm.append(profile);
/**
* Provision
* Create provision new node division
*/
var provisionBtn = createButton('Provision');
provisionBtn.bind('click', function(event) {
// Insert provision code here
var provNew = createProvisionNew('blade', inst);
provForm.append(provNew);
/**
* Create provision existing node division
*/
var provExisting = createProvisionExisting('blade', inst);
provForm.append(provExisting);
// Toggle provision new/existing on select
typeSelect.change(function() {
var selected = $(this).val();
if (selected == 'new') {
provNew.toggle();
provExisting.toggle();
} else {
provNew.toggle();
provExisting.toggle();
}
});
provForm.append(provisionBtn);
};
/**
@ -214,5 +139,5 @@ bladePlugin.prototype.loadProvisionPage = function(tabId) {
* @return Nothing
*/
bladePlugin.prototype.loadResources = function() {
};

View File

@ -0,0 +1,363 @@
/**
* Create nodes datatable for a given group
*
* @param group
* Group name
* @param outId
* Division ID to append datatable
* @return Nodes datatable
*/
function createNodesDatatable(group, outId) {
// Get group nodes
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'lsdef',
tgt : '',
args : group,
msg : outId
},
/**
* Create nodes datatable
*
* @param data
* Data returned from HTTP request
* @return Nothing
*/
success : function(data) {
// Data returned
var rsp = data.rsp;
// Output ID
var outId = data.msg;
// Datatable ID
var dTableId = outId.replace('DIV', '');
// Node attributes hash
var attrs = new Object();
// Node attributes
var headers = new Object();
// Clear nodes datatable division
$('#' + outId).children().remove();
// Create nodes datatable
var node, args;
for ( var i in rsp) {
// Get node
var pos = rsp[i].indexOf('Object name:');
if (pos > -1) {
var temp = rsp[i].split(': ');
node = jQuery.trim(temp[1]);
// Create a hash for the node attributes
attrs[node] = new Object();
i++;
}
// Get key and value
args = rsp[i].split('=');
var key = jQuery.trim(args[0]);
var val = jQuery.trim(args[1]);
// Create hash table
attrs[node][key] = val;
headers[key] = 1;
}
// Sort headers
var sorted = new Array();
for ( var key in headers) {
sorted.push(key);
}
sorted.sort();
// Add column for check box and node
sorted.unshift('<input type="checkbox" onclick="selectAllCheckbox(event, $(this))">', 'node');
// Create nodes datatable
var dTable = new DataTable(dTableId);
dTable.init(sorted);
// Go through each node
for ( var node in attrs) {
// Create a row
var row = new Array();
// Create a check box
var checkBx = '<input type="checkbox" name="' + node + '"/>';
row.push(checkBx, node);
// Go through each header
for ( var i = 2; i < sorted.length; i++) {
// Add node attributes to the row
var key = sorted[i];
var val = attrs[node][key];
if (val) {
row.push(val);
} else {
row.push('');
}
}
// Add row to table
dTable.add(row);
}
$('#' + outId).append(dTable.object());
$('#' + dTableId).dataTable();
} // End of function(data)
});
}
/**
* Create provision existing node division
*
* @param plugin
* Plugin name to create division for
* @param inst
* Provision tab instance
* @return Provision existing node division
*/
function createProvisionExisting(plugin, inst) {
// Create provision existing division and hide it
var provExisting = $('<div></div>').hide();
// Create group input
var group = $('<div></div>');
var groupLabel = $('<label for="provType">Group:</label>');
group.append(groupLabel);
// Turn on auto complete for group
var dTableDivId = plugin + 'NodesDatatableDIV' + inst; // Division ID where nodes datatable will be appended
var groupNames = $.cookie('Groups');
if (groupNames) {
// Split group names into an array
var tmp = groupNames.split(',');
// Create drop down for groups
var groupSelect = $('<select></select>');
groupSelect.append('<option></option>');
for ( var i in tmp) {
// Add group into drop down
var opt = $('<option value="' + tmp[i] + '">' + tmp[i] + '</option>');
groupSelect.append(opt);
}
group.append(groupSelect);
// Create node datatable
groupSelect.change(function() {
// Get group selected
var thisGroup = $(this).val();
// If a valid group is selected
if (thisGroup) {
createNodesDatatable(thisGroup, dTableDivId);
} // End of if (thisGroup)
});
} else {
// If no groups are cookied
var groupInput = $('<input type="text" name="group"/>');
group.append(groupInput);
}
provExisting.append(group);
// Create node input
var node = $('<div></div>');
var nodeLabel = $('<label for="nodeName">Nodes:</label>');
var nodeDatatable = $('<div class="indent" id="' + dTableDivId + '"><p>Select a group to view its nodes</p></div>');
node.append(nodeLabel);
node.append(nodeDatatable);
provExisting.append(node);
// Create boot method drop down
var method = $('<div></div>');
var methodLabel = $('<label for="method">Boot method:</label>');
var methodSelect = $('<select id="bootMethod" name="bootMethod"></select>');
methodSelect.append('<option value="boot">boot</option>');
methodSelect.append('<option value="install">install</option>');
methodSelect.append('<option value="iscsiboot">iscsiboot</option>');
methodSelect.append('<option value="netboot">netboot</option>');
methodSelect.append('<option value="statelite">statelite</option>');
method.append(methodLabel);
method.append(methodSelect);
provExisting.append(method);
// Create boot type drop down
var type = $('<div></div>');
var typeLabel = $('<label for="type">Boot type:</label>');
var typeSelect = $('<select id="bootType" name="bootType"></select>');
typeSelect.append('<option value="pxe">pxe</option>');
typeSelect.append('<option value="iscsiboot">yaboot</option>');
typeSelect.append('<option value="zvm">zvm</option>');
type.append(typeLabel);
type.append(typeSelect);
provExisting.append(type);
// Create operating system input
var os = $('<div></div>');
var osLabel = $('<label for="os">Operating system:</label>');
var osInput = $('<input type="text" name="os"/>');
osInput.one('focus', function() {
var tmp = $.cookie('OSVers');
if (tmp) {
// Turn on auto complete
$(this).autocomplete(tmp.split(','));
}
});
os.append(osLabel);
os.append(osInput);
provExisting.append(os);
// Create architecture input
var arch = $('<div></div>');
var archLabel = $('<label for="arch">Architecture:</label>');
var archInput = $('<input type="text" name="arch"/>');
archInput.one('focus', function() {
var tmp = $.cookie('OSArchs');
if (tmp) {
// Turn on auto complete
$(this).autocomplete(tmp.split(','));
}
});
arch.append(archLabel);
arch.append(archInput);
provExisting.append(arch);
// Create profile input
var profile = $('<div></div>');
var profileLabel = $('<label for="profile">Profile:</label>');
var profileInput = $('<input type="text" name="profile"/>');
profileInput.one('focus', function() {
var tmp = $.cookie('Profiles');
if (tmp) {
// Turn on auto complete
$(this).autocomplete(tmp.split(','));
}
});
profile.append(profileLabel);
profile.append(profileInput);
provExisting.append(profile);
/**
* Provision existing
*/
var provisionBtn = createButton('Provision');
provisionBtn.bind('click', function(event) {
// TODO Insert provision code here
});
provExisting.append(provisionBtn);
return provExisting;
}
/**
* Create provision new node division
*
* @param inst
* Provision tab instance
* @return Provision new node division
*/
function createProvisionNew(plugin, inst) {
// Create provision new node division
var provNew = $('<div></div>');
// Create node input
var nodeName = $('<div><label for="nodeName">Node:</label><input type="text" name="nodeName"/></div>');
provNew.append(nodeName);
// Create group input
var group = $('<div></div>');
var groupLabel = $('<label for="group">Group:</label>');
var groupInput = $('<input type="text" name="group"/>');
groupInput.one('focus', function() {
var groupNames = $.cookie('Groups');
if (groupNames) {
// Turn on auto complete
$(this).autocomplete(groupNames.split(','));
}
});
group.append(groupLabel);
group.append(groupInput);
provNew.append(group);
// Create boot method drop down
var method = $('<div></div>');
var methodLabel = $('<label for="method">Boot method:</label>');
var methodSelect = $('<select id="bootMethod" name="bootMethod"></select>');
methodSelect.append('<option value="boot">boot</option>');
methodSelect.append('<option value="install">install</option>');
methodSelect.append('<option value="iscsiboot">iscsiboot</option>');
methodSelect.append('<option value="netboot">netboot</option>');
methodSelect.append('<option value="statelite">statelite</option>');
method.append(methodLabel);
method.append(methodSelect);
provNew.append(method);
// Create boot type drop down
var type = $('<div></div>');
var typeLabel = $('<label for="type">Boot type:</label>');
var typeSelect = $('<select id="bootType" name="bootType"></select>');
typeSelect.append('<option value="install">pxe</option>');
typeSelect.append('<option value="iscsiboot">yaboot</option>');
typeSelect.append('<option value="zvm">zvm</option>');
type.append(typeLabel);
type.append(typeSelect);
provNew.append(type);
// Create operating system input
var os = $('<div></div>');
var osLabel = $('<label for="os">Operating system:</label>');
var osInput = $('<input type="text" name="os"/>');
osInput.one('focus', function() {
var tmp = $.cookie('OSVers');
if (tmp) {
// Turn on auto complete
$(this).autocomplete(tmp.split(','));
}
});
os.append(osLabel);
os.append(osInput);
provNew.append(os);
// Create architecture input
var arch = $('<div></div>');
var archLabel = $('<label for="arch">Architecture:</label>');
var archInput = $('<input type="text" name="arch"/>');
archInput.one('focus', function() {
var tmp = $.cookie('OSArchs');
if (tmp) {
// Turn on auto complete
$(this).autocomplete(tmp.split(','));
}
});
arch.append(archLabel);
arch.append(archInput);
provNew.append(arch);
// Create profile input
var profile = $('<div></div>');
var profileLabel = $('<label for="profile">Profile:</label>');
var profileInput = $('<input type="text" name="profile"/>');
profileInput.one('focus', function() {
var tmp = $.cookie('Profiles');
if (tmp) {
// Turn on auto complete
$(this).autocomplete(tmp.split(','));
}
});
profile.append(profileLabel);
profile.append(profileInput);
provNew.append(profile);
/**
* Provision new node
*/
var provisionBtn = createButton('Provision');
provisionBtn.bind('click', function(event) {
// TODO Insert provision code here
});
provNew.append(provisionBtn);
return provNew;
}

View File

@ -1,5 +1,8 @@
$(document).ready(function(){
// Include utility scripts
/**
* Execute when the DOM is fully loaded
*/
$(document).ready(function() {
// Load utility scripts
});
/**
@ -8,7 +11,7 @@ $(document).ready(function(){
* @return Nothing
*/
var fspPlugin = function() {
};
/**
@ -19,7 +22,7 @@ var fspPlugin = function() {
* @return Nothing
*/
fspPlugin.prototype.loadInventory = function(data) {
};
/**
@ -30,7 +33,7 @@ fspPlugin.prototype.loadInventory = function(data) {
* @return Nothing
*/
fspPlugin.prototype.loadClonePage = function(node) {
};
/**
@ -41,9 +44,7 @@ fspPlugin.prototype.loadClonePage = function(node) {
* @return Nothing
*/
fspPlugin.prototype.loadProvisionPage = function(tabId) {
var errMsg;
// Get the OS image names
// Get OS image names
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
@ -71,16 +72,15 @@ fspPlugin.prototype.loadProvisionPage = function(tabId) {
success : setGroupsCookies
});
// Generate new tab ID
// Get provision tab instance
var inst = tabId.replace('fspProvisionTab', '');
// Open new tab
// Create provision form
var provForm = $('<div class="form"></div>');
// Create status bar
var barId = 'fspProvisionStatBar' + inst;
var statBar = createStatusBar(barId);
var statBarId = 'fspProvisionStatBar' + inst;
var statBar = createStatusBar(statBarId);
statBar.hide();
provForm.append(statBar);
@ -90,122 +90,47 @@ fspPlugin.prototype.loadProvisionPage = function(tabId) {
statBar.append(loader);
// Create info bar
var infoBar = createInfoBar('Provision a FSP node');
var infoBar = createInfoBar('Provision a fsp node');
provForm.append(infoBar);
// Append to provision tab
$('#' + tabId).append(provForm);
// Node name
var nodeName = $('<div><label for="nodeName">Node:</label><input type="text" name="nodeName"/></div>');
provForm.append(nodeName);
// Group
var group = $('<div></div>');
var groupLabel = $('<label for="group">Group:</label>');
var groupInput = $('<input type="text" name="group"/>');
// Create provision type drop down
var provType = $('<div></div>');
var typeLabel = $('<label>Provision:</label>');
var typeSelect = $('<select></select>');
var provNewNode = $('<option value="new">New node</option>');
var provExistNode = $('<option value="existing">Existing node</option>');
typeSelect.append(provNewNode);
typeSelect.append(provExistNode);
provType.append(typeLabel);
provType.append(typeSelect);
provForm.append(provType);
// Get the groups on-focus
groupInput.one('focus', function(){
var groupNames = $.cookie('Groups');
// If there are groups, turn on auto-complete
if (groupNames) {
$(this).autocomplete(groupNames.split(','));
}
});
group.append(groupLabel);
group.append(groupInput);
provForm.append(group);
// Boot method (boot, install, stat, iscsiboot, netboot, statelite)
var method = $('<div></div>');
var methodLabel = $('<label for="method">Boot method:</label>');
var methodSelect = $('<select id="bootMethod" name="bootMethod"></select>');
methodSelect.append('<option value="boot">boot</option>');
methodSelect.append('<option value="install">install</option>');
methodSelect.append('<option value="iscsiboot">iscsiboot</option>');
methodSelect.append('<option value="netboot">netboot</option>');
methodSelect.append('<option value="statelite">statelite</option>');
method.append(methodLabel);
method.append(methodSelect);
provForm.append(method);
// Boot type (zvm, pxe, yaboot)
var type = $('<div></div>');
var typeLabel = $('<label for="type">Boot type:</label>');
var typeSelect = $('<select id="bootType" name="bootType"></select>');
typeSelect.append('<option value="zvm">zvm</option>');
typeSelect.append('<option value="install">pxe</option>');
typeSelect.append('<option value="iscsiboot">yaboot</option>');
type.append(typeLabel);
type.append(typeSelect);
provForm.append(type);
// Operating system
var os = $('<div></div>');
var osLabel = $('<label for="os">Operating system:</label>');
var osInput = $('<input type="text" name="os"/>');
// Get the OS versions on-focus
var tmp;
osInput.one('focus', function(){
tmp = $.cookie('OSVers');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
os.append(osLabel);
os.append(osInput);
provForm.append(os);
// Architecture
var arch = $('<div></div>');
var archLabel = $('<label for="arch">Architecture:</label>');
var archInput = $('<input type="text" name="arch"/>');
// Get the OS architectures on-focus
archInput.one('focus', function(){
tmp = $.cookie('OSArchs');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
arch.append(archLabel);
arch.append(archInput);
provForm.append(arch);
// Profiles
var profile = $('<div></div>');
var profileLabel = $('<label for="profile">Profile:</label>');
var profileInput = $('<input type="text" name="profile"/>');
// Get the profiles on-focus
profileInput.one('focus', function(){
tmp = $.cookie('Profiles');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
profile.append(profileLabel);
profile.append(profileInput);
provForm.append(profile);
/**
* Provision
* Create provision new node division
*/
var provisionBtn = createButton('Provision');
provisionBtn.bind('click', function(event) {
// Insert provision code here
var provNew = createProvisionNew('fsp', inst);
provForm.append(provNew);
/**
* Create provision existing node division
*/
var provExisting = createProvisionExisting('fsp', inst);
provForm.append(provExisting);
// Toggle provision new/existing on select
typeSelect.change(function() {
var selected = $(this).val();
if (selected == 'new') {
provNew.toggle();
provExisting.toggle();
} else {
provNew.toggle();
provExisting.toggle();
}
});
provForm.append(provisionBtn);
};
/**
@ -214,5 +139,5 @@ fspPlugin.prototype.loadProvisionPage = function(tabId) {
* @return Nothing
*/
fspPlugin.prototype.loadResources = function() {
};

View File

@ -1,5 +1,8 @@
$(document).ready(function(){
// Include utility scripts
/**
* Execute when the DOM is fully loaded
*/
$(document).ready(function() {
// Load utility scripts
});
/**
@ -8,7 +11,7 @@ $(document).ready(function(){
* @return Nothing
*/
var hmcPlugin = function() {
};
/**
@ -27,24 +30,23 @@ hmcPlugin.prototype.loadInventory = function(data) {
var node = args[1].replace('node=', '');
// Get node inventory
var inv = data.rsp;
// Remove loader
var loaderId = tabId + 'TabLoader';
$('#' + loaderId).remove();
// Create division to hold inventory
var invDivId = tabId + 'Inventory';
var invDiv = $('<div class="inventory" id="' + invDivId + '"></div>');
var fieldSet, legend, oList, item;
// Loop through each line
var fieldSet, legend, oList, item;
for ( var k = 0; k < inv.length; k++) {
// Remove the node name in front
// Remove node name in front
var str = inv[k].replace(node + ': ', '');
// If the string is a header
if (str.indexOf('I/O Bus Information') > -1 || str.indexOf('Machine Configuration Info') > -1) {
// If string is a header
if (str.indexOf('I/O Bus Information') > -1 || str.indexOf('Machine Configuration Info') > -1) {
// Create a fieldset
fieldSet = $('<fieldset></fieldset>');
legend = $('<legend>' + str + '</legend>');
@ -55,7 +57,7 @@ hmcPlugin.prototype.loadInventory = function(data) {
} else {
// If no fieldset is defined
if (!fieldSet) {
// Define fieldset
// Define general fieldset
fieldSet = $('<fieldset></fieldset>');
legend = $('<legend>General</legend>');
fieldSet.append(legend);
@ -63,14 +65,14 @@ hmcPlugin.prototype.loadInventory = function(data) {
fieldSet.append(oList);
invDiv.append(fieldSet);
}
// Append the string to a list
item = $('<li></li>');
item.append(str);
oList.append(item);
item.append(str);
oList.append(item);
}
}
// Append to inventory form
$('#' + tabId).append(invDiv);
};
@ -83,7 +85,7 @@ hmcPlugin.prototype.loadInventory = function(data) {
* @return Nothing
*/
hmcPlugin.prototype.loadClonePage = function(node) {
};
/**
@ -94,9 +96,7 @@ hmcPlugin.prototype.loadClonePage = function(node) {
* @return Nothing
*/
hmcPlugin.prototype.loadProvisionPage = function(tabId) {
var errMsg;
// Get the OS image names
// Get OS image names
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
@ -124,16 +124,15 @@ hmcPlugin.prototype.loadProvisionPage = function(tabId) {
success : setGroupsCookies
});
// Generate new tab ID
// Get provision tab instance
var inst = tabId.replace('hmcProvisionTab', '');
// Open new tab
// Create provision form
var provForm = $('<div class="form"></div>');
// Create status bar
var barId = 'hmcProvisionStatBar' + inst;
var statBar = createStatusBar(barId);
var statBarId = 'hmcProvisionStatBar' + inst;
var statBar = createStatusBar(statBarId);
statBar.hide();
provForm.append(statBar);
@ -143,122 +142,47 @@ hmcPlugin.prototype.loadProvisionPage = function(tabId) {
statBar.append(loader);
// Create info bar
var infoBar = createInfoBar('Provision a HMC node');
var infoBar = createInfoBar('Provision a hmc node');
provForm.append(infoBar);
// Append to provision tab
$('#' + tabId).append(provForm);
// Node name
var nodeName = $('<div><label for="nodeName">Node:</label><input type="text" name="nodeName"/></div>');
provForm.append(nodeName);
// Group
var group = $('<div></div>');
var groupLabel = $('<label for="group">Group:</label>');
var groupInput = $('<input type="text" name="group"/>');
// Create provision type drop down
var provType = $('<div></div>');
var typeLabel = $('<label>Provision:</label>');
var typeSelect = $('<select></select>');
var provNewNode = $('<option value="new">New node</option>');
var provExistNode = $('<option value="existing">Existing node</option>');
typeSelect.append(provNewNode);
typeSelect.append(provExistNode);
provType.append(typeLabel);
provType.append(typeSelect);
provForm.append(provType);
// Get the groups on-focus
groupInput.one('focus', function(){
var groupNames = $.cookie('Groups');
// If there are groups, turn on auto-complete
if (groupNames) {
$(this).autocomplete(groupNames.split(','));
}
});
group.append(groupLabel);
group.append(groupInput);
provForm.append(group);
// Boot method (boot, install, stat, iscsiboot, netboot, statelite)
var method = $('<div></div>');
var methodLabel = $('<label for="method">Boot method:</label>');
var methodSelect = $('<select id="bootMethod" name="bootMethod"></select>');
methodSelect.append('<option value="boot">boot</option>');
methodSelect.append('<option value="install">install</option>');
methodSelect.append('<option value="iscsiboot">iscsiboot</option>');
methodSelect.append('<option value="netboot">netboot</option>');
methodSelect.append('<option value="statelite">statelite</option>');
method.append(methodLabel);
method.append(methodSelect);
provForm.append(method);
// Boot type (zvm, pxe, yaboot)
var type = $('<div></div>');
var typeLabel = $('<label for="type">Boot type:</label>');
var typeSelect = $('<select id="bootType" name="bootType"></select>');
typeSelect.append('<option value="zvm">zvm</option>');
typeSelect.append('<option value="install">pxe</option>');
typeSelect.append('<option value="iscsiboot">yaboot</option>');
type.append(typeLabel);
type.append(typeSelect);
provForm.append(type);
// Operating system
var os = $('<div></div>');
var osLabel = $('<label for="os">Operating system:</label>');
var osInput = $('<input type="text" name="os"/>');
// Get the OS versions on-focus
var tmp;
osInput.one('focus', function(){
tmp = $.cookie('OSVers');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
os.append(osLabel);
os.append(osInput);
provForm.append(os);
// Architecture
var arch = $('<div></div>');
var archLabel = $('<label for="arch">Architecture:</label>');
var archInput = $('<input type="text" name="arch"/>');
// Get the OS architectures on-focus
archInput.one('focus', function(){
tmp = $.cookie('OSArchs');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
arch.append(archLabel);
arch.append(archInput);
provForm.append(arch);
// Profiles
var profile = $('<div></div>');
var profileLabel = $('<label for="profile">Profile:</label>');
var profileInput = $('<input type="text" name="profile"/>');
// Get the profiles on-focus
profileInput.one('focus', function(){
tmp = $.cookie('Profiles');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
profile.append(profileLabel);
profile.append(profileInput);
provForm.append(profile);
/**
* Provision
* Create provision new node division
*/
var provisionBtn = createButton('Provision');
provisionBtn.bind('click', function(event) {
// Insert provision code here
var provNew = createProvisionNew('hmc', inst);
provForm.append(provNew);
/**
* Create provision existing node division
*/
var provExisting = createProvisionExisting('hmc', inst);
provForm.append(provExisting);
// Toggle provision new/existing on select
typeSelect.change(function() {
var selected = $(this).val();
if (selected == 'new') {
provNew.toggle();
provExisting.toggle();
} else {
provNew.toggle();
provExisting.toggle();
}
});
provForm.append(provisionBtn);
};
/**
@ -267,5 +191,5 @@ hmcPlugin.prototype.loadProvisionPage = function(tabId) {
* @return Nothing
*/
hmcPlugin.prototype.loadResources = function() {
};

View File

@ -1,5 +1,8 @@
$(document).ready(function(){
// Include utility scripts
/**
* Execute when the DOM is fully loaded
*/
$(document).ready(function() {
// Load utility scripts
});
/**
@ -8,7 +11,7 @@ $(document).ready(function(){
* @return Nothing
*/
var ipmiPlugin = function() {
};
/**
@ -19,7 +22,7 @@ var ipmiPlugin = function() {
* @return Nothing
*/
ipmiPlugin.prototype.loadInventory = function(data) {
};
/**
@ -30,7 +33,7 @@ ipmiPlugin.prototype.loadInventory = function(data) {
* @return Nothing
*/
ipmiPlugin.prototype.loadClonePage = function(node) {
};
/**
@ -41,9 +44,7 @@ ipmiPlugin.prototype.loadClonePage = function(node) {
* @return Nothing
*/
ipmiPlugin.prototype.loadProvisionPage = function(tabId) {
var errMsg;
// Get the OS image names
// Get OS image names
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
@ -71,16 +72,15 @@ ipmiPlugin.prototype.loadProvisionPage = function(tabId) {
success : setGroupsCookies
});
// Generate new tab ID
// Get provision tab instance
var inst = tabId.replace('ipmiProvisionTab', '');
// Open new tab
// Create provision form
var provForm = $('<div class="form"></div>');
// Create status bar
var barId = 'ipmiProvisionStatBar' + inst;
var statBar = createStatusBar(barId);
var statBarId = 'ipmiProvisionStatBar' + inst;
var statBar = createStatusBar(statBarId);
statBar.hide();
provForm.append(statBar);
@ -90,122 +90,47 @@ ipmiPlugin.prototype.loadProvisionPage = function(tabId) {
statBar.append(loader);
// Create info bar
var infoBar = createInfoBar('Provision a IPMI node');
var infoBar = createInfoBar('Provision a ipmi node');
provForm.append(infoBar);
// Append to provision tab
$('#' + tabId).append(provForm);
// Node name
var nodeName = $('<div><label for="nodeName">Node:</label><input type="text" name="nodeName"/></div>');
provForm.append(nodeName);
// Group
var group = $('<div></div>');
var groupLabel = $('<label for="group">Group:</label>');
var groupInput = $('<input type="text" name="group"/>');
// Create provision type drop down
var provType = $('<div></div>');
var typeLabel = $('<label>Provision:</label>');
var typeSelect = $('<select></select>');
var provNewNode = $('<option value="new">New node</option>');
var provExistNode = $('<option value="existing">Existing node</option>');
typeSelect.append(provNewNode);
typeSelect.append(provExistNode);
provType.append(typeLabel);
provType.append(typeSelect);
provForm.append(provType);
// Get the groups on-focus
groupInput.one('focus', function(){
var groupNames = $.cookie('Groups');
// If there are groups, turn on auto-complete
if (groupNames) {
$(this).autocomplete(groupNames.split(','));
}
});
group.append(groupLabel);
group.append(groupInput);
provForm.append(group);
// Boot method (boot, install, stat, iscsiboot, netboot, statelite)
var method = $('<div></div>');
var methodLabel = $('<label for="method">Boot method:</label>');
var methodSelect = $('<select id="bootMethod" name="bootMethod"></select>');
methodSelect.append('<option value="boot">boot</option>');
methodSelect.append('<option value="install">install</option>');
methodSelect.append('<option value="iscsiboot">iscsiboot</option>');
methodSelect.append('<option value="netboot">netboot</option>');
methodSelect.append('<option value="statelite">statelite</option>');
method.append(methodLabel);
method.append(methodSelect);
provForm.append(method);
// Boot type (zvm, pxe, yaboot)
var type = $('<div></div>');
var typeLabel = $('<label for="type">Boot type:</label>');
var typeSelect = $('<select id="bootType" name="bootType"></select>');
typeSelect.append('<option value="zvm">zvm</option>');
typeSelect.append('<option value="install">pxe</option>');
typeSelect.append('<option value="iscsiboot">yaboot</option>');
type.append(typeLabel);
type.append(typeSelect);
provForm.append(type);
// Operating system
var os = $('<div></div>');
var osLabel = $('<label for="os">Operating system:</label>');
var osInput = $('<input type="text" name="os"/>');
// Get the OS versions on-focus
var tmp;
osInput.one('focus', function(){
tmp = $.cookie('OSVers');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
os.append(osLabel);
os.append(osInput);
provForm.append(os);
// Architecture
var arch = $('<div></div>');
var archLabel = $('<label for="arch">Architecture:</label>');
var archInput = $('<input type="text" name="arch"/>');
// Get the OS architectures on-focus
archInput.one('focus', function(){
tmp = $.cookie('OSArchs');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
arch.append(archLabel);
arch.append(archInput);
provForm.append(arch);
// Profiles
var profile = $('<div></div>');
var profileLabel = $('<label for="profile">Profile:</label>');
var profileInput = $('<input type="text" name="profile"/>');
// Get the profiles on-focus
profileInput.one('focus', function(){
tmp = $.cookie('Profiles');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
profile.append(profileLabel);
profile.append(profileInput);
provForm.append(profile);
/**
* Provision
* Create provision new node division
*/
var provisionBtn = createButton('Provision');
provisionBtn.bind('click', function(event) {
// Insert provision code here
var provNew = createProvisionNew('ipmi', inst);
provForm.append(provNew);
/**
* Create provision existing node division
*/
var provExisting = createProvisionExisting('ipmi', inst);
provForm.append(provExisting);
// Toggle provision new/existing on select
typeSelect.change(function() {
var selected = $(this).val();
if (selected == 'new') {
provNew.toggle();
provExisting.toggle();
} else {
provNew.toggle();
provExisting.toggle();
}
});
provForm.append(provisionBtn);
};
/**
@ -214,5 +139,5 @@ ipmiPlugin.prototype.loadProvisionPage = function(tabId) {
* @return Nothing
*/
ipmiPlugin.prototype.loadResources = function() {
};

View File

@ -1,5 +1,8 @@
$(document).ready(function(){
// Include utility scripts
/**
* Execute when the DOM is fully loaded
*/
$(document).ready(function() {
// Load utility scripts
});
/**
@ -8,7 +11,7 @@ $(document).ready(function(){
* @return Nothing
*/
var ivmPlugin = function() {
};
/**
@ -19,7 +22,7 @@ var ivmPlugin = function() {
* @return Nothing
*/
ivmPlugin.prototype.loadInventory = function(data) {
};
/**
@ -30,7 +33,7 @@ ivmPlugin.prototype.loadInventory = function(data) {
* @return Nothing
*/
ivmPlugin.prototype.loadClonePage = function(node) {
};
/**
@ -41,9 +44,7 @@ ivmPlugin.prototype.loadClonePage = function(node) {
* @return Nothing
*/
ivmPlugin.prototype.loadProvisionPage = function(tabId) {
var errMsg;
// Get the OS image names
// Get OS image names
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
@ -71,16 +72,15 @@ ivmPlugin.prototype.loadProvisionPage = function(tabId) {
success : setGroupsCookies
});
// Generate new tab ID
// Get provision tab instance
var inst = tabId.replace('ivmProvisionTab', '');
// Open new tab
// Create provision form
var provForm = $('<div class="form"></div>');
// Create status bar
var barId = 'ivmProvisionStatBar' + inst;
var statBar = createStatusBar(barId);
var statBarId = 'ivmProvisionStatBar' + inst;
var statBar = createStatusBar(statBarId);
statBar.hide();
provForm.append(statBar);
@ -90,122 +90,47 @@ ivmPlugin.prototype.loadProvisionPage = function(tabId) {
statBar.append(loader);
// Create info bar
var infoBar = createInfoBar('Provision a IVM node');
var infoBar = createInfoBar('Provision a ivm node');
provForm.append(infoBar);
// Append to provision tab
$('#' + tabId).append(provForm);
// Node name
var nodeName = $('<div><label for="nodeName">Node:</label><input type="text" name="nodeName"/></div>');
provForm.append(nodeName);
// Group
var group = $('<div></div>');
var groupLabel = $('<label for="group">Group:</label>');
var groupInput = $('<input type="text" name="group"/>');
// Create provision type drop down
var provType = $('<div></div>');
var typeLabel = $('<label>Provision:</label>');
var typeSelect = $('<select></select>');
var provNewNode = $('<option value="new">New node</option>');
var provExistNode = $('<option value="existing">Existing node</option>');
typeSelect.append(provNewNode);
typeSelect.append(provExistNode);
provType.append(typeLabel);
provType.append(typeSelect);
provForm.append(provType);
// Get the groups on-focus
groupInput.one('focus', function(){
var groupNames = $.cookie('Groups');
// If there are groups, turn on auto-complete
if (groupNames) {
$(this).autocomplete(groupNames.split(','));
}
});
group.append(groupLabel);
group.append(groupInput);
provForm.append(group);
// Boot method (boot, install, stat, iscsiboot, netboot, statelite)
var method = $('<div></div>');
var methodLabel = $('<label for="method">Boot method:</label>');
var methodSelect = $('<select id="bootMethod" name="bootMethod"></select>');
methodSelect.append('<option value="boot">boot</option>');
methodSelect.append('<option value="install">install</option>');
methodSelect.append('<option value="iscsiboot">iscsiboot</option>');
methodSelect.append('<option value="netboot">netboot</option>');
methodSelect.append('<option value="statelite">statelite</option>');
method.append(methodLabel);
method.append(methodSelect);
provForm.append(method);
// Boot type (zvm, pxe, yaboot)
var type = $('<div></div>');
var typeLabel = $('<label for="type">Boot type:</label>');
var typeSelect = $('<select id="bootType" name="bootType"></select>');
typeSelect.append('<option value="zvm">zvm</option>');
typeSelect.append('<option value="install">pxe</option>');
typeSelect.append('<option value="iscsiboot">yaboot</option>');
type.append(typeLabel);
type.append(typeSelect);
provForm.append(type);
// Operating system
var os = $('<div></div>');
var osLabel = $('<label for="os">Operating system:</label>');
var osInput = $('<input type="text" name="os"/>');
// Get the OS versions on-focus
var tmp;
osInput.one('focus', function(){
tmp = $.cookie('OSVers');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
os.append(osLabel);
os.append(osInput);
provForm.append(os);
// Architecture
var arch = $('<div></div>');
var archLabel = $('<label for="arch">Architecture:</label>');
var archInput = $('<input type="text" name="arch"/>');
// Get the OS architectures on-focus
archInput.one('focus', function(){
tmp = $.cookie('OSArchs');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
arch.append(archLabel);
arch.append(archInput);
provForm.append(arch);
// Profiles
var profile = $('<div></div>');
var profileLabel = $('<label for="profile">Profile:</label>');
var profileInput = $('<input type="text" name="profile"/>');
// Get the profiles on-focus
profileInput.one('focus', function(){
tmp = $.cookie('Profiles');
// If there are any, turn on auto-complete
if (tmp) {
$(this).autocomplete(tmp.split(','));
}
});
profile.append(profileLabel);
profile.append(profileInput);
provForm.append(profile);
/**
* Provision
* Create provision new node division
*/
var provisionBtn = createButton('Provision');
provisionBtn.bind('click', function(event) {
// Insert provision code here
var provNew = createProvisionNew('ivm', inst);
provForm.append(provNew);
/**
* Create provision existing node division
*/
var provExisting = createProvisionExisting('ivm', inst);
provForm.append(provExisting);
// Toggle provision new/existing on select
typeSelect.change(function() {
var selected = $(this).val();
if (selected == 'new') {
provNew.toggle();
provExisting.toggle();
} else {
provNew.toggle();
provExisting.toggle();
}
});
provForm.append(provisionBtn);
};
/**
@ -214,5 +139,5 @@ ivmPlugin.prototype.loadProvisionPage = function(tabId) {
* @return Nothing
*/
ivmPlugin.prototype.loadResources = function() {
};

View File

@ -1,5 +1,8 @@
/**
* Execute when the DOM is fully loaded
*/
$(document).ready(function() {
// Include utility scripts
// Load utility scripts
includeJs("js/custom/zvmUtils.js");
});
@ -24,7 +27,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
var tab = getNodesTab();
var newTabId = node + 'CloneTab';
// If there is no existing clone tab for this node
// If there is no existing clone tab
if (!$('#' + newTabId).length) {
// Get table headers
var table = $('#' + node).parent().parent().parent().parent();
@ -45,7 +48,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
var aData = dTable.fnGetData(rowPos);
var hcp = aData[hcpCol];
// Create status bar, hide on load
// Create status bar and hide it
var statBarId = node + 'CloneStatusBar';
var statBar = $('<div class="statusBar" id="' + statBarId + '"></div>')
.hide();
@ -58,28 +61,23 @@ zvmPlugin.prototype.loadClonePage = function(node) {
cloneForm.append(statBar);
cloneForm.append(infoBar);
// Target node range
// Create target node range input
cloneForm.append('<div><label>Target node range:</label><input type="text" id="tgtNode" name="tgtNode"/></div>');
// Target user ID range
// Create target user ID range input
cloneForm.append('<div><label>Target user ID range:</label><input type="text" id="tgtUserId" name="tgtUserId"/></div>');
// Create the rest of the form
// Include clone source, hardware control point, group, disk pool, and
// disk password
// Create clone source and hardware control point inputs
cloneForm.append('<div><label>Clone source:</label><input type="text" id="srcNode" name="srcNode" readonly="readonly" value="' + node + '"/></div>');
cloneForm.append('<div><label>Hardware control point:</label><input type="text" id="newHcp" name="newHcp" readonly="readonly" value="' + hcp + '"/></div>');
// Group
// Create group input
var group = $('<div></div>');
var groupLabel = $('<label for="group">Group:</label>');
var groupInput = $('<input type="text" id="newGroup" name="newGroup"/>');
// Get the groups on-focus
groupInput.one('focus', function(){
var groupNames = $.cookie('Groups');
// If there are groups, turn on auto-complete
if (groupNames) {
// Turn on auto complete
$(this).autocomplete(groupNames.split(','));
}
});
@ -87,31 +85,30 @@ zvmPlugin.prototype.loadClonePage = function(node) {
group.append(groupInput);
cloneForm.append(group);
// Get the list of disk pools
// Get list of disk pools
var temp = hcp.split('.');
var diskPools = $.cookie(temp[0] + 'DiskPools');
// Set autocomplete for disk pool
// Create disk pool input
var poolDiv = $('<div></div>');
var poolLabel = $('<label>Disk pool:</label>');
var poolInput = $('<input type="text" id="diskPool" name="diskPool"/>')
.autocomplete(diskPools.split(','));
var poolInput = $('<input type="text" id="diskPool" name="diskPool"/>').autocomplete(diskPools.split(','));
poolDiv.append(poolLabel);
poolDiv.append(poolInput);
cloneForm.append(poolDiv);
// Create disk password input
cloneForm.append('<div><label>Disk password:</label><input type="password" id="diskPw" name="diskPw"/></div>');
/**
* Clone
* Clone node
*/
var cloneBtn = createButton('Clone');
cloneBtn.bind('click', function(event) {
var ready = true;
var errMsg = '';
// Check node name, userId, hardware control point, group,
// and password
// Check node name, userId, hardware control point, group, and password
var inputs = $('#' + newTabId + ' input');
for ( var i = 0; i < inputs.length; i++) {
if (!inputs.eq(i).val()
@ -124,6 +121,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
}
}
// Write error message
if (!ready) {
errMsg = errMsg + 'You are missing some inputs. ';
}
@ -133,7 +131,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
// Get target user ID
var userIdRange = $('#' + newTabId + ' input[name=tgtUserId]').val();
// Is a node range given
// Check node range and user ID range
if (nodeRange.indexOf('-') > -1 || userIdRange.indexOf('-') > -1) {
if (nodeRange.indexOf('-') < 0 || userIdRange.indexOf('-') < 0) {
errMsg = errMsg + 'A user ID range and node range needs to be given. ';
@ -143,21 +141,21 @@ zvmPlugin.prototype.loadClonePage = function(node) {
// Get node base name
var nodeBase = tmp[0].match(/[a-zA-Z]+/);
// Get the starting index
// Get starting index
var nodeStart = parseInt(tmp[0].match(/\d+/));
// Get the ending index
// Get ending index
var nodeEnd = parseInt(tmp[1]);
tmp = userIdRange.split('-');
// Get user ID base name
var userIdBase = tmp[0].match(/[a-zA-Z]+/);
// Get the starting index
// Get starting index
var userIdStart = parseInt(tmp[0].match(/\d+/));
// Get the ending index
// Get ending index
var userIdEnd = parseInt(tmp[1]);
// If the starting and ending index do not match
// If starting and ending index do not match
if (!(nodeStart == userIdStart) || !(nodeEnd == userIdEnd)) {
// Not ready to provision
errMsg = errMsg + 'The node range and user ID range does not match. ';
@ -166,8 +164,9 @@ zvmPlugin.prototype.loadClonePage = function(node) {
}
}
// Get source node, hardware control point, group, disk pool, and disk password
var srcNode = $('#' + newTabId + ' input[name=srcNode]').val();
hcp = $('#' + newTabId + ' input[name=newHcp]').val();
var hcp = $('#' + newTabId + ' input[name=newHcp]').val();
var group = $('#' + newTabId + ' input[name=newGroup]').val();
var diskPool = $('#' + newTabId + ' input[name=diskPool]').val();
var diskPw = $('#' + newTabId + ' input[name=diskPw]').val();
@ -175,32 +174,30 @@ zvmPlugin.prototype.loadClonePage = function(node) {
// If a value is given for every input
if (ready) {
// Disable all inputs
var inputs = cloneForm.find('input');
inputs.attr('readonly', 'readonly');
inputs.css( {
'background-color' : '#F2F2F2'
});
var inputs = $('#' + newTabId + ' input');
inputs.attr('disabled', 'disabled');
// If a node range is given
if (nodeRange.indexOf('-') > -1) {
var tmp = nodeRange.split('-');
// Get node base name
var nodeBase = tmp[0].match(/[a-zA-Z]+/);
// Get the starting index
// Get starting index
var nodeStart = parseInt(tmp[0].match(/\d+/));
// Get the ending index
// Get ending index
var nodeEnd = parseInt(tmp[1]);
tmp = userIdRange.split('-');
// Get user ID base name
var userIdBase = tmp[0].match(/[a-zA-Z]+/);
// Get the starting index
// Get starting index
var userIdStart = parseInt(tmp[0].match(/\d+/));
// Get the ending index
// Get ending index
var userIdEnd = parseInt(tmp[1]);
// Loop through each node in the node range
for ( var i = nodeStart; i <= nodeEnd; i++) {
var node = nodeBase + i.toString();
var userId = userIdBase + i.toString();
@ -217,16 +214,17 @@ zvmPlugin.prototype.loadClonePage = function(node) {
tgt : '',
args : node + ';zvm.hcp=' + hcp
+ ';zvm.userid=' + userId
+ ';nodehm.mgt=zvm' + ';groups='
+ group,
msg : 'cmd=nodeadd;inst=' + inst + ';out='
+ statBarId + ';node=' + node
+ ';nodehm.mgt=zvm'
+ ';groups=' + group,
msg : 'cmd=nodeadd;inst=' + inst
+ ';out=' + statBarId
+ ';node=' + node
},
success : updateCloneStatus
success : updateZCloneStatus
});
}
} else {
} else {
/**
* (1) Define node
*/
@ -238,12 +236,13 @@ zvmPlugin.prototype.loadClonePage = function(node) {
tgt : '',
args : nodeRange + ';zvm.hcp=' + hcp
+ ';zvm.userid=' + userIdRange
+ ';nodehm.mgt=zvm' + ';groups=' + group,
+ ';nodehm.mgt=zvm'
+ ';groups=' + group,
msg : 'cmd=nodeadd;inst=1/1;out=' + statBarId
+ ';node=' + nodeRange
},
success : updateCloneStatus
success : updateZCloneStatus
});
}
@ -252,8 +251,7 @@ zvmPlugin.prototype.loadClonePage = function(node) {
$('#' + statBarId).append(loader);
$('#' + statBarId).show();
// Stop this function from executing again
// Unbind event
// Disable clone button
$(this).unbind(event);
$(this).css( {
'background-color' : '#F2F2F2',
@ -297,7 +295,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
var statBarId = node + 'StatusBar';
var statBar = createStatusBar(statBarId);
// Add loader to status bar, but hide it
// Add loader to status bar and hide it
loaderId = node + 'StatusBarLoader';
var loader = createLoader(loaderId);
statBar.append(loader);
@ -305,8 +303,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
statBar.hide();
// Create array of property keys
var keys = new Array('userId', 'host', 'os', 'arch', 'hcp', 'priv',
'memory', 'proc', 'disk', 'nic');
var keys = new Array('userId', 'host', 'os', 'arch', 'hcp', 'priv', 'memory', 'proc', 'disk', 'nic');
// Create hash table for property names
var attrNames = new Object();
@ -364,18 +361,18 @@ zvmPlugin.prototype.loadInventory = function(data) {
// Change text
$(this).text('Show inventory');
// Stop this function from executing again
// Unbind event
// Disable toggle link
$(this).unbind(event);
});
// Align toggle link to the right
var toggleLnkDiv = $('<div class="toggle"></div>').css( {
'text-align' : 'right'
});
toggleLnkDiv.append(toggleLink);
/**
* General info
* General info section
*/
var fieldSet = $('<fieldset></fieldset>');
var legend = $('<legend>General</legend>');
@ -400,13 +397,12 @@ zvmPlugin.prototype.loadInventory = function(data) {
oList.append(item);
}
// Append to inventory form
fieldSet.append(oList);
invDiv.append(fieldSet);
/**
* Hardware info
* Hardware info section
*/
var hwList, hwItem;
fieldSet = $('<fieldset></fieldset>');
@ -425,7 +421,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
hwItem = $('<li></li>');
/**
* Privilege
* Privilege section
*/
if (keys[k] == 'priv') {
// Create a label - Property name
@ -456,7 +452,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
}
/**
* Memory
* Memory section
*/
else if (keys[k] == 'memory') {
// Create a label - Property name
@ -475,7 +471,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
}
/**
* Processor
* Processor section
*/
else if (keys[k] == 'proc') {
// Create a label - Property name
@ -563,15 +559,17 @@ zvmPlugin.prototype.loadInventory = function(data) {
var addProcLink = $('<a href="#">Add processor</a>');
addProcLink.bind('click', function(event) {
var procForm = '<div class="form">'
+ '<div><label for="procNode">Processor for:</label><input type="text" readonly="readonly" id="procNode" name="procNode" value="'
+ node
+ '"/></div>'
+ '<div><label for="procAddress">Processor address:</label><input type="text" id="procAddress" name="procAddress"/></div>'
+ '<div><label for="procType">Processor type:</label>'
+ '<select id="procType" name="procType">'
+ '<option>CP</option>' + '<option>IFL</option>'
+ '<option>ZAAP</option>' + '<option>ZIIP</option>'
+ '</select>' + '</div>' + '</div>';
+ '<div><label for="procNode">Processor for:</label><input type="text" readonly="readonly" id="procNode" name="procNode" value="' + node + '"/></div>'
+ '<div><label for="procAddress">Processor address:</label><input type="text" id="procAddress" name="procAddress"/></div>'
+ '<div><label for="procType">Processor type:</label>'
+ '<select id="procType" name="procType">'
+ '<option>CP</option>'
+ '<option>IFL</option>'
+ '<option>ZAAP</option>'
+ '<option>ZIIP</option>'
+ '</select>'
+ '</div>'
+ '</div>';
$.prompt(procForm, {
callback : addProcessor,
@ -589,7 +587,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
}
/**
* Disk
* Disk section
*/
else if (keys[k] == 'disk') {
// Create a label - Property name
@ -612,8 +610,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
}
}];
// Table columns - Virtual Device, Type, VolID, Type of Access, and
// Size
// Table columns - Virtual Device, Type, VolID, Type of Access, and Size
var dasdTabRow = $('<thead> <th>Virtual Device #</th> <th>Type</th> <th>VolID</th> <th>Type of Access</th> <th>Size</th> </thead>');
dasdTable.append(dasdTabRow);
var dasdVDev, dasdType, dasdVolId, dasdAccess, dasdSize;
@ -670,17 +667,13 @@ zvmPlugin.prototype.loadInventory = function(data) {
selectPool = selectPool + '</select>';
var dasdForm = '<div class="form">'
+ '<div><label for="diskNode">Disk for:</label><input type="text" readonly="readonly" id="diskNode" name="diskNode" value="'
+ node
+ '"/></div>'
+ '<div><label for="diskType">Disk type:</label><select id="diskType" name="diskType"><option value="3390">3390</option></select></div>'
+ '<div><label for="diskAddress">Disk address:</label><input type="text" id="diskAddress" name="diskAddress"/></div>'
+ '<div><label for="diskSize">Disk size:</label><input type="text" id="diskSize" name="diskSize"/></div>'
+ '<div><label for="diskPool">Disk pool:</label>'
+ selectPool
+ '</div>'
+ '<div><label for="diskPassword">Disk password:</label><input type="password" id="diskPassword" name="diskPassword"/></div>'
+ '</div>';
+ '<div><label for="diskNode">Disk for:</label><input type="text" readonly="readonly" id="diskNode" name="diskNode" value="' + node + '"/></div>'
+ '<div><label for="diskType">Disk type:</label><select id="diskType" name="diskType"><option value="3390">3390</option></select></div>'
+ '<div><label for="diskAddress">Disk address:</label><input type="text" id="diskAddress" name="diskAddress"/></div>'
+ '<div><label for="diskSize">Disk size:</label><input type="text" id="diskSize" name="diskSize"/></div>'
+ '<div><label for="diskPool">Disk pool:</label>' + selectPool + '</div>'
+ '<div><label for="diskPassword">Disk password:</label><input type="password" id="diskPassword" name="diskPassword"/></div>'
+ '</div>';
$.prompt(dasdForm, {
callback : addDisk,
@ -698,7 +691,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
}
/**
* NIC
* NIC section
*/
else if (keys[k] == 'nic') {
// Create a label - Property name
@ -712,7 +705,8 @@ zvmPlugin.prototype.loadInventory = function(data) {
/**
* Remove NIC
*/contextMenu = [ {
*/
contextMenu = [ {
'Remove' : function(menuItem, menu) {
if (confirm('Are you sure?')) {
removeNic(node, $(this).text());
@ -720,8 +714,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
}
} ];
// Table columns - Virtual device, Adapter Type, Port Name, # of
// Devices, MAC Address, and LAN Name
// Table columns - Virtual device, Adapter Type, Port Name, # of Devices, MAC Address, and LAN Name
var nicTabRow = $('<th>Virtual Device #</th> <th>Adapter Type</th> <th>Port Name</th> <th># of Devices</th> <th>LAN Name</th>');
nicTable.append(nicTabRow);
var nicVDev, nicType, nicPortName, nicNumOfDevs, nicMacAddr, nicLanName;
@ -730,8 +723,7 @@ zvmPlugin.prototype.loadInventory = function(data) {
for (l = 0; l < attrs[keys[k]].length; l = l + 2) {
args = attrs[keys[k]][l].split(' ');
// Get NIC virtual device, type, port name, and number of
// devices
// Get NIC virtual device, type, port name, and number of devices
nicVDev = $('<td></td>');
nicLink = $('<a href="#">' + args[1] + '</a>');
@ -780,41 +772,34 @@ zvmPlugin.prototype.loadInventory = function(data) {
// Get VSwitches
if (network[0] == 'VSWITCH') {
vswitches = vswitches + '<option>' + network[0]
+ ' ' + network[1] + '</option>';
vswitches = vswitches + '<option>' + network[0] + ' ' + network[1] + '</option>';
}
// Get Guest LAN
else if (network[0] == 'LAN') {
gLans = gLans + '<option>' + network[0] + ' '
+ network[1] + '</option>';
gLans = gLans + '<option>' + network[0] + ' ' + network[1] + '</option>';
}
}
vswitches = vswitches + '</select>';
gLans = gLans + '</select>';
var nicTypeForm = '<div class="form">'
+ '<div><label for="nicNode">NIC for:</label><input type="text" readonly="readonly" id="nicNode" name="nicNode" value="'
+ node
+ '"/></div>'
+ '<div><label for="nicNode">NIC for:</label><input type="text" readonly="readonly" id="nicNode" name="nicNode" value="' + node + '"/></div>'
+ '<div><label for="nicAddress">NIC address:</label><input type="text" id="nicAddress" name="nicAddress"/></div>'
+ '<div><label for="nicType">NIC type:</label>'
+ '<select id="nicType" name="nicType">'
+ '<option>QDIO</option>'
+ '<option>HiperSocket</option>'
+ '</select>'
+ '<select id="nicType" name="nicType">'
+ '<option>QDIO</option>'
+ '<option>HiperSocket</option>'
+ '</select>'
+ '</div>'
+ '<div><label for="nicNetworkType">Network type:</label>'
+ '<select id="nicNetworkType" name="nicNetworkType">'
+ '<option>Guest LAN</option>'
+ '<option>Virtual Switch</option>' + '</select>'
+ '</div>' + '</div>';
var configGuestLanForm = '<div class="form">'
+ '<div><label for="nicLanName">Guest LAN name:</label>'
+ gLans + '</div>' + '</div>';
var configVSwitchForm = '<div class="form">'
+ '<div><label for="nicVSwitchName">VSWITCH name:</label>'
+ vswitches + '</div>' + '</div>';
+ '<select id="nicNetworkType" name="nicNetworkType">'
+ '<option>Guest LAN</option>'
+ '<option>Virtual Switch</option>' + '</select>'
+ '</div>'
+ '</div>';
var configGuestLanForm = '<div class="form">' + '<div><label for="nicLanName">Guest LAN name:</label>' + gLans + '</div>' + '</div>';
var configVSwitchForm = '<div class="form">' + '<div><label for="nicVSwitchName">VSWITCH name:</label>' + vswitches + '</div>' + '</div>';
var states = {
// Select NIC type
@ -939,7 +924,7 @@ zvmPlugin.prototype.loadProvisionPage = function(tabId) {
// Error message string
var errMsg;
// zVM provision tab instance
// Get provision tab instance
var inst = tabId.replace('zvmProvisionTab', '');
// Create provision form

View File

@ -754,7 +754,7 @@ function updateZNodeStatus(data) {
* Data returned from HTTP request
* @return Nothing
*/
function updateCloneStatus(data) {
function updateZCloneStatus(data) {
var rsp = data.rsp;
var args = data.msg.split(';');
var cmd = args[0].replace('cmd=', '');
@ -1534,12 +1534,12 @@ function connect2GuestLan(data) {
var lanName = args[2].replace('lan=', '');
var lanOwner = args[3].replace('owner=', '');
var statusId = node + 'StatusBar';
var statBarId = node + 'StatusBar';
// Write ajax response to status bar
var prg = writeRsp(rsp, '[A-Za-z0-9._-]+:');
var prg = writeRsp(rsp, node + ': ');
$('#' + statBarId).append(prg);
// Connect NIC to Guest LAN
$.ajax( {
url : 'lib/cmd.php',
@ -1573,7 +1573,7 @@ function connect2VSwitch(data) {
var statBarId = node + 'StatusBar';
// Write ajax response to status bar
var prg = writeRsp(rsp, '[A-Za-z0-9._-]+:');
var prg = writeRsp(rsp, node + ': ');
$('#' + statBarId).append(prg);
// Connect NIC to VSwitch
@ -1629,106 +1629,8 @@ function createZProvisionExisting(inst) {
var thisGroup = $(this).val();
// If a valid group is selected
if (thisGroup) {
// Get group nodes
$.ajax( {
url : 'lib/cmd.php',
dataType : 'json',
data : {
cmd : 'lsdef',
tgt : '',
args : thisGroup,
msg : 'nodesDatatableDIV' + inst
},
/**
* Load nodes datatable
*
* @param data
* Data returned from HTTP request
* @return Nothing
*/
success : function(data) {
// Data returned
var rsp = data.rsp;
// Output ID
var outId = data.msg;
// Datatable ID
var dTableId = outId.replace('nodesDatatableDIV', 'nodesDatatable');
// Node attributes hash
var attrs = new Object();
// Node attributes
var headers = new Object();
// Clear nodes datatable division
$('#' + outId).children().remove();
// Create nodes datatable
var node, args;
for ( var i in rsp) {
// Get node
var pos = rsp[i].indexOf('Object name:');
if (pos > -1) {
var temp = rsp[i].split(': ');
node = jQuery.trim(temp[1]);
// Create a hash for the node attributes
attrs[node] = new Object();
i++;
}
// Get key and value
args = rsp[i].split('=');
var key = jQuery.trim(args[0]);
var val = jQuery.trim(args[1]);
// Create hash table
attrs[node][key] = val;
headers[key] = 1;
}
// Sort headers
var sorted = new Array();
for ( var key in headers) {
sorted.push(key);
}
sorted.sort();
// Add column for check box and node
sorted.unshift('Select', 'node');
// Create nodes datatable
var dTable = new DataTable(dTableId);
dTable.init(sorted);
// Go through each node
for ( var node in attrs) {
// Create a row
var row = new Array();
// Create a check box
var checkBx = '<input type="checkbox" name="' + node + '"/>';
row.push(checkBx, node);
// Go through each header
for ( var i = 2; i < sorted.length; i++) {
// Add node attributes to the row
var key = sorted[i];
var val = attrs[node][key];
if (val) {
row.push(val);
} else {
row.push('');
}
}
// Add row to table
dTable.add(row);
}
$('#' + outId).append(dTable.object());
$('#' + dTableId).dataTable();
} // End of function(data)
});
} // End of if (thisGroup)
createNodesDatatable(thisGroup, 'zNodesDatatableDIV' + inst);
}
});
} else {
// If no groups are cookied
@ -1740,7 +1642,7 @@ function createZProvisionExisting(inst) {
// Create node input
var node = $('<div></div>');
var nodeLabel = $('<label for="nodeName">Nodes:</label>');
var nodeDatatable = $('<div class="indent" id="nodesDatatableDIV' + inst + '"><p>Select a group to view its nodes</p></div>');
var nodeDatatable = $('<div class="indent" id="zNodesDatatableDIV' + inst + '"><p>Select a group to view its nodes</p></div>');
node.append(nodeLabel);
node.append(nodeDatatable);
provExisting.append(node);

View File

@ -400,31 +400,6 @@ function loadNodes(data) {
actionMenu.superfish();
actionsDIV.append(actionMenu);
actionBar.append(actionsDIV);
/*
* Select all or none
*/
var selectDIV = $('<div></div>');
actionBar.append(selectDIV);
// Select all
var selectLabel = $('<span>Select: </span>');
var selectAllLnk = $('<span><a href="#">All</a></span>');
selectAllLnk.bind('click', function(event) {
var nodes = $('#nodesDataTable input[type=checkbox]');
nodes.attr('checked', true);
});
// Select none
var selectNoneLnk = $('<span><a href="#">None</a></span>');
selectNoneLnk.bind('click', function(event) {
var nodes = $('#nodesDataTable input[type=checkbox]');
nodes.attr('checked', false);
});
selectDIV.append(selectLabel);
selectDIV.append(selectAllLnk);
selectDIV.append(selectNoneLnk);
$('#nodesTab').append(actionBar);
// Insert table
@ -2148,8 +2123,20 @@ function getRowNum(nodeName){
return -1;
}
function selectAllCheckbox(event, obj){
/**
* Select all checkboxes in a given datatable
*
* @param event
* Event on element
* @param obj
* Object triggering event
* @return Nothing
*/
function selectAllCheckbox(event, obj) {
// Get datatable ID
// This will ascend from <input> <td> <tr> <thead> <table>
var datatableId = obj.parent().parent().parent().parent().attr('id');
var status = obj.attr('checked');
$('#nodesDataTable :checkbox').attr('checked', status);
$('#' + datatableId + ' :checkbox').attr('checked', status);
event.stopPropagation();
}

View File

@ -416,6 +416,7 @@ function initPage() {
includeJs("js/custom/ipmi.js");
includeJs("js/custom/ivm.js");
includeJs("js/custom/zvm.js");
includeJs("js/custom/customUtils.js");
// Get the page being loaded
var url = window.location.pathname;