Remove all global variables

This commit is contained in:
Pim van Pelt
2023-01-08 13:21:00 +01:00
parent 5e11539b44
commit fe794ed286
2 changed files with 41 additions and 52 deletions

View File

@ -19,7 +19,7 @@ class NullHandler(logging.Handler):
class Agent(object): class Agent(object):
def __init__(self, server_address="/var/agentx/master", period=30.0): def __init__(self, server_address="/var/agentx/master", period=30.0, args=None):
self.logger = logging.getLogger("agentx.agent") self.logger = logging.getLogger("agentx.agent")
self.logger.addHandler(NullHandler()) self.logger.addHandler(NullHandler())
@ -31,6 +31,7 @@ class Agent(object):
self._net = Network(server_address=server_address) self._net = Network(server_address=server_address)
self._oid_list = [] self._oid_list = []
self._args = args
def _update(self): def _update(self):
ds = self.update() ds = self.update()

View File

@ -64,29 +64,27 @@ def get_description_by_ifname(config, name):
class MyAgent(agentx.Agent): class MyAgent(agentx.Agent):
def setup(self): def setup(self):
global vppstat, vpp, logger, args
self.config = None self.config = None
if args.config: if self._args.config:
try: try:
with open(args.config, "r") as f: with open(self._args.config, "r") as f:
self.logger.info("Loading configfile %s" % args.config) self.logger.info("Loading configfile %s" % self._args.config)
self.config = yaml.load(f, Loader=yaml.FullLoader) self.config = yaml.load(f, Loader=yaml.FullLoader)
self.logger.debug("Config: %s" % self.config) self.logger.debug("Config: %s" % self.config)
except: except:
self.logger.error("Couldn't read config from %s" % args.config) self.logger.error("Couldn't read config from %s" % self._args.config)
try: try:
self.logger.info("Connecting to VPP Stats Segment") self.logger.info("Connecting to VPP Stats Segment")
vppstat = VPPStats(socketname="/run/vpp/stats.sock", timeout=2) self.vppstat = VPPStats(socketname="/run/vpp/stats.sock", timeout=2)
vppstat.connect() self.vppstat.connect()
except: except:
self.logger.error("Could not connect to VPPStats segment") self.logger.error("Could not connect to VPPStats segment")
return False return False
try: try:
vpp = VPPApi(clientname="vpp-snmp-agent") self.vpp = VPPApi(clientname="vpp-snmp-agent")
vpp.connect() self.vpp.connect()
except: except:
self.logger.error("Could not connect to VPP API") self.logger.error("Could not connect to VPP API")
return False return False
@ -97,41 +95,33 @@ class MyAgent(agentx.Agent):
return True return True
def update(self): def update(self):
global vppstat, vpp, args
try: try:
vppstat.connect() self.vppstat.connect()
except: except:
self.logger.error("Could not connect to VPPStats segment") self.logger.error("Could not connect to VPPStats segment")
return False return False
try:
vpp.connect()
except:
self.logger.error("Could not connect to VPP API")
return False
ds = agentx.DataSet() ds = agentx.DataSet()
ifaces = vpp.get_ifaces() ifaces = self.vpp.get_ifaces()
lcp = vpp.get_lcp() lcp = self.vpp.get_lcp()
num_ifaces = len(ifaces) num_ifaces = len(ifaces)
num_vppstat = len(vppstat["/if/names"]) num_vppstat = len(self.vppstat["/if/names"])
num_lcp = len(lcp) num_lcp = len(lcp)
self.logger.debug("LCP: %s" % (lcp)) self.logger.debug("LCP: %s" % (lcp))
self.logger.debug( self.logger.debug(
"Retrieved Interfaces: vppapi=%d vppstats=%d lcp=%d" "Retrieved Interfaces: vppapi=%d vppstat=%d lcp=%d"
% (num_ifaces, num_vppstat, num_lcp) % (num_ifaces, num_vppstat, num_lcp)
) )
if num_ifaces != num_vppstat: if num_ifaces != num_vppstat:
self.logger.warning( self.logger.warning(
"Interfaces count mismatch: vppapi=%d vppstats=%d" "Interfaces count mismatch: vppapi=%d vppstat=%d"
% (num_ifaces, num_vppstat) % (num_ifaces, num_vppstat)
) )
for i in range(len(vppstat["/if/names"])): for i in range(len(self.vppstat["/if/names"])):
ifname = vppstat["/if/names"][i] ifname = self.vppstat["/if/names"][i]
idx = 1000 + i idx = 1000 + i
ds.set("1.3.6.1.2.1.2.2.1.1.%u" % (idx), "int", idx) ds.set("1.3.6.1.2.1.2.2.1.1.%u" % (idx), "int", idx)
@ -217,117 +207,117 @@ class MyAgent(agentx.Agent):
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.10.%u" % (idx), "1.3.6.1.2.1.2.2.1.10.%u" % (idx),
"u32", "u32",
vppstat["/if/rx"][:, i].sum_octets() % 2 ** 32, self.vppstat["/if/rx"][:, i].sum_octets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.11.%u" % (idx), "1.3.6.1.2.1.2.2.1.11.%u" % (idx),
"u32", "u32",
vppstat["/if/rx"][:, i].sum_packets() % 2 ** 32, self.vppstat["/if/rx"][:, i].sum_packets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.12.%u" % (idx), "1.3.6.1.2.1.2.2.1.12.%u" % (idx),
"u32", "u32",
vppstat["/if/rx-multicast"][:, i].sum_packets() % 2 ** 32, self.vppstat["/if/rx-multicast"][:, i].sum_packets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.13.%u" % (idx), "1.3.6.1.2.1.2.2.1.13.%u" % (idx),
"u32", "u32",
vppstat["/if/rx-no-buf"][:, i].sum() % 2 ** 32, self.vppstat["/if/rx-no-buf"][:, i].sum() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.14.%u" % (idx), "1.3.6.1.2.1.2.2.1.14.%u" % (idx),
"u32", "u32",
vppstat["/if/rx-error"][:, i].sum() % 2 ** 32, self.vppstat["/if/rx-error"][:, i].sum() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.16.%u" % (idx), "1.3.6.1.2.1.2.2.1.16.%u" % (idx),
"u32", "u32",
vppstat["/if/tx"][:, i].sum_octets() % 2 ** 32, self.vppstat["/if/tx"][:, i].sum_octets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.17.%u" % (idx), "1.3.6.1.2.1.2.2.1.17.%u" % (idx),
"u32", "u32",
vppstat["/if/tx"][:, i].sum_packets() % 2 ** 32, self.vppstat["/if/tx"][:, i].sum_packets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.18.%u" % (idx), "1.3.6.1.2.1.2.2.1.18.%u" % (idx),
"u32", "u32",
vppstat["/if/tx-multicast"][:, i].sum_packets() % 2 ** 32, self.vppstat["/if/tx-multicast"][:, i].sum_packets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.19.%u" % (idx), "1.3.6.1.2.1.2.2.1.19.%u" % (idx),
"u32", "u32",
vppstat["/if/drops"][:, i].sum() % 2 ** 32, self.vppstat["/if/drops"][:, i].sum() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.2.2.1.20.%u" % (idx), "1.3.6.1.2.1.2.2.1.20.%u" % (idx),
"u32", "u32",
vppstat["/if/tx-error"][:, i].sum() % 2 ** 32, self.vppstat["/if/tx-error"][:, i].sum() % 2 ** 32,
) )
ds.set("1.3.6.1.2.1.31.1.1.1.1.%u" % (idx), "str", ifName) ds.set("1.3.6.1.2.1.31.1.1.1.1.%u" % (idx), "str", ifName)
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.2.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.2.%u" % (idx),
"u32", "u32",
vppstat["/if/rx-multicast"][:, i].sum_packets() % 2 ** 32, self.vppstat["/if/rx-multicast"][:, i].sum_packets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.3.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.3.%u" % (idx),
"u32", "u32",
vppstat["/if/rx-broadcast"][:, i].sum_packets() % 2 ** 32, self.vppstat["/if/rx-broadcast"][:, i].sum_packets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.4.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.4.%u" % (idx),
"u32", "u32",
vppstat["/if/tx-multicast"][:, i].sum_packets() % 2 ** 32, self.vppstat["/if/tx-multicast"][:, i].sum_packets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.5.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.5.%u" % (idx),
"u32", "u32",
vppstat["/if/tx-broadcast"][:, i].sum_packets() % 2 ** 32, self.vppstat["/if/tx-broadcast"][:, i].sum_packets() % 2 ** 32,
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.6.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.6.%u" % (idx),
"u64", "u64",
vppstat["/if/rx"][:, i].sum_octets(), self.vppstat["/if/rx"][:, i].sum_octets(),
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.7.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.7.%u" % (idx),
"u64", "u64",
vppstat["/if/rx"][:, i].sum_packets(), self.vppstat["/if/rx"][:, i].sum_packets(),
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.8.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.8.%u" % (idx),
"u64", "u64",
vppstat["/if/rx-multicast"][:, i].sum_packets(), self.vppstat["/if/rx-multicast"][:, i].sum_packets(),
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.9.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.9.%u" % (idx),
"u64", "u64",
vppstat["/if/rx-broadcast"][:, i].sum_packets(), self.vppstat["/if/rx-broadcast"][:, i].sum_packets(),
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.10.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.10.%u" % (idx),
"u64", "u64",
vppstat["/if/tx"][:, i].sum_octets(), self.vppstat["/if/tx"][:, i].sum_octets(),
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.11.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.11.%u" % (idx),
"u64", "u64",
vppstat["/if/tx"][:, i].sum_packets(), self.vppstat["/if/tx"][:, i].sum_packets(),
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.12.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.12.%u" % (idx),
"u64", "u64",
vppstat["/if/tx-multicast"][:, i].sum_packets(), self.vppstat["/if/tx-multicast"][:, i].sum_packets(),
) )
ds.set( ds.set(
"1.3.6.1.2.1.31.1.1.1.13.%u" % (idx), "1.3.6.1.2.1.31.1.1.1.13.%u" % (idx),
"u64", "u64",
vppstat["/if/tx-broadcast"][:, i].sum_packets(), self.vppstat["/if/tx-broadcast"][:, i].sum_packets(),
) )
speed = 0 speed = 0
@ -370,8 +360,6 @@ class MyAgent(agentx.Agent):
def main(): def main():
global args
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter) parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument( parser.add_argument(
"-a", "-a",
@ -404,7 +392,7 @@ def main():
agentx.setup_logging(debug=args.debug) agentx.setup_logging(debug=args.debug)
try: try:
a = MyAgent(server_address=args.address, period=args.period) a = MyAgent(server_address=args.address, period=args.period, args=args)
a.run() a.run()
except Exception as e: except Exception as e:
print("Unhandled exception:", e) print("Unhandled exception:", e)