Skip to content

Commit

Permalink
Run logentry before changing portstate value
Browse files Browse the repository at this point in the history
makes it so record_downtime works as it should,
it needs to know the state prior to it changing
  • Loading branch information
stveit committed Aug 21, 2024
1 parent a011de3 commit 186a563
Showing 1 changed file with 19 additions and 14 deletions.
33 changes: 19 additions & 14 deletions src/zino/trapobservers/link_traps.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,17 +114,15 @@ def update_flapping_event(
It also updates the flap state of the port to indicate it is currently in a flapping state.
"""
event = self.open_portstate_event(device, new_state, port, reason)

flap = self.state.flapping.interfaces[interface]
event.flapstate = FlapState.FLAPPING
event.flaps = flap.flaps
msg = (
f'{device.name}: intf "{port.ifdescr}" ix {port.ifindex} ({port.ifalias}) flapping, '
f"{event.flaps} flaps, penalty {flap.hist_val:.2f}"
f"{flap.flaps} flaps, penalty {flap.hist_val:.2f}"
)
_logger.info(msg)
event.add_log(msg)
event = self.open_portstate_event(device, new_state, port, reason, log=msg)
event.flapstate = FlapState.FLAPPING
event.flaps = flap.flaps

self.state.events.commit(event)
flap.in_active_flap_state = True
return event
Expand All @@ -136,7 +134,11 @@ def update_non_flapping_event(
It also removes the recorded flap stats for the port if was previously known to be in a flapping state.
"""
event = self.open_portstate_event(device, new_state, port, reason)
msg = f'{device.name}: intf "{port.ifdescr}" ix {port.ifindex} link{new_state.capitalize()}'
if reason:
msg = f'{msg}, "{reason}"'

event = self.open_portstate_event(device, new_state, port, reason, log=msg)

if flap := self.state.flapping.interfaces.get(interface):
event.flaps = flap.flaps
Expand All @@ -147,11 +149,6 @@ def update_non_flapping_event(
event.add_log(msg)
self.state.flapping.unflap(interface)

msg = f'{device.name}: intf "{port.ifdescr}" ix {port.ifindex} link{new_state.capitalize()}'
if reason:
msg = f'{msg}, "{reason}"'
_logger.info(msg)
event.add_log(msg)
self.state.events.commit(event)

if polldev := self.polldevs.get(device.name):
Expand All @@ -166,10 +163,18 @@ def update_non_flapping_event(
return event

def open_portstate_event(
self, device: DeviceState, new_state: InterfaceState, port: Port, reason: Optional[str]
self,
device: DeviceState,
new_state: InterfaceState,
port: Port,
reason: Optional[str],
log: Optional[str] = None,
) -> PortStateEvent:
"""Opens or returns an open port state event for the port referenced in an incoming trap message"""
event = self.state.events.get_or_create_event(device.name, port.ifindex, PortStateEvent)
if log:
_logger.info(log)
event.add_log(log)
event.portstate = new_state
event.port = port.ifdescr
event.ifindex = port.ifindex
Expand Down

0 comments on commit 186a563

Please sign in to comment.