#!/usr/bin/env python3
# Copyright (c) 2008 Arastra, Inc.  All rights reserved.
# Arastra, Inc. Confidential and Proprietary.
import imp # pylint: disable=deprecated-module
import Agent
import resource

def findModule( name ):
   ''' Wrapper for imp.find_module to handle exception '''
   try:
      return imp.find_module( name )
   except ImportError:
      print( f"Can not find {name}" )
      return None   
   
# If IgmpSnoopingAgent is installed, use IgmpSnoopingAgent.
# Otherwise use IgmpSnoopingStubAgent (in development environment).
if findModule( 'IgmpSnoopingAgent' ):
   moduleName = 'IgmpSnoopingAgent'
else:
   # pkgdeps: rpm IgmpSnooping-lib
   moduleName = 'IgmpSnoopingStubAgent'
   
agentModule = findModule( moduleName )
if agentModule:
   print( f"Starting {moduleName}" )
   fileInfo, pathname, description = agentModule
   IgmpSnoopingAgent = imp.load_module( moduleName, fileInfo, pathname, description )
else:
   assert False, "Can not find required IgmpSnooping agent modules"

resource.setrlimit( resource.RLIMIT_NOFILE, ( 5120, 5120 ) )
container = Agent.AgentContainer( [ IgmpSnoopingAgent.IgmpSnooping ],
                                  scheduledAttrLog=True )
container.runAgents()
