Source code for saberx.sabercore.triggers.processtrigger

"""
.. module:: processtrigger
   :synopsis: Module for firing process trigger.
"""

from .triggerbase import TriggerBase
from .processhandler import ProcessHandler

[docs]class ProcessTrigger(TriggerBase): """ **Class for creating process trigger** """ def __init__(self, **kwargs): """ **Method for initialing memory trigger** """ super(ProcessTrigger, self).__init__(type=kwargs.get("type"), check=kwargs.get("check"), negate=kwargs.get("negate")) if kwargs.get("regex"): self.regex = kwargs.get("regex") self.count = kwargs.get("count", 1) self.operation = kwargs.get("operation", "=") self.valid_checks = ["name", "cmdline"] self.valid_operations = ["=", "<", ">", "<=", ">="]
[docs] def fire_trigger(self): """ **Method to fire the trigger** This method first sanitises the parameters, calls process handler to evaluate the trigger conditions and returns trigger status Returns: bool : Trigger fired or not """ if not self.sanitise(): return False, "INVALID_ARGUMENTS" if self.check == "name": if self.count != None: triggered, error = ProcessHandler.check_name_count(self.regex, self.count, self.operation) return self.eval_negate(triggered, error) triggered, error = ProcessHandler.check_name(self.regex) return self.eval_negate(triggered, error) if self.check == "cmdline": if self.count: triggered, error = ProcessHandler.check_cmdline_count(self.regex, self.count, self.operation) return self.eval_negate(triggered, error) triggered, error = ProcessHandler.check_cmdline(self.regex) return self.eval_negate(triggered, error)
[docs] def sanitise(self): """ **Method to check validity of the params** Returns: bool : params are proper or not """ if not self.type: ''' log error ''' return False if not self.check: ''' log error ''' return False if not (self.check in self.valid_checks): ''' log error ''' return False if self.count and self.count < 0: ''' log error ''' return False if self.count and not self.operation: ''' log error ''' return False if self.operation not in self.valid_operations: ''' log error ''' return False return True