Beispiel #1
0
    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)
Beispiel #2
0
    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
Beispiel #3
0
 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")
Beispiel #4
0
   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
Beispiel #7
0
    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")
Beispiel #9
0
 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")
Beispiel #10
0
    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)
Beispiel #11
0
    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()
Beispiel #14
0
    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 = []
Beispiel #15
0
 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")
Beispiel #16
0
 def __init__(self):
     """Initialise an RpkiBase instance."""
     self.tracer = eossdk.Tracer(self.__class__.__name__)
Beispiel #17
0
# 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.
Beispiel #18
0
 def __init__(self, name):
     self.tracer = eossdk.Tracer(name)