mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-25 00:15:43 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@4283 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			126 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl
 | |
| # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
 | |
| #-------------------------------------------------------
 | |
| 
 | |
| =head1	mkzvmnodes
 | |
| 	
 | |
| 	Description	: This is a script to make definitions for z/VM nodes
 | |
|     Arguments	: 	mkzvmnodes < Node range > 
 | |
|     				userid=< UserID range > 
 | |
|     				ip= <IP address range > 
 | |
|     				hcp=< Hardware control point > 
 | |
|     				groups=< Group >
 | |
|     Returns		: Nothing
 | |
|     Example		: mkzvmnodes gpok140+9 userid=LINUX140+9 ip=9.60.18.140+9 hcp=gpok456.endicott.ibm.com groups=all
 | |
|     
 | |
| 
 | |
| =cut
 | |
| 
 | |
| #-------------------------------------------------------
 | |
| use strict;
 | |
| use warnings;
 | |
| 
 | |
| # This script makes the following commands for each node in the range:
 | |
| # mkdef -t node -o gpok123 userid=linux123 ip=9.60.18.123 hcp=gpok456.endicott.ibm.com mgt=zvm groups=all
 | |
| 
 | |
| # Get node range
 | |
| my $nodeRange = $ARGV[0];
 | |
| 
 | |
| # Get inputs
 | |
| # Hash array containing arguments
 | |
| my %args;
 | |
| my @parms;
 | |
| my $i;
 | |
| foreach $i ( 1 .. $#ARGV ) {
 | |
| 	@parms = split( "=", $ARGV[$i] );
 | |
| 	$args{ $parms[0] } = $parms[1];
 | |
| }
 | |
| 
 | |
| # --- Generate nodes ---
 | |
| my @nodes;
 | |
| @parms = split( /\+/, $nodeRange );
 | |
| my $topNo = $parms[1];
 | |
| 
 | |
| # Get non digits from string
 | |
| $parms[0] =~ m/(\D+)/;
 | |
| my $baseStr = $1;
 | |
| 
 | |
| # Get digits from string
 | |
| $parms[0] =~ m/(\d+)/;
 | |
| my $baseNo = $1;
 | |
| 
 | |
| my $no;
 | |
| my $node;
 | |
| foreach $i ( 0 .. $topNo ) {
 | |
| 
 | |
| 	# Node + 1
 | |
| 	$no   = $baseNo + $i;
 | |
| 	$node = $baseStr . $no;
 | |
| 	push( @nodes, $node );
 | |
| }
 | |
| 
 | |
| # --- Generate user IDs ---
 | |
| my @userIDs;
 | |
| @parms = split( /\+/, $args{"userid"} );
 | |
| $topNo = $parms[1];
 | |
| 
 | |
| # Get non digits from string
 | |
| $parms[0] =~ m/(\D+)/;
 | |
| $baseStr = $1;
 | |
| 
 | |
| # Get digits from string
 | |
| $parms[0] =~ m/(\d+)/;
 | |
| $baseNo = $1;
 | |
| 
 | |
| my $userID;
 | |
| foreach $i ( 0 .. $topNo ) {
 | |
| 
 | |
| 	# UserID + 1
 | |
| 	$no     = $baseNo + $i;
 | |
| 	$userID = $baseStr . $no;
 | |
| 	push( @userIDs, $userID );
 | |
| }
 | |
| 
 | |
| # --- Generate IP addresses ---
 | |
| # Only IPv4 supported
 | |
| my @ips;
 | |
| @parms = split( /\+/, $args{"ip"} );
 | |
| $topNo = $parms[1];
 | |
| 
 | |
| # Get non digits from string
 | |
| @parms   = split( /\./, $parms[0] );
 | |
| $baseStr = $parms[0] . "." . $parms[1] . "." . $parms[2] . ".";
 | |
| 
 | |
| # Get digits from string
 | |
| $baseNo = $parms[3];
 | |
| 
 | |
| my $ip;
 | |
| foreach $i ( 0 .. $topNo ) {
 | |
| 
 | |
| 	# IP address + 1
 | |
| 	$no = $baseNo + $i;
 | |
| 	$ip = $baseStr . $no;
 | |
| 	push( @ips, $ip );
 | |
| }
 | |
| 
 | |
| # Check if # of nodes = # of user IDs
 | |
| if ( @nodes != @userIDs || @nodes != @ips ) {
 | |
| 	print "Error: Number of nodes != Number of user IDs or Number of IP addresses\n";
 | |
| 	exit(0);
 | |
| }
 | |
| 
 | |
| # --- Generate and execute command ---
 | |
| $i = 0;
 | |
| my $cmd;
 | |
| my @cmds;
 | |
| my $out;
 | |
| 
 | |
| foreach (@nodes) {
 | |
| 	$cmd = "mkdef -t node -o $_ userid=$userIDs[$i] ip=$ips[$i] hcp=$args{'hcp'} mgt=zvm groups=$args{'groups'}";
 | |
| 	$out = `$cmd`;
 | |
| 	print "$_: Done\n";
 | |
| 	$i++;
 | |
| 	push( @cmds, $cmd );
 | |
| }
 | |
| 
 |