--
-- %CopyrightBegin%
-- 
-- Copyright Ericsson AB 2004-2009. All Rights Reserved.
-- 
-- The contents of this file are subject to the Erlang Public License,
-- Version 1.1, (the "License"); you may not use this file except in
-- compliance with the License. You should have received a copy of the
-- Erlang Public License along with this software. If not, it can be
-- retrieved online at http://www.erlang.org/.
-- 
-- Software distributed under the License is distributed on an "AS IS"
-- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-- the License for the specific language governing rights and limitations
-- under the License.
-- 
-- %CopyrightEnd%
--

OTP-EVA-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    Counter32, Gauge32, Integer32
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, DisplayString, DateAndTime
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    otpModules, otpApplications
        FROM OTP-REG
    OwnerString
        FROM OTP-TC
    ;

otpEvaModule MODULE-IDENTITY
    LAST-UPDATED "0305090900Z"
    ORGANIZATION "Ericsson"
    CONTACT-INFO
       "Contact:  Erlang Support see license agreement for Erlang/OTP."
    DESCRIPTION
	"This MIB is part of the OTP MIB.  It defines MIB objects
	for the eva application in OTP."
   
    REVISION	"0305090900Z"
    DESCRIPTION		
        "Changed CONTACT-INFO as it was outdated, made it more generic
	to avoid such changes in the future."
    
    REVISION     "9801270900Z"
    DESCRIPTION
        "Changed erroneous defintion of alarmCleared notification.
        Changed erroneous name of this module to otpEvaModule."
    REVISION     "9712010900Z"
    DESCRIPTION
        "Converted to v2 SMI and placed in the OTP tree."
    REVISION     "9705020900Z"
    DESCRIPTION
        "The initial version of this MIB module.  It is very much
        inspired by the ANS-ALM-MIB and Axd301Eva-OMS mibs."
    ::= { otpModules 6 }

otpEvaMIB       OBJECT IDENTIFIER ::= { otpApplications 4 }
otpEvaMIBConformance
                OBJECT IDENTIFIER ::= { otpEvaMIB 1 }
otpEvaMIBObjects
                OBJECT IDENTIFIER ::= { otpEvaMIB 2 }
otpEvaMIBEvents OBJECT IDENTIFIER ::= { otpEvaMIB 3 }
otpEvaMIBEventsV2
                OBJECT IDENTIFIER ::= { otpEvaMIBEvents 0 }


-- Datatypes

AlarmSeverity ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The AlarmSeverity defines six severity levels,
        which provide an indication of how it is perceived that the
        capability of the managed object has been affected.  Those
        severity levels which represent service affecting conditions
        ordered from most severe to least severe are critical,
        major, minor and warning.  The levels used are as defined
        in X.733, ITU Alarm Reporting Function:

            o The Indeterminate severity level indicates that the
              severity level cannot be determined.

            o The Critical severity level indicates that a service
              affecting condition has occurred and an immediate
              corrective action is required.  Such a severity can be
              reported, for example, when a managed object becomes
              totally out of service and its capability must be restored.

            o The Major severity level indicates that a service
              affecting condition has developed and an urgent corrective
              action is required.  Such a severity can be reported, for
              example, when there is a severe degradation in the
              capability of the managed object and its full capability
              must be restored.

            o The Minor severity level indicates the existence of a
              non-service affecting fault condition and that corrective
              action should be taken in order to prevent a more serious
              (for example, service affecting) fault.  Such a severity
              can be reported, for example, when the detected alarm
              condition is not currently degrading the capacity of the
              managed object.

            o The Warning severity level indicates the detection of a
              potential or impending service affecting fault, before any
              significant effects have been felt.  Action should be taken
              to further diagnose (if necessary) and correct the problem
              in order to prevent it from becoming a more serious service
              affecting fault.

        When an alarm is cleared, an alarmCleared event is generated.
        This event clears the alarm with the currentAlarmFaultId
        contained in the event.  It is not required that the clearing
        of previously reported alarms are reported.  Therefore, a managing
        system cannot assume that the absence of an alarmedCleared event
        for a fault means that the condition that caused the generation
        of previous alarms is still present.  Managed object definers
        shall state if, and under which conditions, the alarmedCleared
        event is used.

        The clear value of AlarmSeverity is an action which is used when
        a management station wants to clear an active alarm.  This is not
        possible on all systems, and thus an agent does not have support
        write access for this value."
    REFERENCE
        "X.733, ITU Alarm Reporting Function"
    SYNTAX INTEGER {
                indeterminate (0),
                critical (1),
                major (2),
                minor (3),
                warning (4),
                clear (5)   -- Written, not read
                }

AlarmClass ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The AlarmClass type categorizes the alarm, and is
	defined when the alarm is registered.  It is as defined in
	X.733, ITU Alarm Reporting Function:

            o communications.  An alarm of this class is principally
              associated with the procedures or processes required
              to convey information from one point to another.

            o qos.  An alarm of this class is principally associated
              with a degradation in the quality of service.

            o processing.  An alarm of this class is principally
              associated with a software or processing fault.

	    o equipment.  An alarm of this class is principally
              associated with an equipment fault.

            o environmental.  An alarm of this class is principally
	    associated with a condition relating to an enclosure in
	    with equipment resides."
    REFERENCE
        "X.733, ITU Alarm Reporting Function"
    SYNTAX INTEGER {
        unknown (0),
        communications (1),
        qos (2),
        processing (3),
        equipment (4),
        environmental (5)
        }


-- Managed Objects

event          OBJECT IDENTIFIER ::= { otpEvaMIBObjects 1 }
alarm          OBJECT IDENTIFIER ::= { otpEvaMIBObjects 2 }
currentAlarm   OBJECT IDENTIFIER ::= { otpEvaMIBObjects 3 }

-- The Event group
--
-- The Event group controls the generation of notifications of
-- events from the system.

eventTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EventEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of events defined by the system.  This table is used
        to control the sending of traps and to whom the traps are
        sent."
    ::= { event 1 }

eventEntry OBJECT-TYPE
    SYNTAX      EventEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A set of parameters that describe an event to be
        generated when certain conditions are met."
    INDEX  { eventIndex }
    ::= { eventTable 1 }

EventEntry ::= SEQUENCE {
    eventIndex      Integer32 (1..2147483647),
    eventTrapName   DisplayString,
    eventTreatment  INTEGER,
    eventCommunity  OCTET STRING (SIZE (0..127)),
    eventSentTraps  Counter32,
    eventOwner      OwnerString
    }

eventIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An index that uniquely identifies an entry in the
        event table.  Each such entry defines one event that
        is to be generated when the appropriate conditions
        occur.  The value for each eventIndex must remain
        constant, at least from one re-initialization of the
        entity's network management system to the next
        re-initialization."
    ::= { eventEntry 1 }

eventTrapName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The identifier of the corresponding trap.
        NOTE: this should be an OID in SNMPv2, but must be
        a string in v1."
    ::= { eventEntry 2 }

eventTreatment OBJECT-TYPE
    SYNTAX  INTEGER {
        none(1),
        log(2),
        snmpTrap(3),
        logAndTrap(4)
        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Defines how the system shall treat this event. In the
        case of snmpTrap, an SNMP trap is sent to one or more
        management stations. In the case of log, the event is
        guaranteed to be logged in a log according to some log
        strategy. Each such log strategy may define a MIB module
        for control and examination of logs."
    ::= { eventEntry 3 }

eventCommunity OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..127))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "If an SNMP trap is to be sent, it will be sent to
        the SNMP community specified by this octet string."
    ::= { eventEntry 4 }

eventSentTraps OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times this event has been sent as a trap."
    ::= { eventEntry 5 }

eventOwner OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The manager entity that 'owns' this event entry, and is
        therefore responsible for its contents."
    ::= { eventEntry 6 }

eventTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "This object may be included in a trap definition for an event.
        It specifies the time the event was generated."
    ::= { event 2 }


-- The Alarm group
--
-- The Alarm group extends the Event group with objects for alarms.

alarmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AlarmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Contains additional information for alarm events."
    ::= { alarm 1 }

alarmEntry OBJECT-TYPE
    SYNTAX      AlarmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A set of parameters for alarms."
    INDEX { eventIndex }
    ::= { alarmTable 1 }

AlarmEntry ::= SEQUENCE {
    alarmClass      AlarmClass,
    alarmSeverity   AlarmSeverity
    }

alarmClass OBJECT-TYPE
    SYNTAX      AlarmClass
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The class of this alarm."
    ::= { alarmEntry 1 }

alarmSeverity OBJECT-TYPE
    SYNTAX      AlarmSeverity
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The perceived severity that shall apply to the 
        associated alarms."
    ::= { alarmEntry 2 }


-- The CurrentAlarm group
--
-- The CurrentAlarm group is a collection of objects for monitoring of
-- active alarms in the system.

numberOfCurrentAlarms OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of currently active alarms in the system."
    ::= { currentAlarm 1 }

currentAlarmLastTimeChanged OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time an entry in the currentAlarmTable was changed.
        It may be used by a management station as a value to
        poll.  If the value is changed, the management station
        knows that the currentAlarmTable has been updated."
    ::= { currentAlarm 2 }

currentAlarmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CurrentAlarmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of currently active alarms in the system."
    ::= { currentAlarm 3 }

currentAlarmEntry OBJECT-TYPE
    SYNTAX      CurrentAlarmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A set of parameters that describe a currently active
        alarm."
    INDEX { currentAlarmFaultId }
    ::= { currentAlarmTable 1 }

CurrentAlarmEntry ::= SEQUENCE {
    currentAlarmFaultId     Integer32 (1..2147483647),
    currentAlarmEventIndex  Integer32 (1..2147483647),
    currentAlarmObject      OBJECT IDENTIFIER,
    currentAlarmCause       OBJECT IDENTIFIER,
    currentAlarmSeverity    AlarmSeverity,
    currentAlarmTime        DateAndTime,
    currentAlarmInformation DisplayString,
    currentAlarmExtra1      OBJECT IDENTIFIER,
    currentAlarmExtra2      OBJECT IDENTIFIER
    }

currentAlarmFaultId OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An id that uniquely identifies a fault. Each fault is
        represented as one an entry in the currentAlarmTable."
    ::= { currentAlarmEntry 1 }

currentAlarmEventIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A pointer into the eventTable. Points to the event
                corresponding to this alarm."
    ::= { currentAlarmEntry 2 }

currentAlarmObject OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The alarming object."
    ::= { currentAlarmEntry 3 }

currentAlarmCause OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The probable cause of the alarm."
    ::= { currentAlarmEntry 4 }

currentAlarmSeverity OBJECT-TYPE
    SYNTAX      AlarmSeverity
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The perceived severity of the fault.  A manager can set
        this value to clear only.  When set to clear, the alarm
        is removed from this table, and a 'clearAlarm' event is
        generated."
    ::= { currentAlarmEntry 5 }

currentAlarmTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time the fault was detected."
    ::= { currentAlarmEntry 6 }

currentAlarmInformation OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Additional information pin-pointing the problem."
    ::= { currentAlarmEntry 7 }

currentAlarmExtra1 OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An extra parameter used for some alarms at their own
        discretion.  Can be used for example to identify
        additional objects in the alarm, or instead of 
        currentAlarmInformation to pin-point the problem, if the
        additional information is defined in some MIB."
    ::= { currentAlarmEntry 8 }

currentAlarmExtra2 OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An extra parameter used for some alarms at their own
        discretion.  Can be used for example to identify
        additional objects in the alarm, or instead of 
        currentAlarmInformation to pin-point the problem, if the
        additional information is defined in some MIB."
    ::= { currentAlarmEntry 9 }


-- Events

alarmCleared NOTIFICATION-TYPE
    OBJECTS {
        currentAlarmEventIndex,
        eventTime
        }
    STATUS  current
    DESCRIPTION
        "This event is sent when an alarm has been cleared,
        either by the application or by an operator.  Note that the
        currentAlarmFaultId is implicitly sent as the instance identifier
        for currentAlarmEventIndex."
    ::= { otpEvaMIBEventsV2 1 }


-- conformance information

otpEvaMIBCompliances
                OBJECT IDENTIFIER ::= { otpEvaMIBConformance 1 }
otpEvaMIBGroups
                OBJECT IDENTIFIER ::= { otpEvaMIBConformance 2 }


-- compliance statements

otpEvaBasicCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for SNMPv2 entities which
        implement the OTP-EVA-MIB."
    MODULE  -- this module
        MANDATORY-GROUPS { eventGroup,
                           alarmGroup,
                           currentAlarmGroup,
                           evaEventsGroup }

    ::= { otpEvaMIBCompliances 1 }


-- units of conformance

eventGroup OBJECT-GROUP
    OBJECTS { eventTrapName,
              eventTreatment,
              eventCommunity,
              eventSentTraps,
              eventOwner,
              eventTime }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing basic instrumentation
        and control of the events defined in the OTP system."
    ::= { otpEvaMIBGroups 1 }

alarmGroup OBJECT-GROUP
    OBJECTS { alarmClass,
              alarmSeverity }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing basic instrumentation
        and control of the alarms defined the OTP system."
    ::= { otpEvaMIBGroups 2 }

currentAlarmGroup OBJECT-GROUP
    OBJECTS { numberOfCurrentAlarms,
              currentAlarmLastTimeChanged,
              currentAlarmEventIndex,
              currentAlarmObject,
              currentAlarmCause,
              currentAlarmSeverity,
              currentAlarmTime,
              currentAlarmInformation,
              currentAlarmExtra1,
              currentAlarmExtra2 }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing basic instrumentation
        of the activa alarm list in the OTP system."
    ::= { otpEvaMIBGroups 3 }

evaEventsGroup NOTIFICATION-GROUP
    NOTIFICATIONS { alarmCleared }
    STATUS        current
    DESCRIPTION
        "The notification which is generated from EVA."
    ::= { otpEvaMIBGroups 4 }


END