Skip to content

Commit 95c1636

Browse files
author
thomasbo
committed
SNMP/LLDP Containers: Sonic V2 Support
* Adding support for V2 in SNMP/LLDP (-sv2 postfix) * Fixes for V1 containers: logging * Fixes for V1 LLDP: limit LLDP to Front-panel or MGMT interfaces.
1 parent 293db92 commit 95c1636

File tree

8 files changed

+128
-23
lines changed

8 files changed

+128
-23
lines changed

dockers/docker-lldp-sv2/Dockerfile

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
FROM docker-base
2+
3+
COPY deps/sswsdk*.whl deps/sonic_d*.whl deps/lldpsyncd_*.deb deps/lldpd_*.deb /deps/
4+
5+
## Pre-install the fundamental packages
6+
## Install Python SSWSDK (lldpsyncd dependency)
7+
## Install LLDP Sync Daemon
8+
## Note: dpkg_apt function has the benefit to detect missing .deb file
9+
## Clean up
10+
RUN apt-get update && \
11+
dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } && \
12+
dpkg_apt /deps/lldpd_*.deb && \
13+
apt-get install -y python-pip supervisor && \
14+
pip install /deps/sswsdk*.whl && \
15+
pip install /deps/sonic_d*.whl && \
16+
apt-get remove -y python-pip && \
17+
apt-get purge -y && apt-get autoclean -y && apt-get autoremove -y && \
18+
rm -rf /deps ~/.cache
19+
20+
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
21+
22+
ENTRYPOINT ["/usr/bin/supervisord"]
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[supervisord]
2+
nodaemon=true
3+
4+
[program:lldpd]
5+
# https://github.com/vincentbernat/lldpd/commit/9856f2792c301116cc4a3fcfba91b9672ee5db1f
6+
# - `-d` means to stay in foreground, log to syslog
7+
# - `-dd` means to stay in foreground, log warnings to console
8+
# - `-ddd` means to stay in foreground, log warnings and info to console
9+
# - `-dddd` means to stay in foreground, log all to console
10+
command=/usr/sbin/lldpd -d -I Ethernet*,eth*
11+
priority=100
12+
13+
[program:lldp-syncd]
14+
command=/usr/bin/env python2 -m lldp_syncd
15+
priority=200
16+
17+
[program:rsyslogd]
18+
command=/usr/sbin/rsyslogd -n
19+
priority=1

dockers/docker-lldp/Dockerfile

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
FROM docker-base
22

3-
COPY deps/*py2*.whl deps/lldpsyncd_*.deb deps/lldpd_*.deb /deps/
3+
COPY deps/sswsdk*.whl deps/lldpsyncd_*.deb deps/lldpd_*.deb /deps/
44

55
## Pre-install the fundamental packages
6-
## Install Python SSWSDK (lldpsyncd dependancy)
6+
## Install Python SSWSDK (lldpsyncd dependency)
77
## Install LLDP Sync Daemon
88
## Note: dpkg_apt function has the benefit to detect missing .deb file
99
## Clean up
10-
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } && \
11-
dpkg_apt /deps/lldpd_*.deb && \
12-
dpkg_apt /deps/lldpsyncd_*.deb && \
10+
RUN apt-get update && \
11+
dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } && \
12+
dpkg_apt /deps/lldpd_*.deb && \
13+
dpkg_apt /deps/lldpsyncd_*.deb && \
1314
apt-get install -y python-pip supervisor && \
14-
pip install /deps/*.whl && \
15+
pip install /deps/sswsdk*.whl && \
1516
apt-get remove -y python-pip && \
16-
apt-get purge -y && apt-get autoclean -y && apt-get autoremove -y && \
17-
rm -rf /deps
17+
apt-get purge -y && apt-get autoclean -y && apt-get autoremove -y && \
18+
rm -rf /deps ~/.cache
1819

1920
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
2021

dockers/docker-lldp/supervisord.conf

+9-6
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22
nodaemon=true
33

44
[program:lldpd]
5-
## -d: Do not daemonize. If this option is specified, lldpd will run in
6-
## the foreground and log to stderr. This option can be specified
7-
## many times to increase verbosity
8-
command=/usr/sbin/lldpd -dd
9-
## route stderr to the syslog service instead of being saved to files
10-
stderr_logfile=syslog
5+
# https://github.com/vincentbernat/lldpd/commit/9856f2792c301116cc4a3fcfba91b9672ee5db1f
6+
# - `-d` means to stay in foreground, log to syslog
7+
# - `-dd` means to stay in foreground, log warnings to console
8+
# - `-ddd` means to stay in foreground, log warnings and info to console
9+
# - `-dddd` means to stay in foreground, log all to console
10+
command=/usr/sbin/lldpd -d -I Ethernet*,eth*
11+
priority=100
1112

1213
[program:lldpsyncd]
1314
command=/usr/sbin/lldpsyncd
15+
priority=200
1416

1517
[program:rsyslogd]
1618
command=/usr/sbin/rsyslogd -n
19+
priority=1

dockers/docker-snmp-sv2/Dockerfile

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
FROM docker-base
2+
3+
COPY deps/snmp_*.deb deps/snmpd_*.deb deps/libsnmp-base_*.deb deps/libsnmp30_*.deb /deps/
4+
COPY deps/python3/*.whl /python3/
5+
6+
# enable -O for all Python calls
7+
ENV PYTHONOPTIMIZE 1
8+
9+
## Pre-install the fundamental packages
10+
## Install Python SSWSDK (SNMP subagent dependency)
11+
## Install SNMP subagent
12+
## Note: dpkg_apt function has the benefit to detect missing .deb file
13+
## Clean up
14+
RUN apt-get update && \
15+
dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } && \
16+
dpkg_apt /deps/libsnmp-base_*.deb && \
17+
dpkg_apt /deps/libsnmp30_*.deb && \
18+
dpkg_apt /deps/snmp_*.deb && \
19+
dpkg_apt /deps/snmpd_*.deb && \
20+
rm -rf /deps
21+
22+
# install subagent
23+
RUN apt-get -y install build-essential wget libssl-dev openssl supervisor && \
24+
rm -rf /var/lib/apt/lists/* && \
25+
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz && \
26+
tar xvf Python-3.5.2.tgz && cd Python-3.5.2 && \
27+
./configure --without-doc-strings --prefix=/usr --without-pymalloc --enable-shared && \
28+
make && make install && \
29+
ldconfig && \
30+
cd .. && rm -rf Python-3.5.2 && rm Python-3.5.2.tgz && \
31+
pip3 install --no-cache-dir /python3/*py3*.whl hiredis && \
32+
rm -rf /python3 && \
33+
python3 -m sonic_ax_impl install && \
34+
python3 -m pip uninstall -y pip setuptools && \
35+
/bin/bash -c "rm -rf /usr/lib/python3.5/{unittest,lib2to3,tkinter,idlelib,email,test}" && \
36+
apt-get -y purge build-essential wget libssl-dev openssl && \
37+
apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y && \
38+
find / | grep -E "__pycache__" | xargs rm -rf && \
39+
rm -rf ~/.cache
40+
41+
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
42+
43+
## Although exposing ports is not need for host net mode, keep it for possible bridge mode
44+
EXPOSE 161/udp 162/udp
45+
46+
ENTRYPOINT ["/usr/bin/supervisord"]
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[supervisord]
2+
nodaemon=true
3+
4+
[program:snmpd]
5+
command=/usr/sbin/snmpd -f -LS4d -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf,ifTable,ifXTable -p /run/snmpd.pid
6+
priority=100
7+
8+
[program:snmp-subagent]
9+
command=/usr/bin/env python3 -m sonic_ax_impl
10+
priority=200
11+
12+
[program:rsyslogd]
13+
command=/usr/sbin/rsyslogd -n
14+
priority=1

dockers/docker-snmp/Dockerfile

+6-9
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@ COPY deps/python3/*.whl /python3/
77
ENV PYTHONOPTIMIZE 1
88

99
## Pre-install the fundamental packages
10-
## Install Python SSWSDK (SNMP subagent dependancy)
10+
## Install Python SSWSDK (SNMP subagent dependency)
1111
## Install SNMP subagent
1212
## Note: dpkg_apt function has the benefit to detect missing .deb file
1313
## Clean up
14-
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } && \
14+
RUN apt-get update && \
15+
dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } && \
1516
dpkg_apt /deps/libsnmp-base_*.deb && \
1617
dpkg_apt /deps/libsnmp30_*.deb && \
1718
dpkg_apt /deps/snmp_*.deb && \
18-
dpkg_apt /deps/snmpd_*.deb && \
19+
dpkg_apt /deps/snmpd_*.deb && \
1920
rm -rf /deps
2021

2122
# install subagent
@@ -29,13 +30,9 @@ RUN apt-get -y install build-essential wget libssl-dev openssl supervisor && \
2930
cd .. && rm -rf Python-3.5.2 && rm Python-3.5.2.tgz && \
3031
pip3 install --no-cache-dir /python3/*py3*.whl hiredis && \
3132
rm -rf /python3 && \
33+
python3 -m acs_ax_impl install && \
3234
python3 -m pip uninstall -y pip setuptools && \
33-
rm -rf /usr/lib/python3.5/unittest && \
34-
rm -rf /usr/lib/python3.5/lib2to3 && \
35-
rm -rf /usr/lib/python3.5/tkinter && \
36-
rm -rf /usr/lib/python3.5/idlelib && \
37-
rm -rf /usr/lib/python3.5/email && \
38-
rm -rf /usr/lib/python3.5/test && \
35+
/bin/bash -c "rm -rf /usr/lib/python3.5/{unittest,lib2to3,tkinter,idlelib,email,test}" && \
3936
apt-get -y purge build-essential wget libssl-dev openssl && \
4037
apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y && \
4138
find / | grep -E "__pycache__" | xargs rm -rf && \

dockers/docker-snmp/supervisord.conf

+3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@ nodaemon=true
33

44
[program:snmpd]
55
command=/usr/sbin/snmpd -f -LS4d -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf,ifTable,ifXTable -p /run/snmpd.pid
6+
priority=100
67

78
[program:acs-snmp-subagent]
89
command=/usr/bin/env python3 -m acs_ax_impl
10+
priority=200
911

1012
[program:rsyslogd]
1113
command=/usr/sbin/rsyslogd -n
14+
priority=1

0 commit comments

Comments
 (0)