7f4ab8fbd8
Submodule updates include the following commits: * src/sonic-utilities 9dc58ea...f9eb739 (18): > Remove unnecessary calls to str.encode() now that the package is Python 3; Fix deprecation warning (#1260) > [generate_dump] Ignoring file/directory not found Errors (#1201) > Fixed porstat rate and util issues (#1140) > fix error: interface counters is mismatch after warm-reboot (#1099) > Remove unnecessary calls to str.decode() now that the package is Python 3 (#1255) > [acl-loader] Make list sorting compliant with Python 3 (#1257) > Replace hard-coded fast-reboot with variable. And some typo corrections (#1254) > [configlet][portconfig] Remove calls to dict.has_key() which is not available in Python 3 (#1247) > Remove unnecessary conversions to list() and calls to dict.keys() (#1243) > Clean up LGTM alerts (#1239) > Add 'requests' as install dependency in setup.py (#1240) > Convert to Python 3 (#1128) > Fix mock SonicV2Connector in python3: use decode_responses mode so caller code will be the same as python2 (#1238) > [tests] Do not trim from PATH if we did not append to it; Clean up/fix shebangs in scripts (#1233) > Updates to bgp config and show commands with BGP_INTERNAL_NEIGHBOR table (#1224) > [cli]: NAT show commands newline issue after migrated to Python3 (#1204) > [doc]: Update Command-Reference.md (#1231) > Added 'import sys' in feature.py file (#1232) * src/sonic-py-swsssdk 9d9f0c6...1664be9 (2): > Fix: no need to decode() after redis client scan, so it will work for both python2 and python3 (#96) > FieldValueMap `contains`(`in`) will also work when migrated to libswsscommon(C++ with SWIG wrapper) (#94) - Also fix Python 3-related issues: - Use integer (floor) division in config_samples.py (sonic-config-engine) - Replace print statement with print function in eeprom.py plugin for x86_64-kvm_x86_64-r0 platform - Update all platform plugins to be compatible with both Python 2 and Python 3 - Remove shebangs from plugins files which are not intended to be executable - Replace tabs with spaces in Python plugin files and fix alignment, because Python 3 is more strict - Remove trailing whitespace from plugins files
182 lines
8.5 KiB
Django/Jinja
182 lines
8.5 KiB
Django/Jinja
FROM docker-config-engine-buster
|
|
|
|
ARG docker_container_name
|
|
RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%syslogtag%/;" /etc/rsyslog.conf
|
|
|
|
## Make apt-get non-interactive
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get install -y gnupg
|
|
COPY ["sonic-dev.gpg.key", "/etc/apt/"]
|
|
RUN apt-key add /etc/apt/sonic-dev.gpg.key
|
|
RUN echo "deb http://packages.microsoft.com/repos/sonic-dev/ jessie main" >> /etc/apt/sources.list
|
|
RUN apt-get update
|
|
|
|
RUN apt-get install -y net-tools \
|
|
arping \
|
|
ndisc6 \
|
|
ethtool \
|
|
tcpdump \
|
|
ifupdown \
|
|
bridge-utils \
|
|
python-ply \
|
|
libqt5core5a \
|
|
libqt5network5 \
|
|
libboost-program-options1.71.0 \
|
|
libboost-system1.71.0 \
|
|
libboost-thread1.71.0 \
|
|
libgmp10 \
|
|
libjudydebian1 \
|
|
openssh-client \
|
|
openssh-server \
|
|
libc-ares2 \
|
|
iproute2 \
|
|
grub2-common \
|
|
bash-completion \
|
|
libelf1 \
|
|
libmnl0 \
|
|
logrotate \
|
|
apt-utils \
|
|
psmisc \
|
|
tcpdump \
|
|
python-scapy \
|
|
conntrack \
|
|
iptables \
|
|
python3-pip \
|
|
jq \
|
|
libzmq5 \
|
|
# For installing Python m2crypto package
|
|
# (these can be uninstalled after installation)
|
|
build-essential \
|
|
python-dev \
|
|
python3-dev \
|
|
libssl-dev \
|
|
swig \
|
|
# For using Python m2crypto package
|
|
openssl
|
|
|
|
# Install redis-server
|
|
{% if CONFIGURED_ARCH == "armhf" %}
|
|
RUN curl -k -o redis-tools_6.0.6-1~bpo10+1_armhf.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_armhf.deb?sv=2015-04-05&sr=b&sig=67vHAMxsl%2BS3X1KsqhdYhakJkGdg5FKSPgU8kUiw4as%3D&se=2030-10-24T04%3A22%3A40Z&sp=r"
|
|
RUN curl -k -o redis-server_6.0.6-1~bpo10+1_armhf.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-server_6.0.6-1_bpo10+1_armhf.deb?sv=2015-04-05&sr=b&sig=xTdayvm0RBguxi9suyv855jKRjU%2FmKQ8nHuct4WSX%2FA%3D&se=2030-10-24T04%3A22%3A05Z&sp=r"
|
|
RUN dpkg -i redis-tools_6.0.6-1~bpo10+1_armhf.deb redis-server_6.0.6-1~bpo10+1_armhf.deb || apt-get install -f
|
|
RUN rm redis-tools_6.0.6-1~bpo10+1_armhf.deb redis-server_6.0.6-1~bpo10+1_armhf.deb
|
|
{% elif CONFIGURED_ARCH == "arm64" %}
|
|
RUN curl -o redis-tools_6.0.6-1~bpo10+1_arm64.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_arm64.deb?sv=2015-04-05&sr=b&sig=GbkJV2wWln3hoz27zKi5erdk3NDKrAFrQriA97bcRCY%3D&se=2030-10-24T04%3A22%3A21Z&sp=r"
|
|
RUN curl -o redis-server_6.0.6-1~bpo10+1_arm64.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-server_6.0.6-1_bpo10+1_arm64.deb?sv=2015-04-05&sr=b&sig=622w2KzIKIjAaaA0Bz12MzU%2BUBzY2AiXFIFfuKNoKSk%3D&se=2030-10-24T04%3A21%3A44Z&sp=r"
|
|
RUN dpkg -i redis-tools_6.0.6-1~bpo10+1_arm64.deb redis-server_6.0.6-1~bpo10+1_arm64.deb || apt-get install -f
|
|
RUN rm redis-tools_6.0.6-1~bpo10+1_arm64.deb redis-server_6.0.6-1~bpo10+1_arm64.deb
|
|
{% else %}
|
|
RUN curl -o redis-tools_6.0.6-1~bpo10+1_amd64.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=73zbmjkf3pi%2Bn0R8Hy7CWT2EUvOAyzM5aLYJWCLySGM%3D&se=2030-09-06T19%3A44%3A59Z&sp=r"
|
|
RUN curl -o redis-server_6.0.6-1~bpo10+1_amd64.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-server_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=2Ketg7BmkZEaTxR%2FgvAFVmhjn7ywdmkc7l2T2rsL57o%3D&se=2030-09-06T19%3A45%3A20Z&sp=r"
|
|
RUN dpkg -i redis-tools_6.0.6-1~bpo10+1_amd64.deb redis-server_6.0.6-1~bpo10+1_amd64.deb || apt-get install -f
|
|
RUN rm redis-tools_6.0.6-1~bpo10+1_amd64.deb redis-server_6.0.6-1~bpo10+1_amd64.deb
|
|
{% endif %}
|
|
|
|
RUN pip2 install setuptools
|
|
RUN pip3 install setuptools
|
|
RUN pip2 install py2_ipaddress
|
|
RUN pip2 install six
|
|
RUN pip2 install pyroute2==0.5.3 netifaces==0.10.7
|
|
RUN pip2 install monotonic==1.5
|
|
RUN pip2 install urllib3
|
|
RUN pip2 install requests
|
|
RUN pip2 install crontab
|
|
|
|
# For sonic-config-engine Python 3 package
|
|
# Install pyangbind here, outside sonic-config-engine dependencies, as pyangbind causes enum34 to be installed.
|
|
# Then immediately uninstall enum34, as enum34 should not be installed for Python >= 3.4, as it causes a
|
|
# conflict with the new 'enum' module in the standard library
|
|
# https://github.com/robshakir/pyangbind/issues/232
|
|
RUN pip3 install pyangbind==0.8.1
|
|
RUN pip3 uninstall -y enum34
|
|
|
|
{% if docker_sonic_vs_debs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{%- for deb in docker_sonic_vs_debs.split(' ') %}
|
|
COPY debs/{{ deb }} /debs/
|
|
{%- endfor %}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{%- for deb in docker_sonic_vs_debs.split(' ') %}
|
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /debs/{{ deb }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
|
|
{% if docker_sonic_vs_pydebs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{%- for deb in docker_sonic_vs_pydebs.split(' ') %}
|
|
COPY python-debs/{{ deb }} /debs/
|
|
{%- endfor %}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{%- for deb in docker_sonic_vs_pydebs.split(' ') %}
|
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /debs/{{ deb }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
|
|
{% if docker_sonic_vs_whls.strip() %}
|
|
# copy all whl PKGs first,
|
|
{% for whl in docker_sonic_vs_whls.split(' ') -%}
|
|
COPY python-wheels/{{ whl }} python-wheels/
|
|
{% endfor %}
|
|
|
|
# install PKGs after copying all PKGs to avoid dependency failure
|
|
# use py3 to find python3 package, which is forced by wheel as of now
|
|
{%- for whl in docker_sonic_vs_whls.split(' ') %}
|
|
RUN pip{% if 'py3' in whl %}3{% else %}2{% endif %} install python-wheels/{{ whl }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
|
|
# Clean up
|
|
RUN apt-get purge -y build-essential libssl-dev swig
|
|
RUN apt-get purge -y python-dev python3-dev
|
|
RUN apt-get clean -y
|
|
RUN apt-get autoclean -y
|
|
RUN apt-get autoremove -y
|
|
RUN rm -rf /debs ~/.cache
|
|
|
|
RUN sed -ri 's/^(save .*$)/# \1/g; \
|
|
s/^daemonize yes$/daemonize no/; \
|
|
s/^logfile .*$/logfile ""/; \
|
|
s/^# syslog-enabled no$/syslog-enabled no/; \
|
|
s/^# unixsocket/unixsocket/; \
|
|
s/notify-keyspace-events ""/notify-keyspace-events AKE/; \
|
|
s/redis-server.sock/redis.sock/g; \
|
|
s/^client-output-buffer-limit pubsub [0-9]+mb [0-9]+mb [0-9]+/client-output-buffer-limit pubsub 0 0 0/ \
|
|
' /etc/redis/redis.conf
|
|
|
|
COPY ["50-default.conf", "/etc/rsyslog.d/"]
|
|
COPY ["start.sh", "orchagent.sh", "files/update_chassisdb_config", "/usr/bin/"]
|
|
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
|
|
COPY ["files/configdb-load.sh", "/usr/bin/"]
|
|
COPY ["files/arp_update", "/usr/bin/"]
|
|
COPY ["files/buffers_config.j2", "files/qos_config.j2", "files/arp_update_vars.j2", "files/copp_cfg.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["files/sonic_version.yml", "/etc/sonic/"]
|
|
COPY ["database_config.json", "/etc/default/sonic-db/"]
|
|
COPY ["hostname.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["default_chassis_cfg.json", "/etc/default/sonic-db/"]
|
|
COPY ["chassis_db.py", "/usr/bin/"]
|
|
|
|
COPY ["platform.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/"]
|
|
COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/Force10-S6000/"]
|
|
|
|
# Workaround the tcpdump issue
|
|
RUN mv /usr/sbin/tcpdump /usr/bin/tcpdump
|
|
|
|
RUN echo "docker-sonic-vs" > /etc/hostname
|
|
RUN mkdir -p /etc/quagga
|
|
RUN touch /etc/quagga/zebra.conf
|
|
|
|
# disable integrated vtysh config
|
|
RUN rm /etc/frr/frr.conf
|
|
|
|
# Create /var/warmboot/teamd folder for teammgrd
|
|
RUN mkdir -p /var/warmboot/teamd
|
|
|
|
# Set PLATFORM and HWSKU environment variables
|
|
ENV PLATFORM=x86_64-kvm_x86_64-r0
|
|
ENV HWSKU=Force10-S6000
|
|
|
|
ENTRYPOINT ["/usr/local/bin/supervisord"]
|