| ... | ... |
@@ -715,6 +715,8 @@ function restart_service() {
|
| 715 | 715 |
function screen_it {
|
| 716 | 716 |
NL=`echo -ne '\015'` |
| 717 | 717 |
SCREEN_NAME=${SCREEN_NAME:-stack}
|
| 718 |
+ SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
|
| 719 |
+ |
|
| 718 | 720 |
if is_service_enabled $1; then |
| 719 | 721 |
# Append the service to the screen rc file |
| 720 | 722 |
screen_rc "$1" "$2" |
| ... | ... |
@@ -730,7 +732,7 @@ function screen_it {
|
| 730 | 730 |
screen -S $SCREEN_NAME -p $1 -X log on |
| 731 | 731 |
ln -sf ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log ${SCREEN_LOGDIR}/screen-${1}.log
|
| 732 | 732 |
fi |
| 733 |
- screen -S $SCREEN_NAME -p $1 -X stuff "$2$NL" |
|
| 733 |
+ screen -S $SCREEN_NAME -p $1 -X stuff "$2 || touch \"$SERVICE_DIR/$SCREEN_NAME/$1.failure\"$NL" |
|
| 734 | 734 |
fi |
| 735 | 735 |
} |
| 736 | 736 |
|
| ... | ... |
@@ -755,6 +757,47 @@ function screen_rc {
|
| 755 | 755 |
fi |
| 756 | 756 |
} |
| 757 | 757 |
|
| 758 |
+# Helper to remove the *.failure files under $SERVICE_DIR/$SCREEN_NAME |
|
| 759 |
+# This is used for service_check when all the screen_it are called finished |
|
| 760 |
+# init_service_check |
|
| 761 |
+function init_service_check() {
|
|
| 762 |
+ SCREEN_NAME=${SCREEN_NAME:-stack}
|
|
| 763 |
+ SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
|
| 764 |
+ |
|
| 765 |
+ if [[ ! -d "$SERVICE_DIR/$SCREEN_NAME" ]]; then |
|
| 766 |
+ mkdir -p "$SERVICE_DIR/$SCREEN_NAME" |
|
| 767 |
+ fi |
|
| 768 |
+ |
|
| 769 |
+ rm -f "$SERVICE_DIR/$SCREEN_NAME"/*.failure |
|
| 770 |
+} |
|
| 771 |
+ |
|
| 772 |
+# Helper to get the status of each running service |
|
| 773 |
+# service_check |
|
| 774 |
+function service_check() {
|
|
| 775 |
+ local service |
|
| 776 |
+ local failures |
|
| 777 |
+ SCREEN_NAME=${SCREEN_NAME:-stack}
|
|
| 778 |
+ SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
|
| 779 |
+ |
|
| 780 |
+ |
|
| 781 |
+ if [[ ! -d "$SERVICE_DIR/$SCREEN_NAME" ]]; then |
|
| 782 |
+ echo "No service status directory found" |
|
| 783 |
+ return |
|
| 784 |
+ fi |
|
| 785 |
+ |
|
| 786 |
+ # Check if there is any falure flag file under $SERVICE_DIR/$SCREEN_NAME |
|
| 787 |
+ failures=`ls "$SERVICE_DIR/$SCREEN_NAME"/*.failure 2>/dev/null` |
|
| 788 |
+ |
|
| 789 |
+ for service in $failures; do |
|
| 790 |
+ service=`basename $service` |
|
| 791 |
+ service=${service::-8}
|
|
| 792 |
+ echo "Error: Service $service is not running" |
|
| 793 |
+ done |
|
| 794 |
+ |
|
| 795 |
+ if [ -n "$failures" ]; then |
|
| 796 |
+ echo "More details about the above errors can be found with screen, with ./rejoin-stack.sh" |
|
| 797 |
+ fi |
|
| 798 |
+} |
|
| 758 | 799 |
|
| 759 | 800 |
# ``pip install`` the dependencies of the package before ``setup.py develop`` |
| 760 | 801 |
# so pip and not distutils processes the dependency chain |
| ... | ... |
@@ -923,6 +923,8 @@ sleep 1 |
| 923 | 923 |
# Set a reasonable status bar |
| 924 | 924 |
screen -r $SCREEN_NAME -X hardstatus alwayslastline "$SCREEN_HARDSTATUS" |
| 925 | 925 |
|
| 926 |
+# Initialize the directory for service status check |
|
| 927 |
+init_service_check |
|
| 926 | 928 |
|
| 927 | 929 |
# Keystone |
| 928 | 930 |
# -------- |
| ... | ... |
@@ -1700,6 +1702,8 @@ if [[ -x $TOP_DIR/local.sh ]]; then |
| 1700 | 1700 |
$TOP_DIR/local.sh |
| 1701 | 1701 |
fi |
| 1702 | 1702 |
|
| 1703 |
+# Check the status of running services |
|
| 1704 |
+service_check |
|
| 1703 | 1705 |
|
| 1704 | 1706 |
# Fin |
| 1705 | 1707 |
# === |