FROM ubi8-minimal:8-released AS builder

ARG kubevirt_version=0.20.8
ARG kubevirt_commit=d5430eaea926b9367e19079dedfe0df5d518ef67
ARG kubevirt_tar=kubevirt-d5430eaea926b9367e19079dedfe0df5d518ef67.tar.gz
ENV GOPATH=/go

RUN microdnf install -y tar gzip rsync sed go-compilers-golang-compiler
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 \
    ./hack/build-go.sh install cmd/virt-handler cmd/chroot cmd/container-disk-v2alpha

# Workaround for https://projects.engineering.redhat.com/browse/OSBS-7352
ENV GOPATH=/go

FROM ubi8-minimal:8-released

RUN microdnf -y install iproute && 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/chroot/chroot-${kubevirt_version}-linux-amd64 /usr/bin/chroot
COPY --from=builder /go/src/kubevirt.io/kubevirt/_out/cmd/container-disk-v2alpha/container-disk-v2alpha-${kubevirt_version}-linux-amd64 /usr/bin/container-disk

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

LABEL com.redhat.component="virt-handler-container" \
      name="container-native-virtualization/virt-handler" \
      version="v2.1.0" \
      release="17" \
      upstream-version="0.20.8" \
      upstream-vcs-ref="d5430eaea926b9367e19079dedfe0df5d518ef67" \
      upstream-vcs-type="git" \
      summary="Virtualization handler" \
      io.openshift.expose-services="" \
      io.openshift.tags="cnv,kubevirt" \
      io.k8s.display-name="virt-handler" \
      maintainer="The KubeVirt Project <kubevirt-dev@googlegroups.com>" \
      description="Virtualization handler for CNV"
