#!/bin/bash

action=$1
escaped_name=$2
container=`systemd-escape -u $escaped_name`

DOCKERSTORE_REGISTRY='dockerpull.u-nas.com'

CURL="curl --unix-socket /var/run/docker.sock"
RUN_DIR="/run/unas-docker"
JOB_DIR="$RUN_DIR/install/$container"
CONF_FILE="$JOB_DIR/conf"
JSON_FILE="$JOB_DIR/json"
IMAGE_ID="$JOB_DIR/image_id"

. "$CONF_FILE"

curl_opt(){
    url="http://localhost/containers/create?name=$container"
}

prepare_(){
    if [ ! -d "$JOB_DIR" ];then
        mkdir -p $JOB_DIR
    fi

    curl_opt

    echo Prepare to install
}

start_(){
    if [ `docker image ls -q $image | wc -l` -eq 0 ];then
        echo Start pulling $image
        if [ "$sid" ];then
            # Only docker store apps
            image_proxy=$DOCKERSTORE_REGISTRY
            if echo "$image" | grep /;then
                image_proxy=$image_proxy/$image
            else
                image_proxy=$image_proxy/library/$image
            fi
            /unas/sbin/docker/pull prepare `systemd-escape $image_proxy`
            echo -n "$image_proxy" | md5sum | awk '{print $1}' > "$IMAGE_ID"
            systemctl start unas-docker-pull@`systemd-escape $image_proxy`.service
            #docker pull $image
            docker tag "$image_proxy" $image
            #docker rmi "$image_proxy"
        else
            /unas/sbin/docker/pull prepare `systemd-escape $image`
            echo -n "$image" | md5sum | awk '{print $1}' > "$IMAGE_ID"
            systemctl start unas-docker-pull@`systemd-escape $image`.service
        fi
    else
        echo Image $image exists
    fi

    if [ `docker image ls -q $image | wc -l` -ne 0 ];then
        echo Start install
        $CURL -H 'Content-type: application/json' -d @"$JSON_FILE" $url 2>/dev/null
        docker start $container
    else
        echo Pull image failed
    fi
}

clear_(){
    echo Clear tmp files
    rm -rf $JOB_DIR >/dev/null 2>&1 || :
}

case "$action" in
    start)
        prepare_
        start_
        ;;
    clear)
        clear_
        ;;
    *)
        ;;
esac

exit 0
