support the tabdump(TABLENAME) in the mypostscript.tmpl

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@14628 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jjhua 2012-12-12 06:52:45 +00:00
parent bef43bc41f
commit fb73b701f6

View File

@ -702,6 +702,7 @@ my $arch;
my $provmethod;
%::GLOBAL_TAB_HASH = ();
%::GLOBAL_SN_HASH = ();
%::GLOBAL_TABDUMP_HASH = ();
sub subvars_for_mypostscript {
my $self = shift;
@ -751,6 +752,8 @@ sub subvars_for_mypostscript {
my $inc;
my $t_inc;
my %table;
my @tabs;
my %dump_results;
#First load input into memory..
while (<$inh>) {
$t_inc.=$_;
@ -762,6 +765,13 @@ sub subvars_for_mypostscript {
$table{$tabname}{$key}{$attrib} = 1;
}
if( $_ =~ /^tabdump\(([\w]+)\)/) {
my $tabname = $1;
if( $tabname !~ /^(auditlog|bootparams|chain|deps|domain|eventlog|firmware|hypervisor|iscsi|kvm_nodedata|mac|nics|ipmi|mp|ppc|ppcdirect|site|websrv|zvm|statelite|rack|hosts|prodkey|switch|node)/) {
push @tabs, $tabname;
}
}
}
close($inh);
@ -779,6 +789,10 @@ sub subvars_for_mypostscript {
#print Dumper(\%::GLOBAL_TAB_HASH);
#print Dumper(\@tabs);
dump_all_attribs_in_tabs(\@tabs,\%::GLOBAL_TABDUMP_HASH, $callback);
#print Dumper(\%::GLOBAL_TABDUMP_HASH);
my %script_fp;
my $allattribsfromsitetable;
@ -936,7 +950,7 @@ sub subvars_for_mypostscript {
#$inc =~ s/#XCATVAR:([^#]+)#/envvar($1)/eg;
#$inc =~ s/#ENV:([^#]+)#/envvar($1)/eg;
#$inc =~ s/#NODE#/$node/eg;
$inc =~ s/#\$NODE#/$node/eg;
$inc =~ s/\$NODE/$node/eg;
$inc =~ s/#SITE_TABLE_ALL_ATTRIBS_EXPORT#/$allattribsfromsitetable/eg;
#$inc =~ s/#TABLE:([^:]+):([^:]+):([^:]+):BLANKOKAY#/tabdb($1,$2,$3,1)/eg;
$inc =~ s/#TABLE:([^:]+):([^:]+):([^#]+)#/tabdb($1,$2,$3)/eg;
@ -949,7 +963,8 @@ sub subvars_for_mypostscript {
$inc =~ s/#INCLUDE_POSTBOOTSCRIPTS_LIST#/$postbootscripts/eg;
#$inc =~ s/#COMMAND:([^#]+)#/command($1)/eg;
$inc =~ s/#\$NTYPE#/$nodetype/eg;
$inc =~ s/\$NTYPE/$nodetype/eg;
$inc =~ s/tabdump\(([\w]+)\)/tabdump($1)/eg;
$inc =~ s/#Subroutine:([^:]+)::([^:]+)::([^:]+):([^#]+)#/subroutine($1,$2,$3,$4)/eg;
#$inc =~ s/^([^#]+)=[\s]*export $1//eg;
@ -1607,5 +1622,71 @@ sub collect_all_attribs_for_tables_in_template
}
sub dump_all_attribs_in_tabs
{
my $tabs = shift;
my $result = shift;
my $callback = shift;
my $rsp;
my $tab;
foreach $tab (@$tabs) {
my $ptab = xCAT::Table->new("$tab");
unless ($ptab) {
push @{$rsp->{data}},
"Unable to open $tab table";
xCAT::MsgUtils->message("E", $rsp, $callback);
return undef;
}
my $tabdetails = xCAT::Table->getTableSchema($tab);
my $cols = $tabdetails->{cols};
my $recs = $ptab->getAllEntries();
my $sum = @$recs;
$tab =~ tr/a-z/A-Z/;
my $res = "$tab"."_LINES=$sum\n";
$res .= "export $tab"."_LINES\n";
my $num = 0;
my $rec;
foreach $rec (@$recs) {
my $attrib;
$num++;
my $values;
my $t;
foreach $attrib (@$cols) {
my $val = $rec->{$attrib};
# We use "||" as the delimiter of the attribute=value pair in each line.
# Uses could put special characters in the comments attribute.
# So we put the comments attribute as the last in the list.
# The parsing could consider everything after "comments=" as the comments value, regardless of whether or not it had "||" in it.
if( $attrib =~ /^comments$/) {
$t = $val;
} else {
$values .="$attrib=$val||";
if( $attrib =~ /^disable$/) {
$values .="comments=$t";
}
}
}
$values="$tab"."_LINE$num=\'$values\'\n";
$values .="export $tab"."_LINE$num\n";
$res .= $values;
}
$tab =~ tr/A-Z/a-z/;
$result->{$tab} = $res;
}
}
sub tabdump
{
my $tab =shift;
my $value= $::GLOBAL_TABDUMP_HASH{$tab};
return $value;
}
1;