-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial commit for introducing the SONiC Platform Development Environ…
…ment (PDE) into sonic-buildimage
- Loading branch information
Showing
14 changed files
with
1,226 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
|
||
FROM docker-config-engine-stretch | ||
|
||
ARG docker_container_name | ||
ENV PYTHONPATH=/usr/share/sonic/platform | ||
|
||
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 | ||
|
||
# Update apt's cache of available packages | ||
RUN apt-get update && apt-get install -y ipmitool telnet busybox kmod | ||
|
||
RUN pip install pytest pexpect | ||
|
||
# Copy locally-built Debian package dependencies | ||
COPY \ | ||
debs/libsaibcm_3.5.3.1m-25_amd64.deb debs/sonic-platform-pde_1.0_amd64.deb /debs/ | ||
|
||
# Install locally-built Debian packages and implicitly install their dependencies | ||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; \ | ||
dpkg_apt /debs/libsaibcm_3.5.3.1m-25_amd64.deb; \ | ||
dpkg_apt /debs/sonic-platform-pde_1.0_amd64.deb | ||
|
||
# Copy locally-built Debian package dependencies | ||
COPY \ | ||
python-debs/python-sonic-utilities_1.2-1_all.deb /debs/ | ||
|
||
# Install locally-built Debian packages and implicitly install their dependencies | ||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /debs/python-sonic-utilities_1.2-1_all.deb | ||
|
||
# Copy locally-built Python wheel dependencies | ||
COPY \ | ||
python-wheels/sonic_platform_common-1.0-py2-none-any.whl /python-wheels/ | ||
|
||
# Install locally-built Python wheel dependencies | ||
RUN pip install \ | ||
/python-wheels/sonic_platform_common-1.0-py2-none-any.whl | ||
|
||
|
||
|
||
# Clean up | ||
RUN apt-get clean -y; \ | ||
apt-get autoclean -y; \ | ||
apt-get autoremove -y | ||
RUN rm -rf /debs ~/.cache | ||
|
||
RUN mkdir -p /home/pde | ||
|
||
COPY ["base_image_files/port_breakout.py", "/usr/local/bin/"] | ||
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] | ||
COPY ["docker_init.sh", "/usr/bin/"] | ||
ENTRYPOINT ["/usr/bin/docker_init.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %} | ||
FROM docker-config-engine-stretch | ||
|
||
ARG docker_container_name | ||
ENV PYTHONPATH=/usr/share/sonic/platform | ||
|
||
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 | ||
|
||
# Update apt's cache of available packages | ||
RUN apt-get update && apt-get install -y ipmitool telnet busybox kmod | ||
|
||
RUN pip install pytest pexpect | ||
|
||
{% if docker_pde_debs.strip() -%} | ||
# Copy locally-built Debian package dependencies | ||
COPY \ | ||
{% for deb in docker_pde_debs.split(' ') -%} | ||
debs/{{ deb }}{{' '}} | ||
{%- endfor -%} | ||
/debs/ | ||
|
||
# Install locally-built Debian packages and implicitly install their dependencies | ||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }{%- for deb in docker_pde_debs.split(' ') %}; \ | ||
dpkg_apt /debs/{{ deb }} | ||
{%- endfor %} | ||
{%- endif %} | ||
|
||
{% if docker_pde_pydebs.strip() -%} | ||
# Copy locally-built Debian package dependencies | ||
COPY \ | ||
{% for deb in docker_pde_pydebs.split(' ') -%} | ||
python-debs/{{ deb }}{{' '}} | ||
{%- endfor -%} | ||
/debs/ | ||
|
||
# Install locally-built Debian packages and implicitly install their dependencies | ||
{%- for deb in docker_pde_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_pde_whls.strip() -%} | ||
# Copy locally-built Python wheel dependencies | ||
COPY \ | ||
{% for whl in docker_pde_whls.split(' ') -%} | ||
python-wheels/{{ whl }}{{' '}} | ||
{%- endfor -%} | ||
/python-wheels/ | ||
|
||
# Install locally-built Python wheel dependencies | ||
RUN pip install \ | ||
{% for whl in docker_pde_whls.split(' ') -%} | ||
/python-wheels/{{ whl }}{{' '}} | ||
{%- endfor %} | ||
{% endif %} | ||
|
||
|
||
# Clean up | ||
RUN apt-get clean -y; \ | ||
apt-get autoclean -y; \ | ||
apt-get autoremove -y | ||
RUN rm -rf /debs ~/.cache | ||
|
||
RUN mkdir -p /home/pde | ||
|
||
COPY ["base_image_files/port_breakout.py", "/usr/local/bin/"] | ||
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] | ||
COPY ["docker_init.sh", "/usr/bin/"] | ||
ENTRYPOINT ["/usr/bin/docker_init.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
#!/bin/bash | ||
|
||
usage() | ||
{ | ||
echo "usage: $0 <help/list/commands>" | ||
exit 1 | ||
} | ||
|
||
if [ $# -lt 1 ] | ||
then | ||
usage | ||
fi | ||
|
||
case $1 in | ||
-h | help) | ||
usage | ||
;; | ||
-l | ls | list) | ||
docker exec -it -w /usr/local/sonic_pde_tests pde ls | ||
exit 0 | ||
;; | ||
*) | ||
;; | ||
esac | ||
|
||
# Make sure only root can run our script | ||
if [ "$(id -u)" != "0" ]; then | ||
echo "This script must be run as root" 1>&2 | ||
exit 1 | ||
fi | ||
|
||
# Stop swss/syncd service to ensure there is only 1 SAI instance at a time | ||
systemctl stop swss | ||
|
||
if [ $(grep -c 'platform:ro' $(which pde.sh)) -gt 0 ]; then | ||
systemctl stop pde | ||
sleep 1 | ||
docker rename pde pde.orig | ||
sed -i 's#platform:ro#platform#g' $(which pde.sh) | ||
sed -i 's#hwsku:ro#hwsku#g' $(which pde.sh) | ||
systemctl start pde | ||
fi | ||
|
||
# Allow 5 seconds for the docker-pde to be online | ||
err=1 | ||
for t in $(seq 5); do | ||
if [ $(docker ps | grep -c pde) -gt 0 ]; then | ||
err=0 | ||
break | ||
fi | ||
sleep 1 | ||
done | ||
if [ ${err} -ne 0 ]; then | ||
echo "docker-pde is not alive, existing ..." | ||
exit 1 | ||
fi | ||
|
||
# Now launch the PDE pytest | ||
docker exec -it -w /usr/local/sonic_pde_tests pde pytest $* | ||
|
||
# Restart the swss service | ||
systemctl start swss | ||
|
Oops, something went wrong.