From 246e2816148643b1f7ef7e381fbc1f38c3e67f17 Mon Sep 17 00:00:00 2001 From: bp-sawyers Date: Tue, 4 Nov 2008 16:55:59 +0000 Subject: [PATCH] Fix bug in lsslp in which is displayed FSPs as IVMs. git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2463 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-server/lib/xcat/plugins/lsslp.pm | 292 +++++++++++++------------- xCAT-web/machines/discover.php | 1 + 2 files changed, 147 insertions(+), 146 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/lsslp.pm b/xCAT-server/lib/xcat/plugins/lsslp.pm index b5d42b6b1..1d6006ce8 100644 --- a/xCAT-server/lib/xcat/plugins/lsslp.pm +++ b/xCAT-server/lib/xcat/plugins/lsslp.pm @@ -4,7 +4,7 @@ package xCAT_plugin::lsslp; use strict; use Getopt::Long; use Socket; -use POSIX "WNOHANG"; +use POSIX "WNOHANG"; use Storable qw(freeze thaw); use Time::HiRes qw(gettimeofday); use IO::Select; @@ -45,7 +45,7 @@ use constant { TYPE_BPA => "BPA", TYPE_HMC => "HMC", TYPE_IVM => "IVM", - TYPE_FSP => "IVM", + TYPE_FSP => "FSP", IP_ADDRESSES => 3, TEXT => 0, FORMAT => 1, @@ -62,8 +62,8 @@ my %service_slp = ( @{[ SERVICE_HMC ]} => TYPE_HMC, @{[ SERVICE_IVM ]} => TYPE_IVM, @{[ SERVICE_MM ]} => TYPE_MM, - @{[ SERVICE_RSA ]} => TYPE_RSA, - @{[ SERVICE_RSA2 ]} => TYPE_RSA + @{[ SERVICE_RSA ]} => TYPE_RSA, + @{[ SERVICE_RSA2 ]} => TYPE_RSA ); ####################################### @@ -92,7 +92,7 @@ my %exattr = ( ); ####################################### -# Power methods +# Power methods ####################################### my %mgt = ( lc(TYPE_FSP) => "hmc", @@ -100,7 +100,7 @@ my %mgt = ( lc(TYPE_MM) => "blade", lc(TYPE_HMC) => "hmc", lc(TYPE_IVM) => "ivm", - lc(TYPE_RSA) => "blade" + lc(TYPE_RSA) => "blade" ); my @attribs = qw(nodetype model serial groups node mgt mpa id); @@ -122,13 +122,13 @@ sub handled_commands { if ($^O =~ /^linux/i) { $macmap = xCAT::MacMap->new(); - } + } return( {lsslp=>"lsslp"} ); } ########################################################################## -# Invokes the callback with the specified message +# Invokes the callback with the specified message ########################################################################## sub send_msg { @@ -174,7 +174,7 @@ sub parse_args { BPA => HARDWARE_SERVICE.":".SERVICE_BPA, FSP => HARDWARE_SERVICE.":".SERVICE_FSP, RSA => HARDWARE_SERVICE.":".SERVICE_RSA.":", - MM => HARDWARE_SERVICE.":".SERVICE_MM.":" + MM => HARDWARE_SERVICE.":".SERVICE_MM.":" ); ############################################# # Responds with usage statement @@ -202,7 +202,7 @@ sub parse_args { # Process command-line flags ############################################# if (!GetOptions( \%opt, - qw(h|help V|Verbose v|version i=s x z w r s=s e=s t=s m c))) { + qw(h|help V|Verbose v|version i=s x z w r s=s e=s t=s m c))) { return( usage() ); } ############################################# @@ -212,31 +212,31 @@ sub parse_args { return(usage( "Missing option: -" )); } ############################################# - # Set convergence + # Set convergence ############################################# if ( exists( $opt{c} )) { - + ################################# # Use values set in slp.conf ################################# if ( !defined( $ARGV[0] )) { - @converge = (0); + @converge = (0); } ################################# - # Use new values + # Use new values ################################# else { @converge = split /,/,$ARGV[0]; if ( scalar( @converge ) > 5 ) { return(usage( "Convergence timeouts limited to 5 maximum" )); } - foreach ( @converge ) { - unless ( /^[1-9]{1}$|^[1-9]{1}[0-9]{1,4}$/) { + foreach ( @converge ) { + unless ( /^[1-9]{1}$|^[1-9]{1}[0-9]{1,4}$/) { return(usage( "Invalid convergence timeout: $_" )); } } } - } + } ############################################# # Check for an argument ############################################# @@ -250,13 +250,13 @@ sub parse_args { $verbose = 1; } ############################################# - # Check for mutually-exclusive formatting + # Check for mutually-exclusive formatting ############################################# if ( (exists($opt{r}) + exists($opt{x}) + exists($opt{z})) > 1 ) { return( usage() ); } ############################################# - # Command tries + # Command tries ############################################# if ( exists( $opt{t} )) { $maxtries = $opt{t}; @@ -266,7 +266,7 @@ sub parse_args { } } ############################################# - # Select SLP command + # Select SLP command ############################################# if ( exists( $opt{e} )) { if ( $opt{e} !~ /slptool/ ) { @@ -274,13 +274,13 @@ sub parse_args { } } ############################################# - # Check for unsupported service type + # Check for unsupported service type ############################################# if ( exists( $opt{s} )) { if ( !exists( $services{$opt{s}} )) { return(usage( "Invalid service: $opt{s}" )); } - $request->{service} = $services{$opt{s}}; + $request->{service} = $services{$opt{s}}; } return(0); } @@ -301,7 +301,7 @@ sub validate_ip { ####################################### # Determine interfaces ####################################### - my $ips = $openSLP ? + my $ips = $openSLP ? slptool_ifconfig( $request ) : slpquery_ifconfig( $request ); ####################################### @@ -313,7 +313,7 @@ sub validate_ip { return( [0] ); } ########################################### - # Option -i specified - validate entries + # Option -i specified - validate entries ########################################### foreach ( split /,/, $opt{i} ) { my $ip = $_; @@ -349,11 +349,11 @@ sub trace { my $msg = sprintf "%02d:%02d:%02d %5d %s", $hour,$min,$sec,$$,$msg; send_msg( $request, 0, $msg ); } -} +} ########################################################################## -# Determine adapters available - slptool always uses adapter IP +# Determine adapters available - slptool always uses adapter IP ########################################################################## sub slptool_ifconfig { @@ -363,7 +363,7 @@ sub slptool_ifconfig { my $mode = "MULTICAST"; ############################################# - # Display broadcast IPs, but use adapter IP + # Display broadcast IPs, but use adapter IP ############################################# if ( !exists( $opt{m} )) { $mode = "BROADCAST"; @@ -409,7 +409,7 @@ sub slptool_ifconfig { if ( exists( $opt{m} )) { trace( $request, "\t\t$1\tUP,$mode" ); - } + } } } } @@ -453,7 +453,7 @@ sub slptool_ifconfig { if ( exists( $opt{m} )) { trace( $request, "\t\t$1\tUP,$mode" ); - } + } } } } @@ -475,7 +475,7 @@ sub slptool_ifconfig { ########################################################################## -# Determine adapters available - slp_query always used broadcast IP +# Determine adapters available - slp_query always used broadcast IP ########################################################################## sub slpquery_ifconfig { @@ -571,7 +571,7 @@ sub slpquery_ifconfig { ########################################################################## -# Forks a process to run the slp command (1 per adapter) +# Forks a process to run the slp command (1 per adapter) ########################################################################## sub fork_cmd { @@ -590,7 +590,7 @@ sub fork_cmd { if ( !defined($pid) ) { ################################### - # Fork error + # Fork error ################################### send_msg( $request, 1, "Fork error: $!" ); return undef; @@ -616,9 +616,9 @@ sub fork_cmd { } - + ########################################################################## -# Run the forked command and send reply to parent +# Run the forked command and send reply to parent ########################################################################## sub invoke_cmd { @@ -628,7 +628,7 @@ sub invoke_cmd { my $services = shift; ######################################## - # Telnet (rspconfig) command + # Telnet (rspconfig) command ######################################## if ( !defined( $services )) { my $target_dev = $args->{$ip}; @@ -661,7 +661,7 @@ sub invoke_cmd { $target_dev->{password}, @cmds ); } - + #################################### # Pass result array back to parent #################################### @@ -675,16 +675,16 @@ sub invoke_cmd { } ######################################## - # SLP command + # SLP command ######################################## my $result = runslp( $args, $ip, $services, $request ); my $unicast = @$result[0]; my $values = @$result[1]; ######################################## - # May have to send additional unicasts + # May have to send additional unicasts ######################################## - if ( keys (%$unicast) ) { + if ( keys (%$unicast) ) { foreach my $url ( keys %$unicast ) { my ($service,$addr) = split "://", $url; @@ -696,18 +696,18 @@ sub invoke_cmd { $url =~ s/,*\d*$//; #################################### - # Make sure can resolve if hostname + # Make sure can resolve if hostname #################################### if ( !defined( $sockaddr )) { if ( $verbose ) { - trace( $request, "Cannot convert '$addr' to dot-notation" ); + trace( $request, "Cannot convert '$addr' to dot-notation" ); } next; } $addr = inet_ntoa( $sockaddr ); #################################### - # Select command format + # Select command format #################################### if ( $openSLP ) { $result = runslp( $args, $ip, [$url], $request, 1 ); @@ -726,13 +726,13 @@ sub invoke_cmd { } } ######################################## - # No valid responses received + # No valid responses received ######################################## - if (( keys (%$values )) == 0 ) { + if (( keys (%$values )) == 0 ) { return; } ######################################## - # Pass result array back to parent + # Pass result array back to parent ######################################## my @results = ("FORMATDATA6sK4ci", $values ); my $out = $request->{pipe}; @@ -744,7 +744,7 @@ sub invoke_cmd { ########################################################################## -# Run the SLP command, process the response, and send to parent +# Run the SLP command, process the response, and send to parent ########################################################################## sub runslp { @@ -761,39 +761,39 @@ sub runslp { my $try = 0; ########################################### - # OpenSLP - slptool command + # OpenSLP - slptool command ########################################### if ( $openSLP ) { - $cmd = $attreq ? - "$slpcmd findattrsusingiflist $ip $type" : + $cmd = $attreq ? + "$slpcmd findattrsusingiflist $ip $type" : "$slpcmd findsrvsusingiflist $ip $type"; - } + } ########################################### - # IBM SLP - slp_query command + # IBM SLP - slp_query command ########################################### else { - $cmd = $attreq ? - "$slpcmd --address=$ip --type=$type" : - "$slpcmd --address=$ip --type=$type --converge=1"; + $cmd = $attreq ? + "$slpcmd --address=$ip --type=$type" : + "$slpcmd --address=$ip --type=$type --converge=1"; } ########################################### - # Run the command + # Run the command ########################################### while ( $try++ < $maxtries ) { if ( $verbose ) { trace( $request, $cmd ); trace( $request, "Attempt $try of $maxtries\t( $ip\t$type )" ); - } + } ####################################### - # Serialize transmits out each adapter + # Serialize transmits out each adapter ####################################### if ( !open( OUTPUT, "$cmd 2>&1 |")) { send_msg( $request, 1, "Fork error: $!" ); return undef; } ############################### - # Get command output + # Get command output ############################### my $rsp; while ( ) { @@ -812,11 +812,11 @@ sub runslp { } ########################################### # For IVM, running AIX 53J (6/07) release, - # there is an AIX SLP bug where IVM will - # respond to SLP service-requests with its + # there is an AIX SLP bug where IVM will + # respond to SLP service-requests with its # URL only and not its attributes. An SLP - # unicast to the URL address is necessary - # to acquire the attributes. This was fixed + # unicast to the URL address is necessary + # to acquire the attributes. This was fixed # in AIX 53L (11/07). # ########################################### @@ -840,11 +840,11 @@ sub runslp { ################################### # Service-Request response ################################### - if ( $data[$i] =~ + if ( $data[$i] =~ /^service\:management-(software|hardware)\.IBM\:([^\:]+)/) { ############################### - # Invalid service-type + # Invalid service-type ############################### if ( !exists( $service_slp{$2} )) { if ( $verbose ) { @@ -852,10 +852,10 @@ sub runslp { } $i++; next; - } + } my $url = $data[$i++]; my $attr = $data[$i]; - + if ( $verbose ) { trace( $request, ">>>> SrvRqst Response" ); trace( $request, "URL: $url" ); @@ -867,7 +867,7 @@ sub runslp { $unicast{$url} = $url; } ############################### - # Response has "ATTR" field + # Response has "ATTR" field ############################### else { if ( $verbose ) { @@ -889,7 +889,7 @@ sub runslp { trace( $request, $attr ); } $result{$attr} = 1; - } + } ################################### # Unrecognized response ################################### @@ -900,7 +900,7 @@ sub runslp { $i++; } } - } + } ########################################### # IBM SLP response format: # 0 @@ -939,7 +939,7 @@ sub runslp { elsif ( /.*URL: (.*)/ ) { $unicast{$1} = $1; } - } + } elsif ( $verbose ) { trace( $request, "DISCARDING: $_" ); } @@ -973,11 +973,11 @@ sub format_output { my $outhash = parse_responses( $request, $values, $mm, \$length ); ########################################### - # No responses + # No responses ########################################### if (( keys %$outhash ) == 0 ){ send_msg( $request, 0, "No responses" ); - return; + return; } ########################################### # -w flag for write to xCat database @@ -1072,7 +1072,7 @@ sub gethost_from_url { my $url = shift; ####################################### - # Extract IP from URL + # Extract IP from URL ####################################### my $ip = getip_from_url( $request, $url ); if ( !defined( $ip )) { @@ -1102,7 +1102,7 @@ sub gethost_from_url { $host = $1; } return( $host ); - + ########################################### # Otherwise, URL is not in IP format ########################################### @@ -1118,7 +1118,7 @@ sub gethost_from_url { ########################################################################## -# Example OpenSLP slptool "service-request" output. The following +# Example OpenSLP slptool "service-request" output. The following # attributes can be returned in any order within an SLP response. # # service:management-hardware.IBM:management-module://192.20.154.19,48659 @@ -1133,7 +1133,7 @@ sub gethost_from_url { # (telnet-port=23),(slot=1),0 # ... # -# Example OpenSLP slptool "attribute-request" output. The following +# Example OpenSLP slptool "attribute-request" output. The following # attributes can be returned in any order within an SLP response. # # (type=integrated-virtualization-manager),(level=3),(machinetype-model=911051A), @@ -1209,13 +1209,13 @@ sub parse_responses { foreach my $rsp ( @$values ) { ########################################### - # Get service-type from response + # Get service-type from response ########################################### my @result = (); my $host; ########################################### - # service-type attribute not found + # service-type attribute not found ########################################### if ( $rsp !~ /\(type=([^\)]+)/ ) { if ( $verbose ) { @@ -1224,12 +1224,12 @@ sub parse_responses { next; } ########################################### - # Valid service-type attribute + # Valid service-type attribute ########################################### my $type = $1; ########################################### - # Unsupported service-type + # Unsupported service-type ########################################### if ( !exists($service_slp{$type} )) { if ( $verbose ) { @@ -1241,7 +1241,7 @@ sub parse_responses { # RSA/MM - slightly different attributes ########################################### my $attr = \@attrs; - if (( $type eq SERVICE_RSA ) or ( $type eq SERVICE_RSA2 ) or + if (( $type eq SERVICE_RSA ) or ( $type eq SERVICE_RSA2 ) or ( $type eq SERVICE_MM )) { $attr = \@xattrs; } @@ -1261,8 +1261,8 @@ sub parse_responses { ########################################### # Use the IP/Hostname contained in the URL # not the (ip-address) field since for FSPs - # it may contain default IPs which could - # all be the same. If the response contains + # it may contain default IPs which could + # all be the same. If the response contains # a "name" attribute as the HMC does, use # that instead of the URL. # @@ -1299,10 +1299,10 @@ sub parse_responses { if ( defined( $ip )) { if ( exists( $mm->{$ip}->{args} )) { - $mm->{$ip}->{args} =~ /^.*,(.*)$/; + $mm->{$ip}->{args} =~ /^.*,(.*)$/; $host = $1; } - } + } } ########################################### # Get host directly from URL @@ -1349,14 +1349,14 @@ sub parse_responses { ########################################################################## -# Write result to xCat database +# Write result to xCat database ########################################################################## sub xCATdB { my $outhash = shift; my %keyhash = (); my %updates = (); - + foreach ( keys %$outhash ) { my $data = $outhash->{$_}; my $type = @$data[0]; @@ -1383,7 +1383,7 @@ sub xCATdB { } elsif ( $type =~ /^FSP$/ ) { ######################################## - # BPA frame this CEC is in + # BPA frame this CEC is in ######################################## my $frame = ""; my $model = @$data[1]; @@ -1401,7 +1401,7 @@ sub xCATdB { $frame = "$bpc_model*$bpc_serial"; } ######################################## - # "Factory-default" FSP name format: + # "Factory-default" FSP name format: # Server--- # ie. Server-9117-MMA-SN10F6F3D # @@ -1409,7 +1409,7 @@ sub xCATdB { # to a shirt-hostname use the following: # # Note that this may not be the name - # that the user (or the HMC) knows this + # that the user (or the HMC) knows this # CEC as. This is the "factory-default" # CEC name. SLP does not return the # user- or system-defined CEC name and @@ -1438,7 +1438,7 @@ sub xCATdB { ########################################################################## -# Stanza formatting +# Stanza formatting ########################################################################## sub format_stanza { @@ -1464,7 +1464,7 @@ sub format_stanza { ################################# foreach ( @attribs ) { my $d = $data[$i++]; - + if ( /^node$/ ) { next; } elsif ( /^nodetype$/ ) { @@ -1492,7 +1492,7 @@ sub format_stanza { # XML formatting ########################################################################## sub format_xml { - + my $outhash = shift; my $xml; @@ -1620,14 +1620,14 @@ sub slptool { my $start; ######################################### - # slptool not installed + # slptool not installed ######################################### if ( !-x $cmd ) { send_msg( $request, 1, "Command not found: $cmd" ); return( [RC_ERROR] ); } ######################################### - # slptool runnable - test for version + # slptool runnable - test for version ######################################### my $output = `$cmd -v 2>&1`; if ( $output !~ /^slptool version = 1.2.1\nlibslp version = 1.2.1/ ) { @@ -1635,7 +1635,7 @@ sub slptool { return( [RC_ERROR] ); } ######################################### - # Select broadcast, convergence, etc + # Select broadcast, convergence, etc ######################################### my $mode = selectmode( $request ); if ( defined($mode) ) { @@ -1647,7 +1647,7 @@ sub slptool { ########################################################################## -# Select OpenSLP slptool broadcast convergence, etc +# Select OpenSLP slptool broadcast convergence, etc ########################################################################## sub selectmode { @@ -1658,7 +1658,7 @@ sub selectmode { my $converge; ################################## - # Select convergence + # Select convergence ################################## if ( exists( $opt{c} )) { $converge = join( ',',@converge ); @@ -1671,19 +1671,19 @@ sub selectmode { } } ################################## - # Select multicast or broadcast + # Select multicast or broadcast ################################## if ( !exists( $opt{m} )) { - $mode = "true"; + $mode = "true"; } ################################## - # slp.conf attributes + # slp.conf attributes ################################## my %attr = ( "net.slp.multicastTimeouts" => $converge, "net.slp.isBroadcastOnly" => $mode, - "net.slp.multicastMaximumWait" => $maxtimeout + "net.slp.multicastMaximumWait" => $maxtimeout ); if ( $verbose ) { @@ -1691,7 +1691,7 @@ sub selectmode { trace( $request, $msg ); } ################################## - # Open/read slp.conf + # Open/read slp.conf ################################## unless ( open( CONF, $fname )) { send_msg( $request, 1, "Error opening: '$fname'" ); @@ -1725,7 +1725,7 @@ sub selectmode { } } ################################## - # Rewrite file contents + # Rewrite file contents ################################## unless ( open( CONF, "+>$fname" )) { send_msg( $request, 1, "Error opening: '$fname'" ); @@ -1738,7 +1738,7 @@ sub selectmode { ########################################################################## -# Run the SLP command +# Run the SLP command ########################################################################## sub runcmd { @@ -1750,7 +1750,7 @@ sub runcmd { my $start; ########################################### - # Query specific service; otherwise, + # Query specific service; otherwise, # query all hardware/software services ########################################### if ( exists( $opt{s} )) { @@ -1776,15 +1776,15 @@ sub runcmd { return( [RC_ERROR] ); } if ( $verbose ) { - $start = Time::HiRes::gettimeofday(); + $start = Time::HiRes::gettimeofday(); } ########################################### - # Fork one process per adapter + # Fork one process per adapter ########################################### my $children = 0; $SIG{CHLD} = sub { while (waitpid(-1, WNOHANG) > 0) { $children--; } }; my $fds = new IO::Select; - + foreach ( keys %ip_addr ) { my $pipe = fork_cmd( $request, $_, $cmd, \@services ); if ( $pipe ) { @@ -1793,7 +1793,7 @@ sub runcmd { } } ########################################### - # Process slp responses from children + # Process slp responses from children ########################################### while ( $children > 0 ) { child_response( $callback, $fds ); @@ -1803,10 +1803,10 @@ sub runcmd { if ( $verbose ) { my $elapsed = Time::HiRes::gettimeofday() - $start; my $msg = sprintf( "Total SLP Time: %.3f sec\n", $elapsed ); - trace( $request, $msg ); + trace( $request, $msg ); } ########################################### - # Combined responses from all children + # Combined responses from all children ########################################### my @all_results = keys %slp_result; format_output( $request, \@all_results ); @@ -1815,11 +1815,11 @@ sub runcmd { ########################################################################## -# Collect output from the child processes +# Collect output from the child processes ########################################################################## sub child_response { - my $callback = shift; + my $callback = shift; my $fds = shift; my @ready_fds = $fds->can_read(1); @@ -1864,7 +1864,7 @@ sub child_response { next; } ################################# - # Done - close handle + # Done - close handle ################################# $fds->remove($rfh); close($rfh); @@ -1903,7 +1903,7 @@ sub preprocess_request { # find all the service nodes for xCAT cluster # build an individual request for each service node ########################################### - my $nrtab=xCAT::Table->new("noderes", -create =>0); + my $nrtab=xCAT::Table->new("noderes", -create =>0); my @all=$nrtab->getAllNodeAttribs(['servicenode']); my %sv_hash=(); foreach (@all) { @@ -1925,7 +1925,7 @@ sub preprocess_request { ########################################################################## -# Match SLP IP/ARP MAC/Switch table port to actual switch data +# Match SLP IP/ARP MAC/Switch table port to actual switch data ########################################################################## sub switch_cmd { @@ -1950,7 +1950,7 @@ sub switch_cmd { foreach my $slp_entry ( @$slp ) { foreach my $service_type (SERVICE_FSP, SERVICE_BPA, SERVICE_MM, SERVICE_HMC) { - + if ( $slp_entry =~ /\(type=$service_type\)/ and $slp_entry =~ /\(ip-address=([^\),]+)/) { $slp_all{$1}{'mac'} = undef; @@ -1992,13 +1992,13 @@ sub switch_cmd { } } ########################################### - # No MMs/HMCs in hosts/switch table + # No MMs/HMCs in hosts/switch table ########################################### if ( !%hosts ) { return; } ########################################### - # Ping each MM/HMCs to update arp table + # Ping each MM/HMCs to update arp table ########################################### foreach my $ip ( keys %slp_all ) { if ( $^O eq 'aix') @@ -2009,7 +2009,7 @@ sub switch_cmd { { `ping -c 1 -w 0 $ip`; } - } + } ########################################### # Match discovered IP to MAC in arp table ########################################### @@ -2052,7 +2052,7 @@ sub switch_cmd { } } ########################################### - # No discovered IP - MAC matches + # No discovered IP - MAC matches ########################################### if ( ! $isMacFound) { return; @@ -2064,24 +2064,24 @@ sub switch_cmd { ####################################### # Not in SLP response ####################################### - if ( !defined( $slp_all{$ip}{'mac'} ) or !defined( $macmap )) { + if ( !defined( $slp_all{$ip}{'mac'} ) or !defined( $macmap )) { next; } ####################################### - # Get node from switch + # Get node from switch ####################################### my $name = $macmap->find_mac( $slp_all{$ip}{'mac'} ); if ( !defined( $name )) { if ( $verbose ) { - trace( $req, "\t\t($slp_all{$ip}{'mac'})-> NOT FOUND" ); + trace( $req, "\t\t($slp_all{$ip}{'mac'})-> NOT FOUND" ); } next; } if ( $verbose ) { - trace( $req, "\t\t($slp_all{$ip}{'mac'})-> $name" ); + trace( $req, "\t\t($slp_all{$ip}{'mac'})-> $name" ); } ####################################### - # In hosts table + # In hosts table ####################################### if ( defined( $hosts{$name} )) { if ( $ip eq $hosts{$name} ) { @@ -2100,11 +2100,11 @@ sub switch_cmd { } } ########################################### - # No MMs + # No MMs ########################################### if ( !%$targets) { if ( $verbose ) { - trace( $req, "No ARP-Switch-SLP matches found" ); + trace( $req, "No ARP-Switch-SLP matches found" ); } return; } @@ -2147,7 +2147,7 @@ sub dhcpconfig $mactab->close(); my @nodelist = (); - + for my $ip (keys %$dhcp_targets) { push @nodelist, $dhcp_targets->{$ip}->{'name'}; @@ -2206,8 +2206,8 @@ sub rspconfig { if ( defined( $mpatab )) { my ($ent) = $mpatab->getAttribs({mpa=>$_},'username','password'); - if ( defined( $ent->{password} )) { $pass = $ent->{password}; } - if ( defined( $ent->{username} )) { $user = $ent->{username}; } + if ( defined( $ent->{password} )) { $pass = $ent->{password}; } + if ( defined( $ent->{username} )) { $user = $ent->{username}; } } $mm->{$_}->{username} = $user; $mm->{$_}->{password} = $pass; @@ -2232,23 +2232,23 @@ sub rspconfig { if ( defined( $hcptab )) { my ($ent) = $hcptab->getAttribs({hcp=>$_},'username','password'); - if ( defined( $ent->{password} )) { $pass = $ent->{password}; } - if ( defined( $ent->{username} )) { $user = $ent->{username}; } + if ( defined( $ent->{password} )) { $pass = $ent->{password}; } + if ( defined( $ent->{username} )) { $user = $ent->{username}; } } $hmc->{$_}->{username} = $user; $hmc->{$_}->{password} = $pass; trace( $request, "user/passwd for $_ is $hmc->{$_}->{username} $hmc->{$_}->{password}"); } } - + my %rsp_dev = (%$mm,%$hmc); ############################################# - # Fork one process per MM/HMC + # Fork one process per MM/HMC ############################################# my $children = 0; $SIG{CHLD} = sub { while (waitpid(-1, WNOHANG) > 0) { $children--; } }; my $fds = new IO::Select; - + foreach my $ip ( keys %rsp_dev) { my $pipe = fork_cmd( $request, $ip, \%rsp_dev); if ( $pipe ) { @@ -2269,7 +2269,7 @@ sub rspconfig { my $msg = sprintf( "Total rspconfig Time: %.3f sec\n", $elapsed ); trace( $request, $msg ); } - + foreach my $ip ( keys %rsp_result ) { ################################# # Error logging on to MM @@ -2287,8 +2287,8 @@ sub rspconfig { } delete $rsp_dev{$ip}; next; - } - } + } + } ################################## # Process each response ################################## @@ -2312,7 +2312,7 @@ sub rspconfig { } } ###################################### - # Update etc/hosts + # Update etc/hosts ###################################### my $fname = "/etc/hosts"; if ( $verbose ) { @@ -2323,12 +2323,12 @@ sub rspconfig { trace( $request, "Error opening '$fname'" ); } return( \%rsp_dev ); - } + } my @rawdata = ; close( HOSTS ); ###################################### - # Remove old entry + # Remove old entry ###################################### foreach ( keys %rsp_dev) { my ($ip,$host) = split /,/,$rsp_dev{$_}->{args}; @@ -2342,7 +2342,7 @@ sub rspconfig { push @rawdata,"$ip\t$host\n"; } ###################################### - # Rewrite file + # Rewrite file ###################################### unless ( open( HOSTS,">$fname" )) { if ( $verbose ) { @@ -2377,14 +2377,14 @@ sub process_request { # Process command-specific options #################################### my $result = parse_args( \%request ); - + #################################### # Return error #################################### if ( ref($result) eq 'ARRAY' ) { send_msg( \%request, 1, @$result ); return(1); - } + } ########################################### # SLP service-request - select program ########################################### diff --git a/xCAT-web/machines/discover.php b/xCAT-web/machines/discover.php index 7fce551f3..213ec2092 100644 --- a/xCAT-web/machines/discover.php +++ b/xCAT-web/machines/discover.php @@ -216,6 +216,7 @@ if (getXmlErrors($xml,$errors)) { msg('E',"tabrestore switch failed: " . implode // Send JSON data back to the browser. Todo: handle the errors too. echo json_encode(array('step' => (integer)++$step, 'done' => FALSE, 'error' => '')); +//echo ""; }