-- =====================================================================
-- Copyright (c) 2010-2013 Hewlett-Packard Development Company, L.P.
--
-- Description:
--      This MIB module is for configuring and monitoring SAN (Storage Area
--      Network) aggregation group related entities.
-- Reference:
-- Version: V1.0
-- History:
--   V1.0 Initial version created by qiaoxinghua 2012-12-6
-- =====================================================================
HPN-ICF-SAN-AGG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    hpnicfSan
        FROM HPN-ICF-VSAN-MIB
    Integer32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    RowStatus, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    ifIndex, ifDescr
        FROM IF-MIB;

hpnicfSanAgg MODULE-IDENTITY
    LAST-UPDATED   "201302250940Z"
    ORGANIZATION
        ""
    CONTACT-INFO
        ""
    DESCRIPTION
        "This MIB module is for configuring and monitoring SAN (Storage
        Area Networks) aggregation group related MIB objects.

        This MIB can be used to add or delete a SAN aggregation group,
        and make one or more FC (Fiber Channel) ports join or leave the
        group, as well as show their states."
    REVISION       "201302250940Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { hpnicfSan 2 }


HpnicfMemberList ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "A list of values concerning the member ports in a SAN
        aggregation group.

        Each 4 octets within this value list specifies a member
        in a SAN aggregation group.
        A zero-length string value means this list has no member,
        and the maximum length of this string depends on the maximum
        number of members a SAN aggregation supports."
    SYNTAX       OCTET STRING
--
-- Node definitions
--
hpnicfSanAggMibObjects OBJECT IDENTIFIER ::= { hpnicfSanAgg 1 }

hpnicfSanAggMaxMemberNumber OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "This value specifies the maximum member number that a SAN
        aggregation group supports, and this restriction depends on
        product customization."
    ::= { hpnicfSanAggMibObjects 1 }

hpnicfSanAggGroupTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfSanAggGroupEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table of SAN aggregation objects to be used in configuring
        and monitoring a SAN aggregation group and its members."
    ::= { hpnicfSanAgg 2 }

hpnicfSanAggGroupEntry OBJECT-TYPE
    SYNTAX HpnicfSanAggGroupEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A group of SAN aggregation objects to be used in configuring
        and monitoring a SAN aggregation group and its members."
    INDEX { hpnicfSanAggGroupNumber }
    ::= { hpnicfSanAggGroupTable 1 }

HpnicfSanAggGroupEntry ::=
    SEQUENCE {
        hpnicfSanAggGroupNumber
            Integer32,
        hpnicfSanAggGroupIndex
            Integer32,
        hpnicfSanAggMemberList
            HpnicfMemberList,
        hpnicfSanAggMemberStateList
            HpnicfMemberList,
        hpnicfSanAggGroupRowStatus
            RowStatus
       }

hpnicfSanAggGroupNumber OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "The serial number of the current SAN aggregation group."
    ::= { hpnicfSanAggGroupEntry 1 }

hpnicfSanAggGroupIndex OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The ifIndex of the current SAN aggregation group."
    ::= { hpnicfSanAggGroupEntry 2 }

hpnicfSanAggMemberList OBJECT-TYPE
    SYNTAX HpnicfMemberList
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "List of member's ifIndex in the current SAN aggregation group.

        If there is no member in the SAN aggregation group, the list
        length should be zero.  Otherwise each member's ifIndex value
        occupies 4 octets.  The greatest length of this list depends
        on the maximum number of members a SAN aggregation group
        supports, which can be customized and therefore is not a fixed
        value.

        When getting the group members' ifIndexes, the result was sorted
        in ascending order of ifIndex values.  However, when setting the
        group members' ifIndexes, the sequence of ifIndex values is not
        required."
    ::= { hpnicfSanAggGroupEntry 3 }

hpnicfSanAggMemberStateList OBJECT-TYPE
    SYNTAX HpnicfMemberList
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "List of member's state in current SAN aggregation group, where the
         state value is sorted in ascending order of member's ifIndex, which
         is consistent with the 'get' result of 'hpnicfSanAggMemberList'.

         The explanation of this value's length is as same as the
         'hpnicfSanAggMemberList'.

         Each member's state value occupies 4 octets.  The value specifications
         are listed as follows:
         1: This member hasn't passed the link negotiation.
         2: This member has passed the link negotiation but has not been
            selected.
         3: This member has been selected."
    ::= { hpnicfSanAggGroupEntry 4 }

hpnicfSanAggGroupRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "RowStatus.  Now only three states are supported:
        createAndGo, active, and destroy."
    ::= { hpnicfSanAggGroupEntry 5 }

hpnicfSanAggObjForNotification OBJECT IDENTIFIER ::= { hpnicfSanAgg 3 }

hpnicfSanAggGroupPreviousSpeed OBJECT-TYPE
    SYNTAX Integer32
    UNITS  "gigabit bps"
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "The previous speed of the SAN aggregation group."
    ::= { hpnicfSanAggObjForNotification 1 }

hpnicfSanAggGroupCurrentSpeed OBJECT-TYPE
    SYNTAX Integer32
    UNITS  "gigabit bps"
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "The current speed of the SAN aggregation group."
    ::= { hpnicfSanAggObjForNotification 2 }

hpnicfSanAggNotifications OBJECT IDENTIFIER ::= { hpnicfSanAgg 4 }

hpnicfSanAggNotificationPrefix OBJECT IDENTIFIER ::= { hpnicfSanAggNotifications 0 }

hpnicfSanAggGroupSpeedChange NOTIFICATION-TYPE
    OBJECTS { hpnicfSanAggGroupNumber,
              hpnicfSanAggGroupPreviousSpeed,
              hpnicfSanAggGroupCurrentSpeed }
    STATUS current
    DESCRIPTION
        "This event will be triggered whenever a SAN
         aggregation group changes its speed."
    ::= { hpnicfSanAggNotificationPrefix 1 }


hpnicfSanAggMemberInactive NOTIFICATION-TYPE
    OBJECTS { hpnicfSanAggGroupNumber,
              ifIndex,
              ifDescr }
    STATUS current
    DESCRIPTION
        "This event will be triggered whenever any member
         in a SAN aggregation group is made inactive."
    ::= { hpnicfSanAggNotificationPrefix 2 }

hpnicfSanAggMemberActive NOTIFICATION-TYPE
    OBJECTS { hpnicfSanAggGroupNumber,
              ifIndex,
              ifDescr }
    STATUS current
    DESCRIPTION
        "This event will be triggered whenever any member
         in a SAN aggregation group is made active."
    ::= { hpnicfSanAggNotificationPrefix 3 }

END
