# syntax=docker/dockerfile:1
#######################################################################################
# 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: Base Stage #
#######################

FROM python:3.10-alpine AS base

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


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

########################
# Stage 2: Build Stage #
########################

FROM base AS build

ENV HELM_VERSION="3.15.1"

# Install required system packages with pinned versions
RUN apk add --no-cache \
    build-base \
    patch \
    gcc \
    git \
    zlib-dev \
    curl \
    linux-headers \
    openssh-client \
    openssh-keygen \
    openssl \
    musl-dev \
    bash

# Install kubectl with version pinning
RUN curl -LO "https://dl.k8s.io/release/v1.30.13/bin/linux/amd64/kubectl" \
    && chmod +x kubectl \
    && mv kubectl /usr/local/bin/

RUN curl -sSL "https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz" -o helm-v${HELM_VERSION}.tar.gz \
    && tar -zxvf helm-v${HELM_VERSION}.tar.gz \
    && mv linux-amd64/helm /usr/local/bin/helm3 \
    && rm -rf linux-amd64 helm-v${HELM_VERSION}.tar.gz
WORKDIR /app

# Isolate dependencies in a venv
RUN python -m venv /app/.venv
ENV PATH="/app/.venv/bin:$PATH"
ARG COMMON_GERRIT_REFSPEC=master

# Install OSM dependency modules with no cache
RUN 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 \
    && rm -rf /tmp/osm-common

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .
RUN pip install --no-cache-dir .

RUN find /app -type d -name ".tox" -exec rm -rf {} +


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

#######################
# Stage 3: Final Stage#
#######################

FROM base AS final
WORKDIR /app

# Install runtime dependencies with pinned versions
RUN apk add --no-cache \
    bash \
    curl \
    openssh-client \
    openssh-keygen \
    openssl

COPY --from=build /usr/local/bin/helm3 /usr/local/bin/helm3
COPY --from=build /usr/local/bin/kubectl /usr/bin/kubectl

RUN addgroup -g 1000 appuser \
    && adduser -D -G appuser -u 1000 appuser -h /app appuser \
    && mkdir -p /app/storage/kafka \
    && mkdir -p /app/log \
    && chown -R appuser:appuser /app

USER appuser:appuser

ENV VIRTUAL_ENV=/app/.venv \
    PATH="/app/.venv/bin:$PATH"

COPY --from=build --chown=appuser:appuser /app/.venv /app/.venv
COPY --from=build --chown=appuser:appuser /app/osm_lcm/n2vc/post-renderer-scripts/ /app/osm_lcm/n2vc/post-renderer-scripts/
COPY --from=build --chown=appuser:appuser /app/scripts/ /app/scripts/

EXPOSE 9090

# Environment variables
ENV OSMLCM_RO_HOST=ro \
    OSMLCM_RO_PORT=9090 \
    OSMLCM_RO_TENANT=osm \
    OSMLCM_VCA_HOST=vca \
    OSMLCM_VCA_PORT=17070 \
    OSMLCM_VCA_USER=admin \
    OSMLCM_VCA_CLOUD=localhost \
    OSMLCM_VCA_HELMPATH=/usr/local/bin/helm3 \
    OSMLCM_VCA_KUBECTLPATH=/usr/bin/kubectl \
    OSMLCM_VCA_JUJUPATH=/usr/local/bin/juju \
    OSMLCM_DATABASE_DRIVER=mongo \
    OSMLCM_DATABASE_URI="mongodb://mongo:27017" \
    OSMLCM_STORAGE_DRIVER=local \
    OSMLCM_STORAGE_PATH=/app/storage \
    OSMLCM_MESSAGE_DRIVER=kafka \
    OSMLCM_MESSAGE_HOST=kafka \
    OSMLCM_MESSAGE_PORT=9092 \
    OSMLCM_GLOBAL_LOGLEVEL=DEBUG \
    OSMLCM_MAINPOSTRENDERERPATH=/app/osm_lcm/n2vc/post-renderer-scripts/mainPostRenderer/mainPostRenderer \
    OSMLCM_PODLABELSPOSTRENDERERPATH=/app/osm_lcm/n2vc/post-renderer-scripts/podLabels/podLabels \
    OSMLCM_NODESELECTORPOSTRENDERERPATH=/app/osm_lcm/n2vc/post-renderer-scripts/nodeSelector/nodeSelector \
    OSMLCM_VCA_STABLEREPOURL=https://charts.helm.sh/stable

HEALTHCHECK --start-period=120s --interval=30s --timeout=30s --retries=3 \
        CMD python3 -m osm_lcm.lcm_hc || exit 1

# Use JSON notation for CMD
CMD ["python3", "-m", "osm_lcm.lcm"]

