Moved profile configuration and directory entry onto the xCAT MN under /var/opt/xcat/profiles.
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@12203 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -143,7 +143,7 @@ function loadUserTable(data) { | ||||
| 	var table = new DataTable(tableId); | ||||
|  | ||||
| 	// Add column for the checkbox | ||||
| 	headers.unshift(''); | ||||
| 	headers.unshift('<input type="checkbox" onclick="selectAllCheckbox(event, $(this))">'); | ||||
| 	table.init(headers); | ||||
| 	headers.shift(); | ||||
|  | ||||
|   | ||||
| @@ -29,8 +29,7 @@ zvmPlugin.prototype.loadConfigPage = function(tabId) { | ||||
| 			return; | ||||
| 		else | ||||
| 			$('#zvmConfigUser').append(createLoader('')); | ||||
| 		 | ||||
| 		// Get user data | ||||
|  | ||||
| 		loadUserPanel('zvmConfigUser'); | ||||
| 	}); | ||||
| 	 | ||||
| @@ -38,7 +37,13 @@ zvmPlugin.prototype.loadConfigPage = function(tabId) { | ||||
| 	var profileSection = $('<div id="zvmConfigProfile"></div>'); | ||||
| 	profileSection.append(createInfoBar('Create, edit, and delete virtual machine profiles used in the self-service portal')); | ||||
| 	var profileLnk = $('<h3><a href="#">Profiles</a></h3>').click(function () { | ||||
| 		 | ||||
| 		// Do not load panel again if it is already loaded | ||||
| 		if ($('#zvmConfigProfile').find('.dataTables_wrapper').length) | ||||
| 			return; | ||||
| 		else | ||||
| 			$('#zvmConfigProfile').append(createLoader('')); | ||||
|  | ||||
| 		queryProfiles('zvmConfigProfile'); | ||||
| 	}); | ||||
| 	 | ||||
| 	// Create accordion panel for nodes | ||||
|   | ||||
| @@ -3359,4 +3359,113 @@ function createzVM(tabId, group, hcp, img, owner) { | ||||
| 	// webportal provzlinux [group] [hcp] [image] [owner] | ||||
| 	var iframe = createIFrame('lib/srv_cmd.php?cmd=webportal&tgt=&args=provzlinux;' + group + ';' + hcp + ';' + img + ';' + owner + '&msg=&opts=flush'); | ||||
| 	iframe.prependTo($('#' + tabId)); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Query the profiles that exists | ||||
|  *  | ||||
|  * @param panelId | ||||
|  * 			Panel ID | ||||
|  * @return Nothing | ||||
|  */ | ||||
| function queryProfiles(panelId) { | ||||
| 	$.ajax( { | ||||
| 		url : 'lib/cmd.php', | ||||
| 		dataType : 'json', | ||||
| 		data : { | ||||
| 			cmd : 'tabdump', | ||||
| 			tgt : '', | ||||
| 			args : 'osimage', | ||||
| 			msg : panelId | ||||
| 		}, | ||||
|  | ||||
| 		success : function(data) { | ||||
| 			var panelId = data.msg; | ||||
| 			setOSImageCookies(data); | ||||
| 			loadConfigProfilePanel(panelId); | ||||
| 		} | ||||
| 	}); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Load the profiles panel to configure directory entries and disks for a profile | ||||
|  *  | ||||
|  * @param panelId | ||||
|  * 			Panel ID | ||||
|  * @return Nothing | ||||
|  */ | ||||
| function loadConfigProfilePanel(panelId) { | ||||
| 	// Remove loader | ||||
| 	$('#' + panelId).find('img[src="images/loader.gif"]').remove(); | ||||
|  | ||||
| 	// Create table | ||||
| 	var tableId = 'zvmProfileTable'; | ||||
| 	var table = new DataTable(tableId); | ||||
| 	table.init(['<input type="checkbox" onclick="selectAllCheckbox(event, $(this))">', 'Profile', 'Disk pool', 'Disk size', 'Directory entry']); | ||||
|  | ||||
| 	// Insert profiles into table | ||||
| 	var profiles = $.cookie('profiles').split(','); | ||||
| 	for (var i in profiles) { | ||||
| 		if (profiles[i]) { | ||||
| 			// Columns are: profile, disk pool, disk size, and directory entry | ||||
| 			var cols = new Array(profiles[i], '', '', ''); | ||||
| 	 | ||||
| 			// Add remove button where id = user name | ||||
| 			cols.unshift('<input type="checkbox" name="' + profiles[i] + '"/>'); | ||||
| 	 | ||||
| 			// Add row | ||||
| 			table.add(cols); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	// Append datatable to tab | ||||
| 	$('#' + panelId).append(table.object()); | ||||
|  | ||||
| 	// Turn into datatable | ||||
| 	var dTable = $('#' + tableId).dataTable({ | ||||
| 		'iDisplayLength': 50, | ||||
| 		'bLengthChange': false, | ||||
| 		"sScrollX": "100%", | ||||
| 		"bAutoWidth": true | ||||
| 	}); | ||||
| 	 | ||||
| 	// Create action bar | ||||
| 	var actionBar = $('<div class="actionBar"></div>'); | ||||
| 	 | ||||
| 	var createLnk = $('<a>Create</a>'); | ||||
| 	createLnk.click(function() { | ||||
| 		 | ||||
| 	}); | ||||
| 		 | ||||
| 	var deleteLnk = $('<a>Delete</a>'); | ||||
| 	deleteLnk.click(function() { | ||||
|  | ||||
| 	}); | ||||
| 	 | ||||
| 	var refreshLnk = $('<a>Refresh</a>'); | ||||
| 	refreshLnk.click(function() { | ||||
|  | ||||
| 	}); | ||||
| 	 | ||||
| 	// Create an action menu | ||||
| 	var actionsMenu = createMenu([createLnk, deleteLnk, refreshLnk]); | ||||
| 	actionsMenu.superfish(); | ||||
| 	actionsMenu.css('display', 'inline-block'); | ||||
| 	actionBar.append(actionsMenu); | ||||
| 	 | ||||
| 	// Set correct theme for action menu | ||||
| 	actionsMenu.find('li').hover(function() { | ||||
| 		setMenu2Theme($(this)); | ||||
| 	}, function() { | ||||
| 		setMenu2Normal($(this)); | ||||
| 	}); | ||||
| 	 | ||||
| 	// Create a division to hold actions menu | ||||
| 	var menuDiv = $('<div id="' + tableId + '_menuDiv" class="menuDiv"></div>'); | ||||
| 	$('#' + tableId + '_wrapper').prepend(menuDiv); | ||||
| 	menuDiv.append(actionBar);	 | ||||
| 	$('#' + tableId + '_filter').appendTo(menuDiv); | ||||
|  | ||||
| 	// Resize accordion | ||||
| 	$('#zvmConfigAccordion').accordion('resize'); | ||||
| } | ||||
| @@ -135,66 +135,49 @@ sub provzlinux { | ||||
| 	my $disk_pool; | ||||
| 	my $eckd_size; | ||||
| 	my $fba_size; | ||||
| 	my $default_conf   = '/opt/zhcp/conf/default.conf'; | ||||
| 	my $default_direct = "/opt/zhcp/conf/profiles/$profile.direct"; | ||||
| 	my $default_conf   = "/var/opt/xcat/profiles/$profile.conf"; | ||||
| 	my $default_direct = "/var/opt/xcat/profiles/$profile.direct"; | ||||
|  | ||||
| 	# Check if a group based directory entry exists, else use default one | ||||
| 	if ( !(`ssh $hcp "test -e /opt/zhcp/conf/profiles/$profile.direct && echo Exists"`) ) { | ||||
| 	if ( !(`test -e /var/opt/xcat/profiles/$profile.direct && echo Exists`) ) { | ||||
| 		println( $callback, "$profile.direct does not exist.  Using default.direct to generate directory entry." ); | ||||
| 		 | ||||
| 		# Exit if default.direct does not exist | ||||
| 		$default_direct = '/opt/zhcp/conf/profiles/default.direct';	 | ||||
| 		if ( !(`ssh $hcp "test -e /opt/zhcp/conf/profiles/default.direct && echo Exists"`) ) { | ||||
| 		$default_direct = '/var/opt/xcat/profiles/default.direct';	 | ||||
| 		if ( !(`test -e /var/opt/xcat/profiles/default.direct && echo Exists`) ) { | ||||
| 			println( $callback, '(Error) $default_direct does not exists' ); | ||||
| 			return; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	# Exit if default.conf does not exist | ||||
| 	if ( !(`ssh $hcp "test -e $default_conf && echo Exists"`) ) { | ||||
| 	if ( !(`test -e $default_conf && echo Exists`) ) { | ||||
| 		println( $callback, '(Error) $default_conf does not exists' ); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	# Exit if default.direct does not exist | ||||
| 	if ( !(`ssh $hcp "test -e $default_direct && echo Exists"`) ) { | ||||
| 	if ( !(`test -e $default_direct && echo Exists`) ) { | ||||
| 		println( $callback, '(Error) $default_direct does not exists' ); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	$out = `ssh $hcp "cat $default_conf"`; | ||||
| 	$out = `cat $default_conf`; | ||||
| 	@tmp = split( /\n/, $out ); | ||||
| 	# default.conf should contain: | ||||
| 	 | ||||
| 	# Default configuration for virtual machines handled by this zHCP | ||||
| 	# Configuration for virtual machines | ||||
| 	#	default_diskpool=POOL3 | ||||
| 	#	default_eckd_size=10016 | ||||
| 	#	compute_diskpool=POOL3 | ||||
| 	#	compute_eckd_size=10016	 | ||||
| 	my $profile_diskpool_parm = $profile . "_diskpool"; | ||||
| 	my $profile_eckd_size_parm = $profile . "_eckd_size"; | ||||
| 	my $profile_fba_size_parm = $profile . "_fba_size"; | ||||
| 	my $default_disk_pool; | ||||
| 	my $default_eckd_size; | ||||
| 	my $default_fba_size; | ||||
| 	foreach (@tmp) { | ||||
| 		# Get disk pool (default) | ||||
| 		if ( $_ =~ m/default_diskpool=/i ) { | ||||
| 			$default_disk_pool = $_; | ||||
| 			$default_disk_pool =~ s/default_diskpool=//g; | ||||
| 		}		 | ||||
| 		# Get disk size (default) | ||||
| 		elsif ( $_ =~ m/default_eckd_size=/i ) { | ||||
| 			$default_eckd_size = $_; | ||||
| 			$default_eckd_size =~ s/default_eckd_size=//g; | ||||
| 		} | ||||
| 		elsif ( $_ =~ m/default_fba_size=/i ) { | ||||
| 			$default_fba_size = $_; | ||||
| 			$default_fba_size =~ s/default_fba_size=//g; | ||||
| 		} | ||||
| 		 | ||||
| 	foreach (@tmp) {		 | ||||
| 		# Get profile disk pool (default) | ||||
| 		elsif ( $_ =~ m/$profile_diskpool_parm=/i ) { | ||||
| 		if ( $_ =~ m/$profile_diskpool_parm=/i ) { | ||||
| 			$disk_pool = $_; | ||||
| 			$disk_pool =~ s/$profile_diskpool_parm=//g; | ||||
| 		} | ||||
| @@ -211,11 +194,8 @@ sub provzlinux { | ||||
| 	 | ||||
| 	# Use default configuration if profile configuration does not exist | ||||
| 	if (!$disk_pool && (!$eckd_size || !$fba_size)) { | ||||
| 		println( $callback, "$profile configuration for disk pool and size does not exist.  Using default configuration." ); | ||||
| 		 | ||||
| 		$disk_pool = $default_disk_pool; | ||||
| 		$eckd_size = $default_eckd_size; | ||||
| 		$fba_size = $default_fba_size; | ||||
| 		println( $callback, "(Error) $profile configuration for disk pool and size does not exist" ); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	my $site_tab    = xCAT::Table->new('site'); | ||||
| @@ -263,7 +243,7 @@ sub provzlinux { | ||||
| 	#	USER LXUSR PSWD 512M 1G G | ||||
| 	#	INCLUDE LNXDFLT | ||||
| 	#	COMMAND SET VSWITCH VSW2 GRANT LXUSR | ||||
| 	$out = `ssh $hcp "sed $default_direct -e s/LXUSR/$userid/g" > /tmp/$node-direct.txt`; | ||||
| 	$out = `sed $default_direct -e s/LXUSR/$userid/g > /tmp/$node-direct.txt`; | ||||
| 	$out = `mkvm $node /tmp/$node-direct.txt`; | ||||
| 	`rm -rf /tmp/$node-direct.txt`; | ||||
| 	println( $callback, "$out" ); | ||||
| @@ -648,26 +628,26 @@ sub clonezlinux { | ||||
| 	my $arch = $props->{'arch'}; | ||||
| 	my $profile = $props->{'profile'}; | ||||
|  | ||||
| 	# Read in default disk pool from /opt/zhcp/conf/default.conf on zHCP | ||||
| 	# Read in default disk pool from /var/opt/xcat/profiles/default.conf on xCAT MN | ||||
| 	#	pool = POOL3 | ||||
| 	#	eckd_size = 10016 | ||||
| 	my $disk_pool; | ||||
| 	my $default_conf   = '/opt/zhcp/conf/default.conf'; | ||||
| 	my $default_direct = '/opt/zhcp/conf/profiles/default.direct'; | ||||
| 	my $default_conf   = '/var/opt/xcat/profiles/default.conf'; | ||||
| 	my $default_direct = '/var/opt/xcat/profiles/default.direct'; | ||||
|  | ||||
| 	# Exit if default.conf does not exist | ||||
| 	if ( !(`ssh $hcp "test -e $default_conf && echo Exists"`) ) { | ||||
| 	if ( !(`test -e $default_conf && echo Exists`) ) { | ||||
| 		println( $callback, '(Error) $default_conf does not exists' ); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	# Exit if default.direct does not exist | ||||
| 	if ( !(`ssh $hcp "test -e $default_direct && echo Exists"`) ) { | ||||
| 	if ( !(`test -e $default_direct && echo Exists`) ) { | ||||
| 		println( $callback, '(Error) $default_direct does not exists' ); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	$out = `ssh $hcp "cat $default_conf"`; | ||||
| 	$out = `cat $default_conf`; | ||||
| 	@tmp = split( /\n/, $out ); | ||||
| 	# default.conf should contain: | ||||
| 	 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user