# ==================================================================================
#       Copyright (c) 2019-2020 Nokia
#       Copyright (c) 2018-2020 AT&T Intellectual Property.
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#          http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
# ==================================================================================
FROM python:3.8-slim as stretch

# sdl uses hiredis which needs gcc
RUN apt-get update && \
    apt-get install -y \
        wget gcc musl-dev

ARG rmr_version=4.9.4
ARG e2ap_version=1.1.0

# download rmr and e2ap libraries from package cloud
RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr_${rmr_version}_amd64.deb/download.deb
RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr-dev_${rmr_version}_amd64.deb/download.deb

RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/riclibe2ap_${e2ap_version}_amd64.deb/download.deb
RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/riclibe2ap-dev_${e2ap_version}_amd64.deb/download.deb

RUN dpkg -i rmr_${rmr_version}_amd64.deb
RUN dpkg -i rmr-dev_${rmr_version}_amd64.deb

RUN dpkg -i riclibe2ap_${e2ap_version}_amd64.deb
RUN dpkg -i riclibe2ap-dev_${e2ap_version}_amd64.deb

RUN ls /usr/local/lib/

FROM python:3.8-slim

ARG rmr_version=4.9.4
ARG e2ap_version=1.1.0

COPY --from=stretch /usr/local/lib/librmr_si.so.${rmr_version} /usr/local/lib/librmr_si.so
COPY --from=stretch /usr/local/lib/libriclibe2ap.so.${e2ap_version} /usr/local/lib/libriclibe2ap.so

# Upgrade pip, install tox
RUN pip install --upgrade pip && pip install tox && pip install certifi six python_dateutil setuptools urllib3 inotify_simple mdclogpy

# copies
COPY ricxappframe/ /tmp/ricxappframe
COPY tests/ /tmp/tests
COPY setup.py tox.ini LICENSE.txt .coveragerc /tmp/
WORKDIR /tmp

# following is to get the docker instance and run tests from the bash shell, remove comment in the 
# the next ENTRYPOINT line and comment out the last RUN line to get the runable docker instance.
# Bbuild named image and run the instance - if you modify the files those are visible in container
# docker build  -t xappframe:latest -f Dockerfile-Unit-Test .
# docker run -ti --name xappframe --rm -v ${PWD}:/tmp -u $(id -u ${USER}):$(id -g ${USER}) --workdir /tmp xappframe:latest
# then run : tox -e code,flake8,docs,docs-linkcheck
#ENTRYPOINT ["/bin/bash"]
# Run the unit tests
RUN tox -e code,flake8
