#@follow_tag(registry.redhat.io/ubi8/ubi:8.2)
FROM registry.redhat.io/ubi8/ubi:8.2-347 AS builder

ARG kubevirt_version=0.34.1-4-g48956f6
ARG kubevirt_commit=48956f60864ece98118d7894327caf7513c5b942
ARG kubevirt_tar=kubevirt-48956f60864ece98118d7894327caf7513c5b942.tar.gz

ENV GOPATH=/go

RUN dnf module enable -y \
    go-toolset:rhel8 \
    virt:8.2 \
    && dnf install -y \
        tar \
        gzip \
        rsync \
        sed \
        go-compilers-golang-compiler \
        glibc-static \
        libvirt-devel
COPY ${kubevirt_tar} /
RUN tar xf ${kubevirt_tar} && \
    mkdir -p /go/src/kubevirt.io/ && \
    mv kubevirt-${kubevirt_commit} /go/src/kubevirt.io/kubevirt
WORKDIR ${GOPATH}/src/kubevirt.io/kubevirt

RUN KUBEVIRT_VERSION=${kubevirt_version} \
    KUBEVIRT_SOURCE_DATE_EPOCH="$(date +%s)" \
    KUBEVIRT_GIT_COMMIT=${kubevirt_commit} \
    KUBEVIRT_GIT_VERSION=v${kubevirt_version} \
    KUBEVIRT_GIT_TREE_STATE=clean \
    GOFLAGS=-mod=vendor \
    bash -x ./hack/build-go.sh install cmd/virt-handler cmd/virt-chroot


#@follow_tag(registry.redhat.io/ubi8/ubi-minimal:8.2)
FROM registry.redhat.io/ubi8/ubi-minimal:8.2-349

ARG project_dir=/go/src/kubevirt.io/kubevirt/cmd/virt-handler
ARG kubevirt_version=0.34.1-4-g48956f6

COPY --from=builder /etc/dnf/modules.d/virt.module /etc/dnf/modules.d/virt.module
RUN microdnf -y install libvirt-libs iproute iptables procps-ng && microdnf clean all

COPY --from=builder /go/src/kubevirt.io/kubevirt/_out/cmd/virt-handler/virt-handler-${kubevirt_version}-linux-amd64 /usr/bin/virt-handler
COPY --from=builder /go/src/kubevirt.io/kubevirt/_out/cmd/virt-chroot/virt-chroot-${kubevirt_version}-linux-amd64 /usr/bin/virt-chroot
COPY --from=builder /go/src/kubevirt.io/kubevirt/_out/cmd/container-disk-v2alpha/container-disk /usr/bin/container-disk
COPY --from=builder ${project_dir}/virt_launcher.cil /virt_launcher.cil

ENTRYPOINT [ "/usr/bin/virt-handler" ]

LABEL com.redhat.component="virt-handler-container" \
    name="container-native-virtualization/virt-handler" \
    version="v2.5.1" \
    release="1" \
    upstream-version="0.34.1-4-g48956f6" \
    upstream-vcs-ref="48956f60864ece98118d7894327caf7513c5b942" \
    upstream-vcs-type="git" \
    summary="Virtualization handler" \
    io.openshift.expose-services="" \
    io.openshift.tags="cnv,kubevirt" \
    io.k8s.display-name="virt-handler" \
    maintainer="sgott@redhat.com,ibezukh@redhat.com,dhiller@redhat.com,jlejosne@redhat.com" \
    description="Virtualization handler for CNV"
