NETAPP-STORAGEGRID-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Integer32, enterprises
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, DisplayString, DateAndTime
        FROM SNMPv2-TC
    NOTIFICATION-GROUP, OBJECT-GROUP
        FROM SNMPv2-CONF;

--
-- NetApp has the convention of using previous enterprise IDs under the NetApp
-- enterprize ID to differentiate organizations.
--
storagegrid MODULE-IDENTITY
    LAST-UPDATED    "202009091500Z"
    ORGANIZATION    "NetApp Inc."
    CONTACT-INFO    "Website: www.netapp.com"
    DESCRIPTION     "The MIB Module for NetApp StorageGRID entities."

    REVISION        "202009091500Z"
    DESCRIPTION     "Added active alert table and notifications."

    REVISION        "201803211725Z"
    DESCRIPTION     "Initial revision."
::= { netapp 28669 }

netapp                OBJECT IDENTIFIER ::= { enterprises 789 }

sgNotifications       OBJECT IDENTIFIER ::= {storagegrid 0}
sgObjects             OBJECT IDENTIFIER ::= {storagegrid 1}
sgGroups              OBJECT IDENTIFIER ::= {storagegrid 2}

--
-- StorageGRID MIB objects
--

--
-- StorageGRID active alert table
--

activeAlertCount     OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of active alerts in the activeAlertTable"
    ::= { sgObjects 3 }

activeAlertTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF ActiveAlertEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A table of active alerts in StorageGRID"
    ::= { sgObjects 4 }

activeAlertEntry OBJECT-TYPE
    SYNTAX       ActiveAlertEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A single StorageGRID alert, indexed by alert ID"
    INDEX { activeAlertId }
    ::= { activeAlertTable 1 }

ActiveAlertEntry ::= SEQUENCE {
    activeAlertId            OCTET STRING,
    activeAlertName          OCTET STRING,
    activeAlertInstance      OCTET STRING,
    activeAlertSeverity      OCTET STRING,
    activeAlertStartTime     DateAndTime
}

activeAlertId            OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The ID of the alert. Only unique in the current set of active alerts."
    ::= { activeAlertEntry 1 }

activeAlertName          OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the alert"
    ::= { activeAlertEntry 2 }

activeAlertInstance      OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the entity that generated the alert, typically the node name"
    ::= { activeAlertEntry 3 }

activeAlertSeverity     OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The severity of the alert"
    ::= { activeAlertEntry 4 }

activeAlertStartTime      OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time the alert was triggered"
    ::= { activeAlertEntry 5 }

--
-- StorageGRID legacy alarm table
--

AlarmSeverity ::= TEXTUAL-CONVENTION
    STATUS       deprecated
    DESCRIPTION
        "The severity levels of an alarm"
    SYNTAX       INTEGER { normal(1), notice(2), minor(3), major(4), critical(5) }

currentAlarmTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF CurrentAlarmEntry
    MAX-ACCESS   not-accessible
    STATUS       deprecated
    DESCRIPTION
        "A table of current alarms in StorageGRID"
    ::= { sgObjects 1 }

currentAlarmCount     OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "The number of current alarms in the currentAlarmTable"
    ::= { sgObjects 2 }

currentAlarmEntry OBJECT-TYPE
    SYNTAX       CurrentAlarmEntry
    MAX-ACCESS   not-accessible
    STATUS       deprecated
    DESCRIPTION
        "A single StorageGRID alarm, indexed by node ID then alarm OID"
    INDEX { currentAlarmSourceId, currentAlarmAttrCode, currentAlarmAttrIndex }
    ::= { currentAlarmTable 1 }

CurrentAlarmEntry ::= SEQUENCE {
    currentAlarmSourceId      OCTET STRING,
    currentAlarmAttrCode      DisplayString,
    currentAlarmAttrIndex     Integer32,
    currentAlarmNodeName      OCTET STRING,
    currentAlarmSeverity      AlarmSeverity,
    currentAlarmTriggerValue  DisplayString,
    currentAlarmTriggerTime   DateAndTime
}

currentAlarmSourceId      OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..100))
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "The ID of the service that triggered the alarm"
    ::= { currentAlarmEntry 1 }

currentAlarmAttrCode      OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..100))
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "The code of the attribute that triggered the alarm"
    ::= { currentAlarmEntry 2 }

currentAlarmAttrIndex     OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "The index of the attribute that triggered the alarm"
    ::= { currentAlarmEntry 3 }

currentAlarmNodeName      OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..100))
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "The name of the node that triggered the alarm"
    ::= { currentAlarmEntry 4 }

currentAlarmSeverity      OBJECT-TYPE
    SYNTAX      AlarmSeverity
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "The severity of the alarm"
    ::= { currentAlarmEntry 5 }

currentAlarmTriggerValue  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "The value that triggered the alarm"
    ::= { currentAlarmEntry 6 }

currentAlarmTriggerTime      OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "The time the alarm was triggered"
    ::= { currentAlarmEntry 7 }

--
-- StorageGRID Notifications
-- Note: IDs match severity TC above
--

currentNormalAlarm    NOTIFICATION-TYPE
    OBJECTS { currentAlarmSeverity, currentAlarmSourceId, currentAlarmAttrCode,
              currentAlarmTriggerTime, currentAlarmTriggerValue, currentAlarmAttrIndex,
              currentAlarmNodeName }
    STATUS  deprecated
    DESCRIPTION
        "An alarm with normal severity"
    ::= { sgNotifications 1}

currentNoticeAlarm    NOTIFICATION-TYPE
    OBJECTS { currentAlarmSeverity, currentAlarmSourceId, currentAlarmAttrCode,
              currentAlarmTriggerTime, currentAlarmTriggerValue, currentAlarmAttrIndex,
              currentAlarmNodeName }
    STATUS  deprecated
    DESCRIPTION
        "An alarm with notice severity"
    ::= { sgNotifications 2}

currentMinorAlarm     NOTIFICATION-TYPE
    OBJECTS { currentAlarmSeverity, currentAlarmSourceId, currentAlarmAttrCode,
              currentAlarmTriggerTime, currentAlarmTriggerValue, currentAlarmAttrIndex,
              currentAlarmNodeName }
    STATUS  deprecated
    DESCRIPTION
        "An alarm with minor severity"
    ::= { sgNotifications 3}

currentMajorAlarm     NOTIFICATION-TYPE
    OBJECTS { currentAlarmSeverity, currentAlarmSourceId, currentAlarmAttrCode,
              currentAlarmTriggerTime, currentAlarmTriggerValue, currentAlarmAttrIndex,
              currentAlarmNodeName }
    STATUS  deprecated
    DESCRIPTION
        "An alarm with major severity"
    ::= { sgNotifications 4}

currentCriticalAlarm  NOTIFICATION-TYPE
    OBJECTS { currentAlarmSeverity, currentAlarmSourceId, currentAlarmAttrCode,
              currentAlarmTriggerTime, currentAlarmTriggerValue, currentAlarmAttrIndex,
              currentAlarmNodeName }
    STATUS  deprecated
    DESCRIPTION
        "An alarm with critical severity"
    ::= { sgNotifications 5}

activeMinorAlert     NOTIFICATION-TYPE
    OBJECTS { activeAlertStartTime, activeAlertInstance, activeAlertId, activeAlertSeverity,
              activeAlertName }
    STATUS  current
    DESCRIPTION
        "An alert with minor severity"
    ::= { sgNotifications 6}

activeMajorAlert     NOTIFICATION-TYPE
    OBJECTS { activeAlertStartTime, activeAlertInstance, activeAlertId, activeAlertSeverity,
              activeAlertName }
    STATUS  current
    DESCRIPTION
        "An alert with major severity"
    ::= { sgNotifications 7}

activeCriticalAlert  NOTIFICATION-TYPE
    OBJECTS { activeAlertStartTime, activeAlertInstance, activeAlertId, activeAlertSeverity,
              activeAlertName }
    STATUS  current
    DESCRIPTION
        "An alert with critical severity"
    ::= { sgNotifications 8}

--
-- StorageGRID Groups
--

currentAlarmGroup  OBJECT-GROUP
    OBJECTS { currentAlarmSourceId, currentAlarmAttrCode, currentAlarmAttrIndex,
              currentAlarmNodeName, currentAlarmSeverity, currentAlarmTriggerTime,
              currentAlarmTriggerValue, currentAlarmCount }
    STATUS deprecated
    DESCRIPTION
        "The Alarm object group"
    ::= { sgGroups 1 }

currentAlarmNotificationsGroup  NOTIFICATION-GROUP
    NOTIFICATIONS { currentNormalAlarm, currentNoticeAlarm, currentMinorAlarm,
                    currentMajorAlarm, currentCriticalAlarm }
    STATUS deprecated
    DESCRIPTION
        "Alarm notifications sent by StorageGRID"
    ::= { sgGroups 2 }

activeAlertGroup  OBJECT-GROUP
    OBJECTS { activeAlertCount, activeAlertId, activeAlertName, activeAlertInstance,
              activeAlertSeverity, activeAlertStartTime }
    STATUS current
    DESCRIPTION
        "The Alarm object group"
    ::= { sgGroups 3 }

activeAlertNotificationsGroup  NOTIFICATION-GROUP
    NOTIFICATIONS { activeMinorAlert, activeMajorAlert, activeCriticalAlert }
    STATUS current
    DESCRIPTION
        "Alert notifications sent by StorageGRID"
    ::= { sgGroups 4 }

END
