diff --git a/pelab/bgmon/libwanetmon.pm b/pelab/bgmon/libwanetmon.pm index dda713c93fc9617ca004ecd3c4b44223aed27a82..d7fdd54989cfdd32af9978fe0a4ada724d907c3b 100644 --- a/pelab/bgmon/libwanetmon.pm +++ b/pelab/bgmon/libwanetmon.pm @@ -22,6 +22,7 @@ require Exporter; stopnode edittest killnode + getstatus ); @@ -111,10 +112,14 @@ sub sendcmd($$) my $node = $_[0]; my $hashref = $_[1]; my %cmd = %$hashref; + if( !defined $cmd{managerID} ){ + $cmd{managerID} = "default"; + } my $sercmd = serialize_hash( \%cmd ); my $f_success = 0; my $max_tries = 3; + my $retval; do{ $socket = IO::Socket::INET->new( PeerPort => $port, Proto => 'tcp', @@ -126,8 +131,8 @@ sub sendcmd($$) $sel->add($socket); my ($ready) = $sel->can_read(2); #timeout (seconds) (?) if( defined($ready) && $ready eq $socket ){ - my $ack = <$ready>; -# chomp $ack; + my $ack; + ($ack, $retval) = <$ready>; if( defined $ack && ( (chomp($ack),$ack) eq "ACK") ){ $f_success = 1; # print "Got ACK from $node for command\n"; @@ -136,6 +141,8 @@ sub sendcmd($$) }else{ $max_tries--; } + chomp $retval + if( defined $retval ); }else{ $max_tries--; } @@ -154,7 +161,7 @@ sub sendcmd($$) }elsif( $f_success == 1 ){ #success! delete $deadnodes{$node}; - return 1; + return (1,$retval); } } @@ -194,11 +201,21 @@ sub edittest($$$;$) testper => $testper, limitTime=> $limitTime); - return sendcmd($srcnode,\%cmd); + return ${[sendcmd($srcnode,\%cmd)]}[0]; } - +sub getstatus($){ + my ($node) = @_; + my %cmd = ( expid => $expid, + cmdtype => "GETSTATUS" ); + my @cmdresult = sendcmd($node,\%cmd); + if( defined $cmdresult[1] ){ + return $cmdresult[1]; + }else{ + return "error"; + } +} 1;