#!/bin/bash

# product
# version
# release
# repo_url
# packages
# upload_image_dir

. ${LKP_SRC}/lib/upload.sh
. ${LKP_SRC}/lib/debug.sh

config_env_repo()
{
	rm -rf /etc/yum.repos.d.bak
	mv /etc/yum.repos.d /etc/yum.repos.d.bak
	mkdir -p /etc/yum.repos.d
	export yum_conf="/etc/yum.repos.d/ebs-repo.conf"
	touch ${yum_conf}

	i=1
	for repo in ${repo_url[@]}
	do
		cat >> ${yum_conf} <<-EOF
		[image_ebs_$i]
		name=image_ebs_$i
		baseurl=${repo}
		enabled=1
		gpgcheck=0

		EOF
		let i=i+1
	done
}

init_image_tailor()
{
	if rpm -q imageTailor &> /dev/null; then
		yum remove -y imageTailor
	fi
	yum install -y imageTailor sudo -c ${yum_conf} || die "install imageTailor error."
	sed -i 's#IMG_SIZE=3#IMG_SIZE=40#g' /opt/imageTailor/custom/cfg_qcow2/bin/create-image
}

modify_config_file()
{
	config_path="/opt/imageTailor/custom/cfg_qcow2/config"
	repo_file="${config_path}/repo"
	rpmlist_file="${config_path}/rpmlist"
	
	rm -f ${repo_file} && touch ${repo_file}
	for repo in ${repo_url[@]}
	do
		echo "${repo}" >> ${repo_file}
	done

	for pkg in ${packages[@]}
	do
		echo "${pkg}" >> ${rpmlist_file}
	done
}

build_image()
{
	cd /opt/imageTailor/
	./mkdliso -p qcow2 -c custom/cfg_qcow2
}


upload_image()
{
	ARCH="$(uname -i)"
	if [ -n "${release}" ];then
		qcow2_name="${product}-${version}-${release}-${ARCH}.qcow2"
	else
		qcow2_name="${product}-${version}-${ARCH}.qcow2"
	fi

	cd "/opt/imageTailor/result/$(date +%Y)"*
	if [ ! -s "openEuler_${ARCH}.qcow2" ];then
		touch /tmp/qcow2_failed
		die "make qcow2 failed."
	else
		mv openEuler_${ARCH}.qcow2 ${qcow2_name}
		mv openEuler_${ARCH}.qcow2.sha256sum "${qcow2_name}.sha256sum"
		upload_one_curl "${qcow2_name}" ${upload_image_dir}
		if [ $? -ne 0 ];then
			touch /tmp/qcow2_failed
			die "upload failed."
		fi
		upload_one_curl "${qcow2_name}.sha256sum" ${upload_image_dir}
		if [ $? -ne 0 ];then
			touch /tmp/qcow2_failed
			die "upload failed."
		fi
	fi
}

build_qcow2_image()
{
	config_env_repo
	init_image_tailor
	modify_config_file
	build_image
	upload_image
}

build_qcow2_image
