# Copyright 2018 Telefonica S.A.
#
# 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 ubuntu:16.04

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

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

RUN apt-get update && apt-get install -y git tox python3 \
    python3-pip python3-aiohttp \
    && pip3 install pip==9.0.3 \
    && pip3 install -U 'PyYAML==3.*' 'aiohttp==0.20.2' flake8

RUN git clone https://osm.etsi.org/gerrit/osm/N2VC.git \
    && pip3 install -e N2VC \
    && pip3 install -e N2VC/modules/libjuju \
    && apt-get install -y libffi-dev libssl-dev
    # cd N2VC; python3 setup.py develop
    # cd modules/libjuju; python3 setup.py develop

RUN git clone https://osm.etsi.org/gerrit/osm/common.git \
    && pip3 install -e common
    #  python3-pymongo python3-yaml pycrypto aiokafka

RUN mkdir -p /app/storage/kafka && mkdir -p /app/log


LABEL Maintainer="alfonso.tiernosepulveda@telefonica.com" \
      Description="This implements the Life Cicle Management module of 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 LCM
ENV OSMLCM_RO_HOST         ro
ENV OSMLCM_RO_PORT         9090
ENV OSMLCM_RO_TENANT       osm

# VCA
ENV OSMLCM_VCA_HOST        vca
ENV OSMLCM_VCA_PORT:       17070
ENV OSMLCM_VCA_USER:       admin
ENV OSMLCM_VCA_SECRET:     secret

# database
ENV OSMLCM_DATABASE_DRIVER mongo
ENV OSMLCM_DATABASE_HOST   mongo
ENV OSMLCM_DATABASE_PORT   27017
# ENV OSMLCM_DATABASE_USER  xxx
# ENV OSMLCM_DATABASE_PASSWORD  xxx
# ENV OSMLCM_DATABASE_MASTERPASSWORD  xxx

#storage
ENV OSMLCM_STORAGE_DRIVER  local
ENV OSMLCM_STORAGE_PATH    /app/storage

# message
ENV OSMLCM_MESSAGE_DRIVER  kafka
ENV OSMLCM_MESSAGE_HOST    kafka
ENV OSMLCM_MESSAGE_PORT    9092

# logs
ENV OSMLCM_GLOBAL_LOGFILE  /app/log/lcm.log
ENV OSMLCM_GLOBAL_LOGLEVEL DEBUG

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

# HEALTHCHECK --interval=30 --timeout=140 --retries=1 \
#     CMD python3 /usr/lib/python3/dist-packages/osm_lcm/lcm.py --health-check || exit 1

