UNPKG

opennms

Version:

Client API for the OpenNMS network monitoring platform

116 lines (89 loc) 3.4 kB
import {Address4, Address6} from 'ip-address'; import {Moment} from 'moment'; import {IHasUrlValue} from '../api/IHasUrlValue'; import { Util } from '../internal/Util'; import {OnmsManagedType} from './OnmsManagedType'; import {OnmsMonitoredService} from './OnmsMonitoredService'; import {OnmsPrimaryType} from './OnmsPrimaryType'; import {OnmsSnmpInterface} from './OnmsSnmpInterface'; /** * Represents an OpenNMS IP interface. * @category Model */ export class OnmsIpInterface implements IHasUrlValue { /** store the interface's associated SNMP interface, used by get/set `.snmpInterface` */ private _snmpInterface?: OnmsSnmpInterface; /** the interface ID */ public id?: number; /** the IP address */ public ipAddress?: Address4 | Address6; /** the hostname */ public hostname?: string; /** whether the interface is down */ public isDown?: boolean; /** whether the interface is managed */ public isManaged?: OnmsManagedType; /** the last time the interface was provisioned */ public lastCapsdPoll?: Moment; /** the last time ingress flows were received */ public lastIngressFlow?: Moment; /** the last time egress flows were received */ public lastEgressFlow?: Moment; /** the number of monitored services this interface has */ public monitoredServiceCount?: number; /** the SNMP primary status of the interface */ public snmpPrimary?: OnmsPrimaryType; /** the SNMP interface ID associated with this interface */ public snmpInterfaceId?: number; /** the SNMP interface, if it appears on the node */ public get snmpInterface(): OnmsSnmpInterface | undefined { if (this._snmpInterface) { return this._snmpInterface; } else if (this.node && this.node.snmpInterfaces) { for (const iface of this.node.snmpInterfaces) { if (iface.id === this.snmpInterfaceId) { this._snmpInterface = iface; return iface; } } } return undefined; } public set snmpInterface(iface: OnmsSnmpInterface | undefined) { this._snmpInterface = iface; } /** the node this interface is associated with */ public node?: any; /** the services on this interface */ public services = [] as OnmsMonitoredService[]; /** @inheritdoc */ public get urlValue() { return String(this.id); } /** * create an IP interface object from a JSON object * @hidden */ public static fromData(data: any) { const iface = new OnmsIpInterface(); iface.id = Util.toNumber(data.id); iface.hostname = data.hostName || data.hostname; iface.ipAddress = Util.toIPAddress(data.ipAddress); iface.isDown = !!data.isDown; iface.isManaged = OnmsManagedType.forId(data.isManaged); iface.lastCapsdPoll = Util.toDate(data.lastCapsdPoll); iface.lastIngressFlow = Util.toDate(data.lastIngressFlow); iface.lastEgressFlow = Util.toDate(data.lastEgressFlow); iface.monitoredServiceCount = Util.toNumber(data.monitoredServiceCount); iface.snmpPrimary = OnmsPrimaryType.forId(data.snmpPrimary); if (data.nodeId !== undefined) { iface.node = {}; iface.node.id = Util.toNumber(data.nodeId); } if (data.snmpInterface && data.snmpInterface.id) { iface.snmpInterfaceId = Util.toNumber(data.snmpInterface.id); iface.snmpInterface = OnmsSnmpInterface.fromData(data.snmpInterface); } return iface; } }