#!/usr/bin/perl # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html #(C)IBM Corp # use Getopt::Long; #----------------------------------------------------------------------------- =head1 mkrrnodes mkrrnodes -C -R (add) mkrrnodes -d -C -R (delete) Build an nodelist entry that looks like this "rrb048c","rrb048,qs22,cub,cell,cell-c,compute,tb,all,rack06",,,, =cut #----------------------------------------------------------------------------- # Main my $rc = 0; &parse_args; my $cmd = ""; my @bladename; @bladename=("a","b","c"); foreach my $CU (@::CU) { foreach my $range (@::RANGE) { foreach my $blade (@bladename) { $cmd = "rr"; $cmd .= $CU; $cmd .= $range; $cmd .= "$blade"; $cmd .= " "; if ($blade eq "a" ) { $cmd .= "groups=rr$CU$range,ls21,cu$CU,opteron,compute,tb,all"; } else { if ($blade eq "b" ) { $cmd .= "groups=rr$CU$range,qs22,cu$CU,cell,cell-b,compute,all,tb"; } else { # c $cmd .= "groups=rr$CU$range,qs22,cu$CU,cell,cell-c,compute,all,tb"; } } if ($CU eq "a" ) { $cmd .= ",rack05"; } else { $cmd .= ",rack06"; } if ($::DELETE) { system("noderm $cmd"); } else { system("nodeadd $cmd"); } } } } exit $rc; #----------------------------------------------------------------------------- =head3 parse_args Parses for input =cut #----------------------------------------------------------------------------- sub parse_args { Getopt::Long::Configure("posix_default"); Getopt::Long::Configure("no_gnu_compat"); Getopt::Long::Configure("bundling"); if ( !GetOptions( 'C|CU=s' => \$::CU, 'h|help' => \$::HELP, 'd|delete' => \$::DELETE, 'R|RANGE=s' => \$::RANGE ) ) { my $usagemsg = " mkrrnodes -h \n mkrrnodes [-d] -C [a|b|...,r] -R [startrange,endrange]\n"; printf $usagemsg; exit 1; } if ($::HELP) { my $usagemsg = " mkrrnodes -h \n mkrrnodes [-d] -C [a|b|,...,r] -R [startrange,endrange]\n"; printf $usagemsg; exit 0; } @::CU = split(',', $::CU); my ($fNum,$eNum) = split(',', $::RANGE); my $prefix; foreach my $suffix ($fNum .. $eNum) { my $numOfZeros = (length($fNum) - length($suffix)); my $prefix = '0' x $numOfZeros; push @::RANGE, "$fRoot$prefix$suffix$fDomain"; } }