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

INFINERA-PM-FAN-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
    FloatTenths                                 FROM INFINERA-TC-MIB
    commonPerfMon                               FROM INFINERA-REG-MIB;


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

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

fanPmRealEntry  OBJECT-TYPE
    SYNTAX      FanPmRealEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A fanPm entry containing real-time performance information pertaining to
        Infinera Fan interfaces. . This table is a subclass of IfCommon.
        Entries will exist in this table only for interfaces of fan."
    INDEX { ifIndex }
    ::= { fanPmRealTable 1 }


FanPmRealEntry  ::= SEQUENCE {
    fanPmRealInRpmRaw          FloatTenths
}

fanPmRealInRpmRaw OBJECT-TYPE
    SYNTAX      FloatTenths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "TOM Transmitted Laser Bias Current"
    ::= { fanPmRealEntry  1 }

-- Historical PMs
fanPmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF FanPmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of FanPm entries. Each entry is uniquely identified by the value of ifIndex, sampleDuration and fanPmTimestamp."
    ::= { fanPmMIB 2 } 

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

FanPmEntry  ::= SEQUENCE {
    fanPmTimestamp            Integer32,
    fanPmSampleDuration       INTEGER,
    fanPmValidity             TruthValue,
    fanPmInRpmMin             FloatTenths,
    fanPmInRpmMax             FloatTenths,
    fanPmInRpmAvg             FloatTenths
}

fanPmTimestamp 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."
    ::= { fanPmEntry  1 }

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

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

fanPmInRpmMin OBJECT-TYPE
    SYNTAX      FloatTenths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "InRpmMin historical PMs"
    ::= { fanPmEntry  4 }

fanPmInRpmMax OBJECT-TYPE
    SYNTAX      FloatTenths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "InRpmMax historical PMs"
    ::= { fanPmEntry  5 }

fanPmInRpmAvg OBJECT-TYPE
    SYNTAX      FloatTenths
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "InRpmAvg historical PMs"
    ::= { fanPmEntry  6 }

-- Conformance Statements
fanPmConformance    OBJECT IDENTIFIER ::= { fanPmMIB 3 }
fanPmCompliances    OBJECT IDENTIFIER ::= { fanPmConformance 1 }
fanPmGroups         OBJECT IDENTIFIER ::= { fanPmConformance 2 }

fanPmCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
    "Describes the requirements for conformance to the PM-FAN-MIB"
    MODULE
        MANDATORY-GROUPS { fanPmRealGroup }
    ::= { fanPmCompliances 1 }

fanPmRealCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
    "Describes the requirements for conformance to the fanPmReal-MIB"
    MODULE
        MANDATORY-GROUPS { fanPmRealGroup }
    ::= { fanPmCompliances 2 }

-- Historical PM groups
fanPmGroup OBJECT-GROUP
    OBJECTS {
	    fanPmValidity,         
    	fanPmInRpmMin,
    	fanPmInRpmMax,
    	fanPmInRpmAvg 
    }
    STATUS current          
    DESCRIPTION             
        " A collection of objects for reading the performance of the Fan."
    ::= { fanPmGroups 1 }

-- Real PM groups
fanPmRealGroup OBJECT-GROUP
    OBJECTS {
    	fanPmRealInRpmRaw 
    }
    STATUS current
    DESCRIPTION
        " A collection of objects for reading the performance of the fan."
    ::= { fanPmGroups 2 }

END
