#!/usr/local/bin/php-cgi -f 0) { // Check list of current mirrors vs old mirrors, notify if one has appeared/disappeared if ($mirror_list != $previous_mirror_list) { $notices[] = sprintf(gettext("List of mirrors changed. Old: (%s) New: (%s)"), implode(", ", $previous_mirror_list), implode(", ", $mirror_list)); } // For each mirror, check the mirror status, notify if changed foreach ($mirror_list as $mirror) { if (is_array($previous_mirror_status[$mirror])) { // Notify if the status changed if ($mirror_status[$mirror]['status'] != $previous_mirror_status[$mirror]['status']) { $notices[] = sprintf(gettext("Mirror %s status changed from %s to %s."), $mirror, $previous_mirror_status[$mirror]['status'], $mirror_status[$mirror]['status']); } // Notify if the drive count changed if (count($mirror_status[$mirror]['components']) != count($previous_mirror_status[$mirror]['components'])) { // Notify if the consumer count changed. $notices[] = sprintf(gettext("Mirror %s consumer count changed from %d to %d."), $mirror, count($previous_mirror_status[$mirror]['components']), count($mirror_status[$mirror]['components'])); } if (strtoupper($mirror_status[$mirror]['status']) == "DEGRADED") { // Check the drive status as it may be different. asort($mirror_status[$mirror]['components']); asort($previous_mirror_status[$mirror]['components']); if ($mirror_status[$mirror]['components'] != $previous_mirror_status[$mirror]['components']) { $notices[] = sprintf(gettext("Mirror %s drive status changed. Old: (%s) New: (%s)"), $mirror, implode(", ", $previous_mirror_status[$mirror]['components']), implode(", ", $mirror_status[$mirror]['components'])); } } } } } } if (count($notices)) { file_notice("gmirror", implode("\n ", $notices), "GEOM Mirror Status Change", 1); } // Write out current status if changed if ($mirror_status != $previous_mirror_status) { file_put_contents($status_file, serialize($mirror_status)); } ?>