mvrf_avoid_snmp_yml_config: made changes to pass SNMP config from con… (#4057)
* mvrf_avoid_snmp_yml_config: made changes to pass SNMP config from confiDB to snmpd.conf without using snmp.yml * added a missing if condition
This commit is contained in:
parent
2e36b25c5a
commit
7cb63008d7
@ -15,16 +15,10 @@
|
||||
|
||||
# Listen for connections on all ip addresses, including eth0, ipv4 lo
|
||||
#
|
||||
{% if snmp_agent_address_1 or snmp_agent_address_2 or snmp_agent_address_3 %}
|
||||
{% if snmp_agent_address_1 %}
|
||||
agentAddress {{ snmp_agent_address_1 }}
|
||||
{% endif %}
|
||||
{% if snmp_agent_address_2 %}
|
||||
agentAddress {{ snmp_agent_address_2 }}
|
||||
{% endif %}
|
||||
{% if snmp_agent_address_3 %}
|
||||
agentAddress {{ snmp_agent_address_3 }}
|
||||
{% endif %}
|
||||
{% if SNMP_AGENT_ADDRESS_CONFIG %}
|
||||
{% for (agentip, port, vrf) in SNMP_AGENT_ADDRESS_CONFIG %}
|
||||
agentAddress {{ agentip }}{% if port %}:{{ port }}{% endif %}{% if vrf %}%{{ vrf }}{% endif %}{{ "" }}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
agentAddress udp:161
|
||||
agentAddress udp6:161
|
||||
@ -105,20 +99,32 @@ load 12 10 5
|
||||
# Note: disabled snmp traps due to side effect of causing snmpd to listen on all ports (0.0.0.0)
|
||||
#
|
||||
# send SNMPv1 traps
|
||||
{%if v1_trap_dest and v1_trap_dest != 'NotConfigured' %}
|
||||
trapsink {{ v1_trap_dest }}
|
||||
{% if SNMP_TRAP_CONFIG and SNMP_TRAP_CONFIG['v1TrapDest'] %}
|
||||
{% set v1SnmpTrapIp = SNMP_TRAP_CONFIG['v1TrapDest']['DestIp'] %}
|
||||
{% set v1SnmpTrapPort = SNMP_TRAP_CONFIG['v1TrapDest']['DestPort'] %}
|
||||
{% set v1SnmpTrapVrf = SNMP_TRAP_CONFIG['v1TrapDest']['vrf'] %}
|
||||
{% set v1SnmpTrapComm = SNMP_TRAP_CONFIG['v1TrapDest']['Community'] %}
|
||||
trapsink {{ v1SnmpTrapIp }}:{{ v1SnmpTrapPort }}{% if v1SnmpTrapVrf != 'None' %}%{{ v1SnmpTrapVrf }}{% endif %} {{ v1SnmpTrapComm }}{{ "" }}
|
||||
{% else %}
|
||||
#trapsink localhost public
|
||||
{% endif %}
|
||||
# send SNMPv2c traps
|
||||
{%if v2_trap_dest and v2_trap_dest != 'NotConfigured' %}
|
||||
trap2sink {{ v2_trap_dest }}
|
||||
{% if SNMP_TRAP_CONFIG and SNMP_TRAP_CONFIG['v2TrapDest'] %}
|
||||
{% set v2SnmpTrapIp = SNMP_TRAP_CONFIG['v2TrapDest']['DestIp'] %}
|
||||
{% set v2SnmpTrapPort = SNMP_TRAP_CONFIG['v2TrapDest']['DestPort'] %}
|
||||
{% set v2SnmpTrapVrf = SNMP_TRAP_CONFIG['v2TrapDest']['vrf'] %}
|
||||
{% set v2SnmpTrapComm = SNMP_TRAP_CONFIG['v2TrapDest']['Community'] %}
|
||||
trap2sink {{ v2SnmpTrapIp }}:{{ v2SnmpTrapPort }}{% if v2SnmpTrapVrf != 'None' %}%{{ v2SnmpTrapVrf }}{% endif %} {{ v2SnmpTrapComm }}{{ "" }}
|
||||
{% else %}
|
||||
#trap2sink localhost public
|
||||
{% endif %}
|
||||
# send SNMPv2c INFORMs
|
||||
{%if v3_trap_dest and v3_trap_dest != 'NotConfigured' %}
|
||||
informsink {{ v3_trap_dest }}
|
||||
{% if SNMP_TRAP_CONFIG and SNMP_TRAP_CONFIG['v3TrapDest'] %}
|
||||
{% set v3SnmpTrapIp = SNMP_TRAP_CONFIG['v3TrapDest']['DestIp'] %}
|
||||
{% set v3SnmpTrapPort = SNMP_TRAP_CONFIG['v3TrapDest']['DestPort'] %}
|
||||
{% set v3SnmpTrapVrf = SNMP_TRAP_CONFIG['v3TrapDest']['vrf'] %}
|
||||
{% set v3SnmpTrapComm = SNMP_TRAP_CONFIG['v3TrapDest']['Community'] %}
|
||||
trapsink {{ v3SnmpTrapIp }}:{{ v3SnmpTrapPort }}{% if v3SnmpTrapVrf != 'None' %}%{{ v3SnmpTrapVrf }}{% endif %} {{ v3SnmpTrapComm }}{{ "" }}
|
||||
{% else %}
|
||||
#informsink localhost public
|
||||
{% endif %}
|
||||
|
@ -90,77 +90,6 @@ function preStartAction()
|
||||
fi
|
||||
{%- elif docker_container_name == "snmp" %}
|
||||
sonic-db-cli STATE_DB HSET 'DEVICE_METADATA|localhost' chassis_serial_number $(decode-syseeprom -s)
|
||||
vrfenabled=`sonic-db-cli CONFIG_DB hget "MGMT_VRF_CONFIG|vrf_global" mgmtVrfEnabled`
|
||||
v1SnmpTrapIp=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v1TrapDest" DestIp`
|
||||
v1SnmpTrapPort=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v1TrapDest" DestPort`
|
||||
v1Vrf=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v1TrapDest" vrf`
|
||||
v1Comm=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v1TrapDest" Community`
|
||||
v2SnmpTrapIp=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v2TrapDest" DestIp`
|
||||
v2SnmpTrapPort=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v2TrapDest" DestPort`
|
||||
v2Vrf=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v2TrapDest" vrf`
|
||||
v2Comm=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v2TrapDest" Community`
|
||||
v3SnmpTrapIp=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v3TrapDest" DestIp`
|
||||
v3SnmpTrapPort=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v3TrapDest" DestPort`
|
||||
v3Vrf=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v3TrapDest" vrf`
|
||||
v3Comm=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v3TrapDest" Community`
|
||||
|
||||
if [ "${v1SnmpTrapIp}" != "" ]
|
||||
then
|
||||
if [ "${v1Vrf}" != "None" ]
|
||||
then
|
||||
sed -i "s/v1_trap_dest:.*/v1_trap_dest: ${v1SnmpTrapIp}:${v1SnmpTrapPort}%${v1Vrf} ${v1Comm}/" "/etc/sonic/snmp.yml"
|
||||
else
|
||||
sed -i "s/v1_trap_dest:.*/v1_trap_dest: ${v1SnmpTrapIp}:${v1SnmpTrapPort} ${v1Comm}/" "/etc/sonic/snmp.yml"
|
||||
fi
|
||||
else
|
||||
sed -i "s/v1_trap_dest:.*/v1_trap_dest: NotConfigured/" "/etc/sonic/snmp.yml"
|
||||
fi
|
||||
if [ "${v2SnmpTrapIp}" != "" ]
|
||||
then
|
||||
if [ "${v2Vrf}" != "None" ]
|
||||
then
|
||||
sed -i "s/v2_trap_dest:.*/v2_trap_dest: ${v2SnmpTrapIp}:${v2SnmpTrapPort}%${v2Vrf} ${v2Comm}/" "/etc/sonic/snmp.yml"
|
||||
else
|
||||
sed -i "s/v2_trap_dest:.*/v2_trap_dest: ${v2SnmpTrapIp}:${v2SnmpTrapPort} ${v2Comm}/" "/etc/sonic/snmp.yml"
|
||||
fi
|
||||
else
|
||||
sed -i "s/v2_trap_dest:.*/v2_trap_dest: NotConfigured/" "/etc/sonic/snmp.yml"
|
||||
fi
|
||||
if [ "${v3SnmpTrapIp}" != "" ]
|
||||
then
|
||||
if [ "${v3Vrf}" != "None" ]
|
||||
then
|
||||
sed -i "s/v3_trap_dest:.*/v3_trap_dest: ${v3SnmpTrapIp}:${v3SnmpTrapPort}%${v3Vrf} ${v3Comm}/" "/etc/sonic/snmp.yml"
|
||||
else
|
||||
sed -i "s/v3_trap_dest:.*/v3_trap_dest: ${v3SnmpTrapIp}:${v3SnmpTrapPort} ${v3Comm}/" "/etc/sonic/snmp.yml"
|
||||
fi
|
||||
else
|
||||
sed -i "s/v3_trap_dest:.*/v3_trap_dest: NotConfigured/" "/etc/sonic/snmp.yml"
|
||||
fi
|
||||
|
||||
echo -n "" > /tmp/snmpagentaddr.yml
|
||||
# TODO
|
||||
# we should avoid using 'keys' operation via redis-cli or sonic-db-cli
|
||||
# there would be an issue when KEY in database contains space or '\n'
|
||||
# for loop on the non-tty 'keys' output will take the space or `\n` as seperator when parsing the element
|
||||
keys=`sonic-db-cli CONFIG_DB keys "SNMP_AGENT_ADDRESS_CONFIG|*"`
|
||||
count=1
|
||||
for key in $keys;do
|
||||
ip=`echo $key|cut -d "|" -f2`
|
||||
echo -n "snmp_agent_address_$count: $ip" >> /tmp/snmpagentaddr.yml
|
||||
port=`echo $key|cut -d "|" -f3`
|
||||
if [ -n "$port" ]; then
|
||||
echo -n ":$port" >> /tmp/snmpagentaddr.yml
|
||||
fi
|
||||
vrf=`echo $key|cut -d "|" -f4`
|
||||
if [ -n "$vrf" ]; then
|
||||
echo -n "%$vrf" >> /tmp/snmpagentaddr.yml
|
||||
fi
|
||||
echo "" >> /tmp/snmpagentaddr.yml
|
||||
count=$((count+1))
|
||||
done
|
||||
sed -i '/snmp_agent_address_*/d' /etc/sonic/snmp.yml
|
||||
cat /tmp/snmpagentaddr.yml >> /etc/sonic/snmp.yml
|
||||
{%- else %}
|
||||
: # nothing
|
||||
{%- endif %}
|
||||
|
@ -1,5 +1,2 @@
|
||||
snmp_rocommunity: public
|
||||
snmp_location: public
|
||||
v1_trap_dest: NotConfigured
|
||||
v2_trap_dest: NotConfigured
|
||||
v3_trap_dest: NotConfigured
|
||||
|
Loading…
Reference in New Issue
Block a user