#######################################################################################
# Copyright ETSI Contributors and Others.
#
# 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.
#######################################################################################


########################
# Stage 1: Build stage #
########################

FROM python:3.10-alpine AS base


ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    PIP_DISABLE_PIP_VERSION_CHECK=1

FROM python:3.10-alpine AS builder

# Install build dependencies
RUN apk add --no-cache \
    gcc \
    musl-dev \
    libffi-dev \
    openssl-dev \
    curl \
    git \
    openssh-client \
    zlib-dev \
    jpeg-dev \
    libxml2-dev \
    libxslt-dev

WORKDIR /app/mon

# Create virtual environment
RUN python -m venv /app/mon/.venv
ENV PATH="/app/mon/.venv/bin:$PATH"

ARG COMMON_GERRIT_REFSPEC=master

# Install OSM dependency modules with no cache
RUN --mount=type=cache,target=/root/.cache/pip \
    git clone --filter=blob:none --tags https://osm.etsi.org/gerrit/osm/common.git /tmp/osm-common && \
    cd /tmp/osm-common && \
    git fetch origin "${COMMON_GERRIT_REFSPEC}" && \
    git checkout FETCH_HEAD &&\
    cd - && \
    pip install --no-cache-dir -r /tmp/osm-common/requirements.txt && \
    pip install --no-cache-dir /tmp/osm-common

# Install MON
COPY . .
RUN --mount=type=cache,target=/root/.cache/pip \
    pip install --no-cache-dir -r requirements.txt \
    && pip install --no-cache-dir  .


###########################################################################################################################################################

########################
# Stage 2: Final image #
########################

FROM python:3.10-alpine AS final

# Install runtime dependencies
RUN apk add --no-cache \
    ca-certificates \
    openssh-client

# Copy virtual environment from build stage
COPY --from=builder /app/mon/.venv /app/mon/.venv
ENV PATH="/app/mon/.venv/bin:$PATH"

# Copy necessary binaries and libraries
COPY --from=builder /usr/lib/ /usr/lib/
COPY --from=builder /lib/ /lib/

# Copy application scripts
COPY scripts/ /app/mon/scripts/

# Create app user and directories
RUN addgroup -g 1000 appuser && \
    adduser -u 1000 -G appuser -D -h /app appuser && \
    mkdir -p /app/mon && \
    mkdir -p /app/storage/kafka && \
    mkdir /app/log && \
    chown -R appuser:appuser /app

WORKDIR /app/mon

USER appuser

# Environment variables
ENV OSMMON_MESSAGE_DRIVER kafka \
    OSMMON_MESSAGE_HOST kafka \
    OSMMON_MESSAGE_PORT 9092 \
    OSMMON_DATABASE_DRIVER mongo \
    OSMMON_DATABASE_URI mongodb://mongo:27017 \
    OSMMON_SQL_DATABASE_URI sqlite:///mon_sqlite.db \
    OSMMON_OPENSTACK_DEFAULT_GRANULARITY 300 \
    OSMMON_GLOBAL_REQUEST_TIMEOUT 10 \
    OSMMON_GLOBAL_LOGLEVEL INFO \
    OSMMON_VCA_HOST localhost \
    OSMMON_VCA_SECRET secret \
    OSMMON_VCA_USER admin \
    OSMMON_VCA_CACERT cacert \
    OSMMON_DATABASE_COMMONKEY changeme \
    OSMMON_COLLECTOR_INTERVAL 30 \
    OSMMON_EVALUATOR_INTERVAL 30 \
    OSMMON_PROMETHEUS_URL http://prometheus:9090 \
    OSMMON_GRAFANA_URL http://grafana:3000 \
    OSMMON_GRAFANA_USER admin \
    OSMMON_GRAFANA_PASSWORD admin

EXPOSE 8000

HEALTHCHECK --start-period=120s --interval=5s --timeout=2s --retries=12\
  CMD osm-mon-healthcheck || exit 1

# Switch to app user
USER appuser

CMD ["/bin/sh", "scripts/dashboarder-start.sh]
