mirror of
				https://github.com/Telecominfraproject/ols-nos.git
				synced 2025-10-31 01:57:48 +00:00 
			
		
		
		
	 666879b867
			
		
	
	666879b867
	
	
	
		
			
			### Why I did it Need new gnmi client for dash test. ### How I did it I have updated gnxi repo, and this PR is used to get latest change. #### How to verify it Run end2end test for DASH.
		
			
				
	
	
		
			231 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Django/Jinja
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Django/Jinja
		
	
	
	
	
	
| {% set prefix = DEFAULT_CONTAINER_REGISTRY %}
 | |
| {% if CONFIGURED_ARCH == "armhf" and MULTIARCH_QEMU_ENVIRON == "y" %}
 | |
| FROM {{ prefix }}multiarch/debian-debootstrap:armhf-stretch
 | |
| {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %}
 | |
| FROM {{ prefix }}multiarch/debian-debootstrap:arm64-stretch
 | |
| {% else %}
 | |
| FROM {{ prefix }}debian:buster
 | |
| {% endif %}
 | |
| 
 | |
| {% from "dockers/dockerfile-macros.j2" import install_python_wheels, copy_files %}
 | |
| 
 | |
| USER root
 | |
| WORKDIR /root
 | |
| 
 | |
| MAINTAINER Pavel Shirshov
 | |
| 
 | |
| COPY ["sources.list.{{ CONFIGURED_ARCH }}", "/etc/apt/sources.list"]
 | |
| COPY ["no-check-valid-until", "/etc/apt/apt.conf.d"]
 | |
| 
 | |
| ## Make apt-get non-interactive
 | |
| ENV DEBIAN_FRONTEND=noninteractive
 | |
| 
 | |
| ## Set the apt source, update package cache and install necessary packages
 | |
| ## TODO: Clean up this step
 | |
| RUN apt-get update          \
 | |
|     && apt-get upgrade -y   \
 | |
|     && apt-get dist-upgrade -y  \
 | |
|     && apt-get install -y   \
 | |
|         autoconf            \
 | |
|         openssh-server      \
 | |
|         vim                 \
 | |
|         telnet              \
 | |
|         net-tools           \
 | |
|         traceroute          \
 | |
|         lsof                \
 | |
|         tcpdump             \
 | |
|         ethtool             \
 | |
|         unzip               \
 | |
|         pkg-config          \
 | |
|         binutils            \
 | |
|         build-essential     \
 | |
|         libssl-dev          \
 | |
|         libffi-dev          \
 | |
|         wget                \
 | |
|         cmake               \
 | |
|         libqt5core5a        \
 | |
|         libqt5network5      \
 | |
|         libboost-atomic1.71.0 \
 | |
|         less                \
 | |
|         git                 \
 | |
|         iputils-ping        \
 | |
|         hping3              \
 | |
|         curl                \
 | |
|         tmux                \
 | |
|         python              \
 | |
|         python-dev          \
 | |
|         python-libpcap      \
 | |
|         python-scapy        \
 | |
|         python-six          \
 | |
|         python3             \
 | |
|         python3-venv        \
 | |
|         python3-pip         \
 | |
|         python3-dev         \
 | |
|         python3-scapy       \
 | |
|         python3-six         \
 | |
|         libpcap-dev         \
 | |
|         tacacs+             \
 | |
|         rsyslog             \
 | |
|         ntp                 \
 | |
|         ntpstat             \
 | |
|         ntpdate             \
 | |
|         arping              \
 | |
|         bridge-utils        \
 | |
|         libteam-utils       \
 | |
|         gdb                 \
 | |
|         automake            \
 | |
|         iproute2            \
 | |
|         wireshark-common
 | |
| 
 | |
| # Install all python modules from pypi. python-scapy is exception, ptf debian package requires python-scapy
 | |
| # TODO: Clean up this step
 | |
| RUN rm -rf /debs \
 | |
|     && apt-get -y autoclean \
 | |
|     && apt-get -y autoremove \
 | |
|     && rm -rf /var/lib/apt/lists/* \
 | |
|     && wget --https-only https://bootstrap.pypa.io/pip/2.7/get-pip.py \
 | |
|     && python get-pip.py \
 | |
|     && rm -f get-pip.py \
 | |
|     && pip install setuptools \
 | |
|     && pip install supervisor \
 | |
|     && pip install ipython==5.4.1 \
 | |
|     && git clone https://github.com/p4lang/scapy-vxlan.git \
 | |
|     && cd scapy-vxlan \
 | |
|     && python setup.py install \
 | |
|     && cd .. \
 | |
|     && rm -fr scapy-vxlan \
 | |
|     && git clone https://github.com/sflow/sflowtool \
 | |
|     && cd sflowtool \
 | |
|     && ./boot.sh \
 | |
|     && ./configure \
 | |
|     && make \
 | |
|     && make install \
 | |
|     && cd  .. \
 | |
|     && rm -fr sflowtool \
 | |
|     && git clone https://github.com/dyninc/OpenBFDD.git \
 | |
|     && cd OpenBFDD \
 | |
|     && ./autogen.sh \
 | |
|     && ./configure \
 | |
|     && make \
 | |
|     && make install \
 | |
|     && cd  .. \
 | |
|     && rm -fr OpenBFDD \
 | |
|     && wget https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz \
 | |
|     && tar xvfz 1.0.0.tar.gz \
 | |
|     && cd nanomsg-1.0.0    \
 | |
|     && mkdir -p build      \
 | |
|     && cd build            \
 | |
|     && cmake ..            \
 | |
|     && make install        \
 | |
|     && ldconfig            \
 | |
|     && cd ../..            \
 | |
|     && rm -fr nanomsg-1.0.0 \
 | |
|     && rm -f 1.0.0.tar.gz  \
 | |
|     && pip install cffi    \
 | |
|     && pip install nnpy    \
 | |
|     && pip install dpkt    \
 | |
|     && pip install ipaddress \
 | |
|     && pip install pysubnettree \
 | |
|     && pip install paramiko \
 | |
|     && pip install flask   \
 | |
|     && pip install exabgp==3.4.17\
 | |
|     && pip install pyaml   \
 | |
|     && pip install pybrctl pyro4 rpyc yabgp \
 | |
|     && pip install unittest-xml-reporting \
 | |
|     && pip install pyrasite \
 | |
|     && pip install retrying \
 | |
|     && mkdir -p /opt       \
 | |
|     && cd /opt             \
 | |
|     && wget https://raw.githubusercontent.com/p4lang/ptf/master/ptf_nn/ptf_nn_agent.py
 | |
| 
 | |
| RUN python3 -m venv --system-site-packages env-python3
 | |
| 
 | |
| # Activating a virtualenv. The virtualenv automatically works for RUN, ENV and CMD.
 | |
| ENV VIRTUAL_ENV=/root/env-python3
 | |
| ARG BACKUP_OF_PATH="$PATH"
 | |
| ENV PATH="$VIRTUAL_ENV/bin:$PATH"
 | |
| 
 | |
| ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 PYTHONIOENCODING=UTF-8
 | |
| 
 | |
| RUN python3 -m pip install --upgrade --ignore-installed pip
 | |
| 
 | |
| # Install all python modules from pypi. python3-scapy is exception, ptf debian package requires python3-scapy
 | |
| RUN python3 -m pip install setuptools \
 | |
|     && pip3 install supervisor \
 | |
|     && pip3 install ipython==5.4.1 \
 | |
|     && pip3 install Cython \
 | |
|     && pip3 install cffi    \
 | |
|     && pip3 install nnpy    \
 | |
|     && pip3 install dpkt    \
 | |
|     && pip3 install ipaddress \
 | |
|     && pip3 install pysubnettree \
 | |
|     && pip3 install paramiko \
 | |
|     && pip3 install Flask   \
 | |
|     && pip3 install exabgp \
 | |
|     && pip3 install pyaml   \
 | |
|     && pip3 install pybrctl pyro4 rpyc yabgp \
 | |
|     && pip3 install unittest-xml-reporting \
 | |
|     && pip3 install pyrasite \
 | |
|     && pip3 install python-libpcap \
 | |
|     && pip3 install enum34 \
 | |
|     && pip3 install grpcio \
 | |
|     && pip3 install grpcio-tools \
 | |
|     && pip3 install protobuf \
 | |
|     && pip3 install six==1.16.0 \
 | |
|     && pip3 install itsdangerous \
 | |
|     && pip3 install retrying \
 | |
|     && pip3 install jinja2 \
 | |
|     && pip3 install scapy==2.5.0 \
 | |
|     && pip3 install thrift
 | |
| 
 | |
| {% if docker_ptf_whls.strip() -%}
 | |
| # Copy locally-built Python wheel dependencies
 | |
| {{ copy_files("python-wheels/", docker_ptf_whls.split(' '), "/python-wheels/") }}
 | |
| 
 | |
| # Install locally-built Python wheel dependencies
 | |
| {{ install_python_wheels(docker_ptf_whls.split(' ')) }}
 | |
| {% endif %}
 | |
| 
 | |
| # Deactivating a virtualenv.
 | |
| ENV PATH="$BACKUP_OF_PATH"
 | |
| 
 | |
| ## Adjust sshd settings
 | |
| RUN mkdir /var/run/sshd \
 | |
|     && echo 'root:root' | chpasswd \
 | |
|     && sed -ri '/^#?PermitRootLogin/c\PermitRootLogin yes' /etc/ssh/sshd_config \
 | |
|     && sed -ri '/^#?UsePAM/c\UsePAM no' /etc/ssh/sshd_config \
 | |
|     && sed -ri '/^#?UseDNS/c\UseDNS no' /etc/ssh/sshd_config
 | |
| 
 | |
| COPY supervisord.conf /etc/supervisor/
 | |
| COPY conf.d/ /etc/supervisor/conf.d/
 | |
| COPY ptf_tgen.sh /ptf_tgen/
 | |
| 
 | |
| # Move tcpdump into /usr/bin Otherwise it's impossible to run tcpdump due to a docker bug
 | |
| RUN mv /usr/sbin/tcpdump /usr/bin/tcpdump
 | |
| RUN ln -s /usr/bin/tcpdump /usr/sbin/tcpdump
 | |
| 
 | |
| RUN mkdir -p /var/log/supervisor
 | |
| 
 | |
| # Install Python-based GNMI client
 | |
| RUN git clone https://github.com/lguohan/gnxi.git \
 | |
|     && cd gnxi \
 | |
|     && git checkout 3adf8b9 \
 | |
|     && cd gnmi_cli_py \
 | |
|     && pip install -r requirements.txt
 | |
| 
 | |
| COPY \
 | |
| {% for deb in docker_ptf_debs.split(' ') -%}
 | |
| debs/{{ deb }}{{' '}}
 | |
| {%- endfor -%}
 | |
| debs/
 | |
| 
 | |
| RUN dpkg -i \
 | |
| {% for deb in docker_ptf_debs.split(' ') -%}
 | |
| debs/{{ deb }}{{' '}}
 | |
| {%- endfor %}
 | |
| 
 | |
| COPY ["*.ini", "/etc/ptf/"]
 | |
| EXPOSE 22 8009
 | |
| 
 | |
| ENTRYPOINT ["/usr/local/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
 |