FROM rhel7:7-released AS builder

ARG version=v1.2.0-5-1-g605855d
ARG commit=6165ead7201d8b96946fdfcfb026e44b86d3d980
ENV GOPATH=/go

RUN yum install -y golang rsync sed libvirt-devel make git mercurial sudo gcc findutils gradle qemu-img protobuf-compiler
COPY kubevirt-${version}.tar.gz /
RUN tar xf /kubevirt-${version}.tar.gz && \
    mkdir -p /go/src/kubevirt.io/ && \
    mv kubevirt-${commit} /go/src/kubevirt.io/kubevirt
WORKDIR ${GOPATH}/src/kubevirt.io/kubevirt

RUN KUBEVIRT_VERSION=${version} \
    KUBEVIRT_SOURCE_DATE_EPOCH="$(date +%s)" \
    KUBEVIRT_GIT_COMMIT=${commit} \
    KUBEVIRT_GIT_VERSION=${version} \
    KUBEVIRT_GIT_TREE_STATE=clean \
    ./hack/build-go.sh install cmd/virt-launcher

FROM cnv12-tech-preview/cnv-libvirt:1.2-2

ARG version=v1.2.0-5-1-g605855d
ARG scripts_dir=/usr/share/kubevirt/virt-launcher/
ARG project_dir=/go/src/kubevirt.io/kubevirt/cmd/virt-launcher

RUN PKGS="socat genisoimage util-linux libcgroup-tools ethtool sudo" && \
    yum -y --setopt=tsflags=nodocs install $PKGS && \
    yum 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-${version}-linux-amd64 /usr/bin/virt-launcher
COPY --from=builder ${project_dir}/kubevirt-sudo ${scripts_dir}
COPY --from=builder ${project_dir}/entrypoint.sh ${scripts_dir}
COPY --from=builder ${project_dir}/libvirtd.sh ${scripts_dir}
COPY --from=builder ${project_dir}/sock-connector ${scripts_dir}

ENTRYPOINT [ "${scripts_dir}/entrypoint.sh" ]

LABEL com.redhat.component="virt-launcher-container" \
      name="cnv12-tech-preview/virt-launcher" \
      version="1.2" \
      summary="Hosts VM processes" \
      io.openshift.expose-services="" \
      io.openshift.tags="cnv,kubevirt,VM" \
      io.k8s.display-name="virt-launcher" \
      maintainer="The KubeVirt Project <kubevirt-dev@googlegroups.com>" \
      description="Create cgroups and namespaced and host VM process"
