# Temp hardcode, untill JJB will be fixed
# ARG FROM=docker-dev-kaas-local.docker.mirantis.net/general/external/docker.io/library/ubuntu:focal-20240427
# FROM $FROM
FROM docker-dev-kaas-local.docker.mirantis.net/general/external/docker.io/library/ubuntu:jammy-20240427
# TODO: switch to CI-artifacts
#ARG MIRROR_URL_UBUNTU=https://mirror.mirantis.com/SETMEPROPERLY
ARG MIRROR_URL_UBUNTU=https://mirror.mirantis.com/nightly/ubuntu/
ARG HELM_BINARY_URL=https://binary.mirantis.com/openstack/bin/utils/helm/helm-v3.12.1-linux-amd64

SHELL ["/bin/bash", "-o", "pipefail", "-xec"]

# Full image rebuild without cached layers may be triggered by making a change to the requirements.txt file. It takes 10-20 min.
ADD ./si_tests/requirements.txt /si-tests/si_tests/requirements.txt
ADD ./si_tests/kaas-bm-env/requirements.txt /si-tests/si_tests/kaas-bm-env/requirements.txt
ADD ./packages/ /si-tests/packages/

RUN \
  export DEBIAN_FRONTEND=noninteractive ; export DEBCONF_NONINTERACTIVE_SEEN=true ; export LANG=C.UTF-8; export LANGUAGE=\$LANG; export TERM=xterm \
  ; echo 'APT::Get::Install-Recommends "false"; APT::Get::Install-Suggests "false";' > /etc/apt/apt.conf.d/docker-recommends \
# Disable https check, since we don't have ca-certificates pkg for that moment
  ; echo 'Acquire::https::Verify-Peer "false"; Acquire::https::Verify-Host "false";' > /etc/apt/apt.conf.d/ignore-ssl \
  ; cd /etc/apt/ ; echo > sources.list \
  ; echo "deb [arch=amd64] ${MIRROR_URL_UBUNTU} jammy main restricted universe" >> sources.list \
  ; echo "deb [arch=amd64] ${MIRROR_URL_UBUNTU} jammy-updates main restricted universe" >> sources.list \
  ; echo "deb [arch=amd64] ${MIRROR_URL_UBUNTU} jammy-security main restricted universe" >> sources.list \
  ; apt-get update \
# actual component install
  ; apt-get install -y python3.10 python3.10-dev python3.10-distutils python3.10-venv wget curl build-essential openssl git rsync virtualenv locales ipmitool gettext-base iputils-ping\
# install terraform
  ; curl -fsSL https://apt.releases.hashicorp.com/gpg | apt-key add - \
  ; echo "deb [arch=amd64] https://apt.releases.hashicorp.com jammy main" >> sources.list \
  ; apt-get update && apt-get install -y terraform \
# --
  ; locale-gen en_US.UTF-8 \
  ; virtualenv --python=python3.10 /si-venv \
  ; /si-venv/bin/pip config --user set global.index-url https://artifactory.mcp.mirantis.net/artifactory/api/pypi/pypi-remote/simple \
  ; /si-venv/bin/pip config --user set global.trusted-host artifactory.mcp.mirantis.net \
  ; /si-venv/bin/pip install -r /si-tests/si_tests/requirements.txt \
  ; /si-venv/bin/pip install -r /si-tests/si_tests/kaas-bm-env/requirements.txt \
  ; /si-venv/bin/pip install /si-tests/packages/ \
# Allow to install additional requirements from refs
  ; chmod a+w -R /si-venv \
  ; virtualenv --always-copy --python=python3.10 /si-venv \
# Install binaries
  ; wget -q -O /si-tests/helm3 ${HELM_BINARY_URL} \
  ; chmod +x /si-tests/helm3 \
# Cleanup
  ; rm -v /etc/apt/apt.conf.d/ignore-ssl \
  ; apt-get remove -y --autoremove --purge manpages-dev manpages krb5-locales geoip-database \
  ; mkdir -p /image ; dpkg-query -W -f='${Package}=${Version}\n' | sed "s/ //g" > /image/initial_packages \
  ; apt-get -y clean \
  ; rm -rf /root/.cache \
  ; rm -rf /var/lib/apt/lists/*

ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8

# Add the si-tests repository and image info at the very end, to not cause rebuild cached layers from above
ADD ./ /si-tests/

RUN \
# Save some info about image
    export TIMESTAMP=$(date "+%Y_%m_%d_%H_%M_%S")\
  ; mkdir -p /image ; dpkg-query -W -f='${Package}=${Version}\n' | sed "s/ //g" > /image/initial_packages \
  ; printenv | sort -u > /image/initial_env

# Set data labels
LABEL maintainer="dev@mirantis.com" \
      MIRROR_URL_UBUNTU=$MIRROR_URL_UBUNTU \
      TIMESTAMP=$TIMESTAMP

# Build:
# docker build --squash --no-cache --build-arg=MIRROR_URL_UBUNTU=http://mirror.mirantis.com/.snapshots/ubuntu-latest/ -t si-tests:base-focal_testme .
