Add argparse and a few useful arguments
Now that we're explicitly connecting via TCP to localhost:705 (which can be overriden by the -a flag), we no longer need to run as root. Therefore, update vpp-snmp-agent.service to run as user Debian-snmp group vpp, so that /run/vpp/{api,stats}.sock are writable. Be explicit on the commandline arguments in the service definition.
This commit is contained in:
@ -3,8 +3,16 @@
|
|||||||
|
|
||||||
from vppstats import VPPStats
|
from vppstats import VPPStats
|
||||||
from vppapi import VPPApi
|
from vppapi import VPPApi
|
||||||
|
import sys
|
||||||
import agentx
|
import agentx
|
||||||
|
|
||||||
|
try:
|
||||||
|
import argparse
|
||||||
|
except ImportError:
|
||||||
|
print("ERROR: install argparse manually: sudo pip install argparse")
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
class MyAgent(agentx.Agent):
|
class MyAgent(agentx.Agent):
|
||||||
def setup(self):
|
def setup(self):
|
||||||
global vppstat, vpp, logger
|
global vppstat, vpp, logger
|
||||||
@ -138,10 +146,19 @@ class MyAgent(agentx.Agent):
|
|||||||
return ds
|
return ds
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
agentx.setup_logging(debug=False)
|
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
|
||||||
|
parser.add_argument('-a', dest='address', default="localhost:705", type=str, help="""Location of the SNMPd agent (unix-path or host:port), default localhost:705""")
|
||||||
|
parser.add_argument('-p', dest='period', type=int, default=30, help="""Period to poll VPP, default 30 (seconds)""")
|
||||||
|
parser.add_argument('-d', dest='debug', action='store_true', help="""Enable debug, default False""")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
if args.debug:
|
||||||
|
print("Arguments:", args)
|
||||||
|
|
||||||
|
agentx.setup_logging(debug=args.debug)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
a = MyAgent(server_address='localhost:705', period=30)
|
a = MyAgent(server_address=args.address, period=args.period)
|
||||||
a.run()
|
a.run()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Unhandled exception:", e)
|
print("Unhandled exception:", e)
|
||||||
|
@ -6,7 +6,8 @@ ConditionPathExists=/etc/snmp/snmpd.conf
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
NetworkNamespacePath=/var/run/netns/dataplane
|
NetworkNamespacePath=/var/run/netns/dataplane
|
||||||
ExecStart=/usr/sbin/vpp-snmp-agent
|
ExecStart=/usr/sbin/vpp-snmp-agent -a localhost:705 -p 30
|
||||||
|
User=Debian-snmp
|
||||||
Group=vpp
|
Group=vpp
|
||||||
ExecReload=/bin/kill -HUP $MAINPID
|
ExecReload=/bin/kill -HUP $MAINPID
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
Reference in New Issue
Block a user