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:
phamt 2012-04-11 22:33:50 +00:00
parent 67adfabc49
commit 57b7c99c0f
4 changed files with 138 additions and 44 deletions

View File

@ -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();

View File

@ -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

View File

@ -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');
}

View File

@ -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: