Home | History | Annotate | Download | only in contrib
      1 #!/bin/bash
      2 # Copyright (c) 2015 The Chromium OS Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 SCRIPT_DIR=$(dirname $(readlink -f $0))
      7 cd ${SCRIPT_DIR}/..
      8 
      9 LOGDIR=logs/stable-version
     10 ASSIGN_STABLE=site_utils/stable_images/assign_stable_images.py
     11 OPTIONS=()
     12 
     13 # STATUS is part hack, part safety valve.  The cron job that invokes
     14 # this script may be installed and enabled on both a primary and backup
     15 # server.  We skip running on the backup, but really, the backup
     16 # shouldn't have invoked this script in the first place...
     17 #
     18 # If we're not invoked on an autotest server at all, we assume this is
     19 # for testing, and invoke a dry run instead.
     20 #
     21 SERVER_STATUS=$(cli/atest server list $(hostname) 2>&1 |
     22                   awk '/^Status *:/ { print $NF }')
     23 if [ "${SERVER_STATUS}" = "primary" ]; then
     24   mkdir -p ${LOGDIR}
     25   NOTIFY=(
     26     chromeos-infra-eng@grotations.appspotmail.com
     27   )
     28 else
     29   if [ -n "${SERVER_STATUS}" ]; then
     30     # must be backup
     31     exit 0
     32   fi
     33   OPTIONS=( --dry-run )
     34   NOTIFY=( ${LOGNAME}@google.com )
     35 fi
     36 
     37 # Redirect onto a log file.  For debug purposes, skip redirection if
     38 # there's a command line argument (we ignore what the argument is), or
     39 # if there's no log directory.
     40 #
     41 TAG=$(date '+%Y-%W')
     42 if [ $# -eq 0 -a -d ${LOGDIR} ]; then
     43     LOGFILE="update-${TAG}.log"
     44     exec >>${LOGDIR}/${LOGFILE} 2>&1
     45 fi
     46 
     47 trap 'rm -f ${TMPFILE}' EXIT
     48 TMPFILE=$(mktemp)
     49 
     50 date
     51 $ASSIGN_STABLE "${OPTIONS[@]}" 2>&1 | tee ${TMPFILE}
     52 echo
     53 
     54 # If we have a log directory, clean it up, and send e-mail notification.
     55 # The log files change name each week, so by throwing out all but the
     56 # most recent 14 files, we keep about 3 months of history, plus this
     57 # week's log.
     58 #
     59 if [ -d ${LOGDIR} ]; then
     60     SUBJECT="Stable version update summary ${TAG}"
     61     site_utils/gmail_lib.py -s "${SUBJECT}" "${NOTIFY[@]}" <${TMPFILE}
     62     rm -f $(ls -r ${LOGDIR}/update-*.log | sed '1,14 d')
     63 fi
     64