LUM-INVENTORY-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    Unsigned32, Integer32
        FROM SNMPv2-SMI
    OBJECT-GROUP, NOTIFICATION-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION, AutonomousType, TruthValue, 
    DateAndTime, TestAndIncr, DisplayString, RowPointer
        FROM SNMPv2-TC
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    lumModules, lumInventoryMIB
        FROM LUM-REG
    MgmtNameString
        FROM LUM-TC;

lumInventoryMIBModule MODULE-IDENTITY
    LAST-UPDATED 
        "201409300000Z" -- Sep 30th 2014
    ORGANIZATION 
        "Transmode Systems AB"
    CONTACT-INFO
        "tac@transmode.com"
    DESCRIPTION
        "The inventory MIB. 
        
        In large parts modeled after the Entity MIB 
        version 2 see RFC2737. 

        - General

        - Physical entitites
        
"
    REVISION
        "201409300000Z" -- Sep 30th 2014
    DESCRIPTION
        "Set invPhysVendorType to deprecated since it is not 
        used any more."
    REVISION        
        "200509140000Z" -- September 14th 2005
    DESCRIPTION
        "Added minimal compliance groups."
    REVISION        
        "200409300000Z" -- September 30th 2004
    DESCRIPTION
        "Added table sizes."
    REVISION        
        "200203080000Z" -- March 8th 2002
    DESCRIPTION
        "Put back softwareRev."
    REVISION        
        "200110300000Z" -- October 30th 2001
    DESCRIPTION
        "MIB version and testAndIncr hidden - not supported yet.
        Changed lastChange to DateAndTime."
    REVISION        
        "200107170000Z" -- July 17th 2001
    DESCRIPTION
        "Added notifications. Added general group with version 
        and testAndIncr.
        Added addtional alias and persistence 
        meta-information."
    REVISION        
        "200105110000Z" -- May 11th 2001
    DESCRIPTION
        "Replaced softwareRev with productDataRev.
        Removed alias and assetId."
    REVISION        
        "200105100000Z" -- May 10th 2001
    DESCRIPTION
        "The initial revision of this module."
    ::= { lumModules 5 }

-- tbd Further work: Add user configurable asset id for physical entities(?)
-- tbd Further work: Add timestamp on physical entries and the notifications
-- ... created and lastChange, or is it sufficient with just lastChangeTime?


-- ----------------------------------------------------
-- Conformance area, containing groups and complicance
-- specifications.
-- ----------------------------------------------------

lumInventoryConfs OBJECT IDENTIFIER ::= { lumInventoryMIB 1 }
lumInventoryGroups OBJECT IDENTIFIER ::= { lumInventoryConfs 1 }
lumInventoryCompl OBJECT IDENTIFIER ::= { lumInventoryConfs 2 }
lumInventoryMinimalGroups OBJECT IDENTIFIER ::= { lumInventoryConfs 3 }
lumInventoryMinimalCompl OBJECT IDENTIFIER ::= { lumInventoryConfs 4 }


-- ----------------------------------------------------
-- Root for objects in the inventory MIB
-- ----------------------------------------------------

lumInventoryMIBObjects OBJECT IDENTIFIER ::= { lumInventoryMIB 2 }


-- ----------------------------------------------------
-- This MIB contains the following groups:
-- ----------------------------------------------------

invPhysical OBJECT IDENTIFIER ::= { lumInventoryMIBObjects 1 }
invGeneral OBJECT IDENTIFIER ::= { lumInventoryMIBObjects 2 }
lumentisInvNotifications  OBJECT IDENTIFIER ::= { lumInventoryMIBObjects 3 }
invEntities  OBJECT IDENTIFIER ::= { lumInventoryMIBObjects 4 }
invRelations  OBJECT IDENTIFIER ::= { lumInventoryMIBObjects 5 }


-- ----------------------------------------------------
-- Textual Conventions
-- ----------------------------------------------------

PhysicalClass ::= TEXTUAL-CONVENTION
    STATUS            current
    DESCRIPTION
            "An enumerated value which provides an 
            indication of the general hardware type
            of a particular physical entity. 
            There are no restrictions as to the number of 
            invPhysicalEntries of each invPhysicalClass, 
            which must be instantiated by an agent. 
 
            The enumeration 'other' is applicable if the 
            physical entity class is known, but does not 
            match any of the supported values. 
 
            The enumeration 'unknown' is applicable if 
            the physical entity class is unknown to the 
            agent. 
 
            The enumeration 'chassis' is applicable if the physical 
            entity class is an overall container for networking 
            equipment.  Any class of physical entity except a stack may 
            be contained within a chassis, and a chassis may only be 
            contained within a stack. 
 
            The enumeration 'backplane' is applicable if the physical 
            entity class is some sort of device for aggregating and 
            forwarding networking traffic, such as a shared backplane in 
            a modular ethernet switch.  Note that an agent may model a 
            backplane as a single physical entity, which is actually 
            implemented as multiple discrete physical components (within 
            a chassis or stack). 
 
            The enumeration 'container' is applicable if the physical 
            entity class is capable of containing one or more removable 
            physical entities, possibly of different types. For example, 
            each (empty or full) slot in a chassis will be modeled as a 
            container. Note that all removable physical entities should 
            be modeled within a container entity, such as field- 
            replaceable modules, fans, or power supplies.  Note that all 
            known containers should be modeled by the agent, including 
            empty containers. 
 
            The enumeration 'powerSupply' is applicable if the physical 
            entity class is a power-supplying component. 
 
            The enumeration 'fan' is applicable if the physical entity 
            class is a fan or other heat-reduction component. 
 
            The enumeration 'sensor' is applicable if the physical 
            entity class is some sort of sensor, such as a temperature 
            sensor within a router chassis. 
 
            The enumeration 'module' is applicable if the physical 
            entity class is some sort of self-contained sub-system.  If 
            it is removable, then it should be modeled within a 
            container entity, otherwise it should be modeled directly 
            within another physical entity (e.g., a chassis or another 
            module). 
 
            The enumeration 'port' is applicable if the physical entity 
            class is some sort of networking port, capable of receiving 
            and/or transmitting networking traffic. 
 
            The enumeration 'stack' is applicable if the physical entity 
            class is some sort of super-container (possibly virtual), 
            intended to group together multiple chassis entities.  A 
            stack may be realized by a 'virtual' cable, a real 
            interconnect cable, attached to multiple chassis, or may in 
            fact be comprised of multiple interconnect cables. A stack 
            should not be modeled within any other physical entities, 
            but a stack may be contained within another stack.  Only 
            chassis entities should be contained within a stack." 
    SYNTAX      INTEGER  { 
       undefined (0),
       other(1), 
       unknown(2), 
       chassis(3), 
       backplane(4),
       container(5),     -- e.g., chassis slot or daughter-card holder
       powerSupply(6),
       fan(7),
       sensor(8),
       module(9),        -- e.g., plug-in card or daughter-card
       port(10),
       stack(11) }       -- e.g., stack of multiple chassis entities

EntityClass ::= TEXTUAL-CONVENTION
    STATUS            current
    DESCRIPTION
        "tbd" 
    SYNTAX      INTEGER  { 
       undefined (0),
       other(1), 
       unknown(2), 
       chassis(3), 
       backplane(4),
       container(5),    -- e.g., chassis slot or daughter-card holder
       powerSupply(6),
       fan(7),
       sensor(8),
       module(9),       -- e.g., plug-in card or daughter-card
       port(10),
       stack(11),       -- e.g., stack of multiple chassis entities
       logical(12) }    -- e.g. traffic object realized in software }


-- ----------------------------------------------------
-- Physical entities group
-- ----------------------------------------------------

invPhysTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF InvPhysEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains one row per physical 
            entity.  There is always at least one row 
            for an 'overall' physical entity." 
    ::= { invPhysical 1 } 
 
invPhysEntry OBJECT-TYPE 
    SYNTAX      InvPhysEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
            "Information about a particular physical 
            entity. 
 
            Each entry provides objects (invPhysicalDescr, 
            invPhysicalVendorType, and invPhysicalClass) 
            to help an NMS identify and characterize the 
            entry, and objects (invPhysicalContainedIn 
            and invPhysicalParentRelPos) to help an NMS 
            relate the particular entry to other entries 
            in this table. 

" 
    INDEX   { invPhysIndex }
    ::= { invPhysTable 1 }

InvPhysEntry ::= SEQUENCE {
      invPhysIndex              Unsigned32,
      invPhysDescr              SnmpAdminString, 
      invPhysVendorType         AutonomousType,
      invPhysContainedIn        Unsigned32,
      invPhysClass              PhysicalClass,
      invPhysParentRelPos       Integer32,
      invPhysName               MgmtNameString, 
      invPhysHardwareRev        SnmpAdminString,
      invPhysFirmwareRev        SnmpAdminString,
      invPhysProductDataRev     SnmpAdminString,
      invPhysSerialNum          SnmpAdminString,
      invPhysMfgName            SnmpAdminString,
      invPhysModelName          SnmpAdminString,
      invPhysIsFRU              TruthValue,
      invPhysSoftwareRev        SnmpAdminString,
      invPhysSoftwareProduct    SnmpAdminString }

invPhysIndex    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index for this entry. 
"
    ::= { invPhysEntry 1 }

invPhysDescr OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A textual description of physical entity. This 
        object should contain a string which identifies 
        the manufacturers name for the physical entity, 
        and should be set to a distinct value for each 
        version or model of the physical entity. 
"
    ::= { invPhysEntry 2 }

invPhysVendorType OBJECT-TYPE
    SYNTAX      AutonomousType
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
        "An indication of the vendor-specific hardware 
        type of the physical entity.  Note that this is
        different from the definition of MIB-IIs 
        sysObjectID. 
        
        An agent should set this object to a 
        enterprise-specific registration identifier value
        indicating the specific equipment type in detail.  
        The associated instance of invPhysClass is used
        to indicate the general type of hardware device. 
        
        If no vendor-specific registration identifier 
        exists for this physical entity, or the value 
        is unknown by this agent, then the value { 0 0 } 
        is returned. 
"
    ::= { invPhysEntry 3 }

invPhysContainedIn OBJECT-TYPE
    SYNTAX      Unsigned32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of invPhysIndex for the physical 
        entity which 'contains' this physical entity.  
        A value of zero indicates this physical entity
        is not contained in any other physical entity. 
        Note that the set of 'containment' relationships 
        define a strict hierarchy; that is, recursion 
        is not allowed. 
        
        In the event a physical entity is contained by 
        more than one physical entity (e.g., double-wide 
        modules), this object should identify the 
        containing entity with the lowest value 
        of invPhysIndex. 
"
    ::= { invPhysEntry 4 }

invPhysClass OBJECT-TYPE
    SYNTAX      PhysicalClass
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An indication of the general hardware type of 
        the physical entity. 
        
        An agent should set this object to the standard 
        enumeration value which most accurately indicates 
        the general class of the physical entity, or the
        primary class if there is more than one. 
        
        If no appropriate standard registration 
        identifier exists for this physical entity, then
        the value 'other(1)' is returned. If the value
        is unknown by this agent, then the value 
        'unknown(2)' is returned. 
"
    ::= { invPhysEntry 5 }

invPhysParentRelPos OBJECT-TYPE
    SYNTAX      Integer32 (-1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An indication of the relative position of this 
        'child' component among all its 'sibling' 
        components. Sibling components are defined as 
        invPhysEntries which share the same instance 
        values of each of the invPhysContainedIn 
        and invPhysClass objects. 
        
        An NMS can use this object to identify the 
        relative ordering for all sibling components 
        of a particular parent (identified by the 
        invPhysContainedIn instance in each sibling 
        entry). 
        
        This value should match any external labeling 
        of the physical component if possible. For example,
        for a container (e.g., card slot) labeled as 
        'slot #3', invPhysParentRelPos should have the 
        value '3'.  Note that the invPhysEntry for the 
        module plugged in slot 3 should have an 
        invPhysParentRelPos value of '1'. 
        
        If the physical position of this component 
        does not match any external numbering or clearly 
        visible ordering, then user documentation or 
        other external reference material should be 
        used to determine the parent-relative position. 
        If this is not possible, then the the agent should
        assign a consistent (but possibly arbitrary) 
        ordering to a given set of 'sibling' components, 
        perhaps based on internal representation of the 
        components. 
        
        If the agent cannot determine the parent-relative 
        position for some reason, or if the associated 
        value of invPhysContainedIn is '0', then the 
        value '-1' is returned. Otherwise a non-negative 
        integer is returned, indicating the parent-relative 
        position of this physical entity. 
        
        Parent-relative ordering normally starts from 
        '1' and continues to 'N', where 'N' represents 
        the highest positioned child entity.  However, 
        if the physical entities (e.g., slots) are labeled 
        from a starting position of zero, then the first 
        sibling should be associated with a 
        invPhysParentRelPos value of '0'.  Note that this
        ordering may be sparse or dense, depending on agent 
        implementation. 
        
        The actual values returned are not globally 
        meaningful, as each 'parent' component may use 
        different numbering algorithms. The ordering is 
        only meaningful among siblings of the same parent
        component. 
        
        The agent should retain parent-relative position 
        values across reboots, either through algorithmic 
        assignment or use of non-volatile storage. 
" 
    ::= { invPhysEntry 6 } 
 
invPhysName OBJECT-TYPE 
    SYNTAX      MgmtNameString 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The textual name of the physical entity.  The 
        value of this object should be the name of the 
        component as assigned by the local device and 
        should be suitable for use in commands entered 
        at the 'console' of the device.  This might be a 
        text name, such as 'console' or a simple component 
        number (e.g., port or module number), such as '1', 
        depending on the physical component naming syntax 
        of the device. 
        
        If there is no local name, or this object is 
        otherwise not applicable, then this object 
        contains a zero-length string. 
        
        Note that the value of invPhysName for two 
        physical entities will be the same in the event 
        that the console interface does not distinguish 
        between them, e.g., slot-1 and the card in slot-1. 
" 
    ::= { invPhysEntry 7 } 
 
invPhysHardwareRev    OBJECT-TYPE 
    SYNTAX      SnmpAdminString 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The vendor-specific hardware revision string for 
        the physical entity.  The preferred value is the 
        hardware revision identifier actually printed on 
        the component itself (if present). 
        
        Note that if revision information is stored 
        internally in a non-printable (e.g., binary) 
        format, then the agent must convert such 
        information to a printable format, in an 
        implementation-specific manner. 
        
        If no specific hardware revision string is 
        associated with the physical component, or this
        information is unknown to the agent, then this 
        object will contain a zero-length string. 
" 
    ::= { invPhysEntry 8 } 
 
invPhysFirmwareRev    OBJECT-TYPE 
    SYNTAX      SnmpAdminString 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The vendor-specific firmware revision string for 
        the physical entity. 
        
        Note that if revision information is stored 
        internally in a non-printable (e.g., binary) 
        format, then the agent must convert such 
        information to a printable format, in an 
        implementation-specific manner. 
        
        If no specific firmware programs are associated 
        with the physical component, or this information 
        is unknown to the agent, then this object will 
        contain a zero-length string. 
" 
    ::= { invPhysEntry 9 } 
 
invPhysProductDataRev    OBJECT-TYPE 
    SYNTAX      SnmpAdminString 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The vendor-specific product data revision string 
        for the physical entity. 
        
        Note that if revision information is stored 
        internally in a non-printable (e.g., binary) 
        format, then the agent must convert such 
        information to a printable format, in an 
        implementation-specific manner. 
        
        If no specific software programs are associated 
        with the physical component, or this information 
        is unknown to the agent, then this object will 
        contain a zero-length string. 
" 
    ::= { invPhysEntry 10 } 
 
invPhysSerialNum   OBJECT-TYPE 
    SYNTAX      SnmpAdminString (SIZE (0..32)) 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The vendor-specific serial number string for the 
        physical entity.  The preferred value is the 
        serial number string actually printed on the 
        component itself (if present). 
        
        On the first instantiation of an physical entity, 
        the value of invPhysSerialNum associated with 
        that entity is set to the correct vendor-assigned 
        serial number, if this information is available 
        to the agent.  If a serial number is unknown or 
        non-existent, the invPhysSerialNum will be 
        set to a zero-length string instead. 
" 
    ::= { invPhysEntry 11 } 
 
invPhysMfgName   OBJECT-TYPE 
    SYNTAX      SnmpAdminString 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The name of the manufacturer of this physical 
        component. The preferred value is the manufacturer 
        name string actually printed on the component 
        itself (if present). 
        
        If the manufacturer name string associated with 
        the physical component is unknown to the agent, 
        then this object will contain a zero-length 
        string. 
" 
    ::= { invPhysEntry 12 } 
 
invPhysModelName   OBJECT-TYPE 
    SYNTAX      SnmpAdminString 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The vendor-specific model name identifier string 
        associated with this physical component. The 
        preferred value is the customer-visible 
        product/part number, which may be printed on the 
        component itself. 
        
        If the model name string associated with the 
        physical component is unknown to the agent, 
        then this object will contain a zero-length string. 
" 
    ::= { invPhysEntry 13 } 
 
invPhysIsFRU OBJECT-TYPE 
    SYNTAX      TruthValue 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "This object indicates whether or not this 
        physical entity is considered a 'field replaceable 
        unit' by the vendor.  If this object contains 
        the value 'true(1)' then this invPhysEntry 
        identifies a field replaceable unit.  For all 
        invPhysEntries which represent components that 
        are permanently contained within a field 
        replaceable unit, the value 'false(2)' should 
        be returned for this object. 
" 
    ::= { invPhysEntry 14 } 
 
invPhysSoftwareRev    OBJECT-TYPE 
    SYNTAX      SnmpAdminString 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The vendor-specific software revision string 
        for the physical entity.  
        
        If no specific software revision string is 
        associated with the physical component, or 
        this information is unknown to the agent, then 
        this object will contain a zero-length string. 
" 
    ::= { invPhysEntry 15 } 

invPhysSoftwareProduct    OBJECT-TYPE 
    SYNTAX      SnmpAdminString 
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The vendor-specific software part/product number 
        string for the physical entity.  
        
        If no specific software part/product number 
        string is associated with the physical component, 
        or this information is unknown to the agent, 
        then this object will contain a zero-length string. 
" 
    ::= { invPhysEntry 16 } 
 

-- ---------------------------------------------------- 
-- General group 
-- ---------------------------------------------------- 
 
invGeneralLastChangeTime OBJECT-TYPE 
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only 
    STATUS      current 
    DESCRIPTION 
        "The time the inventory list was last changed. 
" 
    ::= { invGeneral 1 } 
 
invGeneralTestAndIncr OBJECT-TYPE 
    SYNTAX      TestAndIncr 
    MAX-ACCESS  read-write 
    STATUS      current 
    DESCRIPTION 
        "Protection against simultaneous access from 
        multiple managers. See SNMPv2-TC. 
" 
    ::= { invGeneral 2 } 
 
invGeneralMibSpecVersion OBJECT-TYPE 
    SYNTAX      DisplayString 
    MAX-ACCESS  read-write 
    STATUS      current 
    DESCRIPTION 
        "The version of the MIB specification. 
"
    DEFVAL { "" } 
    ::= { invGeneral 3 } 

invGeneralMibImplVersion OBJECT-TYPE 
    SYNTAX      DisplayString 
    MAX-ACCESS  read-write 
    STATUS      current 
    DESCRIPTION 
        "The version of the MIB implementation. 
"
    DEFVAL { "" } 
    ::= { invGeneral 4 } 

invGeneralConfigLastChangeTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when the configuration of the MIB was 
        last changed. 
"
    ::= { invGeneral 5 }

invGeneralPhysTableSize OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of rows available in the 
        physical entities list.
"
    ::= { invGeneral 6 }

invGeneralEntityTableSize OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of rows available in the 
        logical entity list.
"
    ::= { invGeneral 7 }

invGeneralRelationTableSize OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of rows available in the 
        relation list.
"
    ::= { invGeneral 8 }

-- ---------------------------------------------------- 
-- Notifications 
-- ---------------------------------------------------- 
 
invNotifyPrefix OBJECT IDENTIFIER ::= { lumentisInvNotifications 0 } 
 
invNotificationPhysAdded NOTIFICATION-TYPE 
    OBJECTS { 
        invPhysIndex, 
        invPhysDescr, 
        invPhysVendorType, 
        invPhysContainedIn, 
        invPhysClass, 
        invPhysParentRelPos, 
        invPhysName, 
        invPhysHardwareRev, 
        invPhysFirmwareRev, 
        invPhysProductDataRev, 
        invPhysSerialNum, 
        invPhysMfgName, 
        invPhysModelName, 
        invPhysIsFRU } 
    STATUS      current 
    DESCRIPTION 
        "Sent when a physical entity is added to the 
        inventory.

" 
    ::= { invNotifyPrefix 1 } 
 
invNotificationPhysRemoved NOTIFICATION-TYPE 
    OBJECTS { 
        invPhysIndex, 
        invPhysDescr, 
        invPhysVendorType, 
        invPhysContainedIn, 
        invPhysClass, 
        invPhysParentRelPos, 
        invPhysName, 
        invPhysHardwareRev, 
        invPhysFirmwareRev, 
        invPhysProductDataRev, 
        invPhysSerialNum, 
        invPhysMfgName, 
        invPhysModelName, 
        invPhysIsFRU } 
    STATUS      current 
    DESCRIPTION 
        "Sent when a physical entity is removed from the 
        inventory.

" 
    ::= { invNotifyPrefix 2 } 
 

-- ----------------------------------------------------
-- Object model group
-- ----------------------------------------------------

invEntityTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF InvEntityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The entity table."
    ::= { invEntities 1 } 
 
invEntityEntry OBJECT-TYPE 
    SYNTAX      InvEntityEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
        "An entry in the entity table.
" 
    INDEX   { invEntityIndex }
    ::= { invEntityTable 1 }

InvEntityEntry ::= SEQUENCE {
      invEntityIndex            Unsigned32,
      invEntityName             MgmtNameString, 
      invEntityObject           RowPointer,
      invEntityClass            EntityClass }

invEntityIndex    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An arbitrary index assigned to each entry. 
"
    ::= { invEntityEntry 1 }

invEntityName OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The management name of the object this entry is 
        related to. 
"
    ::= { invEntityEntry 2 }

invEntityObject OBJECT-TYPE
    SYNTAX      RowPointer
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Pointer to the object related to this entry.
"
    ::= { invEntityEntry 3 }

invEntityClass OBJECT-TYPE
    SYNTAX      EntityClass
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates the type of entity.
"
    ::= { invEntityEntry 4 }


-- ----------------------------------------------------
-- Object relation group
-- ----------------------------------------------------

invRelationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF InvRelationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Relation table."
    ::= { invRelations 1 } 
 
invRelationEntry OBJECT-TYPE 
    SYNTAX      InvRelationEntry 
    MAX-ACCESS  not-accessible 
    STATUS      current 
    DESCRIPTION 
        "An entry in the relation table.
" 
    INDEX   { invRelationIndex }
    ::= { invRelationTable 1 }

InvRelationEntry ::= SEQUENCE {
      invRelationIndex          Unsigned32,
      invRelationEntityIndex1   Unsigned32,
      invRelationEntityName1    MgmtNameString,
      invRelationType           INTEGER,
      invRelationEntityIndex2   Unsigned32,
      invRelationEntityName2    MgmtNameString }

invRelationIndex    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An arbitrary index assigned to each entry. 

"
    ::= { invRelationEntry 1 }

invRelationEntityIndex1    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Index in to the entity table.
"
    ::= { invRelationEntry 2 }

invRelationEntityName1    OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Index in to the entity table.
"
    ::= { invRelationEntry 3 }

invRelationType    OBJECT-TYPE
    SYNTAX      INTEGER {
        undefined (0),
        containedIn (1),
        dependsOn (2) } 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates how entity 2 is related to entity 1.

        containedIn - Physical containment. Entity 2 is 
        physically contained within entity 1.

        dependsOn - The correct function of entity 2 
        depends on the function of entity 1.
"
    ::= { invRelationEntry 4 }

invRelationEntityIndex2    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Index in to the entity table.
"
    ::= { invRelationEntry 5 }


invRelationEntityName2    OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Name of the object.
"
    ::= { invRelationEntry 6 }



-- ---------------------------------------------------- 
-- Object and event groups 
-- ---------------------------------------------------- 
 
invPhysGroup OBJECT-GROUP 
    OBJECTS { 
        invPhysIndex, 
        invPhysDescr, 
        invPhysVendorType, 
        invPhysContainedIn, 
        invPhysClass, 
        invPhysParentRelPos, 
        invPhysName, 
        invPhysHardwareRev, 
        invPhysFirmwareRev, 
        invPhysProductDataRev, 
        invPhysSerialNum, 
        invPhysMfgName, 
        invPhysModelName, 
        invPhysIsFRU } 
    STATUS      deprecated
    DESCRIPTION 
        "The physical inventory objects." 
    ::= { lumInventoryGroups 1 } 
 
invGeneralGroup OBJECT-GROUP 
    OBJECTS { 
        invGeneralLastChangeTime, 
        invGeneralMibSpecVersion, 
        invGeneralMibImplVersion, 
        invGeneralTestAndIncr } 
    STATUS      deprecated
    DESCRIPTION 
        "The physical inventory objects." 
    ::= { lumInventoryGroups 2 } 
 
invEventGroup NOTIFICATION-GROUP 
    NOTIFICATIONS { 
        invNotificationPhysAdded, 
        invNotificationPhysRemoved } 
    STATUS      current 
    DESCRIPTION 
        "The inventory notifications." 
    ::= { lumInventoryGroups 3 } 
 
 
invGeneralGroupV2 OBJECT-GROUP 
    OBJECTS { 
        invGeneralLastChangeTime }
    STATUS      deprecated
    DESCRIPTION 
        "The physical inventory objects." 
    ::= { lumInventoryGroups 4 } 

invPhysGroupV2 OBJECT-GROUP 
    OBJECTS { 
        invPhysIndex, 
        invPhysDescr, 
        invPhysVendorType, 
        invPhysContainedIn, 
        invPhysClass, 
        invPhysParentRelPos, 
        invPhysName, 
        invPhysHardwareRev, 
        invPhysFirmwareRev, 
        invPhysProductDataRev, 
        invPhysSerialNum, 
        invPhysMfgName, 
        invPhysModelName, 
        invPhysIsFRU,
        invPhysSoftwareRev } 
    STATUS      deprecated
    DESCRIPTION 
        "The physical inventory objects V2." 
    ::= { lumInventoryGroups 5 } 

invPhysGroupV3 OBJECT-GROUP 
    OBJECTS { 
        invPhysIndex, 
        invPhysDescr, 
        invPhysVendorType, 
        invPhysContainedIn, 
        invPhysClass, 
        invPhysParentRelPos, 
        invPhysName, 
        invPhysHardwareRev, 
        invPhysFirmwareRev, 
        invPhysProductDataRev, 
        invPhysSerialNum, 
        invPhysMfgName, 
        invPhysModelName, 
        invPhysIsFRU,
        invPhysSoftwareRev,
        invPhysSoftwareProduct } 
    STATUS      deprecated 
    DESCRIPTION 
        "The physical inventory objects V3." 
    ::= { lumInventoryGroups 6 } 

invEntityGroup OBJECT-GROUP 
    OBJECTS { 
      invEntityIndex,
      invEntityName, 
      invEntityObject,
      invEntityClass }
    STATUS      current 
    DESCRIPTION 
        "The entity objects V1." 
    ::= { lumInventoryGroups 7 } 

invRelationGroup OBJECT-GROUP 
    OBJECTS { 
      invRelationIndex,
      invRelationEntityIndex1,
      invRelationEntityName1,
      invRelationType, 
      invRelationEntityIndex2,
      invRelationEntityName2 }
    STATUS      current 
    DESCRIPTION 
        "The relation objects V1." 
    ::= { lumInventoryGroups 8 } 

invGeneralGroupV3 OBJECT-GROUP 
    OBJECTS { 
        invGeneralLastChangeTime, 
        invGeneralConfigLastChangeTime}
    STATUS      deprecated
    DESCRIPTION 
        "The physical inventory objects." 
    ::= { lumInventoryGroups 9 } 

invGeneralGroupV4 OBJECT-GROUP 
    OBJECTS { 
        invGeneralLastChangeTime, 
        invGeneralConfigLastChangeTime,
        invGeneralPhysTableSize,        
        invGeneralEntityTableSize,
        invGeneralRelationTableSize}
    STATUS      current 
    DESCRIPTION 
        "The physical inventory objects v4." 
    ::= { lumInventoryGroups 10 } 

invPhysGroupV4 OBJECT-GROUP 
    OBJECTS { 
        invPhysIndex, 
        invPhysDescr, 
        invPhysContainedIn, 
        invPhysClass, 
        invPhysParentRelPos, 
        invPhysName, 
        invPhysHardwareRev, 
        invPhysFirmwareRev, 
        invPhysProductDataRev, 
        invPhysSerialNum, 
        invPhysMfgName, 
        invPhysModelName, 
        invPhysIsFRU,
        invPhysSoftwareRev,
        invPhysSoftwareProduct } 
    STATUS      current 
    DESCRIPTION 
        "The physical inventory objects V4 (release R23.1)." 
    ::= { lumInventoryGroups 11 } 


-- ---------------------------------------------------- 
-- Compliance 
-- ---------------------------------------------------- 
 
lumInventoryBasicComplV1 MODULE-COMPLIANCE 
    STATUS      deprecated
    DESCRIPTION 
        "Basic implementation requirements for the 
        inventory MIB." 
    MODULE 
        MANDATORY-GROUPS { 
            invPhysGroup, 
            invGeneralGroup,
            invEventGroup } 
    ::= { lumInventoryCompl 1 } 

lumInventoryBasicComplV2 MODULE-COMPLIANCE 
    STATUS      deprecated
    DESCRIPTION 
        "Basic implementation requirements for the 
        inventory MIB v2." 
    MODULE 
        MANDATORY-GROUPS { 
            invGeneralGroupV2,
            invPhysGroup, 
            invEventGroup } 
    ::= { lumInventoryCompl 2 } 

lumInventoryBasicComplV3 MODULE-COMPLIANCE 
    STATUS      deprecated 
    DESCRIPTION 
        "Basic implementation requirements for the 
        inventory MIB v3." 
    MODULE 
        MANDATORY-GROUPS { 
            invGeneralGroupV2,
            invPhysGroupV2, 
            invEventGroup } 
    ::= { lumInventoryCompl 3 } 

lumInventoryBasicComplV4 MODULE-COMPLIANCE 
    STATUS      deprecated
    DESCRIPTION 
        "Basic implementation requirements for the 
        inventory MIB v4." 
    MODULE 
        MANDATORY-GROUPS { 
            invGeneralGroupV2,
            invPhysGroupV3, 
            invEventGroup } 
    ::= { lumInventoryCompl 4 } 

lumInventoryBasicComplV5 MODULE-COMPLIANCE 
    STATUS      deprecated
    DESCRIPTION 
        "Basic implementation requirements for the 
        inventory MIB v5." 
    MODULE 
        MANDATORY-GROUPS { 
            invGeneralGroupV2,
            invPhysGroupV3, 
            invEventGroup,
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryCompl 5 } 

lumInventoryBasicComplV6 MODULE-COMPLIANCE 
    STATUS      deprecated
    DESCRIPTION 
        "Basic implementation requirements for the 
        inventory MIB v6." 
    MODULE 
        MANDATORY-GROUPS { 
            invGeneralGroupV3,
            invPhysGroupV3, 
            invEventGroup,
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryCompl 6 } 

lumInventoryBasicComplV7 MODULE-COMPLIANCE 
    STATUS      deprecated 
    DESCRIPTION 
        "Basic implementation requirements for the 
        inventory MIB v7." 
    MODULE 
        MANDATORY-GROUPS { 
            invGeneralGroupV4,
            invPhysGroupV3, 
            invEventGroup,
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryCompl 7 } 
    
lumInventoryBasicComplV8 MODULE-COMPLIANCE 
    STATUS      current 
    DESCRIPTION 
        "Basic implementation requirements for the 
        inventory MIB v8." 
    MODULE 
        MANDATORY-GROUPS { 
            invGeneralGroupV4,
            invPhysGroupV4, 
            invEventGroup,
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryCompl 8 } 

-- ----------------------------------------------------
-- Minimal object and event groups
-- ----------------------------------------------------

inventoryGeneralMinimalGroupV1 OBJECT-GROUP
    OBJECTS {
        invGeneralLastChangeTime, 
        invGeneralConfigLastChangeTime,
        invGeneralPhysTableSize,        
        invGeneralEntityTableSize,
        invGeneralRelationTableSize }
    STATUS      current
    DESCRIPTION
        "The minimal general inventory objects."
    ::= { lumInventoryMinimalGroups 1 }

-- ----------------------------------------------------
-- Minimal Compliance 
-- ----------------------------------------------------

lumInventoryMinimalComplV1 MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "Minimal implementation requirements for the inventory MIB v1."
    MODULE
        MANDATORY-GROUPS {
            inventoryGeneralMinimalGroupV1,
            invPhysGroupV3, 
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryMinimalCompl 1 }
    
lumInventoryMinimalComplV2 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Minimal implementation requirements for the inventory MIB v1."
    MODULE
        MANDATORY-GROUPS {
            inventoryGeneralMinimalGroupV1,
            invPhysGroupV4, 
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryMinimalCompl 2 }

END 
 
