mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Poll device job (#16306)
* Split out single device polling to a Laravel Job Probably totally broken :) * Add dispatch option to device:poll * Fix up submodules * Add missing logger parameter * Apply fixes from StyleCI * Update module format in test helper * Apply fixes from StyleCI * Use Log facade to match other code --------- Co-authored-by: Tony Murray <[email protected]>
This commit is contained in:
co-authored by
Tony Murray
parent
2face4bc4a
commit
db5fdf705d
@@ -26,6 +26,7 @@
|
||||
namespace LibreNMS\Util;
|
||||
|
||||
use App\Actions\Device\ValidateDeviceAndCreate;
|
||||
use App\Jobs\PollDevice;
|
||||
use App\Models\Device;
|
||||
use DeviceCache;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
@@ -35,7 +36,6 @@ use LibreNMS\Config;
|
||||
use LibreNMS\Data\Source\SnmpResponse;
|
||||
use LibreNMS\Exceptions\FileNotFoundException;
|
||||
use LibreNMS\Exceptions\InvalidModuleException;
|
||||
use LibreNMS\Poller;
|
||||
|
||||
class ModuleTestHelper
|
||||
{
|
||||
@@ -178,8 +178,7 @@ class ModuleTestHelper
|
||||
Debug::set();
|
||||
Debug::setVerbose();
|
||||
discover_device($device, $this->parseArgs('discovery'));
|
||||
$poller = app(Poller::class, ['device_spec' => $device_id, 'module_override' => $this->modules]);
|
||||
$poller->poll();
|
||||
(new PollDevice($device_id, $this->modules))->handle();
|
||||
Debug::set($save_debug);
|
||||
Debug::setVerbose($save_vdebug);
|
||||
$collection_output = ob_get_contents();
|
||||
@@ -312,7 +311,7 @@ class ModuleTestHelper
|
||||
* Probably needs to be more robust
|
||||
*
|
||||
* @param array $modules
|
||||
* @return array
|
||||
* @return array<string, bool|string[]>
|
||||
*
|
||||
* @throws InvalidModuleException
|
||||
*/
|
||||
@@ -320,17 +319,22 @@ class ModuleTestHelper
|
||||
{
|
||||
// generate a full list of modules
|
||||
$full_list = [];
|
||||
foreach ($modules as $module) {
|
||||
foreach ($modules as $index => $module) {
|
||||
$module = is_string($index) ? $index : $module;
|
||||
|
||||
// only allow valid modules
|
||||
if (! (Config::has("poller_modules.$module") || Config::has("discovery_modules.$module"))) {
|
||||
if (! Module::exists($module)) {
|
||||
throw new InvalidModuleException("Invalid module name: $module");
|
||||
}
|
||||
|
||||
$full_list = array_merge($full_list, Module::fromName($module)->dependencies());
|
||||
$full_list[] = $module;
|
||||
foreach (Module::fromName($module)->dependencies() as $dependency) {
|
||||
$full_list[$dependency] = true;
|
||||
}
|
||||
|
||||
$full_list[$module] = true;
|
||||
}
|
||||
|
||||
return array_unique($full_list);
|
||||
return $full_list;
|
||||
}
|
||||
|
||||
private function parseArgs($type)
|
||||
@@ -339,7 +343,7 @@ class ModuleTestHelper
|
||||
return false;
|
||||
}
|
||||
|
||||
return parse_modules($type, ['m' => implode(',', $this->modules)]);
|
||||
return parse_modules($type, ['m' => implode(',', array_keys($this->modules))]);
|
||||
}
|
||||
|
||||
private function qPrint($var)
|
||||
@@ -627,8 +631,7 @@ class ModuleTestHelper
|
||||
ob_start();
|
||||
|
||||
\Log::setDefaultDriver('console');
|
||||
$poller = app(Poller::class, ['device_spec' => $device_id, 'module_override' => $this->modules]);
|
||||
$poller->poll();
|
||||
(new PollDevice($device_id, $this->modules))->handle();
|
||||
|
||||
$this->poller_output = ob_get_contents();
|
||||
if ($this->quiet) {
|
||||
|
||||
Reference in New Issue
Block a user