-- *****************************************************************
-- INFINERA-PM-PEM-MIB
-- 
-- February 2015, Kavitha Manjunatha / Narendra Gupta
-- 
-- 
-- Copyright (c) 2008-2012 by Infinera Inc.
-- All rights reserved.
-- ****************************************************************

INFINERA-PM-PEM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Integer32                                   FROM SNMPv2-SMI
    MODULE-COMPLIANCE, OBJECT-GROUP             FROM SNMPv2-CONF
    TruthValue                                  FROM SNMPv2-TC
    ifIndex                                     FROM IF-MIB
    FloatThousandths                            FROM INFINERA-TC-MIB
    commonPerfMon                               FROM INFINERA-REG-MIB;


pemPmMIB MODULE-IDENTITY
    LAST-UPDATED  "201502060000Z"
    ORGANIZATION  "Infinera"
    CONTACT-INFO
        "Infinera
        1322 Bordeaux Drive
        Sunnyvale, CA - 94089

        Contact : Technical Support
        Email   : support@infinera.com
        Phone   : 1-877-INF-5288"
    DESCRIPTION
        " "
    REVISION      "201502060000Z" 
    DESCRIPTION
        "First Version"
    ::= { commonPerfMon 5 }

-- Real PMs
pemPmRealTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PemPmRealEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of PemPmReal entries. Each entry is uniquely identified by the value of ifIndex."
    ::= { pemPmMIB 1 } 

pemPmRealEntry  OBJECT-TYPE
    SYNTAX      PemPmRealEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A pemPm entry containing real-time performance information pertaining to
        Infinera Pem interfaces. . This table is a subclass of IfCommon.
        Entries will exist in this table only for interfaces of pem."
    INDEX { ifIndex }
    ::= { pemPmRealTable 1 }


PemPmRealEntry  ::= SEQUENCE {
    pemPmRealInVRaw          FloatThousandths,
    pemPmRealInCRaw          FloatThousandths,
    pemPmRealInPRaw          FloatThousandths
}

pemPmRealInVRaw OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InVRaw real PMs"
    ::= { pemPmRealEntry  1 }

pemPmRealInCRaw OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InCRaw real PMs"
    ::= { pemPmRealEntry  2 }

pemPmRealInPRaw OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InPRaw real PMs"
    ::= { pemPmRealEntry  3 }

-- Historical PMs
pemPmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PemPmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of PemPm entries. Each entry is uniquely identified by the value of ifIndex, sampleDuration and pemPmTimestamp."
    ::= { pemPmMIB 2 } 

pemPmEntry  OBJECT-TYPE
    SYNTAX      PemPmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A Pem entry containing historical performance information pertaining to
        Infinera Pem interfaces. . This table is a subclass of IfCommon.
        Entries will exist in this table only for interfaces of type Pem.
        Each interface may have a number of entries in this table, each with a different combination
        of timestamp and sample duration."
    INDEX { ifIndex, pemPmSampleDuration, pemPmTimestamp }
    ::= { pemPmTable 1 }

PemPmEntry  ::= SEQUENCE {
    pemPmTimestamp            Integer32,
    pemPmSampleDuration       INTEGER,
    pemPmValidity             TruthValue,
    pemPmInVMin               FloatThousandths,
    pemPmInVMax               FloatThousandths,
    pemPmInVAvg               FloatThousandths,
    pemPmInCMin               FloatThousandths,
    pemPmInCMax               FloatThousandths,
    pemPmInCAvg               FloatThousandths,
    pemPmInPMin               FloatThousandths,
    pemPmInPMax               FloatThousandths,
    pemPmInPAvg               FloatThousandths
}

pemPmTimestamp OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "End Time stamp for this interval. If this time is later than the current time,
        then the data for this bucket is currently being collected."
    ::= { pemPmEntry  1 }

pemPmSampleDuration OBJECT-TYPE
    SYNTAX      INTEGER {
                    fifteenMinutes(1),
                    day(2)
                }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The duration of this sample."
    ::= { pemPmEntry  2 }

pemPmValidity OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Flag indicating if data was valid for the entire interval"
    ::= { pemPmEntry  3 }

pemPmInVMin OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InVMin historical PMs"
    ::= { pemPmEntry  4 }

pemPmInVMax OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InVMax historical PMs"
    ::= { pemPmEntry  5 }

pemPmInVAvg OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InVAvg historical PMs"
    ::= { pemPmEntry  6 }

pemPmInCMin OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InCMin historical PMs"
    ::= { pemPmEntry  7 }

pemPmInCMax OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InCMax historical PMs"
    ::= { pemPmEntry  8 }

pemPmInCAvg OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InCAvg historical PMs"
    ::= { pemPmEntry  9 }

pemPmInPMin OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InPMin historical PMs"
    ::= { pemPmEntry  10 }

pemPmInPMax OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InPMax historical PMs"
    ::= { pemPmEntry  11 }

pemPmInPAvg OBJECT-TYPE
    SYNTAX      FloatThousandths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "PEM InPAvg historical PMs"
    ::= { pemPmEntry  12 }

-- Conformance Statements
pemPmConformance    OBJECT IDENTIFIER ::= { pemPmMIB 3 }
pemPmCompliances    OBJECT IDENTIFIER ::= { pemPmConformance 1 }
pemPmGroups         OBJECT IDENTIFIER ::= { pemPmConformance 2 }

pemPmCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
    "Describes the requirements for conformance to the PM-PEM-MIB"
    MODULE
        MANDATORY-GROUPS { pemPmRealGroup }
    ::= { pemPmCompliances 1 }

pemPmRealCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
    "Describes the requirements for conformance to the pemPmReal-MIB"
    MODULE
        MANDATORY-GROUPS { pemPmRealGroup }
    ::= { pemPmCompliances 2 }

-- Historical PM groups
pemPmGroup OBJECT-GROUP
    OBJECTS {
	    pemPmValidity,         
        pemPmInVMin,
        pemPmInVMax,
        pemPmInVAvg,
        pemPmInCMin,
        pemPmInCMax,
        pemPmInCAvg,
        pemPmInPMin,
        pemPmInPMax,
        pemPmInPAvg
    }
    STATUS current          
    DESCRIPTION             
        " A collection of objects for reading the performance of the Pem."
    ::= { pemPmGroups 1 }

-- Real PM groups
pemPmRealGroup OBJECT-GROUP
    OBJECTS {
    	pemPmRealInVRaw,
    	pemPmRealInCRaw,
    	pemPmRealInPRaw 
    }
    STATUS current
    DESCRIPTION
        " A collection of objects for reading the performance of the pem."
    ::= { pemPmGroups 2 }

END

