#!/bin/bash

DOCKER="/usr/bin/docker"
LOGGER="/usr/bin/logger"
SYSTEMCTL="/usr/bin/systemctl"
TRIES_TO_START=10

function log() {
	if [ ! -x $LOGGER ]; then
		echo $*
	fi
	$LOGGER "$0: $*"
}

if [ ! -x $DOCKER -o ! -x $SYSTEMCTL ]; then
	log "Some binaries not found, nothing to do."
	exit 0
fi

function start_containers() {
	local cts ct_list
	cts=0

	# list command may timeout too
	ct_list=`$DOCKER container list -a --format "table {{.ID}}\t{{.Status}}" 2>/dev/null | grep -v '^CONTAINER' | awk '{if ($2 !~ /Up/){ print $1 }}'`
	if [ $? -ne 0 ]; then
		log "Failed to get docker containers list"
		return 1
	fi

	for ct in $ct_list; do
		$DOCKER container start $ct >/dev/null 2>&1 &
		[ $? -ne 0 ] && log "Failed to start docker container $ct" || log "Starting docker container $ct"
		cts=$((cts+1))
	done

	# Wait for docker container start processes
	wait

	return $cts
}

# Start all existing containers
for i in `seq 1 $TRIES_TO_START`; do
	# On huge HN load docker-containerd daemon can lock, so will start until we success
	start_containers
	[ $? -eq 0 ] && break
done

log "All docker container started"
/usr/bin/vcmmdctl activate vstorage.slice/vstorage-compute.slice/vstorage-compute-storage.slice || :
/usr/bin/vcmmdctl activate vstorage.slice/vstorage-compute.slice || :

exit 0
