ENTERASYS-HIGH-AVAILABILITY-MIB DEFINITIONS ::= BEGIN

--  enterasys-high-availability-mib.txt
--
--  Part Number:
--
--

--  This module provides authoritative definitions for Enterasys 
--  Networks' high-availability upgrade functionality.

--
--  This module will be extended, as needed.

--  Enterasys Networks reserves the right to make changes in this
--  specification and other information contained in this document
--  without prior notice.  The reader should consult Enterasys Networks
--  to determine whether any such changes have been made.
--
--  In no event shall Enterasys Networks be liable for any incidental,
--  indirect, special, or consequential damages whatsoever (including
--  but not limited to lost profits) arising out of or related to this
--  document or the information contained in it, even if Enterasys
--  Networks has been advised of, known, or should have known, the
--  possibility of such damages.
--
--  Enterasys Networks grants vendors, end-users, and other interested
--  parties a non-exclusive license to use this Specification in 
--  connection with the management of Enterasys Networks products.

--  Copyright December 2011 Enterasys Networks, Inc.


IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    Unsigned32
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, TimeInterval, DateAndTime
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    PhysicalIndex
        FROM ENTITY-MIB
    EnabledStatus
        FROM P-BRIDGE-MIB
    etsysModules
        FROM ENTERASYS-MIB-NAMES;    


etsysHighAvailabilityUpgradeMIB MODULE-IDENTITY
    LAST-UPDATED "201112121514Z"  -- Mon Dec 12 15:14 UTC 2011
    ORGANIZATION "Enterasys Networks, Inc"
    CONTACT-INFO
        "Postal:  Enterasys Networks
                  50 Minuteman Rd.
                  Andover, MA 01810-1008
                  USA
         Phone:   +1 978 684 1000
         E-mail:  support@enterasys.com
         WWW:     http://www.enterasys.com"
   
    DESCRIPTION
        "This MIB module defines a portion of the SNMP MIB under
         the Enterasys Networks enterprise OID pertaining to 
         configuration and monitoring of high-availability
         upgrades."

    REVISION    "201112121514Z"  -- Mon Dec 12 15:14 UTC 2011
    DESCRIPTION "The initial version of this MIB module."
    ::= { etsysModules 84 } 


-- Textual Conventions

EtsysHauSystemStatus ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "The status of high-availability upgrade for this entity.
        
           hauDisabled(1)       HA Upgrade is not enabled.
           hauPending(2)        HA Upgrade is enabled and will be initiated
                                by the next system reset.
           hauRunning(3)        HA Upgrade is in progress. 
           hauHalted(4)         HA Upgrade was halted.
           hauSuccess(5)        HA Upgrade completed successfully and entity
                                is running the target version of firmware.
           hauError(6)          A failure occurred during HA Upgrade.
           hauForceComplete(7)  HA Upgrade was forced to early completion.
                                Entity is running the target version of
                                firmware, but high-availability nature of the
                                upgrade may have been compromised."

    SYNTAX       INTEGER {
                   hauDisabled(1),
                   hauPending(2),
                   hauRunning(3),
                   hauHalted(4),
                   hauSuccess(5),
                   hauError(6),
                   hauForceComplete(7)
                 }

EtsysHauMode ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "The default mode of high-availability upgrade for this entity.
        
           hauNever(1)       Never perform a HA Upgrade.
           hauIfPossible(2)  Perform an HA Upgrade whenever possible.
           hauAlways(3)      Always attempt to perform a HA Upgrade."

    SYNTAX       INTEGER {
                   hauNever(1),
                   hauIfPossible(2),
                   hauAlways(3)
                 }

HauSlotList ::= TEXTUAL-CONVENTION
   STATUS current
   DESCRIPTION
       "Each octet within this value specifies a set of eight 
        slots, with the first octet specifying slots 1 through 8,
        the second octet specifying slots 9 through 16, etc.
        Within each octet, the most significant bit represents 
        the lowest numbered slot, and the least significant bit
        represents the highest numbered slot. Thus, each slot
        of the virtual switch is represented by a single bit 
        within the value of this object. If that bit has a value
        of '1' then that slot is included in the set of slots; 
        the slot is not included if its bit has a value of '0'." 
   SYNTAX OCTET STRING 

HauSlot ::= TEXTUAL-CONVENTION
   STATUS current
   DESCRIPTION
       "Logical slot number which aligns with HauSlotList."
   SYNTAX Integer32 (1..128)


-- -------------------------------------------------------------
-- MIB Objects
-- -------------------------------------------------------------

etsysHauObjects           OBJECT IDENTIFIER
                          ::= { etsysHighAvailabilityUpgradeMIB 1 }

etsysHauStats             OBJECT IDENTIFIER
                          ::= { etsysHauObjects 1 }

etsysHauSystem            OBJECT IDENTIFIER
                          ::= { etsysHauObjects 2 }

etsysHauModule            OBJECT IDENTIFIER
                          ::= { etsysHauObjects 3 }


-- -------------------------------------------------------------
-- The High-Availability Upgrade Status Group
-- -------------------------------------------------------------

etsysHauStatsStatus OBJECT-TYPE
    SYNTAX       EtsysHauSystemStatus
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The status of the high-availability upgrade for this
         managed entity."
    ::= { etsysHauStats 1 }

etsysHauStatsOriginalImage OBJECT-TYPE
    SYNTAX       SnmpAdminString
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The release and version of firmware the managed entity is
         upgrading from (i.e, firmware that is running at the start
         of high-availability upgrade)."
    ::= { etsysHauStats 2 }

etsysHauStatsTargetImage OBJECT-TYPE
    SYNTAX       SnmpAdminString
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The release and version of firmware the managed entity is
         upgrading to (i.e, firmware that will be running after 
         successful completion of high-availability upgrade)."
    ::= { etsysHauStats 3 }

etsysHauStatsPendingSlotList OBJECT-TYPE
    SYNTAX       HauSlotList
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Set of slots which have yet to be upgraded."
    ::= { etsysHauStats 4 }

etsysHauStatsInProgressSlotList OBJECT-TYPE
    SYNTAX       HauSlotList
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Set of slots which are currently being upgraded."
    ::= { etsysHauStats 5 }

etsysHauStatsUpgradedSlotList OBJECT-TYPE
    SYNTAX       HauSlotList
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Set of slots which have been upgraded."
    ::= { etsysHauStats 6 }

etsysHauStatsErrorSlotList OBJECT-TYPE
    SYNTAX       HauSlotList
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Set of slots which have failed to be upgraded."
    ::= { etsysHauStats 7 }

etsysHauStatsStartTime OBJECT-TYPE
    SYNTAX       DateAndTime
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The date and time when the most recent high-availability upgrade
         was started."
    ::= { etsysHauStats 8 }

etsysHauStatsDuration OBJECT-TYPE
    SYNTAX       TimeInterval
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The duration of the most recent current high-availability
         upgrade, in centiseconds."
    ::= { etsysHauStats 9 }


-- -------------------------------------------------------------
-- The High-Availability Upgrade System Group
-- -------------------------------------------------------------
etsysHauSystemInterGroupDelay OBJECT-TYPE
    SYNTAX       Unsigned32 
    UNITS        "seconds"
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The duration, in seconds, the high-availability upgrade
         process will delay between the successful upgrade of one
         upgrade group and the start of the next upgrade group's
         upgrade.
         
         When an upgrade group is upgraded, all modules which
         are a member of the group are reset.  If these resets
         cause instability in higher-layer networking protocols,
         then this delay may help those protocols stabilize
         during the course of the high-availability upgrade.

         Note that this delay will increase the overall length
         of the high-availability upgrade process."
    DEFVAL { 15 }
    ::= { etsysHauSystem 1 }

etsysHauSystemHauMode OBJECT-TYPE
    SYNTAX       EtsysHauMode
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The desired mode of operation to attempt to use when 
         performing a reset.

         When set to hauNever(1) a high-availability upgrade
         will never be performed.  Instead a standard upgrade
         will be performed.

         When set to hauIfPossible(2) a high-availability upgrade
         will be performed if the current and target images are 
         compatible, otherwise a standard upgrade will be performed.
         
         When set to hauAlways(3) a high-availability upgrade
         will always be performed. If the current and target 
         images are incompatible then no upgrade will occur."
    ::= { etsysHauSystem 2 }

-- -------------------------------------------------------------
-- The High-Availability Upgrade Module Group
-- -------------------------------------------------------------

etsysHauModuleTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF EtsysHauModuleEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A table of high-availability properties per module."
    ::= {  etsysHauModule 1 }
    
etsysHauModuleEntry OBJECT-TYPE
    SYNTAX       EtsysHauModuleEntry 
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "An entry containing high-availability properties per module."
    INDEX  { etsysHauModuleSlot }
    ::= { etsysHauModuleTable 1 }

EtsysHauModuleEntry ::=
    SEQUENCE {
      etsysHauModuleSlot
            HauSlot,
      etsysHauModuleEntRef
            PhysicalIndex,
      etsysHauModuleGroupId 
            Unsigned32
    }

etsysHauModuleSlot OBJECT-TYPE
    SYNTAX       HauSlot 
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Logical slot for a given module."
    ::= { etsysHauModuleEntry 1 }

etsysHauModuleEntRef OBJECT-TYPE
    SYNTAX       PhysicalIndex
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Entity Physical Index which corresponds to this slot."
    ::= { etsysHauModuleEntry 2 }

etsysHauModuleGroupId OBJECT-TYPE
    SYNTAX       Unsigned32 (1..128)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "This object is a user-assigned value used to assign individual
         modules to a High-Availability Upgrade Group.  All slots
         within an upgrade group will be upgraded simultaneously.

         The purpose of assigning multiple slots to the same upgrade
         group is to reduce the overall time it takes to perform an
         HA upgrade.
         
         By default, each module is assigned to its own upgrade
         group, with GroupId equal to the module's HAU Slot.  Although
         this default configuration is completely valid, it may not
         be optimal for situations where a timely HA upgrade is
         desirable.
         
         The network architecture, specifically LAGs, must be taken
         into consideration when assigning slots to an upgrade group.
         LAGs which span multiple modules should not have all of their
         modules placed into the same upgrade group, as this would
         defeat the LAG's inherent redundancy.
         
         IMPORTANT:
         If a LAG is to remain available during a High-Availability
         Upgrade, then it must comprised of multiple single-port links
         which reside on separate modules.  Furthermore, at least two
         of those modules must reside in separate upgrade groups."
    ::= { etsysHauModuleEntry 3 }


-- -------------------------------------------------------------
-- Conformance Information
-- -------------------------------------------------------------

etsysHauConformance       OBJECT IDENTIFIER ::= { etsysHighAvailabilityUpgradeMIB 2 }

etsysHauGroups            OBJECT IDENTIFIER ::= { etsysHauConformance 1 }
etsysHauCompliances       OBJECT IDENTIFIER ::= { etsysHauConformance 2 }

-- -------------------------------------------------------------
-- Units of conformance
-- -------------------------------------------------------------

etsysHauSystemGroup OBJECT-GROUP
    OBJECTS {
        etsysHauSystemInterGroupDelay,
	etsysHauSystemHauMode
    }
    STATUS      current
    DESCRIPTION
        "The system-wide configuration group for all devices
         supporting High-Availability Upgrade."
    ::= { etsysHauGroups 1 }

etsysHauModuleGroup OBJECT-GROUP
    OBJECTS {
        etsysHauModuleGroupId
    }
    STATUS      current
    DESCRIPTION
        "The module specific configuration group for all devices
         supporting High-Availability Upgrade."
    ::= { etsysHauGroups 2 }

-- -------------------------------------------------------------
-- Compliance statements
-- -------------------------------------------------------------

etsysHauCompliance MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
        "The compliance statement for entities which implement
         the Enterasys High-Availability Upgrade MIB."

    MODULE
        MANDATORY-GROUPS {
            etsysHauSystemGroup,
            etsysHauModuleGroup
        }
    ::= { etsysHauCompliances 1 }

END
