mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@8077 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			206 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * Global variables
 | 
						|
 */
 | 
						|
var monitorTabs; // Monitor tabs
 | 
						|
 | 
						|
/**
 | 
						|
 * Set the monitor tab
 | 
						|
 * 
 | 
						|
 * @param o
 | 
						|
 *            Tab object
 | 
						|
 * @return Nothing
 | 
						|
 */
 | 
						|
function setMonitorTab(o) {
 | 
						|
	monitorTabs = o;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Get the monitor tab
 | 
						|
 * 
 | 
						|
 * @param Nothing
 | 
						|
 * @return Tab object
 | 
						|
 */
 | 
						|
function getMonitorTab() {
 | 
						|
	return monitorTabs;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Load the monitor page
 | 
						|
 * 
 | 
						|
 * @return Nothing
 | 
						|
 */
 | 
						|
function loadMonitorPage() {
 | 
						|
	// If the page is already loaded
 | 
						|
	if ($('#monitor_page').children().length) {
 | 
						|
		// Do not reload the monitor page
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Create monitor tab
 | 
						|
	var tab = new Tab();
 | 
						|
	setConfigTab(tab);
 | 
						|
	tab.init();
 | 
						|
	$('#content').append(tab.object());
 | 
						|
 | 
						|
	// Create provision tab
 | 
						|
	var tab = new Tab();
 | 
						|
	setMonitorTab(tab);
 | 
						|
	tab.init();
 | 
						|
	$('#content').append(tab.object());
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Monitor nodes
 | 
						|
	 */
 | 
						|
	var monitorForm = $('<div class="form"></div>');
 | 
						|
 | 
						|
	// Create info bar
 | 
						|
	var monitorInfoBar = createInfoBar('Select the Monitor Tool');
 | 
						|
	monitorForm.append(monitorInfoBar);
 | 
						|
 | 
						|
	// Create a list of monitoring tools
 | 
						|
	var monitorList = $('<ol></ol>');
 | 
						|
	var items = "<li><a href='#' name='xcatmon'>xCAT Monitor</a> : xcatmon provides node status "
 | 
						|
		+ "monitoring using fping on AIX and nmap on Linux. It also provides application "
 | 
						|
		+ "status monitoring. The status and the appstatus columns of the nodelist table "
 | 
						|
		+ "will be updated periodically  with the latest status values for the nodes.<li>";
 | 
						|
	items += "<li><a href='#' name='rmcmon'>RMC Monitor</a> : IBM's Resource Monitoring and Control (RMC) "
 | 
						|
		+ "subsystem is our recommended software for monitoring xCAT clusters. It's is part "
 | 
						|
		+ "of the IBM's Reliable Scalable Cluster Technology (RSCT) that provides a comprehensive " + "clustering environment for AIX and LINUX.<li>";
 | 
						|
	items += "<li><a href='#' name='gangliamon'>Ganglia Monitor</a> : Ganglia is a scalable distributed "
 | 
						|
		+ "monitoring system for high-performance computing systems such as clusters and Grids.<li>";
 | 
						|
	items += "<li><a href='#' name='pcpmon'>PCP Monitor</a> : <li>";
 | 
						|
	monitorList.append(items);
 | 
						|
 | 
						|
	// Open new tab for monitor tool
 | 
						|
	$('a', monitorList).click(function() {
 | 
						|
		loadMonitorTab($(this).attr('name'));
 | 
						|
	});
 | 
						|
 | 
						|
	monitorForm.append(monitorList);
 | 
						|
	tab.add('monitorTab', 'Monitor', monitorForm, false);
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Monitor resources
 | 
						|
	 */
 | 
						|
	var resrcForm = $('<div class="form"></div>');
 | 
						|
 | 
						|
	// Create info bar
 | 
						|
	var resrcInfoBar = createInfoBar('View current resources');
 | 
						|
	resrcForm.append(resrcInfoBar);
 | 
						|
 | 
						|
	// Create radio buttons for platforms
 | 
						|
	var hwList = $('<ol>Select a platform to view its current resources:</ol>');
 | 
						|
	var ipmi = $('<li><input type="radio" name="hw" value="ipmi" checked/>ipmi</li>');
 | 
						|
	var blade = $('<li><input type="radio" name="hw" value="blade"/>blade</li>');
 | 
						|
	var hmc = $('<li><input type="radio" name="hw" value="hmc"/>hmc</li>');
 | 
						|
	var ivm = $('<li><input type="radio" name="hw" value="ivm"/>ivm</li>');
 | 
						|
	var fsp = $('<li><input type="radio" name="hw" value="fsp"/>fsp</li>');
 | 
						|
	var zvm = $('<li><input type="radio" name="hw" value="zvm"/>zvm</li>');
 | 
						|
 | 
						|
	hwList.append(ipmi);
 | 
						|
	hwList.append(blade);
 | 
						|
	hwList.append(hmc);
 | 
						|
	hwList.append(ivm);
 | 
						|
	hwList.append(fsp);
 | 
						|
	hwList.append(zvm);
 | 
						|
	resrcForm.append(hwList);
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Ok
 | 
						|
	 */
 | 
						|
	var okBtn = createButton('Ok');
 | 
						|
	okBtn.bind('click', function(event) {
 | 
						|
		// Get hardware that was selected
 | 
						|
		var hw = $(this).parent().find('input[name="hw"]:checked').val();
 | 
						|
 | 
						|
		// Generate new tab ID
 | 
						|
		var newTabId = hw + 'ResourceTab';
 | 
						|
		if (!$('#' + newTabId).length) {
 | 
						|
			var loader = createLoader(hw + 'ResourceLoader');
 | 
						|
			loader = $('<center></center>').append(loader);
 | 
						|
			tab.add(newTabId, hw, loader, true);
 | 
						|
 | 
						|
			// Create an instance of the plugin
 | 
						|
			var plugin;
 | 
						|
			switch (hw) {
 | 
						|
			case "blade":
 | 
						|
				plugin = new bladePlugin();
 | 
						|
				break;
 | 
						|
			case "fsp":
 | 
						|
				plugin = new fspPlugin();
 | 
						|
				break;
 | 
						|
			case "hmc":
 | 
						|
				plugin = new hmcPlugin();
 | 
						|
				break;
 | 
						|
			case "ipmi":
 | 
						|
				plugin = new ipmiPlugin();
 | 
						|
				break;
 | 
						|
			case "ivm":
 | 
						|
				plugin = new ivmPlugin();
 | 
						|
				break;
 | 
						|
			case "zvm":
 | 
						|
				plugin = new zvmPlugin();
 | 
						|
				break;
 | 
						|
			}
 | 
						|
 | 
						|
			plugin.loadResources();
 | 
						|
		}
 | 
						|
 | 
						|
		// Select tab
 | 
						|
		tab.select(newTabId);
 | 
						|
	});
 | 
						|
	resrcForm.append(okBtn);
 | 
						|
 | 
						|
	tab.add('resourceTab', 'Resources', resrcForm, false);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Open a tab and load given monitoring tool
 | 
						|
 * 
 | 
						|
 * @param monitorName
 | 
						|
 *            Name of monitoring tool
 | 
						|
 * @return Nothing
 | 
						|
 */
 | 
						|
function loadMonitorTab(monitorName) {
 | 
						|
	// If the tab exist, then we only need to select it
 | 
						|
	var tab = getMonitorTab();
 | 
						|
	if ($("#" + monitorName).length) {
 | 
						|
		tab.select(monitorName);
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	switch (monitorName) {
 | 
						|
	case 'xcatmon':
 | 
						|
		tab.add(monitorName, 'xCAT', '', true);
 | 
						|
		loadXcatMon();
 | 
						|
		break;
 | 
						|
	case 'rmcmon':
 | 
						|
		tab.add(monitorName, 'RMC', '', true);
 | 
						|
		loadRmcMon();
 | 
						|
		break;
 | 
						|
	case 'gangliamon':
 | 
						|
		tab.add(monitorName, 'Ganglia', '', true);
 | 
						|
		loadGangliaMon();
 | 
						|
		break;
 | 
						|
	case 'pcpmon':
 | 
						|
		loadUnfinish(monitorName, tab);
 | 
						|
		break;
 | 
						|
	}
 | 
						|
 | 
						|
	tab.select(monitorName);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Open a tab and show 'Under contruction'
 | 
						|
 * 
 | 
						|
 * @param monitorName
 | 
						|
 *            Name of monitoring tool
 | 
						|
 * @param tab
 | 
						|
 *            Tab area
 | 
						|
 * @return Nothing
 | 
						|
 */
 | 
						|
function loadUnfinish(monitorName, tab) {
 | 
						|
	var unfinishPage = $('<div></div>');
 | 
						|
	unfinishPage.append(createInfoBar('Under construction'));
 | 
						|
	tab.add(monitorName, 'Unfinish', unfinishPage, true);
 | 
						|
} |