def __init__(self, filename): self.agent_mgr = sdk.get_agent_mgr() self.tracer = eossdk.Tracer("FileWatcher") eossdk_utils.EosSdkAgent.__init__(self) eossdk.AgentHandler.__init__(self, self.agent_mgr) eossdk.FdHandler.__init__(self) self.tracer.trace0("Watching %r" % filename) self.wm = pyinotify.WatchManager() # Pass the InotifyHandler's that wille be created a pointer to # ourselves by wrapping it in functools.partial: handler = functools.partial(InotifyHandler, parent=self) # pylint: disable-msg=E1101 self.wm.watch_transient_file(filename, pyinotify.IN_MODIFY, handler) # pylint: enable-msg=E1101 self.inotifier = pyinotify.AsyncNotifier(self.wm, InotifyHandler(parent=self)) # We coalesce events because some editors (or unix operations) cause # multiple changes on one save. self.inotifier.coalesce_events(True) # Now that we've set up our inotify watcher and notifier, grab # the underlying file descriptor and pass it to the SDK to be # watched. When the OS detects a change to the file, we'll self.inotify_fd = self.wm.get_fd() self.tracer.trace0("Watching inotify fd: %d" % self.inotify_fd) self.watch_readable(self.inotify_fd, True)
def __init__(self, sdk, timeoutMgr, VrfMgr, EapiMgr): self.agentMgr = sdk.get_agent_mgr() self.tracer = eossdk.Tracer("TCPCheckPythonAgent") eossdk.AgentHandler.__init__(self, self.agentMgr) #Setup timeout handler eossdk.TimeoutHandler.__init__(self, timeoutMgr) self.tracer.trace0("Python agent constructed") eossdk.VrfHandler.__init__(self, VrfMgr) self.VrfMgr = VrfMgr self.EapiMgr = EapiMgr # These are the defaults. The config can override these # Default check Interval in seconds self.CHECKINTERVAL = 5 # # CURRENTSTATUS 1 is Good, 0 is Down self.CURRENTSTATUS = 1 # Default number of failures before determining a down neighbor self.FAILCOUNT = 2 # # Default HTTP Request timeout in seconds self.HTTPTIMEOUT = 15 # We need a global variable to use for failure counts. When we reach FAILCOUNT, then we'll # consider host/http down. self.FAILITERATION = 0 # CONFIGCHECK 1 if the config looks ok, 0 if bad. Will set this as semaphore for # basic configuration check self.CONFIGCHECK = 1 #Packetbuffer size for socket.recv() self.PACKETSIZE = 20000
def __init__(self, sdk, timeoutMgr): self.agentMgr = sdk.get_agent_mgr() self.tracer = eossdk.Tracer("toptalkersPythonAgent") eossdk.AgentHandler.__init__(self, self.agentMgr) #Setup timeout handler eossdk.TimeoutHandler.__init__(self, timeoutMgr) self.tracer.trace0("Python agent constructed")
def __init__(self, sdk): # Carry out SDK-specific initialisation syslog.syslog("Initialization starting") agent_mgr = sdk.get_agent_mgr() acl_mgr = sdk.get_acl_mgr() intf_mgr = sdk.get_intf_mgr() self.agent_mgr = agent_mgr self.acl_mgr = acl_mgr self.intf_mgr = intf_mgr eossdk.AgentHandler.__init__(self, agent_mgr) eossdk.AclHandler.__init__(self, acl_mgr) eossdk.IntfHandler.__init__(self, intf_mgr) eossdk.FdHandler.__init__(self) self.tracer = eossdk.Tracer("ACLeratePythonAgent") self.tracer.trace0("Python agent constructed") # Now register with inotify to receive be notified of changes to the config file self.config_file = ACLerate_config_file self.wm = pyinotify.WatchManager() handler = functools.partial(InotifyHandler, parent=self) mask = pyinotify.IN_MODIFY | pyinotify.IN_CREATE | pyinotify.IN_DELETE | pyinotify.IN_CLOSE_WRITE self.wm.watch_transient_file(ACLerate_config_file, mask, handler) self.inotifier = pyinotify.AsyncNotifier(self.wm, InotifyHandler(parent=self)) self.inotifier.coalesce_events(True) self.inotify_fd = self.wm.get_fd() self.watch_readable(self.inotify_fd, True)
def __init__(self, intfMgr, agentMgr): eossdk.AgentHandler.__init__(self, agentMgr) eossdk.IntfHandler.__init__(self, intfMgr) self.tracer = eossdk.Tracer("ZtpsInterfaceMonitor") self.intfMgr_ = intfMgr self.agentMgr_ = agentMgr self.dhcpdRestarts_ = 0 self.dhcpdRestartsFailed_ = 0
def __init__(self, sdk, agentMgr, intfMgr): self.agentMgr = sdk.get_agent_mgr() self.tracer = eossdk.Tracer("intfReactorPythonAgent") eossdk.AgentHandler.__init__(self, self.agentMgr) eossdk.IntfHandler.__init__(self, intfMgr) syslog.syslog("IntReactor Python Agent - init") self.tracer.trace0("Python agent constructed") self.intfMgr_ = intfMgr self.agentMgr_ = agentMgr
def __init__(self, intfMgr, agentMgr): eossdk.AgentHandler.__init__(self, agentMgr) eossdk.IntfHandler.__init__(self, intfMgr) self.tracer = eossdk.Tracer("EosSdkInterfaceMonitor") self.intfMgr_ = intfMgr self.agentMgr_ = agentMgr # Keep track of the total number of state changes. This number # gets reset whenever the agent is restarted. self.numIntfChanges_ = 0 self.tracer.trace0("Constructed")
def __init__(self, agentMgr, fibMgr, aclMgr, policyMapMgr, classMapMgr, nexthopGroupMgr): eossdk.AgentHandler.__init__(self, agentMgr) eossdk.FibHandler.__init__(self, fibMgr) eossdk.AclHandler.__init__(self, aclMgr) eossdk.PolicyMapHandler.__init__(self, policyMapMgr) self.tracer = eossdk.Tracer("RaRedirector") self.agentMgr_ = agentMgr self.fibMgr_ = fibMgr self.aclMgr_ = aclMgr self.policyMapMgr_ = policyMapMgr self.classMapMgr_ = classMapMgr self.nexthopGroupMgr_ = nexthopGroupMgr self.tracer.trace0("Constructed")
def __init__(self, hwTableMgr, agentMgr): '''Class TCAMonitor initilization and construction Args: self: init TCAMonitor Class self object hwTableMgr: Hardware Table Manager called from SDK to manage hardware tables registered to sysdb agentMgr: Agent Manager called from SDK to manage the agent lifecycle Returns: None ''' eossdk.AgentHandler.__init__(self, agentMgr) eossdk.HardwareTableHandler.__init__(self, hwTableMgr) self.tracer = eossdk.Tracer("EosSdkTCAMonitor") self.hwTableMgr_ = hwTableMgr self.agentMgr_ = agentMgr self.tracer.trace0("Constructed")
def __init__(self, sdk, address=("0.0.0.0", 50001), backlog=5, vrf="default"): self.tracer = eossdk.Tracer("Cygnus") self._buffer = None self.agent_mgr = sdk.get_agent_mgr() self.nhg_mgr = sdk.get_nexthop_group_mgr() self.ip_route_mgr = sdk.get_ip_route_mgr() eossdk.AgentHandler.__init__(self, self.agent_mgr) ServerHandler.__init__(self, sdk, address, backlog=backlog, vrf=vrf)
def __init__(self, sdk): self.agentMgr = sdk.get_agent_mgr() self.timeoutMgr = sdk.get_timeout_mgr() eossdk.AgentHandler.__init__(self, self.agentMgr) eossdk.TimeoutHandler.__init__(self, self.timeoutMgr) self.tracer = eossdk.Tracer("RouteUpdaterPythonAgent") self.ipMgr = sdk.get_ip_route_mgr() self.nhgMgr = sdk.get_nexthop_group_mgr() self.phase = 0 self.isV6Phase = False self.isNewApi = False self.tag = 42 self.ipMgr.tag_is(self.tag) self.tracer.trace0("Constructed agent")
def __init__(self, nbrMgr, agentMgr): eossdk.AgentHandler.__init__(self, agentMgr) eossdk.NeighborTableHandler.__init__(self, nbrMgr) self.tracer = eossdk.Tracer("EosSdkNeighborMonitor") self.nbrMgr_ = nbrMgr self.agentMgr_ = agentMgr # Keep track of the total number of state changes. This number # gets reset whenever the agent is restarted. self.numNbrChanges_ = 0 self.tracer.trace0("Constructed") # To notify external subscribers self._msg_queue = multiprocessing.Queue() # for epoll dict fd to socket self._sock_dict = {}
def __init__(self, sdk, config_file="MplsTunnelLivenessConfig.json"): """ Create the agent. Requires an eossdk handle, as well as the input configuration """ self.agent_mgr = sdk.get_agent_mgr() self.eth_intf_mgr = sdk.get_eth_intf_mgr() self.ip_intf_mgr = sdk.get_ip_intf_mgr() self.mac_table_mgr = sdk.get_mac_table_mgr() self.neighbor_table_mgr = sdk.get_neighbor_table_mgr() self.tracer = eossdk.Tracer("MplsTunnelLivenessAgent") eossdk_utils.EosSdkAgent.__init__(self) eossdk.AgentHandler.__init__(self, self.agent_mgr) eossdk.TimeoutHandler.__init__(self, sdk.get_timeout_mgr()) eossdk.FdHandler.__init__(self) self.tracer.trace0("MPLS tunnel liveness agent constructed") self.initialized = False self.pid = os.getpid() # The l3 interface we should grab our "SRC IP" from. Read from # the config: self.src_intf = None self.src_ip = None # Resolved after reading from config # A UDP socket that receives liveness packets from other # agents. Created during on_initialized self.rx_sock = None # A mapping from remote switch IP to RemoteSwitch() self.remote_switches = {} self.config_file = config_file self.wm = pyinotify.WatchManager() handler = functools.partial(InotifyHandler, parent=self) # pylint: disable-msg=E1101 self.wm.watch_transient_file(config_file, pyinotify.IN_MODIFY, handler) # pylint: enable-msg=E1101 self.notifier = pyinotify.AsyncNotifier(self.wm, InotifyHandler(parent=self)) self.notifier.coalesce_events(True) self.inotify_fd = self.wm.get_fd() self.watch_readable(self.inotify_fd, True) # Read our initial configuration self.process_config()
def __init__(self, sdk, timeoutMgr, VrfMgr, EapiMgr): self.agentMgr = sdk.get_agent_mgr() self.tracer = eossdk.Tracer("PingCheckPythonAgent") eossdk.AgentHandler.__init__(self, self.agentMgr) #Setup timeout handler eossdk.TimeoutHandler.__init__(self, timeoutMgr) self.tracer.trace0("Python agent constructed") eossdk.VrfHandler.__init__(self, VrfMgr) self.VrfMgr = VrfMgr self.EapiMgr = EapiMgr # These are the defaults. The config can override these # Make them an instance created under __init__ . # Its a lot cleaner than creating global variables. self.SOURCEINTFADDR = None # Default number of ICMP pings to send to each host. self.PINGCOUNT = 2 # Default Ping timeout self.PINGTIMEOUT = 2 # Default number of failures before declaring a neighbor(s) up. 0 means we react immediately self.HOLDDOWN = 0 # Default number of failures before declaring a neighbor(s) down. 0 means we react immediately self.HOLDUP = 0 # Default check Interval in seconds self.CHECKINTERVAL = 5 # # CURRENTSTATUS 1 is Good, 0 is Down. Use this as a flag for status. self.CURRENTSTATUS = 1 # Global counter that we'll use between iterations self.ITERATION = 0 # We need a global list that will be there between iterations. Including after a reconfiguration self.DEADIPV4 = [] self.GOODIPV4 = []
def __init__(self, sdk): self.agentMgr = sdk.get_agent_mgr() self.tracer = eossdk.Tracer("HelloWorldPythonAgent") eossdk.AgentHandler.__init__(self, self.agentMgr) self.tracer.trace0("Python agent constructed")
def __init__(self): """Initialise an RpkiBase instance.""" self.tracer = eossdk.Tracer(self.__class__.__name__)
# will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser # General Public License for more details. You should have received a copy # of the GNU Lesser General Public License along with this program. If not, # see <http://www.gnu.org/licenses/>. import imp import logging import socket import sys import threading import traceback import eossdk tracer = eossdk.Tracer("tcollectorAgent") warn = tracer.trace0 info = tracer.trace1 debug = tracer.trace9 TCOLLECTOR_PATH = "/usr/local/tcollector/tcollector.py" DEFAULT_TSD_PORT = 4242 class SdkLogger(object): """Pretends to be a logging.Logger but logs using EOS SDK. Note that this only implements a subset of the logging.Logger API. """ # We do format string expansion in Python to work around BUG116830.
def __init__(self, name): self.tracer = eossdk.Tracer(name)