-- ARISTA-EXTERNAL-ALARM-MIB: Arista External Alarm MIB
-- Copyright (c) 2018 Arista Networks, Inc.  All rights reserved.

ARISTA-EXTERNAL-ALARM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    NOTIFICATION-TYPE, Unsigned32       FROM SNMPv2-SMI
    MODULE-COMPLIANCE, OBJECT-GROUP,
    NOTIFICATION-GROUP                  FROM SNMPv2-CONF
    TruthValue, DisplayString,
    TimeStamp                           FROM SNMPv2-TC
    aristaMibs                          FROM ARISTA-SMI-MIB;

aristaExternalAlarmMIB MODULE-IDENTITY
    LAST-UPDATED "201802260000Z" -- Feb 26, 2018
    ORGANIZATION "Arista Networks, Inc."
    CONTACT-INFO
        "Arista Networks, Inc.

        Postal: 5453 Great America Parkway
                Santa Clara, CA 95054

        Tel: +1 408 547-5500

        E-mail: snmp@arista.com"
    DESCRIPTION
        "The MIB module for reporting the configuration and status
        of all external alarms present on an Arista device."

    REVISION     "201802260000Z" -- Feb 26, 2018
    DESCRIPTION  "Initial version of this MIB module."
    ::= { aristaMibs 25 }

-- Textual Conventions --

aristaExternalAlarmMibNotifications OBJECT IDENTIFIER
    ::= { aristaExternalAlarmMIB 0 }

aristaExternalAlarmMibObjects       OBJECT IDENTIFIER
    ::= { aristaExternalAlarmMIB 1 }

aristaExternalAlarmMibConformance   OBJECT IDENTIFIER
    ::= { aristaExternalAlarmMIB 2 }

-- external alarm table --

aristaExternalAlarmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AristaExternalAlarmTableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of external alarm entries. There is one entry for
        each external alarm input present on the system."
    ::= { aristaExternalAlarmMibObjects 1 }

aristaExternalAlarmTableEntry OBJECT-TYPE
    SYNTAX      AristaExternalAlarmTableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing configuration and status information
        for an external alarm."
    INDEX   { aristaExternalAlarmId }
    ::= { aristaExternalAlarmTable 1 }

AristaExternalAlarmTableEntry ::=
    SEQUENCE {
        aristaExternalAlarmId              Unsigned32,
        aristaExternalAlarmAsserted        TruthValue,
        aristaExternalAlarmCount           Unsigned32,
        aristaExternalAlarmLastAsserted    TimeStamp,
        aristaExternalAlarmLastDeasserted  TimeStamp,
        aristaExternalAlarmDescription     DisplayString,
        aristaExternalAlarmPolarity        INTEGER,
        aristaExternalAlarmAction          INTEGER
    }

aristaExternalAlarmId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The numerical index of the alarm."
    ::= { aristaExternalAlarmTableEntry 1 }

aristaExternalAlarmAsserted OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current status of the alarm.
        This attribute has value 'true(1)' if the alarm is enabled and asserted;
        otherwise, the value is 'false(2)'."
    ::= { aristaExternalAlarmTableEntry 2 }

aristaExternalAlarmCount OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times the alarm has asserted."
    ::= { aristaExternalAlarmTableEntry 3 }

aristaExternalAlarmLastAsserted OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime at which the alarm most recently asserted.
        A value of 0 means the alarm has not asserted."
    ::= { aristaExternalAlarmTableEntry 4 }

aristaExternalAlarmLastDeasserted OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime at which the alarm most recently deasserted.
        A value of 0 means the alarm has not deasserted."
    ::= { aristaExternalAlarmTableEntry 5 }

aristaExternalAlarmDescription OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A description of the alarm."
    ::= { aristaExternalAlarmTableEntry 6 }

aristaExternalAlarmPolarity OBJECT-TYPE
    SYNTAX      INTEGER { open(1),
                          closed(2)
                     }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current polarity of the alarm.
        This attribute has value 'open(1)' if the alarm relay is normally open;
        otherwise, if the polarity is 'closed(2)', the relay is normally closed."
    ::= { aristaExternalAlarmTableEntry 7 }

aristaExternalAlarmAction OBJECT-TYPE
    SYNTAX      INTEGER { ignore(1),
                          syslog(2),
                          snmpTrap(3)
                     }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The configured response to alarm status changes.
        This attribute has value 'ignore(1)' if alarms are ignored, 'syslog(2)' if
        system log messages are generated on alarm assertion and deassertion,
        and 'snmpTrap(3)' if both snmp traps and system log messages
        are generated on alarm assertion and deassertion."
    ::= { aristaExternalAlarmTableEntry 8 }

-- Notifications --

aristaExternalAlarmAssertedNotif NOTIFICATION-TYPE
    OBJECTS     { aristaExternalAlarmDescription }
    STATUS      current
    DESCRIPTION
        "This trap signifies that the alarm's status has changed to asserted."
    ::= { aristaExternalAlarmMibNotifications 1 }

aristaExternalAlarmDeassertedNotif NOTIFICATION-TYPE
    OBJECTS     { aristaExternalAlarmDescription }
    STATUS      current
    DESCRIPTION
        "This trap signifies that the alarm's status has changed to deasserted."
    ::= { aristaExternalAlarmMibNotifications 2 }

-- Conformance and Compliance --

aristaExternalAlarmMibCompliances OBJECT IDENTIFIER
    ::= { aristaExternalAlarmMibConformance 1 }

aristaExternalAlarmMibGroups OBJECT IDENTIFIER
    ::= { aristaExternalAlarmMibConformance 2 }

aristaExternalAlarmMibCompliance MODULE-COMPLIANCE
    STATUS         current
    DESCRIPTION
        "The compliance statement for Arista switches that implement
        the ARISTA-EXTERNAL-ALARM-MIB."
    MODULE         -- this module
    MANDATORY-GROUPS {
        aristaExternalAlarmObjectsGroup,
        aristaExternalAlarmNotificationsGroup
    }
    ::= { aristaExternalAlarmMibCompliances 1 }

aristaExternalAlarmObjectsGroup OBJECT-GROUP
    OBJECTS {
        aristaExternalAlarmAsserted,
        aristaExternalAlarmCount,
        aristaExternalAlarmLastAsserted,
        aristaExternalAlarmLastDeasserted,
        aristaExternalAlarmDescription,
        aristaExternalAlarmPolarity,
        aristaExternalAlarmAction
    }
    STATUS   current
    DESCRIPTION
        "The collection of objects that provide information for the
        external alarms in the system."
    ::= { aristaExternalAlarmMibGroups 1 }

aristaExternalAlarmNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        aristaExternalAlarmAssertedNotif,
        aristaExternalAlarmDeassertedNotif
    }
    STATUS   current
    DESCRIPTION
        "The collection of notifications generated by the system when
        an alarm is asserted or deasserted."
    ::= { aristaExternalAlarmMibGroups 2 }

END
