. * * @link https://www.librenms.org * * @copyright 2022 Tony Murray * @author Tony Murray */ namespace LibreNMS\Validations\Poller; use Illuminate\Support\Facades\Redis; use LibreNMS\ValidationResult; class CheckRedis implements \LibreNMS\Interfaces\Validation { /** * @inheritDoc */ public function validate(): ValidationResult { if ($this->redisIsAvailable()) { $driver = config('cache.default'); if ($driver != 'redis') { return ValidationResult::warn(trans('validation.validations.poller.CheckRedis.bad_driver', ['driver' => $driver])); } return ValidationResult::ok(trans('validation.validations.poller.CheckRedis.ok')); } if (\LibreNMS\Config::get('distributed_poller') && \App\Models\PollerCluster::isActive()->count() > 2) { return ValidationResult::fail(trans('validation.validations.poller.CheckRedis.unavailable')); } return ValidationResult::ok(trans('validation.validations.poller.CheckRedis.unavailable')); } /** * @inheritDoc */ public function enabled(): bool { return true; } private function redisIsAvailable(): bool { try { Redis::ping(); return true; } catch (\Exception $e) { return false; } } }