浏览代码

Add menu option to restore missing containers

dennisro 7 年之前
父节点
当前提交
b8cf021268
共有 1 个文件被更改,包括 35 次插入6 次删除
  1. 35 6
      data/include/functions/menu_functions.sh

+ 35 - 6
data/include/functions/menu_functions.sh

@@ -14,12 +14,16 @@ options_menu() {
 	if elementInArray "${PROPER_NAME}" "${INSTALLED_SERVICES[@]}";then
 	if elementInArray "${PROPER_NAME}" "${INSTALLED_SERVICES[@]}";then
 		for container in "${containers[@]}";do
 		for container in "${containers[@]}";do
 			RUNNING=$(docker ps -a -q --filter name=^/${container}$)
 			RUNNING=$(docker ps -a -q --filter name=^/${container}$)
-			while [[ -z ${RUNNING} ]];do
-				echo -e "\n\e[3m$container container missing\e[0m\n" \
-				&& prompt_confirm "Re-run container?" \
-				&& docker_run ${container//-/_}
+			if [[ -z ${RUNNING} ]];then
+				echo -e "\n\e[3m$container container missing\e[0m\n"
+				missingContainers=( "$container" )
+				prompt_confirm "Restore $container?"
+				if [[ $? == 0 ]];then
+					restore_container
+				fi
+			fi
 			RUNNING=$(docker ps -a -q --filter name=^/${container}$)
 			RUNNING=$(docker ps -a -q --filter name=^/${container}$)
-			done
+			[[ ${RUNNING} ]] && missingContainers=( "${missingContainers[@]}/$container" )
 		done
 		done
 	fi
 	fi
 	if [[ $RUNNING ]];then
 	if [[ $RUNNING ]];then
@@ -34,9 +38,14 @@ options_menu() {
 		[[ -d "${BASE_DIR}"/data/backup/${SERVICE_NAME} ]] \
 		[[ -d "${BASE_DIR}"/data/backup/${SERVICE_NAME} ]] \
 			&& [[ $(ls -A "${BASE_DIR}"/data/backup/${SERVICE_NAME}) ]] \
 			&& [[ $(ls -A "${BASE_DIR}"/data/backup/${SERVICE_NAME}) ]] \
 			&& insert menu "Restore Service" 6
 			&& insert menu "Restore Service" 6
-	elif [[ $RUNNING == "false" ]];then
+	elif [[ -z $RUNNING ]];then
+		echo "ds ${missingContainers[@]}"
 		menu=( "Reconfigure service" "Reinstall service" "Backup Service" "Start container(s)" "Destroy \"${PROPER_NAME}\"" "$exitmenu" )
 		menu=( "Reconfigure service" "Reinstall service" "Backup Service" "Start container(s)" "Destroy \"${PROPER_NAME}\"" "$exitmenu" )
 		add_ssl_menuentry menu 2
 		add_ssl_menuentry menu 2
+		[[ ${missingContainers[@]} ]] \
+			&& echo -e "\n\n\e[3m\xe2\x86\x92 \e[3mThe following containers are missing\e[0m" \
+			&& for container in "${missingContainers[@]}";do echo -e "\n    - $container";done \
+			&& menu=( "Restore missing containers" "Reconfigure service" "Reinstall service" "Backup Service" "Destroy \"${PROPER_NAME}\"" "$exitmenu" )
 		[[ -d "${BASE_DIR}"/data/backup/${SERVICE_NAME} ]] \
 		[[ -d "${BASE_DIR}"/data/backup/${SERVICE_NAME} ]] \
 			&& [[ $(ls -A "${BASE_DIR}"/data/backup/${SERVICE_NAME}) ]] \
 			&& [[ $(ls -A "${BASE_DIR}"/data/backup/${SERVICE_NAME}) ]] \
 			&& insert menu "Restore Service" 3
 			&& insert menu "Restore Service" 3
@@ -122,6 +131,13 @@ options_menu() {
 				sleep 0.2
 				sleep 0.2
 				break
 				break
 			;;
 			;;
+			"Restore missing containers")
+				echo -e "\n\e[3m\xe2\x86\x92 Restoring containers\e[0m"
+				for container in ${missingContainers[@]};do
+					restore_container
+				done
+				${SERVICES_DIR}/${SERVICE_NAME}/${SERVICE_NAME}.sh
+				;;
 			"Upgrade Image(s)")
 			"Upgrade Image(s)")
 				echo -e "\n\e[3m\xe2\x86\x92 Upgrade ${PROPER_NAME} images\e[0m"
 				echo -e "\n\e[3m\xe2\x86\x92 Upgrade ${PROPER_NAME} images\e[0m"
 				${SERVICES_DIR}/${SERVICE_NAME}/${SERVICE_NAME}.sh upgrade
 				${SERVICES_DIR}/${SERVICE_NAME}/${SERVICE_NAME}.sh upgrade
@@ -380,6 +396,19 @@ stop_containers() {
 	done
 	done
 }
 }
 
 
+restore_container() {
+	# build image if it does not exist locally
+	serviceName=$(echo $container | awk -F"-" '{print $2}')
+	if ! docker inspect --type=image ${IMAGES[$serviceName]} >/dev/null 2>&1;then
+		docker_build ${IMAGES[$serviceName]}
+	fi
+	docker_run ${container//-/_}
+	echo -en "\n- $container"
+	exit_response
+}
+
+
+
 remove_containers() {
 remove_containers() {
 	for container in ${containers[@]};do
 	for container in ${containers[@]};do
 		[[ $(docker ps -a -q --filter name=^/${container}$) ]]  \
 		[[ $(docker ps -a -q --filter name=^/${container}$) ]]  \