Files
Heath Barnhart 8a921567ba New OS: Ekinops (#12088)
* Initial push

* renamed mib files

* adding eki mgmt event trap handler

* Adding handler to config/snmptraps.php

* added slot state monitoring

* Ekinops port discovery script

* cleanup

* moved ifDescr change from discovery to poller

* simplified port poller script

* fixed poller array

* add Mgnt2TrapNMSEvent handler

* Adding nms alarm handler

* adding handler to snmptrap.php

* Updated handler names, exapanded event traphandler

* beginning tests and cleanup

* adding snmpsim data

* making tests

* finished trap tests

* fixed ekinops.yaml

* style and lint pass

* new snmpsim data and fixes

* adding correct snmpsim

* fixed test data

* Update ekinops.svg

* Update ekinops.svg

* Update ekinops.yaml

* new os discovery method

* remove unneeded precache line

* removing unneccesary pre-cache script

* styleci fixes

* few more style fixes

* trim whitespace in discovery

* remove unused mibs

Co-authored-by: Tony Murray <murraytony@gmail.com>
2020-09-23 18:23:57 +02:00

66 lines
1.9 KiB
PHP

<?php
/**
* Ekinops.php
*
* Ekinops Optical Network
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @link http://librenms.org
* @copyright KanREN, Inc 2020
* @author Heath Barnhart <hbarnhart@kanren.net>
*/
namespace LibreNMS\OS;
use App\Models\Device;
use LibreNMS\Interfaces\Discovery\OSDiscovery;
use LibreNMS\OS;
class Ekinops extends OS implements OSDiscovery
{
public function discoverOS(Device $device): void
{
$sysDescr = $device->sysDescr;
$info = explode(',', $sysDescr);
$device->hardware = trim($info[1]);
$device->version = trim($info[2]);
$mgmtCard = snmp_get($this->getDeviceArray(), 'mgnt2RinvHwPlatform.0', '-OQv', 'EKINOPS-MGNT2-MIB');
$mgmtInfo = self::ekinopsInfo($mgmtCard);
$device->serial = $mgmtInfo['Serial Number'];
}
/**
* Parses Ekinops inventory returned in a tabular format within a single OID
* @param string $ekiInfo
* @return array $inv
*/
public static function ekinopsInfo($ekiInfo)
{
$info = explode("\n", $ekiInfo);
unset($info[0]);
$inv = [];
foreach ($info as $line) {
[$attr, $value] = explode(':', $line);
$attr = trim($attr);
$value = trim($value);
$inv[$attr] = $value;
}
return $inv;
}
}