From 4f80b9dc91ddf2133b9faeaec5c1ab00c03495f8 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 20 Sep 2012 14:40:43 -0500
Subject: linhes-scripts: idle.sh: rework upcoming recordings to use
 misc_upcoming_recordings.pl as it is quicker. refs #851

change -d to -m as it includes more than just daily wake

add -r to check if mythfrontend is running on the hosts

mythwelcome-config.py: update preSDWUCheckCommand with new options
---
 abs/core/linhes-scripts/PKGBUILD              |  6 +-
 abs/core/linhes-scripts/idle.sh               | 81 +++++++++++----------------
 abs/core/linhes-scripts/mythwelcome-config.py |  2 +-
 3 files changed, 37 insertions(+), 52 deletions(-)

diff --git a/abs/core/linhes-scripts/PKGBUILD b/abs/core/linhes-scripts/PKGBUILD
index 51f7a0b..1dfe1ed 100644
--- a/abs/core/linhes-scripts/PKGBUILD
+++ b/abs/core/linhes-scripts/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=linhes-scripts
 pkgver=7
-pkgrel=50
+pkgrel=51
 pkgdesc="Various scripts that help to make LinHES, LinHES."
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -81,11 +81,11 @@ md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          'ac2a4a6b4100f4d7bfb9ecd9356c8c6e'
          'd2b475821f902c5e081e7da43a35e6ac'
          '95c092f67036a361ef7a57436f44332e'
-         '20ffe6edf6a0114237734baa0d2e84fd'
+         '92950f0ffb1faf1ed64c6be2b8fbc3f6'
          '3b776bbff68906ddc2f62b7e0dde3fe4'
          'a57641fb63d7bb6d92a438f1ea779a57'
          '3d0adf26280cde55a0c47188fff34826'
-         '439026b38a9d3d27478078887639152b'
+         'c3ada01d3a739abe3f920b02d4ea3f6e'
          'b2c3dd48a4abb976eda2d5fbf22a173a'
          'b527b01d119d3bc33b8fa69bdf1082bb'
          '9d077c24d102fa02e4f417d639d8b00a'
diff --git a/abs/core/linhes-scripts/idle.sh b/abs/core/linhes-scripts/idle.sh
index 7733b27..4f6174c 100755
--- a/abs/core/linhes-scripts/idle.sh
+++ b/abs/core/linhes-scripts/idle.sh
@@ -1,14 +1,16 @@
 #!/bin/bash
 
 usage () {
-    echo "Usage: $0 [-h] [-s] [-t <minutes_needed>] [-l] [-w] [-d] [-v]"
+    echo "Usage: $0 [-h] [-s] [-t <minutes_needed>] [-l] [-w] [-m] [-r] [-v]"
     echo
     echo "-h - Print this help/usage message and quit"
     echo "-s - Run silently (default is verbose)"
     echo "-t - Minutes of idle time needed (default is 20)"
     echo "-l - Check for user logins (default: false - do not check)"
     echo "-w - Check for open windows (default: false - do not check)"
-    echo "-d - Include mythshutdown daily wake in system busy (default: daily wake is system idle)"
+    echo "-m - Include mythshutdown daily wake, locked, & about to start wake in system busy"
+    echo "     (default: daily wake, locked & about to start wake is system idle)"
+    echo "-r - Check if mythfrontends are running (default: false - do not check)"
     echo "-v - Be more verbose for debugging"
     echo
     echo "Silent mode is recommended for use in cron jobs or scripts."
@@ -28,17 +30,19 @@ VERBOSE=1
 LOGINS=0
 WINDOWS=0
 DAILY=0
+RUNNING=0
 TIME_BEFORE=20
 TIME_AFTER=5    # Only adjustable by editing here
 
-while getopts "hslwdt:v" OPT ; do
+while getopts "hslwmrt:v" OPT ; do
     case $OPT in
     h) usage 0 ;;
     s) VERBOSE=0 ;;
     t) TIME_BEFORE=$OPTARG ;;
     l) LOGINS=1 ;;
     w) WINDOWS=1 ;;
-    d) DAILY=1 ;;
+    m) DAILY=1 ;;
+    r) RUNNING=1 ;;
     v) VERBOSE=2 ;;
     *) usage 1 ;;
     esac
@@ -50,13 +54,14 @@ shift $(($OPTIND - 1))
 msg "Checking what MythTV is doing now or plans to within $TIME_BEFORE minutes..."
 msg
 
-/usr/bin/mythshutdown -s 1
+/usr/bin/mythshutdown --status
 BUSY="$?"
 msg "mythshutdown returned $BUSY"
 if [ "$DAILY" -eq 0 ] ; then
-    msg "  including daily wake (64) as system idle"
-    # Ignore certain non-zero flag values
+    msg "  including daily wake, locked, and about to start wake as system idle"
+    # Ignore daily wake, locked and about to start wake flag values
     BUSY=$(($BUSY & 0x2F))
+    msg "  mythshutdown returned $BUSY"
 fi
 
 SCHEMALOCK=$(mysql_cmd "select count(*) from schemalock")
@@ -68,60 +73,40 @@ msg "running jobs $JOBS"
 INUSE=$(mysql_cmd "select count(*) from inuseprograms")
 msg "inuse programs $INUSE"
 
-POTENTIAL=$(mysql_cmd "select count(*) from recordmatch as rm, program as p
-  where rm.chanid = p.chanid and rm.starttime = p.starttime
-  and rm.starttime < now() + interval $TIME_BEFORE minute
-  and now() < p.endtime + interval $TIME_AFTER minute")
-msg "potential recordings $POTENTIAL"
-# See if any of the potential upcoming recordings are real.
-# This is ugly, but only the backend knows what programs it really
-# plans to record or ignore, so we can't just check the DB. :-(
-if [ "$VERBOSE" -ge 2 ] ; then
-    mysql_cmd "select p.starttime, p.endtime, p.title, subtitle
-      from recordmatch as rm, program as p
-      where rm.chanid = p.chanid and rm.starttime = p.starttime
-      and rm.starttime < now() + interval $TIME_BEFORE minute
-      and now() < p.endtime + interval $TIME_AFTER minute
-      order by p.starttime, p.endtime"
-fi
-UPCOMING=$(/usr/bin/mythbackend --printsched 2>&1 |
-  /bin/awk -v potential=$POTENTIAL '
-    BEGIN {item=-1;real=0}
-    /--- print list start ---/,/---  print list end  ---/ {
-        if (item>0 && item<=potential && substr($0,70,1) ~ "[0-9]") real+=1;
-        item += 1;
-    }
-    END {print real}
-')
+UPCOMING=$(timeout 3 misc_upcoming_recordings.pl --plain_text --text_format "%rs " --heading "" --minutes $TIME_BEFORE --recordings -1 | wc -w)
 msg "planned recordings $UPCOMING"
 if [ "$VERBOSE" -ge 2 ] ; then
-    /usr/bin/mythbackend --printsched 2>&1 |
-      /bin/awk -v potential=$POTENTIAL '
-        BEGIN {item=-1}
-        /--- print list start ---/,/---  print list end  ---/ {
-            if (item>0 && item<=potential) print $0;
-            item += 1;
-        }'
+    msg
+    timeout 3 /usr/LH/bin/misc_upcoming_recordings.pl --plain_text --minutes $TIME_BEFORE --recordings -1
 fi
 
-# Check all frontends if they are playing
+# Check all host's mythfrontends if they are running and playing
 HOSTNAMES=$(mysql_cmd "select hostname from settings where value = 'FrontendIdleTimeout'")
+FERUNNING=0
 PLAYING=0
 for HOST in $HOSTNAMES
 do
     if [ "$VERBOSE" -ge 2 ]; then
-        msg "Checking if $HOST is playing recordings or videos..."
+        msg "Checking $HOST's mythfrontend status..."
     fi
-ncOUTPUT=$(nc $HOST 6546  << EOF
+ncOUTPUT=$(timeout 2 nc $HOST 6546  << EOF
 query location
 quit
 EOF
 )
+    if [ "$RUNNING" -ge 1 ] ; then
+        if [[ "$ncOUTPUT" == *"# "* ]]; then
+            FERUNNING=$(( $FERUNNING + 1 ))
+            msg "$HOST's mythfrontend is running $FERUNNING"
+        else
+            msg "$HOST's mythfrontend is NOT running $FERUNNING"
+        fi
+    fi
     if [[ "$ncOUTPUT" == *"# Playback "* ]]; then
         PLAYING=$(( $PLAYING + 1 ))
-        msg "$HOST is playing a recording or video"
+        msg "$HOST is playing a recording or video $PLAYING"
     else
-        msg "$HOST is NOT playing a recording or video"
+        msg "$HOST is NOT playing a recording or video $PLAYING"
     fi
 done
 
@@ -134,7 +119,7 @@ if [ "$LOGINS" -ge 1 ] ; then
     msg "${USERS}"
   else
     LOGINS=0
-    msg "No users are logged in"
+    msg "No users are logged in $LOGINS"
   fi
 fi
 
@@ -145,13 +130,13 @@ if [ "$WINDOWS" -ge 1 ] ; then
     FOUNDWINDOWS="$?"
     FOUNDWINDOWS=$(($FOUNDWINDOWS == 0))
     if [ "$FOUNDWINDOWS" -eq 0 ] ; then
-        msg "no application windows open"
+        msg "no application windows open $FOUNDWINDOWS"
     else
-        msg "one or more application windows open"
+        msg "one or more application windows open $FOUNDWINDOWS"
     fi
 fi
 
-activities=$(($BUSY + $SCHEMALOCK + $JOBS + $INUSE + $UPCOMING + $PLAYING + $LOGINS + $FOUNDWINDOWS))
+activities=$(($BUSY + $SCHEMALOCK + $JOBS + $INUSE + $UPCOMING + $FERUNNING + $PLAYING + $LOGINS + $FOUNDWINDOWS))
 msg
 if [ "$activities" -eq 0 ] ; then
     msg "System is idle"
diff --git a/abs/core/linhes-scripts/mythwelcome-config.py b/abs/core/linhes-scripts/mythwelcome-config.py
index c0f442e..5ab24b0 100755
--- a/abs/core/linhes-scripts/mythwelcome-config.py
+++ b/abs/core/linhes-scripts/mythwelcome-config.py
@@ -24,4 +24,4 @@ if mythdb.settings[localhostname].idleTimeoutSecs == u'0':
 mythdb.settings.NULL.WakeupTimeFormat = u'yyyy-MM-ddThh:mm:ss'
 mythdb.settings.NULL.SetWakeuptimeCommand = u'/usr/bin/mythshutdown --setwakeup $time'
 mythdb.settings.NULL.ServerHaltCommand = u'/usr/bin/mythshutdown --shutdown'
-mythdb.settings.NULL.preSDWUCheckCommand = u'/usr/LH/bin/idle.sh -s -d'
+mythdb.settings.NULL.preSDWUCheckCommand = u'/usr/LH/bin/idle.sh -s -m -r'
-- 
cgit v0.12