LUM-INVENTORY-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    Unsigned32, Integer32, Counter32
        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
        "201706150000Z" -- June 15th 2017
    ORGANIZATION
        "Infinera Corporation"
    CONTACT-INFO
        "techsupport@infinera.com"
    DESCRIPTION
        "The inventory MIB.

        In large parts modeled after the Entity MIB
        version 2 see RFC2737.

        - General

        - Physical entitites

"
    REVISION
        "201706150000Z" -- June 15th 2017
    DESCRIPTION
        "Changes made for release r29.0:
         - Changed ORGANIZATION and CONTACT-INFO"
    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 }
invInsRemLog    OBJECT IDENTIFIER ::= { lumInventoryMIBObjects 6 }

-- ----------------------------------------------------
-- 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 }

InsRemEventType ::= TEXTUAL-CONVENTION
    STATUS            current
    DESCRIPTION
        "Type of equipment logging event"
    SYNTAX      INTEGER  {
       insert (0),
       remove (1) }


-- ----------------------------------------------------
-- 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,
      invPhysClei               DisplayString,
      invPhysAid                DisplayString}

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 }

invPhysClei OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..10))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Common Language Equipment Identifier (CLEI)
         code for the product.
         The format is according to RFC 4152.

"
    ::= { invPhysEntry 17 }

invPhysAid OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The access identifier (AID) of the equipment.
         The format is according to GR-833.

"
    ::= { invPhysEntry 18 }

-- ----------------------------------------------------
-- 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 }

invGeneralInsRemTableSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of rows available in the
        insert and remove list.
"
    ::= { invGeneral 9 }

invGeneralInsRemLastSeqNumber OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sequence number last used when creating
        a new entry in the insert remove log.

"
    ::= { invGeneral 10 }

-- ----------------------------------------------------
-- 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 }

-- ----------------------------------------------------
-- Insert/remove log group
-- ----------------------------------------------------

invInsRemTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF InvInsRemEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains one row per insert or
            remove event of any physical entity."
    ::= { invInsRemLog 1 }

invInsRemEntry OBJECT-TYPE
    SYNTAX      InvInsRemEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Information about a particular insert
            or remove entry.

"
    INDEX   { invInsRemIndex }
    ::= { invInsRemTable 1 }

InvInsRemEntry ::= SEQUENCE {
        invInsRemIndex              Unsigned32,
        invInsRemName               MgmtNameString,
        invInsRemEvent              InsRemEventType,
        invInsRemTimestamp          DateAndTime,
        invInsRemEquipmentType      PhysicalClass,
        invInsRemPhysicalLocation   DisplayString,
        invInsRemClei               DisplayString,
        invInsRemSerialNumber       DisplayString,
        invInsRemPartNumber         DisplayString,
        invInsRemSeqNumber          Counter32 }

invInsRemIndex    OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index for this entry.

"
    ::= { invInsRemEntry 1 }

invInsRemName OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The management name of the object this entry
        is related to.

"
    ::= { invInsRemEntry 2 }

invInsRemEvent OBJECT-TYPE
    SYNTAX      InsRemEventType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of event.

"
    ::= { invInsRemEntry 3 }

invInsRemTimestamp OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when the event occurred.

"
    ::= { invInsRemEntry 4 }

invInsRemEquipmentType OBJECT-TYPE
    SYNTAX      PhysicalClass
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Part Number of the product.

"
    ::= { invInsRemEntry 5 }

invInsRemPhysicalLocation OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The physical location of the product.

"
    ::= { invInsRemEntry 6 }

invInsRemClei OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..10))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Common Language Equipment Identifier
        (CLEI) code for the product.

"
    ::= { invInsRemEntry 7 }

invInsRemSerialNumber   OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The serial number string for the
        physical entity.

"
    ::= { invInsRemEntry 8 }

invInsRemPartNumber OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Part Number of the product.

"
    ::= { invInsRemEntry 9 }

invInsRemSeqNumber OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The last sequence number used when
        this event occurred.

"
    ::= { invInsRemEntry 10 }

-- ----------------------------------------------------
-- 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      deprecated
    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      deprecated
    DESCRIPTION
        "The physical inventory objects V4 (release R23.1)."
    ::= { lumInventoryGroups 11 }

invPhysGroupV5 OBJECT-GROUP
    OBJECTS {
        invPhysIndex,
        invPhysDescr,
        invPhysContainedIn,
        invPhysClass,
        invPhysParentRelPos,
        invPhysName,
        invPhysHardwareRev,
        invPhysFirmwareRev,
        invPhysProductDataRev,
        invPhysSerialNum,
        invPhysMfgName,
        invPhysModelName,
        invPhysIsFRU,
        invPhysSoftwareRev,
        invPhysSoftwareProduct,
        invPhysClei,
        invPhysAid }
    STATUS      current
    DESCRIPTION
        "The physical inventory objects V5 (release R28)."
    ::= { lumInventoryGroups 12 }

invInsRemGroup OBJECT-GROUP
    OBJECTS {
        invInsRemIndex,
        invInsRemName,
        invInsRemEvent,
        invInsRemTimestamp,
        invInsRemEquipmentType,
        invInsRemPhysicalLocation,
        invInsRemClei,
        invInsRemSerialNumber,
        invInsRemPartNumber,
        invInsRemSeqNumber }
    STATUS      current
    DESCRIPTION
        "The insert remove events objects V1 (release R28)."
    ::= { lumInventoryGroups 13 }

invGeneralGroupV5 OBJECT-GROUP
    OBJECTS {
        invGeneralLastChangeTime,
        invGeneralConfigLastChangeTime,
        invGeneralPhysTableSize,
        invGeneralEntityTableSize,
        invGeneralRelationTableSize,
        invGeneralInsRemTableSize,
        invGeneralInsRemLastSeqNumber }
    STATUS      current
    DESCRIPTION
        "The physical inventory objects V5 (release R28)."
    ::= { lumInventoryGroups 14 }


-- ----------------------------------------------------
-- 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      deprecated
    DESCRIPTION
        "Basic implementation requirements for the
        inventory MIB v8."
    MODULE
        MANDATORY-GROUPS {
            invGeneralGroupV4,
            invPhysGroupV4,
            invEventGroup,
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryCompl 8 }

lumInventoryBasicComplV9 MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "Basic implementation requirements for the
        inventory MIB v9."
    MODULE
        MANDATORY-GROUPS {
            invGeneralGroupV4,
            invPhysGroupV5,
            invEventGroup,
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryCompl 9 }

lumInventoryBasicComplV10 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Basic implementation requirements for the
        inventory MIB v10. (R28.0)"
    MODULE
        MANDATORY-GROUPS {
            invGeneralGroupV5,
            invPhysGroupV5,
            invEventGroup,
            invEntityGroup,
            invRelationGroup,
            invInsRemGroup }
    ::= { lumInventoryCompl 10 }

-- ----------------------------------------------------
-- 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      deprecated
    DESCRIPTION
        "Minimal implementation requirements for the inventory MIB v1."
    MODULE
        MANDATORY-GROUPS {
            inventoryGeneralMinimalGroupV1,
            invPhysGroupV4,
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryMinimalCompl 2 }

lumInventoryMinimalComplV3 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Minimal implementation requirements for the inventory MIB v2."
    MODULE
        MANDATORY-GROUPS {
            inventoryGeneralMinimalGroupV1,
            invPhysGroupV5,
            invEntityGroup,
            invRelationGroup }
    ::= { lumInventoryMinimalCompl 3 }

END


