#!/usr/bin/env python3
# Copyright (c) 2020 Arista Networks, Inc.  All rights reserved.
# Arista Networks, Inc. Confidential and Proprietary.

from typing import Optional
from Agent import AgentContainer
import Dot1xWebAgentLib as WebAgentLib
import Tac
import os
import Arnet.NsLib
import Tracing
import QuickTrace

__defaultTraceHandle__ = Tracing.Handle( 'Dot1xWeb' )
warn = QuickTrace.trace0
trace = QuickTrace.trace1
bv = QuickTrace.Var
AGENT_INIT_TIME = 1

def runCmd( cmd: str, ns: Optional[ str ]=None ) -> bool:
   try:
      Arnet.NsLib.runMaybeInNetNs( ns, cmd.split( ' ' ) )
      return True
   except Tac.SystemCommandError:
      return False

def main() -> None:
   agentName = WebAgentLib.name() # type: ignore
   # pylint: disable-next=consider-using-f-string
   qtfile = "{}{}.qt".format( agentName, "-%d" if "QUICKTRACEDIR"
                              not in os.environ else "" )
   QuickTrace.initialize( qtfile, maxStringLen=120 )
   container = AgentContainer( [ WebAgentLib.Dot1xWeb ] )
   # Process name and syslog name equals agent class name. This makes it
   # inconsistent with another agent name used in mount profile, log filename,
   # etc. DO NOT COPY THIS. See AID/8010 Appendix G for more info.
   container.useLegacyName_DO_NOT_COPY_THIS()
   container.runAgents()
   trace( 'Exiting from main' )

if __name__ == "__main__":
   main()
