diff --git a/db/Node.pm.in b/db/Node.pm.in index d4e33be260a795fbb079fbb0f380a4689af51389..da9998c2209d7f81df1392a0c014f458c2551ee2 100755 --- a/db/Node.pm.in +++ b/db/Node.pm.in @@ -2297,11 +2297,13 @@ sub GetBootLog($$) } # -# Set event state for a node. +# Set event state for a node. Note that we do not change the DB here, +# but let stated do that. If stated dies ... # -sub SetEventState($$) +sub SetEventState($$;$) { - my ($self, $state) = @_; + my ($self, $state, $fatal) = @_; + my $rval; require event; # Must be a real reference. @@ -2310,17 +2312,19 @@ sub SetEventState($$) my $node_id = $self->node_id(); - # - # If using the event system, we send out an event for the state daemon to - # pick up. Otherwise, we just set the state in the database ourselves - # - return event::EventSendFatal(objtype => TBDB_TBEVENT_NODESTATE, - objname => $node_id, - eventtype => $state, - host => $BOSSNODE); - - return $self->Update({"eventstate" => $state, - "state_timestamp" => time()}); + if (!defined($fatal) || $fatal) { + $rval = event::EventSendFatal(objtype => TBDB_TBEVENT_NODESTATE, + objname => $node_id, + eventtype => $state, + host => $BOSSNODE); + } + else { + $rval = event::EventSendWarn(objtype => TBDB_TBEVENT_NODESTATE, + objname => $node_id, + eventtype => $state, + host => $BOSSNODE); + } + return ($rval == 1 ? 0 : -1); } sub ResetStartStatus($) diff --git a/db/libdb.pm.in b/db/libdb.pm.in index d96198b5109dbb05b164004cb7c07eedd3c6b52d..3f08c1d5c915a36481c3710fa480d2da5cbf0f0b 100644 --- a/db/libdb.pm.in +++ b/db/libdb.pm.in @@ -940,24 +940,10 @@ sub TBSetNodeEventState($$;$) { my ($node, $state, $fatal) = @_; - # - # If using the event system, we send out an event for the state daemon to - # pick up. Otherwise, we just set the state in the database ourselves - # - require event; - - if (!defined($fatal) || $fatal) { - return event::EventSendFatal(objtype => TBDB_TBEVENT_NODESTATE, - objname => $node, - eventtype => $state, - host => $BOSSNODE); - } - else { - return event::EventSendWarn(objtype => TBDB_TBEVENT_NODESTATE, - objname => $node, - eventtype => $state, - host => $BOSSNODE); + if (!ref($node)) { + $node = LocalNodeLookup($node); } + return $node->SetEventState($state, $fatal); } #