# This creates osm/NBI docker from local NBI source code

FROM ubuntu:16.04

# Set the working directory to /app
WORKDIR /app/osm_nbi

# Copy the current directory contents into the container at /app
ADD . /app

RUN apt-get update && apt-get install -y git python3 python3-jsonschema \
    python3-pymongo python3-yaml python3-pip python3-keystoneclient \
    && pip3 install pip==9.0.3 \
    && pip3 install aiokafka cherrypy==18.0.0 keystoneauth1 \
    && mkdir -p /app/storage/kafka && mkdir -p /app/log 

# OSM_COMMON
RUN git clone https://osm.etsi.org/gerrit/osm/common.git \
    && pip3 install -e common
#    && cd common  && python3 setup.py develop && cd ..
#    && pip3 install -U -r requirements.txt \
#    && cd ..

# OSM_IM
RUN pip3 install pyang && mkdir -p /app && cd /app \
    && git clone https://github.com/robshakir/pyangbind \
    && pip3 install -e pyangbind \
    && git clone  https://osm.etsi.org/gerrit/osm/IM \
    && cd /app/IM/models/yang \
    && pyang --plugindir /app/pyangbind/pyangbind/plugin -f pybind -o /app/osm_nbi/vnfd_catalog.py vnfd.yang \
    && pyang --plugindir /app/pyangbind/pyangbind/plugin -f pybind -o /app/osm_nbi/nsd_catalog.py nsd.yang

EXPOSE 9999

LABEL Maintainer="alfonso.tiernosepulveda@telefonica.com" \
      Description="This implements a north bound interface for OSM" \
      Version="1.0" \
      Author="Alfonso Tierno"

# Used for local storage
VOLUME /app/storage
# Used for logs
VOLUME /app/log

# The following ENV can be added with "docker run -e xxx' to configure
# server
ENV OSMNBI_SOCKET_HOST                          0.0.0.0
ENV OSMNBI_SOCKET_PORT                          9999
# storage
ENV OSMNBI_STORAGE_PATH                         /app/storage
# database
ENV OSMNBI_DATABASE_DRIVER                      mongo
ENV OSMNBI_DATABASE_HOST                        mongo
ENV OSMNBI_DATABASE_PORT                        27017
# web
ENV OSMNBI_STATIC_DIR                           /app/osm_nbi/html_public
# logs
ENV OSMNBI_LOG_FILE                             /app/log
ENV OSMNBI_LOG_LEVEL                            DEBUG
# message
ENV OSMNBI_MESSAGE_DRIVER                       kafka
ENV OSMNBI_MESSAGE_HOST                         kafka
ENV OSMNBI_MESSAGE_PORT                         9092
# logs
ENV OSMNBI_LOG_FILE                             /app/log/nbi.log
ENV OSMNBI_LOG_LEVEL                            DEBUG
# authentication
ENV OSMNBI_AUTHENTICATION_BACKEND               internal
#ENV OSMNBI_AUTHENTICATION_BACKEND               keystone
#ENV OSMNBI_AUTHENTICATION_AUTH_URL              keystone
#ENV OSMNBI_AUTHENTICATION_AUTH_PORT             5000
#ENV OSMNBI_AUTHENTICATION_USER_DOMAIN_NAME      default
#ENV OSMNBI_AUTHENTICATION_PROJECT_DOMAIN_NAME   default
#ENV OSMNBI_AUTHENTICATION_SERVICE_USERNAME      nbi
#ENV OSMNBI_AUTHENTICATION_SERVICE_PASSWORD      nbi
#ENV OSMNBI_AUTHENTICATION_SERVICE_PROJECT       service

# Run app.py when the container launches
CMD ["python3", "nbi.py"]

