diff --git a/xCAT-server/lib/xcat/plugins/updatenode.pm b/xCAT-server/lib/xcat/plugins/updatenode.pm index 17f7aa477..98058cbe8 100644 --- a/xCAT-server/lib/xcat/plugins/updatenode.pm +++ b/xCAT-server/lib/xcat/plugins/updatenode.pm @@ -157,19 +157,20 @@ sub preprocess_updatenode $rsp->{data}->[1] = " updatenode [-h|--help|-v|--version]"; $rsp->{data}->[2] = "or"; $rsp->{data}->[3] = - " updatenode [-V|--verbose] [-F|--sync] [-S|--sw] [-P|--scripts [script1,script2,...]] [-c|--cmdlineonly] [attr=val [attr=val...]]"; + " updatenode [-V|--verbose] [-F|--sync] [-S|--sw] [-P|--scripts \n\t\t[-s|--sn] [script1,script2,...]] [-c|--cmdlineonly] \n\t\t[attr=val [attr=val...]]"; $rsp->{data}->[4] = "or"; $rsp->{data}->[5] = " updatenode [-V|--verbose] [script1,script2,...]\n"; $rsp->{data}->[6] = " is a list of nodes or groups."; - $rsp->{data}->[7] = " -F|--sync: Perform File Syncing."; - $rsp->{data}->[8] = " -S|--sw: Perform Software Maintenance."; + $rsp->{data}->[7] = " [-F|--sync] Perform File Syncing."; + $rsp->{data}->[8] = " [-S|--sw] Perform Software Maintenance."; $rsp->{data}->[9] = - " -P|--scripts: Perform Postscripts listed in postscripts table or parameters."; + " [-P|--scripts] Execute postscripts listed in the postscripts table or \n\tparameters."; $rsp->{data}->[10] = - " [script1,script2,...] is a comma separated list of postscript names."; - $rsp->{data}->[11] = - " If omitted, all the postscripts defined for the nodes will be run."; + " [-c|--cmdlineonly] Only use AIX software maintenance information provided \n\ton the command line. (AIX only)"; + $rsp->{data}->[11] = " [-s|--sn] Set the server information stored on the nodes."; + $rsp->{data}->[12] = " [script1,script2,...] A comma separated list of postscript names. \n\tIf omitted, all the postscripts defined for the nodes will be run."; + $rsp->{data}->[13] = " [attr=val [attr=val...]] Specifies one or more 'attribute equals value'\n\tpairs, separated by spaces. (AIX only)"; $cb->($rsp); } @@ -190,6 +191,7 @@ sub preprocess_updatenode 'V|verbose' => \$::VERBOSE, 'F|sync' => \$::FILESYNC, 'S|sw' => \$::SWMAINTENANCE, + 's|sn' => \$::SETSERVER, 'P|scripts:s' => \$::RERUNPS ) ) @@ -461,6 +463,7 @@ sub updatenode 'v|version' => \$::VERSION, 'V|verbose' => \$::VERBOSE, 'F|sync' => \$::FILESYNC, + 's|sn' => \$::SETSERVER, 'S|sw' => \$::SWMAINTENANCE, 'P|scripts:s' => \$::RERUNPS ) @@ -701,21 +704,21 @@ sub updatenode if (scalar(@$AIXnodes)) { # we have AIX nodes - -# NEW # need to pass the name of the server on the xcataixpost cmd line - # - do all the nodes have the same server???? - they should - # - also we need the SN or the NIMprime as known by the node - $sn = xCAT::Utils->get_ServiceNode(\@$AIXnodes, "xcat", "Node"); - foreach my $snkey (keys %$sn) { - - my $nodes = $sn->{$snkey}; - my $nodestring = join(',', @$nodes); + # get server names as known by the nodes + my %servernodes = %{xCAT::InstUtils->get_server_nodes($callback, \@$AIXnodes)}; + # it's possible that the nodes could have diff server names + # do all the nodes for a particular server at once + foreach my $snkey (keys %servernodes) { + $nodestring = join(',', @{$servernodes{$snkey}}); my $cmd; + if ($::SETSERVER) { + $cmd = "XCATBYPASS=Y $::XCATROOT/bin/xdsh $nodestring -s -e /install/postscripts/xcataixpost -M $snkey -c 1 $postscripts 2>&1"; + } else { - $cmd = - "XCATBYPASS=Y $::XCATROOT/bin/xdsh $nodestring -s -e /install/postscripts/xcataixpost -m $snkey -c 1 $postscripts 2>&1"; + $cmd = "XCATBYPASS=Y $::XCATROOT/bin/xdsh $nodestring -s -e /install/postscripts/xcataixpost -m $snkey -c 1 $postscripts 2>&1"; + } if (defined($::VERBOSE)) { @@ -1308,6 +1311,7 @@ sub updateAIXsoftware # # install sw on nodes # + # $serv is the name of the nodes server as known by the node foreach my $serv (@servers) { @@ -1569,3 +1573,4 @@ sub updateAIXsoftware } return 0; } +