#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License Version 1.0 (CDDL-1.0).
# You can obtain a copy of the license from the top-level file
# "OPENSOLARIS.LICENSE" or at <http://opensource.org/licenses/CDDL-1.0>.
# You may not use this file except in compliance with the license.
#
# CDDL HEADER END
#

#
# Send notification in response to a fault induced statechange
#
# ZEVENT_SUBCLASS: 'statechange'
# ZEVENT_VDEV_STATE_STR: 'DEGRADED', 'FAULTED' or 'REMOVED'
#
# Exit codes:
#   0: notification sent
#   1: notification failed
#   2: notification not configured
#   3: statechange not relevant
#   4: statechange string missing (unexpected)

[ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc"
. "${ZED_ZEDLET_DIR}/zed-functions.sh"

[ -n "${ZEVENT_VDEV_STATE_STR}" ] || exit 4

if [ "${ZEVENT_VDEV_STATE_STR}" != "FAULTED" ] \
        && [ "${ZEVENT_VDEV_STATE_STR}" != "DEGRADED" ] \
        && [ "${ZEVENT_VDEV_STATE_STR}" != "REMOVED" ]; then
    exit 3
fi

umask 077
note_subject="ZFS device fault for pool ${ZEVENT_POOL_GUID} on $(hostname)"
note_pathname="${TMPDIR:="/tmp"}/$(basename -- "$0").${ZEVENT_EID}.$$"
{
    if [ "${ZEVENT_VDEV_STATE_STR}" = "FAULTED" ] ; then
        echo "The number of I/O errors associated with a ZFS device exceeded"
        echo "acceptable levels. ZFS has marked the device as faulted."
    elif [ "${ZEVENT_VDEV_STATE_STR}" = "DEGRADED" ] ; then
        echo "The number of checksum errors associated with a ZFS device"
        echo "exceeded acceptable levels. ZFS has marked the device as"
        echo "degraded."
    else
        echo "ZFS has detected that a device was removed."
    fi

    echo
    echo " impact: Fault tolerance of the pool may be compromised."
    echo "    eid: ${ZEVENT_EID}"
    echo "  class: ${ZEVENT_SUBCLASS}"
    echo "  state: ${ZEVENT_VDEV_STATE_STR}"
    echo "   host: $(hostname)"
    echo "   time: ${ZEVENT_TIME_STRING}"

    [ -n "${ZEVENT_VDEV_TYPE}" ] && echo "  vtype: ${ZEVENT_VDEV_TYPE}"
    [ -n "${ZEVENT_VDEV_PATH}" ] && echo "  vpath: ${ZEVENT_VDEV_PATH}"
    [ -n "${ZEVENT_VDEV_PHYSPATH}" ] && echo "  vphys: ${ZEVENT_VDEV_PHYSPATH}"
    [ -n "${ZEVENT_VDEV_GUID}" ] && echo "  vguid: ${ZEVENT_VDEV_GUID}"
    [ -n "${ZEVENT_VDEV_DEVID}" ] && echo "  devid: ${ZEVENT_VDEV_DEVID}"

    echo "   pool: ${ZEVENT_POOL_GUID}"

} > "${note_pathname}"

zed_notify "${note_subject}" "${note_pathname}"; rv=$?

rm -f "${note_pathname}"
exit "${rv}"
