You are here

protected function SensorDisappearedSensors::checkForMissingSensors in Monitoring 7

Checks for missing sensors.

Parameters

SensorResultInterface $result: The current sensor result object.

array $available_sensors: The available sensors list.

\Drupal\monitoring\Sensor\SensorInfo[] $sensor_info: The current sensor info.

1 call to SensorDisappearedSensors::checkForMissingSensors()
SensorDisappearedSensors::runSensor in lib/Drupal/monitoring/Sensor/Sensors/SensorDisappearedSensors.php
Runs the sensor, updating $sensor_result.

File

lib/Drupal/monitoring/Sensor/Sensors/SensorDisappearedSensors.php, line 112
Contains \Drupal\monitoring\Sensor\Sensors\SensorDisappearedSensors.

Class

SensorDisappearedSensors
Monitors if sensors disappeared without prior being disabled.

Namespace

Drupal\monitoring\Sensor\Sensors

Code

protected function checkForMissingSensors(SensorResultInterface $result, $available_sensors, $sensor_info) {
  $result
    ->setStatus(SensorResultInterface::STATUS_OK);
  $sensors_to_remove = array();

  // Check for missing sensors.
  foreach ($available_sensors as $available_sensor) {
    if (!in_array($available_sensor['name'], array_keys($sensor_info))) {

      // If sensor is missing and was not disabled prior to go missing do
      // escalate to critical status.
      if (!empty($available_sensor['enabled'])) {
        $result
          ->setStatus(SensorResultInterface::STATUS_CRITICAL);
        $result
          ->addStatusMessage('Missing sensor @name', array(
          '@name' => $available_sensor['name'],
        ));
      }
      else {
        $sensors_to_remove[] = $available_sensor['name'];
      }
    }
  }

  // If having sensor to remove, reset the available sensors variable.
  if (!empty($sensors_to_remove)) {
    foreach ($sensors_to_remove as $sensor_to_remove) {
      unset($available_sensors[$sensor_to_remove]);
    }
    variable_set('monitoring_available_sensors', $available_sensors);
    watchdog('monitoring', '@count new sensor/s removed: @names', array(
      '@count' => count($sensors_to_remove),
      '@names' => implode(', ', $sensors_to_remove),
    ));
  }
}