#!/bin/sh

export SCHED_HOST=api.compass-ci.openeuler.org
export SCHED_PORT=3000
export LKP_SRC=/lkp/lkp/src
export TMP=/tmp/lkp
export PATH=$PATH:$LKP_SRC/bin
export local_result_root=$TMP/output

command -v jq || yum install -y jq

register_testbox()
{
	nic=$(ip route get 1.2.3.4 | awk '{print $5; exit}')
	export mac=$(cat /sys/class/net/$nic/address | sed "s/:/-/g")
	export hostname=$(hostname)
	queues=$hostname
 	curl -sX PUT "http://${SCHED_HOST}:${SCHED_PORT}/set_host_mac?hostname=${hostname}&mac=${mac}"
 	curl -sX PUT "http://${SCHED_HOST}:${SCHED_PORT}/set_host2queues?host=${hostname}&queues=${queues}"
}

parse_job_url()
{
	id=$(jq .job_id $job_url)
	url_array=$(jq .initrds $job_url |awk -F'\' '{print $2" "$4" "$6}'|sed "s/\"/ /g")
}

get_job()
{
	hostname=$(hostname)
        while true
        do
                job_url="$(pwd)/$hostname"
		curl -s http://${SCHED_HOST}:${SCHED_PORT}/boot.native/mac/${mac} > $job_url

		parse_job_url

		[ -n "$id" ] && [ -n "$url_array" ] && {
			echo "$(date) [INFO] got job: $hostname" 
			break
		}

		echo "$(date) [INFO] no job now: $hostname"
                continue
		sleep 10
        done
}

download_job_cgz()
{
        for url in ${url_array[@]}
	do
		cgz_name=$(echo $url | awk -F'/' '{print $NF}')

		wget -q -O $tmpdir/$cgz_name $url || exit 1
		gzip -dc $tmpdir/$cgz_name |cpio -idu -D /
	done
}

run_job()
{
        sh /lkp/scheduled/job.sh run_job | tee -a $local_result_root
}

upload_results()
{
	. $LKP_SRC/lib/upload.sh
	. /lkp/scheduled/job.sh
	export_top_env
        export JOB_RESULT_ROOT=$result_root

        upload_files $local_result_root
}

main()
{
	mkdir -p $TMP
        tmpdir=$(mktemp -d)

	register_testbox

        get_job
	download_job_cgz
        run_job
        upload_results

        rm -rf $tmpdir /lkp $TMP
}

main
