KontronSrvChassis-MIB DEFINITIONS ::= BEGIN
--
-- The Kontron Server-Chassis MIB module, based on the MS29XX-MIB.
--

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32,
    IpAddress    FROM SNMPv2-SMI
    PhysAddress, DisplayString, 
    TEXTUAL-CONVENTION        FROM SNMPv2-TC
    OBJECT-GROUP              FROM SNMPv2-CONF
	kontronSystem             FROM KONTRON-ROOT-MIB
;

kontronSrvChassis MODULE-IDENTITY
    LAST-UPDATED "201712010000Z"
    ORGANIZATION "kontron Inc."
    CONTACT-INFO
        "email: support@kontron.com"
    DESCRIPTION
        "The MIB module for the server chassis platforms.
		It provides the objects to monitor and to drive the FRUs and the chassis.
		FRUs can be nodes, hubs, fans, or power supplies.
		
		Missing FRU :
			When a FRU is not inserted in the chassis, then no OIDs exists for the empty slots.
		
		Unknown state :
			Several SNMP responses ( like SrvChasSeverityType, SrvChasLEDType, ... ) contain an unknown state.
			This value can appear only during transient states. 
			It can only happen when a FRU is removed, and it will last for a maximum time of 1 minute until 
			the OIDs disappear.
		"
   
    REVISION    "201712010000Z"
    DESCRIPTION
        "The initial revision of KontronSrvChassis MIB module."

    ::= { kontronSystem 1 }

srvChasConformance    OBJECT IDENTIFIER ::= { kontronSrvChassis 100 }
srvChasGroups         OBJECT IDENTIFIER ::= { srvChasConformance 1 }

--
-- Textual convention
--
SrvChasSeverityType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The status for a specific component
         healthy(1)  - The component has no issue.
         minor(2)    - The component has minor issues.
         major(3)    - The component has major issues.
         critical(4) - The component has critical issues.
         unknown(5)  - Can not get component status."
    SYNTAX       INTEGER {
        healthy(1),
        minor(2),
        major(3),
        critical(4),
        unknown(5)
    }
    
SrvChasSeverityFaultType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
         "The status for a specific component
          healthy(1) - The component has no issue.
          fault(2)   -    The component is faulty.
          unknown(3) - Can not get the component status."
         
    SYNTAX       INTEGER {
        healthy(1),
        fault(2),
        unknown(3)
    }
    
SrvChasLEDType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The status on/off of an Identify LED component in the Server-Chassis platform.

         off(0)     - The LED is turned off.
         on(1)      - The LED is turned on.
         unknown(2) - The LED status is unknown."

    SYNTAX       INTEGER {
        off(0),
        on(1),
        unknown(2)
    }

-- Node Table

srvChasNodeTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF SrvChasNodeEntry
    MAX-ACCESS not-accessible
    STATUS      current
    DESCRIPTION
        "The table listing the status and common
         information of each node in the Server-Chassis platform.

         srvChasNodeSlotID is a main key."
    ::= { kontronSrvChassis 1 }

srvChasNodeEntry OBJECT-TYPE
    SYNTAX      SrvChasNodeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the srvChasNodeTable."
    INDEX   { srvChasNodeSlotID }
    ::= { srvChasNodeTable 1 }

SrvChasNodeEntry ::= SEQUENCE {
    srvChasNodeSlotID         Integer32,
    srvChasNodeMCIPAddr       IpAddress,
    srvChasNodeStatus         SrvChasSeverityType,
    srvChasNodeAlarm          DisplayString,
    srvChasNodeIDLEDStatus    SrvChasLEDType,
    srvChasNodeHWReset        INTEGER,
    srvChasNodeMgmntMAC       PhysAddress
}

srvChasNodeSlotID OBJECT-TYPE
    SYNTAX       Integer32(1..9)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A main key in the srvChasNodeTable. The value of the
         srvChasNodeSlotID corresponds to number of a node in
         the Server-Chassis platform.

         The min value is 1, the max value depends on the chassis type.
         The max value is available in SrvChassisCommon/srvChassCmnMaxNodes,
         with OID=kontron.20.1.6.10"
    ::= { srvChasNodeEntry 1 }

srvChasNodeMCIPAddr OBJECT-TYPE
    SYNTAX       IpAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The management IP address for the specific node in the
         Server-Chassis platform"
    ::= { srvChasNodeEntry 2 }

srvChasNodeStatus OBJECT-TYPE
    SYNTAX       SrvChasSeverityType
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The status for the specific node in the Server-Chassis platform"
    ::= { srvChasNodeEntry 3 }

srvChasNodeAlarm OBJECT-TYPE
    SYNTAX       DisplayString (SIZE(0..64))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The alarm description if a current alarm exists in the node.
		'None' : when no alarm is present "
    ::= { srvChasNodeEntry 4 }

srvChasNodeIDLEDStatus OBJECT-TYPE
    SYNTAX       SrvChasLEDType
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The status of the specific node's ID LED in the Server-Chassis platform."
    ::= { srvChasNodeEntry 5 }

srvChasNodeHWReset OBJECT-TYPE
    SYNTAX       INTEGER {
        off(0),
        on(1),
		unknown(2),
        reset(3)
    }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "This object allows to set or get node
         power status on Server-Chassis platform.
         Valid read values are off, on and unknown
         Valid write values are off, on and reset

         off(0)      - [turn] power off.
         on(1)       - [turn] power on.
		 unknown(2)  - Node Power status is unknown
         reset(3)    - reset node (write-only)."
    ::= { srvChasNodeEntry 6 }

srvChasNodeMgmntMAC OBJECT-TYPE
    SYNTAX       PhysAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The MAC address of node's management interface."
    ::= { srvChasNodeEntry 7 }

    srvChasNodeGroup OBJECT-GROUP
        OBJECTS {
             srvChasNodeSlotID, srvChasNodeMCIPAddr, srvChasNodeStatus,
             srvChasNodeAlarm, srvChasNodeIDLEDStatus, srvChasNodeHWReset,
             srvChasNodeMgmntMAC
        }
        STATUS current
        DESCRIPTION
            "Group node"
        ::= { srvChasGroups 1 }

-- Server Table

srvChasServerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SrvChasServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The table listing the status and common
         information of each server in a particular node
         from the srvChasNodeTable table.

         srvChasNodeSlotID is a foreign key.
         srvChasServerID is a main key.

         The combination (srvChasNodeSlotID, srvChasServerID)
         defines a unique key for the server in whole Server-Chassis platform"
    ::= { kontronSrvChassis 2 }

srvChasServerEntry OBJECT-TYPE
    SYNTAX      SrvChasServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the srvChasServerTable."
    INDEX   { srvChasNodeSlotID,
              srvChasServerID }
    ::= { srvChasServerTable 1 }

SrvChasServerEntry ::= SEQUENCE {
    srvChasServerID        Integer32,
    srvChasServerType      DisplayString,
    srvChasServerPwrState  INTEGER
}

srvChasServerID OBJECT-TYPE
    SYNTAX       Integer32(1..2)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A main key in the srvChasServerTable. The value of the
         srvChasServerID corresponds to index of a server in
         a particular node.

         The min value is 1, the max value is 2 (depending on the node model).
         The max value can be changed in the future."
    ::= { srvChasServerEntry 1 }

srvChasServerType OBJECT-TYPE
    SYNTAX       DisplayString (SIZE(0..64))
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The type of the server.
         Returns 'unknown' if the server type can not be read.
         String up to 15 characters can be saved.
         Longer strings are truncated."
    ::= { srvChasServerEntry 2 }

srvChasServerPwrState OBJECT-TYPE
    SYNTAX       INTEGER {
        off(0),
        on(1),
        unknown(2)
    }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The power status of the server.

         off(0)     - turn[ed] off.
         on(1)      - turn[ed] on.
         unknown(2) - The power status is unknown (read-only)."
    ::= { srvChasServerEntry 3 }

srvChasServerGroup OBJECT-GROUP
        OBJECTS {
             srvChasServerID, srvChasServerType,
             srvChasServerPwrState
        }
        STATUS current
        DESCRIPTION
            "Group Server"
        ::= { srvChasGroups 2 }

-- Hub table

srvChasHubTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SrvChasHubEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The table listing the status and common
         information of each hub in the Server-Chassis platform.

         srvChasHubSlotID is a main key."
    ::= { kontronSrvChassis 3 }

srvChasHubEntry OBJECT-TYPE
    SYNTAX      SrvChasHubEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the srvChasHubTable."
    INDEX   { srvChasHubSlotID }
    ::= { srvChasHubTable 1 }

SrvChasHubEntry ::= SEQUENCE {
    srvChasHubSlotID        Integer32,
    srvChasHubState         INTEGER,
    srvChasHubMCIPAddr      IpAddress,
    srvChasHubStatus        SrvChasSeverityType,
    srvChasHubAlarm         DisplayString,
    srvChasHubIDLEDStatus   SrvChasLEDType
}

srvChasHubSlotID OBJECT-TYPE
    SYNTAX       Integer32(1..2)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A main key in the srvChasHubTable. The value of the
         srvChasHubSlotID corresponds to index of a hub in
         the SrvChas platform.
         
         The min value is 1, the max value depends on the chassis type.
         The max value is available in SrvChassisCommon/srvChassCmnMaxHubs,
         with OID=kontron.20.1.6.9"
    ::= { srvChasHubEntry 1 }

srvChasHubState OBJECT-TYPE
    SYNTAX       INTEGER {
        active(1),
        standby(2),
        unknown(3)
    }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The state of the specific hub in the Server-Chassis platform.

         active(1)  - The state of the hub is active.
         standby(2) - The state of the hub is standby.
         unknown(3) - Can not get hub known state."
    ::= { srvChasHubEntry 2 }

srvChasHubMCIPAddr OBJECT-TYPE
    SYNTAX       IpAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
    	"The managemnet IP address of the hub."
    ::= { srvChasHubEntry 3 }

srvChasHubStatus OBJECT-TYPE
    SYNTAX       SrvChasSeverityType
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The status for the specific hub in the Server-Chassis platform"
    ::= { srvChasHubEntry 4 }

srvChasHubAlarm OBJECT-TYPE
    SYNTAX       DisplayString (SIZE(0..64))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The alarm description if a current alarm is present on the hub.
		'None' : when no alarm is present "
    ::= { srvChasHubEntry 5 }

srvChasHubIDLEDStatus OBJECT-TYPE
    SYNTAX     SrvChasLEDType
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The status of the specific hub's ID LED in the Server-Chassis platform."
    ::= { srvChasHubEntry 6 }

srvChasHubGroup OBJECT-GROUP
        OBJECTS {
             srvChasHubSlotID, srvChasHubState,
             srvChasHubMCIPAddr, srvChasHubStatus,
             srvChasHubAlarm, srvChasHubIDLEDStatus
        }
        STATUS current
        DESCRIPTION
            "Group Hub"
        ::= { srvChasGroups 3 }

-- Power Supply table

srvChasPSUTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SrvChasPSUEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The table listing the status and common
         information of each PSU in the Server-Chassis platform.

         srvChasPSUID is a main key."
    ::= { kontronSrvChassis 4 }

srvChasPSUEntry OBJECT-TYPE
    SYNTAX      SrvChasPSUEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
    	"An entry in the srvChasPSUTable."
    INDEX   { srvChasPSUID }
    ::= { srvChasPSUTable 1 }

SrvChasPSUEntry ::= SEQUENCE {
    srvChasPSUID       Integer32,
    srvChasPSUStatus   SrvChasSeverityFaultType
}

srvChasPSUID OBJECT-TYPE
    SYNTAX       Integer32(1..2)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A main key in the srvChasPSUTable. The value of the
         srvChasPSUID corresponds to number of a PSUs in
         the SrvChas platform.

         The min value is 1, the max value depends on the chassis type.
         The max value is available in SrvChassisCommon/srvChassCmnMaxPSUs,
         with OID=kontron.20.1.6.7"
    ::= { srvChasPSUEntry 1 }

srvChasPSUStatus OBJECT-TYPE
    SYNTAX  SrvChasSeverityFaultType
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The status of the specific PSU in the Server-Chassis platform"
    ::= { srvChasPSUEntry 2 }

srvChasPSUGroup OBJECT-GROUP
        OBJECTS {
             srvChasPSUID, srvChasPSUStatus
        }
        STATUS current
        DESCRIPTION
            "Group PSU"
        ::= { srvChasGroups 4 }

-- Fan table

srvChasFanTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SrvChasFanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The table listing the status and common
         information of each fan in the Server-Chassis platform.

         srvChasFanID is a main key."
    ::= { kontronSrvChassis 5 }

srvChasFanEntry OBJECT-TYPE
    SYNTAX      SrvChasFanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
    	"An entry in the srvChasFanTable."
    INDEX   { srvChasFanID }
    ::= { srvChasFanTable 1 }

SrvChasFanEntry ::= SEQUENCE {
    srvChasFanID            Integer32,
    srvChasFanSpeed         Integer32,
    srvChasFanStatus            SrvChasSeverityFaultType,
    srvChasFanIDLEDStatus   SrvChasLEDType
}

srvChasFanID OBJECT-TYPE
    SYNTAX       Integer32(1..5)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A main key in the srvChasFanTable. The value of the
         srvChasFanID corresponds to index of a fan in
         the Server-Chassis platform.

         The min value is 1, the max value depends on the chassis type.
         The max value is available in SrvChassisCommon/srvChassCmnMaxFans,
         with OID=kontron.20.1.6.8"
    ::= { srvChasFanEntry 1 }

srvChasFanSpeed OBJECT-TYPE
    SYNTAX       Integer32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The speed(RPM) of a particular fan."
    ::= { srvChasFanEntry 2 }

srvChasFanStatus OBJECT-TYPE
    SYNTAX    SrvChasSeverityFaultType
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The status of the specific fan in the Server-Chassis platform."
    ::= { srvChasFanEntry 3 }

srvChasFanIDLEDStatus OBJECT-TYPE
    SYNTAX     SrvChasLEDType
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The status of the specific fan's ID LED in the
         SrvChas platform."
    ::= { srvChasFanEntry 4 }

srvChasFanGroup OBJECT-GROUP
        OBJECTS {
             srvChasFanID, srvChasFanSpeed,
             srvChasFanStatus, srvChasFanIDLEDStatus
        }
        STATUS current
        DESCRIPTION
            "Group Fan"
        ::= { srvChasGroups 5 }

-- Chassis

srvChassisCommon OBJECT IDENTIFIER  ::= { kontronSrvChassis 6 }

srvChassCmnStatus OBJECT-TYPE
    SYNTAX       SrvChasSeverityType
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The status of the chassis in the Server-Chassis platform"
    ::= { srvChassisCommon 1 }

srvChassCmnAlarm OBJECT-TYPE
    SYNTAX       DisplayString
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The alarm description if a current alarm is present in the chassis.
		'None' : when no alarm is present "
    ::= { srvChassisCommon 2 }

srvChassCmnIDLEDStatus OBJECT-TYPE
    SYNTAX     SrvChasLEDType
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION 
        "The status of the chassis' ID LED in the Server-Chassis platform."
    ::= { srvChassisCommon 3 }

srvChassCmnSwitchOID OBJECT-TYPE
    SYNTAX       OBJECT IDENTIFIER
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The object identifier of the switch."
    ::= { srvChassisCommon 4 }

srvChassCmnChassisType OBJECT-TYPE
    SYNTAX       DisplayString (SIZE(0..64))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The type of the chassis.
         Returns 'unknown' if the server type can not be read.
         The string can have up to 64 characters"

    ::= { srvChassisCommon 5 }

srvChassCmnChassisTypeCode OBJECT-TYPE
    SYNTAX       Integer32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION 
        "The code associated with the type of the chassis."
    ::= { srvChassisCommon 6 }

srvChassCmnMaxPSUs OBJECT-TYPE
    SYNTAX       Integer32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION 
        "The maximum number of power supplies supported by the chassis."
    ::= { srvChassisCommon 7 }

srvChassCmnMaxFans OBJECT-TYPE
    SYNTAX       Integer32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION 
        "The maximum number of fans supported by the chassis."
    ::= { srvChassisCommon 8 }

srvChassCmnMaxHubs OBJECT-TYPE
    SYNTAX       Integer32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION 
        "The maximum number of hubs supported by the chassis."
    ::= { srvChassisCommon 9 }

srvChassCmnMaxNodes OBJECT-TYPE
    SYNTAX       Integer32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION 
        "The maximum number of nodes supported by the chassis."
    ::= { srvChassisCommon 10 }

srvChassCmnGroup OBJECT-GROUP
        OBJECTS {
             srvChassCmnStatus,
             srvChassCmnAlarm,
             srvChassCmnIDLEDStatus,
             srvChassCmnSwitchOID,
             srvChassCmnChassisType,
             srvChassCmnChassisTypeCode,
             srvChassCmnMaxPSUs,
             srvChassCmnMaxFans,
             srvChassCmnMaxHubs,
             srvChassCmnMaxNodes
        }
        STATUS current
        DESCRIPTION
            "Group Chassis Common"
        ::= { srvChasGroups 6 }

-- Network Interfaces

srvChasServerNetworkItfTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SrvChasServerNetworkItfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The table listing the name and MAC addresses
         of server network interfaces of Server-Chassis platform.
         "
    ::= { kontronSrvChassis 7 }

srvChasServerNetworkItfEntry OBJECT-TYPE
    SYNTAX      SrvChasServerNetworkItfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the srvChasServerNetworkItfTable."
    INDEX   { srvChasNodeSlotID,
              srvChasServerID,
              srvChasServerNetworkItfID }
    ::= { srvChasServerNetworkItfTable 1 }

SrvChasServerNetworkItfEntry ::= SEQUENCE {
    srvChasServerNetworkItfID     Integer32,
    srvChasServerNetworkItfName   DisplayString,
    srvChasServerNetworkItfMAC    PhysAddress
}

srvChasServerNetworkItfID OBJECT-TYPE
    SYNTAX       Integer32(1..4)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A main key in the srvChasServerNetworkItfTable. The value of
         srvChasServerNetworkItfID corresponds to server network
         interface index in the Server-Chassis platform.

         The min value is 1."
    ::= { srvChasServerNetworkItfEntry 1 }

srvChasServerNetworkItfName OBJECT-TYPE
    SYNTAX       DisplayString (SIZE(0..64))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Server network interface name."
    ::= { srvChasServerNetworkItfEntry 2 }

srvChasServerNetworkItfMAC OBJECT-TYPE
    SYNTAX       PhysAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The MAC address of server's network interface."
    ::= { srvChasServerNetworkItfEntry 3 }


srvChasNetworkItfGroup OBJECT-GROUP
        OBJECTS {
             srvChasServerNetworkItfID,
             srvChasServerNetworkItfName,
             srvChasServerNetworkItfMAC
        }
        STATUS current
        DESCRIPTION
            "Group Network Interface"
        ::= { srvChasGroups 7 }

END
