Skip to content

Commit 60d547e

Browse files
kannankvspphuchar
authored andcommitted
mvrf_avoid_snmp_yml_config: made changes to pass SNMP config from con… (sonic-net#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
1 parent 46cf208 commit 60d547e

File tree

3 files changed

+22
-90
lines changed

3 files changed

+22
-90
lines changed

dockers/docker-snmp-sv2/snmpd.conf.j2

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,10 @@
1515

1616
# Listen for connections on all ip addresses, including eth0, ipv4 lo
1717
#
18-
{% if snmp_agent_address_1 or snmp_agent_address_2 or snmp_agent_address_3 %}
19-
{% if snmp_agent_address_1 %}
20-
agentAddress {{ snmp_agent_address_1 }}
21-
{% endif %}
22-
{% if snmp_agent_address_2 %}
23-
agentAddress {{ snmp_agent_address_2 }}
24-
{% endif %}
25-
{% if snmp_agent_address_3 %}
26-
agentAddress {{ snmp_agent_address_3 }}
27-
{% endif %}
18+
{% if SNMP_AGENT_ADDRESS_CONFIG %}
19+
{% for (agentip, port, vrf) in SNMP_AGENT_ADDRESS_CONFIG %}
20+
agentAddress {{ agentip }}{% if port %}:{{ port }}{% endif %}{% if vrf %}%{{ vrf }}{% endif %}{{ "" }}
21+
{% endfor %}
2822
{% else %}
2923
agentAddress udp:161
3024
agentAddress udp6:161
@@ -105,20 +99,32 @@ load 12 10 5
10599
# Note: disabled snmp traps due to side effect of causing snmpd to listen on all ports (0.0.0.0)
106100
#
107101
# send SNMPv1 traps
108-
{%if v1_trap_dest and v1_trap_dest != 'NotConfigured' %}
109-
trapsink {{ v1_trap_dest }}
102+
{% if SNMP_TRAP_CONFIG and SNMP_TRAP_CONFIG['v1TrapDest'] %}
103+
{% set v1SnmpTrapIp = SNMP_TRAP_CONFIG['v1TrapDest']['DestIp'] %}
104+
{% set v1SnmpTrapPort = SNMP_TRAP_CONFIG['v1TrapDest']['DestPort'] %}
105+
{% set v1SnmpTrapVrf = SNMP_TRAP_CONFIG['v1TrapDest']['vrf'] %}
106+
{% set v1SnmpTrapComm = SNMP_TRAP_CONFIG['v1TrapDest']['Community'] %}
107+
trapsink {{ v1SnmpTrapIp }}:{{ v1SnmpTrapPort }}{% if v1SnmpTrapVrf != 'None' %}%{{ v1SnmpTrapVrf }}{% endif %} {{ v1SnmpTrapComm }}{{ "" }}
110108
{% else %}
111109
#trapsink localhost public
112110
{% endif %}
113111
# send SNMPv2c traps
114-
{%if v2_trap_dest and v2_trap_dest != 'NotConfigured' %}
115-
trap2sink {{ v2_trap_dest }}
112+
{% if SNMP_TRAP_CONFIG and SNMP_TRAP_CONFIG['v2TrapDest'] %}
113+
{% set v2SnmpTrapIp = SNMP_TRAP_CONFIG['v2TrapDest']['DestIp'] %}
114+
{% set v2SnmpTrapPort = SNMP_TRAP_CONFIG['v2TrapDest']['DestPort'] %}
115+
{% set v2SnmpTrapVrf = SNMP_TRAP_CONFIG['v2TrapDest']['vrf'] %}
116+
{% set v2SnmpTrapComm = SNMP_TRAP_CONFIG['v2TrapDest']['Community'] %}
117+
trap2sink {{ v2SnmpTrapIp }}:{{ v2SnmpTrapPort }}{% if v2SnmpTrapVrf != 'None' %}%{{ v2SnmpTrapVrf }}{% endif %} {{ v2SnmpTrapComm }}{{ "" }}
116118
{% else %}
117119
#trap2sink localhost public
118120
{% endif %}
119121
# send SNMPv2c INFORMs
120-
{%if v3_trap_dest and v3_trap_dest != 'NotConfigured' %}
121-
informsink {{ v3_trap_dest }}
122+
{% if SNMP_TRAP_CONFIG and SNMP_TRAP_CONFIG['v3TrapDest'] %}
123+
{% set v3SnmpTrapIp = SNMP_TRAP_CONFIG['v3TrapDest']['DestIp'] %}
124+
{% set v3SnmpTrapPort = SNMP_TRAP_CONFIG['v3TrapDest']['DestPort'] %}
125+
{% set v3SnmpTrapVrf = SNMP_TRAP_CONFIG['v3TrapDest']['vrf'] %}
126+
{% set v3SnmpTrapComm = SNMP_TRAP_CONFIG['v3TrapDest']['Community'] %}
127+
trapsink {{ v3SnmpTrapIp }}:{{ v3SnmpTrapPort }}{% if v3SnmpTrapVrf != 'None' %}%{{ v3SnmpTrapVrf }}{% endif %} {{ v3SnmpTrapComm }}{{ "" }}
122128
{% else %}
123129
#informsink localhost public
124130
{% endif %}

files/build_templates/docker_image_ctl.j2

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -90,77 +90,6 @@ function preStartAction()
9090
fi
9191
{%- elif docker_container_name == "snmp" %}
9292
sonic-db-cli STATE_DB HSET 'DEVICE_METADATA|localhost' chassis_serial_number $(decode-syseeprom -s)
93-
vrfenabled=`sonic-db-cli CONFIG_DB hget "MGMT_VRF_CONFIG|vrf_global" mgmtVrfEnabled`
94-
v1SnmpTrapIp=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v1TrapDest" DestIp`
95-
v1SnmpTrapPort=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v1TrapDest" DestPort`
96-
v1Vrf=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v1TrapDest" vrf`
97-
v1Comm=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v1TrapDest" Community`
98-
v2SnmpTrapIp=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v2TrapDest" DestIp`
99-
v2SnmpTrapPort=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v2TrapDest" DestPort`
100-
v2Vrf=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v2TrapDest" vrf`
101-
v2Comm=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v2TrapDest" Community`
102-
v3SnmpTrapIp=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v3TrapDest" DestIp`
103-
v3SnmpTrapPort=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v3TrapDest" DestPort`
104-
v3Vrf=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v3TrapDest" vrf`
105-
v3Comm=`sonic-db-cli CONFIG_DB hget "SNMP_TRAP_CONFIG|v3TrapDest" Community`
106-
107-
if [ "${v1SnmpTrapIp}" != "" ]
108-
then
109-
if [ "${v1Vrf}" != "None" ]
110-
then
111-
sed -i "s/v1_trap_dest:.*/v1_trap_dest: ${v1SnmpTrapIp}:${v1SnmpTrapPort}%${v1Vrf} ${v1Comm}/" "/etc/sonic/snmp.yml"
112-
else
113-
sed -i "s/v1_trap_dest:.*/v1_trap_dest: ${v1SnmpTrapIp}:${v1SnmpTrapPort} ${v1Comm}/" "/etc/sonic/snmp.yml"
114-
fi
115-
else
116-
sed -i "s/v1_trap_dest:.*/v1_trap_dest: NotConfigured/" "/etc/sonic/snmp.yml"
117-
fi
118-
if [ "${v2SnmpTrapIp}" != "" ]
119-
then
120-
if [ "${v2Vrf}" != "None" ]
121-
then
122-
sed -i "s/v2_trap_dest:.*/v2_trap_dest: ${v2SnmpTrapIp}:${v2SnmpTrapPort}%${v2Vrf} ${v2Comm}/" "/etc/sonic/snmp.yml"
123-
else
124-
sed -i "s/v2_trap_dest:.*/v2_trap_dest: ${v2SnmpTrapIp}:${v2SnmpTrapPort} ${v2Comm}/" "/etc/sonic/snmp.yml"
125-
fi
126-
else
127-
sed -i "s/v2_trap_dest:.*/v2_trap_dest: NotConfigured/" "/etc/sonic/snmp.yml"
128-
fi
129-
if [ "${v3SnmpTrapIp}" != "" ]
130-
then
131-
if [ "${v3Vrf}" != "None" ]
132-
then
133-
sed -i "s/v3_trap_dest:.*/v3_trap_dest: ${v3SnmpTrapIp}:${v3SnmpTrapPort}%${v3Vrf} ${v3Comm}/" "/etc/sonic/snmp.yml"
134-
else
135-
sed -i "s/v3_trap_dest:.*/v3_trap_dest: ${v3SnmpTrapIp}:${v3SnmpTrapPort} ${v3Comm}/" "/etc/sonic/snmp.yml"
136-
fi
137-
else
138-
sed -i "s/v3_trap_dest:.*/v3_trap_dest: NotConfigured/" "/etc/sonic/snmp.yml"
139-
fi
140-
141-
echo -n "" > /tmp/snmpagentaddr.yml
142-
# TODO
143-
# we should avoid using 'keys' operation via redis-cli or sonic-db-cli
144-
# there would be an issue when KEY in database contains space or '\n'
145-
# for loop on the non-tty 'keys' output will take the space or `\n` as seperator when parsing the element
146-
keys=`sonic-db-cli CONFIG_DB keys "SNMP_AGENT_ADDRESS_CONFIG|*"`
147-
count=1
148-
for key in $keys;do
149-
ip=`echo $key|cut -d "|" -f2`
150-
echo -n "snmp_agent_address_$count: $ip" >> /tmp/snmpagentaddr.yml
151-
port=`echo $key|cut -d "|" -f3`
152-
if [ -n "$port" ]; then
153-
echo -n ":$port" >> /tmp/snmpagentaddr.yml
154-
fi
155-
vrf=`echo $key|cut -d "|" -f4`
156-
if [ -n "$vrf" ]; then
157-
echo -n "%$vrf" >> /tmp/snmpagentaddr.yml
158-
fi
159-
echo "" >> /tmp/snmpagentaddr.yml
160-
count=$((count+1))
161-
done
162-
sed -i '/snmp_agent_address_*/d' /etc/sonic/snmp.yml
163-
cat /tmp/snmpagentaddr.yml >> /etc/sonic/snmp.yml
16493
{%- else %}
16594
: # nothing
16695
{%- endif %}

files/image_config/snmp/snmp.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
11
snmp_rocommunity: public
22
snmp_location: public
3-
v1_trap_dest: NotConfigured
4-
v2_trap_dest: NotConfigured
5-
v3_trap_dest: NotConfigured

0 commit comments

Comments
 (0)