mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	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:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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({
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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>' + 
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user