mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 03:12:30 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@1561 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			152 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/perl
 | |
| # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
 | |
| #(C)IBM Corp
 | |
| 
 | |
| #
 | |
| 
 | |
| use Getopt::Long;
 | |
| 
 | |
| #-----------------------------------------------------------------------------
 | |
| 
 | |
| =head1   mkrrbc
 | |
| 
 | |
| Make node definitions for AMMs and Switches (one each per bladecenter)
 | |
| 
 | |
|  mkrrbc -C <cu letter> -L < start Rack number for CU> -R <startrange,endrange>     (add) 
 | |
|  mkrrbc -d -C <cu letter> -R <startrange,endrange> (delete)
 | |
| 
 | |
| ./mkrrbc -C d -L 2 -R 1,60
 | |
| 
 | |
| will run commands such as:
 | |
|    nodeadd bcd60 groups=mm,cud,rack16
 | |
|    nodeadd swd60 groups=nortel,switch,cud,rack16
 | |
| 
 | |
| and build nodelist entries that looks like this:
 | |
|      "bcd60","mm,cud,rack16",,,
 | |
|      "swd60","nortel,switch,cud,rack16",,,
 | |
| 
 | |
| =cut
 | |
| 
 | |
| #-----------------------------------------------------------------------------
 | |
| # Main
 | |
| 
 | |
| my $rc = 0;
 | |
| 
 | |
| &parse_args;
 | |
| my $bccmd = "";
 | |
| my $swcmd = "";
 | |
| foreach my $CU (@::CU)
 | |
| {
 | |
|     foreach my $range (@::RANGE)
 | |
|     {
 | |
|           $nodeno = "";
 | |
|             if ($range <=9) {  # want rr0X
 | |
|                $nodeno .="0";
 | |
|             }
 | |
|             $nodeno .= $range;
 | |
| 
 | |
|             $rack = "rack";
 | |
|             $bccmd  = "bc";
 | |
|             $swcmd = "sw";
 | |
|             $bccmd .= $CU;
 | |
|             $swcmd.= $CU;
 | |
|             $bccmd .= $nodeno;
 | |
|             $swcmd.= $nodeno;
 | |
|             $bccmd .= " ";
 | |
|             $swcmd.= " ";
 | |
|             $bccmd .=  "groups=mm,cu$CU";
 | |
|             $swcmd .= "groups=nortel,switch,cu$CU";
 | |
| 
 | |
|             # calculate the rack number ( 4 AMMs/rack)
 | |
|             #  15 racks/CU
 | |
|             #  Rack number = (AMM# / 4) 
 | |
|             my $count = ($range-1) / 4;
 | |
|             my ($rackno, $rem) = split '\.', $count;
 | |
|            
 | |
|             $rackno = $rackno + $::LOCATION;
 | |
|             if ($rackno <=9) {  # want rack0X
 | |
|                $rack .="0";
 | |
|             } 
 | |
|             $rack .= $rackno;
 | |
| 
 | |
|             $bccmd .= ",";
 | |
|             $bccmd .= $rack;
 | |
|             $swcmd .= ",";
 | |
|             $swcmd .= $rack;
 | |
|             
 | |
|             if ($::DELETE)
 | |
|             {
 | |
|                 if ($::TEST) {
 | |
|                    print ("noderm $bccmd \n");
 | |
|                    print ("noderm $swcmd \n");
 | |
|                 } else {
 | |
|                    system("noderm $bccmd");
 | |
|                    system("noderm $swcmd");
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 if ($::TEST) {
 | |
|                    print ("nodeadd $bccmd \n");
 | |
|                    print ("nodeadd $swcmd \n");
 | |
|                 } else {
 | |
|                    system("nodeadd $bccmd");
 | |
|                    system("nodeadd $swcmd");
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|     }
 | |
| }
 | |
| 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");
 | |
|     my $usagemsg =
 | |
|           " mkrrbc -h \n mkrrbc [-d] -C [a|b|,...,r] -L [start rack number for CU] -R [startrange,endrange] [-t|--test]\n";
 | |
|     if (
 | |
|         !GetOptions(
 | |
|             'C|CU=s'    => \$::CU,
 | |
|             'L|LOC=s'   => \$::LOCATION,
 | |
|             'h|help'    => \$::HELP,
 | |
|             'd|delete'  => \$::DELETE,
 | |
|             'R|RANGE=s' => \$::RANGE,
 | |
|             't|test'    => \$::TEST
 | |
| 
 | |
|         )
 | |
|       )
 | |
|     {
 | |
|         printf $usagemsg;
 | |
|         exit 1;
 | |
|     }
 | |
|     if ($::HELP)
 | |
|     {
 | |
|         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";
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 |