#@follow_tag(ubi8-minimal:8-released)
FROM ubi8-minimal:8.1-409 AS builder

ARG kubevirt_version=0.26.5
ARG kubevirt_commit=bab9a21bb6817f6c1f107c2b505121f63c92cc4b
ARG kubevirt_tar=kubevirt-bab9a21bb6817f6c1f107c2b505121f63c92cc4b.tar.gz
ARG libvirt_tar=cnv-libvirt-930921c4f437d98ded3144eb52c08e5d89bddf6b.tar.gz

ENV GOPATH=/go

RUN echo -e "[virt]\nname=virt\nprofiles=\nstate=enabled\nstream=8.1" > /etc/dnf/modules.d/virt.module && \
    microdnf install -y tar gzip go-compilers-golang-compiler rsync sed libvirt-devel make git mercurial \
    sudo gcc findutils qemu-img protobuf glibc-static
COPY ${kubevirt_tar} /
RUN tar xf /${kubevirt_tar} && \
    mkdir -p /go/src/kubevirt.io/ && \
    mv kubevirt-${kubevirt_commit} /go/src/kubevirt.io/kubevirt

COPY ${libvirt_tar} /
RUN tar xf /${libvirt_tar} && \
    rm /${libvirt_tar} && \
    mv /cnv-libvirt-* /libvirt

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-launcher


#@follow_tag(ubi8-minimal:8-released)
FROM ubi8-minimal:8.1-409

COPY --from=builder /etc/dnf/modules.d/virt.module /etc/dnf/modules.d/virt.module
RUN PKGS="nettle qemu-kvm libvirt-daemon-kvm libvirt-client selinux-policy selinux-policy-targeted augeas socat genisoimage sudo edk2-ovmf iptables" && \
    microdnf -y --setopt=tsflags=nodocs install $PKGS && \
    microdnf clean all && \
    rpm -V $PKGS && \
    test $(id -u qemu) = 107 # make sure that the qemu user really is 107 && \
    mkdir -p /usr/share/kubevirt/virt-launcher

COPY --from=builder /go/src/kubevirt.io/kubevirt/_out/cmd/virt-launcher/virt-launcher-${kubevirt_version}-linux-amd64 /usr/bin/virt-launcher
COPY --from=builder /libvirt/augconf /tmp/augconf

RUN augtool -f /tmp/augconf
RUN echo "remember_owner = 0" >> /etc/libvirt/qemu.conf

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

LABEL com.redhat.component="virt-launcher-container" \
      name="container-native-virtualization/virt-launcher" \
      version="v2.3.0" \
      release="39" \
      upstream-version="0.26.5" \
      upstream-vcs-ref="bab9a21bb6817f6c1f107c2b505121f63c92cc4b" \
      upstream-vcs-type="git" \
      summary="Hosts VM processes" \
      io.openshift.expose-services="" \
      io.openshift.tags="cnv,kubevirt,VM" \
      io.k8s.display-name="virt-launcher" \
      maintainer="sgott@redhat.com,pkotas@redhat.com,ibezukh@redhat.com" \
      description="Create cgroups and namespaced and host VM process"
