a3dd3f55f9
This change introduces PDDF which is described here: https://github.com/Azure/SONiC/pull/536 Most of the platform bring up effort goes in developing the platform device drivers, SONiC platform APIs and validating them. Typically each platform vendor writes their own drivers and platform APIs which is very tailor made to that platform. This involves writing code, building, installing it on the target platform devices and testing. Many of the details of the platform are hard coded into these drivers, from the HW spec. They go through this cycle repetitively till everything works fine, and is validated before upstreaming the code. PDDF aims to make this platform driver and platform APIs development process much simpler by providing a data driven development framework. This is enabled by: JSON descriptor files for platform data Generic data-driven drivers for various devices Generic SONiC platform APIs Vendor specific extensions for customisation and extensibility Signed-off-by: Fuzail Khan <fuzail.khan@broadcom.com>
77 lines
2.9 KiB
Django/Jinja
Executable File
77 lines
2.9 KiB
Django/Jinja
Executable File
{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %}
|
|
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
|
|
|
|
# Install required packages
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
python-dev \
|
|
python3-dev \
|
|
ipmitool \
|
|
librrd8 \
|
|
librrd-dev \
|
|
rrdtool \
|
|
python-smbus \
|
|
ethtool \
|
|
dmidecode \
|
|
i2c-tools \
|
|
python-jsonschema
|
|
|
|
# On Arista devices, the sonic_platform wheel is not installed in the container.
|
|
# Instead, the installation directory is mounted from the host OS. However, this method
|
|
# doesn't ensure all dependencies are installed in the container. So here we
|
|
# install any dependencies required by the Arista sonic_platform package.
|
|
# TODO: eliminate the need to install these explicitly.
|
|
# NOTE: Only install enum34 for Python 2, as our version of Python 3 is 3.7, which
|
|
# contains 'enum' as part of the standard library. Installing enum34 there will
|
|
# cause conflicts.
|
|
RUN pip2 install enum34
|
|
|
|
{% if docker_platform_monitor_debs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{{ copy_files("debs/", docker_platform_monitor_debs.split(' '), "/debs/") }}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{{ install_debian_packages(docker_platform_monitor_debs.split(' ')) }}
|
|
{%- endif %}
|
|
|
|
{% if docker_platform_monitor_pydebs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
{{ copy_files("python-debs/", docker_platform_monitor_pydebs.split(' '), "/debs/") }}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{{ install_debian_packages(docker_platform_monitor_pydebs.split(' ')) }}
|
|
{%- endif %}
|
|
|
|
{% if docker_platform_monitor_whls.strip() -%}
|
|
# Copy locally-built Python wheel dependencies
|
|
{{ copy_files("python-wheels/", docker_platform_monitor_whls.split(' '), "/python-wheels/") }}
|
|
|
|
# Install locally-built Python wheel dependencies
|
|
{{ install_python_wheels(docker_platform_monitor_whls.split(' ')) }}
|
|
{% endif %}
|
|
|
|
# Clean up
|
|
RUN apt-get purge -y \
|
|
python-dev \
|
|
python3-dev && \
|
|
apt-get clean -y && \
|
|
apt-get autoclean -y && \
|
|
apt-get autoremove -y && \
|
|
rm -rf /debs \
|
|
/python-wheels \
|
|
~/.cache
|
|
|
|
COPY ["docker_init.sh", "lm-sensors.sh", "start.sh", "/usr/bin/"]
|
|
COPY ["docker-pmon.supervisord.conf.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["ssd_tools/*", "/usr/bin/"]
|
|
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
|
|
COPY ["critical_processes", "/etc/supervisor"]
|
|
|
|
ENTRYPOINT ["/usr/bin/docker_init.sh"]
|