Skip to content

Commit 78aa157

Browse files
committed
linux pack: add LinuxFileWatchSensor.update_trigger
1 parent 465a8f4 commit 78aa157

File tree

1 file changed

+33
-5
lines changed

1 file changed

+33
-5
lines changed

contrib/linux/sensors/file_watch_sensor.py

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -427,20 +427,48 @@ def add_trigger(self, trigger):
427427
self.log.error('Received trigger type without "file_path" field.')
428428
return
429429

430-
trigger = trigger.get("ref", None)
430+
trigger_ref = trigger.get("ref", None)
431431

432-
if not trigger:
433-
raise Exception(f"Trigger {trigger} did not contain a ref.")
432+
if not trigger_ref:
433+
raise Exception(f"Trigger {trigger_ref} did not contain a ref.")
434434

435435
self.tail_manager.tail_file(file_path, self._handle_line)
436436
self.file_ref[file_path] = trigger
437437

438-
self.log.info(f"Added file '{file_path}' ({trigger}) to watch list.")
438+
self.log.info(f"Added file '{file_path}' ({trigger_ref}) to watch list.")
439439

440440
self.tail_manager.start()
441441

442442
def update_trigger(self, trigger):
443-
pass
443+
file_path = trigger["parameters"].get("file_path", None)
444+
445+
if not file_path:
446+
self.log.error('Received trigger type without "file_path" field.')
447+
return
448+
449+
trigger_ref = trigger.get("ref", None)
450+
451+
if file_path in self.file_ref:
452+
self.log.debug(f"No update required as file '{file_path}' ({trigger_ref}) already in watch list.")
453+
return
454+
455+
if not trigger_ref:
456+
raise Exception(f"Trigger {trigger_ref} did not contain a ref.")
457+
458+
for old_file_path, ref in self.file_ref.items():
459+
if ref == trigger_ref:
460+
self.tail_manager.stop_tailing_file(old_file_path, self._handle_line)
461+
self.file_ref.pop(old_file_path)
462+
463+
self.tail_manager.tail_file(file_path, self._handle_line)
464+
self.file_ref[file_path] = trigger
465+
466+
self.log.info(f"Updated to add file '{file_path}' instead of '{old_file_path}' ({trigger_ref}) in watch list.")
467+
break
468+
469+
if file_path not in self.file_ref:
470+
# Maybe the add_trigger message was missed.
471+
self.add_trigger(trigger)
444472

445473
def remove_trigger(self, trigger):
446474
file_path = trigger["parameters"].get("file_path", None)

0 commit comments

Comments
 (0)