Source code for saberx.sabercore.triggers.tcptrigger

"""
.. module:: tcptrigger
   :synopsis: Module for firing tcp trigger.
"""

from .triggerbase import TriggerBase
from .tcphandler import TCPHandler

[docs]class TCPTrigger(TriggerBase): """ **Method for initialing memory trigger** """ def __init__(self, **kwargs): super(TCPTrigger, self).__init__(type=kwargs.get("type"), check=kwargs.get("check"), negate=kwargs.get("negate")) self.host = kwargs.get("host", "127.0.0.1") self.port = kwargs.get("port", 80) self.attempts = kwargs.get("attempts", 3) self.threshold = kwargs.get("threshold", 1) self.timeout = kwargs.get("timeout", 5) self.ssl = kwargs.get("ssl", False) self.valid_checks = ["tcp_connect", "tcp_fail"] self.PORT_MIN, self.PORT_MAX = 0, 65535
[docs] def fire_trigger(self): """ **Method to fire the trigger** This method first sanitises the parameters, calls tcp handler to evaluate the trigger conditions and returns trigger status Returns: bool : Trigger fired or not """ if not self.sanitise(): return False, "IMPROPER_ARGUMENTS" trigerred, error = TCPHandler.check_connection(host=self.host, port=self.port, timeout=self.timeout, attempts=self.attempts, threshold=self.threshold, check_type=self.check, ssl=self.ssl) return self.eval_negate(trigerred, error)
[docs] def sanitise(self): """ **Method to check validity of the params** Returns: bool : params are proper or not """ if not self.host: ''' Log error ''' return False if self.port < self.PORT_MIN or self.port > self.PORT_MAX: ''' Log error ''' return False if self.timeout <= 0: ''' Log error ''' return False if self.attempts <= 0: ''' Log error ''' return False if self.threshold <= 0: ''' Log error ''' return False if self.check not in self.valid_checks: ''' Log error ''' return False return True