#@follow_tag(registry.redhat.io/ubi8/ubi:latest)
FROM registry.redhat.io/ubi8/ubi:8.3-297.1618432833 AS builder

ARG ssp_version=0.1.3-4-g2237470
ARG ssp_commit=223747018a1c9680076f5d0edcd6222ba0e4d1c0
ARG ssp_tar=kubevirt-ssp-operator-223747018a1c9680076f5d0edcd6222ba0e4d1c0.tar.gz

ENV GOPATH=/go
ENV SSP_PATH=${GOPATH}/src/kubevirt.io/ssp-operator

# Install required packages
RUN dnf -y module enable go-toolset:rhel8 python36:3.6 \
    && dnf install -y \
    tar \
    gzip \
    rsync \
    sed \
    go-compilers-golang-compiler \
    glibc-static \
    python3-pyyaml \
    python36

# Extract archive with upstream code
COPY ${ssp_tar} /
RUN tar xf ${ssp_tar} && \
    mkdir -p /go/src/kubevirt.io/ && \
    mv kubevirt-ssp-operator-${ssp_commit} ${SSP_PATH}

# cd into upstream code extracted directory
WORKDIR ${SSP_PATH}

# Update templates with downstream values
COPY filter-templates.py filter-templates.py
RUN python3 filter-templates.py ${SSP_PATH}/data/common-templates-bundle/

COPY patch-templates.py patch-templates.py
RUN python3 patch-templates.py ${SSP_PATH}/data/common-templates-bundle/

COPY preprocess-templates.py preprocess-templates.py
COPY patch.yaml patch.yaml
RUN python3 preprocess-templates.py patch.yaml ${SSP_PATH}/data/common-templates-bundle/

RUN sed -i 's/kubevirt-os-images/openshift-virtualization-os-images/g' ${SSP_PATH}/internal/operands/common-templates/resource.go

# Build operator binary
RUN GOFLAGS=-mod=vendor \
    go build -a -v -o ssp-operator main.go

# Build CSV generator
RUN GOFLAGS=-mod=vendor \
    go build -a -v -o csv-generator hack/csv-generator.go

# Build test binary
RUN GOFLAGS=-mod=vendor \
    go test -c ./tests/...

#@follow_tag(registry.redhat.io/ubi8/ubi-minimal:latest)
FROM registry.redhat.io/ubi8/ubi-minimal:8.3-298.1618432845

ENV GOPATH=/go
ENV SSP_PATH=${GOPATH}/src/kubevirt.io/ssp-operator

RUN microdnf install -y shadow-utils

WORKDIR /
COPY --from=builder ${SSP_PATH}/ssp-operator manager
COPY --from=builder ${SSP_PATH}/csv-generator csv-generator
COPY --from=builder ${SSP_PATH}/tests.test /usr/bin/ssp-operator.test
COPY --from=builder ${SSP_PATH}/data data/

ENTRYPOINT [ "/manager" ]
# Create non-root user
RUN  adduser --system --no-create-home -u 1001 ssp-operator
USER 1001

LABEL com.redhat.component="kubevirt-ssp-operator-container" \
    name="container-native-virtualization/kubevirt-ssp-operator" \
    version="v2.6.2" \
    release="2" \
    upstream-version="0.1.3-4-g2237470" \
    upstream-vcs-ref="223747018a1c9680076f5d0edcd6222ba0e4d1c0" \
    upstream-vcs-type="git" \
    summary="KubeVirt SSP Operator" \
    io.openshift.expose-services="" \
    io.openshift.tags="cnv,kubevirt,operator, ssp" \
    io.k8s.display-name="kubevirt-ssp-operator" \
    maintainer="oyahud@redhat.com, ksimon@redhat.com, spadubid@redhat.com, akrejcir@redhat.com, vparekh@redhat.com, jlejosne@redhat.com" \
    description="Openshift Virtualization SSP Operator"
