Don't poll sysDescr, sysObjectID, and sysName (#14562)

sysDescr, sysObjectID should not change unless the device is swapped, which would need  a rediscover anyway.
sysName is not needed, polling here overwrites custom sysName discovery.
Poll sysDescr, sysObjectID if they are not filled (poller run before discovery) as they are required for a lot of code to work right.
This commit is contained in:
Tony Murray
2022-11-02 14:33:18 -05:00
committed by GitHub
parent de9787ea9a
commit 51fcd8f6a0

View File

@@ -88,15 +88,23 @@ class Core implements Module
public function poll(OS $os): void
{
$snmpdata = SnmpQuery::numeric()
->get(['SNMPv2-MIB::sysDescr.0', 'SNMPv2-MIB::sysObjectID.0', 'SNMPv2-MIB::sysUpTime.0', 'SNMPv2-MIB::sysName.0'])
->values();
$device = $os->getDevice();
$oids = [];
// fill required fields if they are empty
if (! isset($device->sysDescr)) {
$oids[] = 'SNMPv2-MIB::sysDescr.0';
}
if (! isset($device->sysObjectID)) {
$oids[] = 'SNMPv2-MIB::sysObjectID.0';
}
$oids[] = 'SNMPv2-MIB::sysUpTime.0'; // always poll uptime
$snmpdata = SnmpQuery::numeric()->get($oids)->values();
$device->fill([
'sysName' => $snmpdata['.1.3.6.1.2.1.1.5.0'] ?? null,
'sysObjectID' => $snmpdata['.1.3.6.1.2.1.1.2.0'] ?? null,
'sysDescr' => $snmpdata['.1.3.6.1.2.1.1.1.0'] ?? null,
'sysDescr' => $snmpdata['.1.3.6.1.2.1.1.1.0'] ?? $device->sysDescr,
'sysObjectID' => $snmpdata['.1.3.6.1.2.1.1.2.0'] ?? $device->sysObjectID,
]);
$this->calculateUptime($os, $snmpdata['.1.3.6.1.2.1.1.3.0'] ?? null);