From 4cd11cb70684dd1579764ebdfdd6591bdae97f01 Mon Sep 17 00:00:00 2001 From: sakolish Date: Wed, 30 Apr 2008 19:16:23 +0000 Subject: [PATCH] Allow "mkvm -i id -n noderange" to take a noderange istead of a single node to create git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@1234 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- perl-xCAT-2.0/xCAT/PPCvm.pm | 81 ++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/perl-xCAT-2.0/xCAT/PPCvm.pm b/perl-xCAT-2.0/xCAT/PPCvm.pm index bdc5999c7..1faed8c56 100644 --- a/perl-xCAT-2.0/xCAT/PPCvm.pm +++ b/perl-xCAT-2.0/xCAT/PPCvm.pm @@ -6,6 +6,7 @@ use Getopt::Long; use xCAT::PPCcli qw(SUCCESS EXPECT_ERROR RC_ERROR NR_ERROR); use xCAT::PPCdb; use xCAT::Usage; +use xCAT::NodeRange; ############################################## @@ -174,6 +175,16 @@ sub mkvm_parse_args { return(usage( "Invalid Argument: $ARGV[0]" )); } #################################### + # Expand -n noderange + #################################### + if ( exists( $opt{n} )) { + my @noderange = xCAT::NodeRange::noderange( $opt{n},0 ); + if ( !defined( @noderange )) { + return(usage( "Invalid noderange: '$opt{n}'" )); + } + $opt{n} = \@noderange; + } + #################################### # No operands - add command name #################################### $request->{method} = $cmd; @@ -795,42 +806,45 @@ sub create { # Get command-line options ##################################### my $id = $opt->{i}; - my $name = $opt->{n}; - my $cfgdata = @$prof[0]; + my $cfgdata = strip_profile( @$prof[0], $hwtype ); - ##################################### - # Modify read-back profile. - # See HMC or IVM mksyscfg man - # page for valid attributes. - # - ##################################### - if ( $hwtype eq "hmc" ) { - $cfgdata =~ s/^name=[^,]+|$/profile_name=$name/; - $cfgdata =~ s/lpar_name=[^,]+|$/name=$name/; - $cfgdata =~ s/lpar_id=[^,]+|$/lpar_id=$id/; - } - elsif ( $hwtype eq "ivm" ) { - $cfgdata =~ s/^name=[^,]+|$/name=$name/; - $cfgdata =~ s/lpar_id=[^,]+|$/lpar_id=$id/; - } - $cfgdata = strip_profile( $cfgdata, $hwtype ); - - ##################################### - # Create new LPAR - ##################################### - $result = xCAT::PPCcli::mksyscfg( $exp, $d, $cfgdata ); - $Rc = shift(@$result); - - ##################################### - # Add new LPAR to database - ##################################### - if ( $Rc == SUCCESS ) { - my $err = xCATdB( "mkvm", $name, $id, $d, $hwtype, $lpar ); - if ( defined( $err )) { - return( [[$name,$err,RC_ERROR]] ); + foreach my $name ( @{$opt->{n}} ) { + ################################# + # Modify read-back profile. + # See HMC or IVM mksyscfg man + # page for valid attributes. + # + ################################# + if ( $hwtype eq "hmc" ) { + $cfgdata =~ s/^name=[^,]+|$/profile_name=$name/; + $cfgdata =~ s/lpar_name=[^,]+|$/name=$name/; + $cfgdata =~ s/lpar_id=[^,]+|$/lpar_id=$id/; } + elsif ( $hwtype eq "ivm" ) { + $cfgdata =~ s/^name=[^,]+|$/name=$name/; + $cfgdata =~ s/lpar_id=[^,]+|$/lpar_id=$id/; + } + ################################# + # Create new LPAR + ################################# + $result = xCAT::PPCcli::mksyscfg( $exp, $d, $cfgdata ); + $Rc = shift(@$result); + + ################################# + # Add new LPAR to database + ################################# + if ( $Rc == SUCCESS ) { + my $err = xCATdB( "mkvm", $name, $id, $d, $hwtype, $lpar ); + if ( defined( $err )) { + push @values, [$name,$err,RC_ERROR]; + $id++; + next; + } + } + push @values, [$name,@$result[0],$Rc]; + $id++; } - return( [[$name,@$result[0],$Rc]] ); + return( \@values ); } @@ -979,3 +993,4 @@ sub lsvm { +