mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Availability module fixes (#15369)
* Refactor poller to allow modules to run even if the device is down Include core in config (but not webui) to avoid silly shenanigans Inject datastore into polling * Needed to split datastore interface * Cleanup some data_udpate() references * Apply fixes from StyleCI * Fix legacy poller :D * Output to the correct stream * Fix lint issues * Apply fixes from StyleCI * Fix discovery not including core and submodule handling * Use whereRaw --------- Co-authored-by: StyleCI Bot <bot@styleci.io>
This commit is contained in:
@@ -25,7 +25,10 @@
|
||||
|
||||
namespace LibreNMS\Util;
|
||||
|
||||
use App\Models\Device;
|
||||
use LibreNMS\Config;
|
||||
use LibreNMS\Modules\LegacyModule;
|
||||
use LibreNMS\Polling\ModuleStatus;
|
||||
|
||||
class Module
|
||||
{
|
||||
@@ -35,4 +38,20 @@ class Module
|
||||
|
||||
return class_exists($module_class) ? new $module_class : new LegacyModule($name);
|
||||
}
|
||||
|
||||
public static function status(string $name, Device $device, ?bool $manual = null): ModuleStatus
|
||||
{
|
||||
return new ModuleStatus(
|
||||
Config::get('poller_modules.' . $name),
|
||||
Config::get("os.{$device->os}.poller_modules.$name"),
|
||||
$device->getAttrib('poll_' . $name),
|
||||
$manual,
|
||||
);
|
||||
}
|
||||
|
||||
public static function exists(string $module): bool
|
||||
{
|
||||
return class_exists(StringHelpers::toClass($module, '\\LibreNMS\\Modules\\'))
|
||||
|| is_file(base_path("includes/polling/$module.inc.php"));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user