FROM ubi8-minimal:8-released AS builder
ENV GOPATH=/go
RUN microdnf install -y tar gzip go-compilers-golang-compiler make findutils
COPY kubernetes-nmstate-*.tar.gz /go/src/github.com/nmstate/
RUN \
    cd /go/src/github.com/nmstate && \
    tar -xzf kubernetes-nmstate-*.tar.gz && \
    rm kubernetes-nmstate-*.tar.gz && \
    mv kubernetes-nmstate-* kubernetes-nmstate

WORKDIR /go/src/github.com/nmstate/kubernetes-nmstate/
RUN GOOS=linux GOARCH=amd64 go build -i -o /kubernetes-nmstate ./cmd/manager

FROM ubi8-minimal:8-released

RUN \
    microdnf -y update && \
    microdnf -y install \
        nmstate \
        iproute && \
    microdnf -y remove \
        NetworkManager && \
    microdnf clean all

# TODO: Delete this line after we update nmstate to include the change
# https://github.com/nmstate/nmstate/commit/a4baaff50fef84d6d326977ff647bece1e917a26
RUN sed -i "s/run(timeout=20/run(timeout=60/g" /usr/lib/python3.6/site-packages/libnmstate/netapplier.py

ENV OPERATOR=/usr/local/bin/kubernetes-nmstate \
    USER_UID=0 \
    USER_NAME=root

# install operator binary
COPY --from=builder /kubernetes-nmstate ${OPERATOR}

COPY --from=builder /go/src/github.com/nmstate/kubernetes-nmstate/build/bin /usr/local/bin
RUN  /usr/local/bin/user_setup

ENTRYPOINT ["/usr/local/bin/entrypoint"]

USER $USER_UID
LABEL com.redhat.component="kubernetes-nmstate-handler-container" \
      name="container-native-virtualization/kubernetes-nmstate-handler-rhel8" \
      version="v2.1.0" \
      summary="Kubernetes Nmstate Handler" \
      io.openshift.expose-services="" \
      io.openshift.tags="kubernetes,cnv,networking" \
      io.k8s.display-name="kubernetes-nmstate-handler" \
      maintainer="The KubeVirt Project <kubevirt-dev@googlegroups.com>" \
      description="Kubernetes Nmstate Handler"


