From 3ff8b269f5ee742640bdab15e1ec492680df49f7 Mon Sep 17 00:00:00 2001 From: Neil Lathwood Date: Sat, 22 Apr 2017 14:07:37 +0100 Subject: [PATCH] newdevice: Added support for enLogic PDUs (#6464) --- html/images/logos/enlogic.png | Bin 0 -> 48836 bytes html/images/os/enlogic.png | Bin 0 -> 1020 bytes includes/definitions/enlogic-pdu.yaml | 14 + .../sensors/current/enlogic-pdu.inc.php | 60 + .../sensors/power/enlogic-pdu.inc.php | 47 + .../sensors/pre-cache/enlogic-pdu.inc.php | 37 + .../sensors/state/enlogic-pdu.inc.php | 173 + .../sensors/voltage/enlogic-pdu.inc.php | 41 + includes/polling/os/enlogic-pdu.inc.php | 32 + mibs/enlogic/ENLOGIC-PDU-MIB | 5191 +++++++++++++++++ tests/OSDiscoveryTest.php | 5 + tests/snmpsim/enlogic-pdu.snmprec | 2 + 12 files changed, 5602 insertions(+) create mode 100644 html/images/logos/enlogic.png create mode 100644 html/images/os/enlogic.png create mode 100644 includes/definitions/enlogic-pdu.yaml create mode 100644 includes/discovery/sensors/current/enlogic-pdu.inc.php create mode 100644 includes/discovery/sensors/power/enlogic-pdu.inc.php create mode 100644 includes/discovery/sensors/pre-cache/enlogic-pdu.inc.php create mode 100644 includes/discovery/sensors/state/enlogic-pdu.inc.php create mode 100644 includes/discovery/sensors/voltage/enlogic-pdu.inc.php create mode 100644 includes/polling/os/enlogic-pdu.inc.php create mode 100644 mibs/enlogic/ENLOGIC-PDU-MIB create mode 100644 tests/snmpsim/enlogic-pdu.snmprec diff --git a/html/images/logos/enlogic.png b/html/images/logos/enlogic.png new file mode 100644 index 0000000000000000000000000000000000000000..87c2ea4747fcd5faf2a3d668c9e13fe67d70244c GIT binary patch literal 48836 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 literal 0 HcmV?d00001 diff --git a/html/images/os/enlogic.png b/html/images/os/enlogic.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2ec08fecd7ee41ab9e14b23ea7cc824b33f2dd GIT binary patch literal 1020 zcmVWFU8GbZ8()Nlj2>E@cM*00Ur2L_t(o!|hf}Y#UV+ zJ@?HU$5SV%WH%~yO;M{lPFsQKt^^i{6;LS)DBo2@7g56}G_5EI0)j=55>)YNcOW4) zw2H(6io^!N0)gBGNFeIEZc#t68=*9iH0i|lymweQR*hx5T|{i~k!JDk+`0GYp7+ih zpo0!N_`gHy7bN9quDClOo;2ir0U2>c7L~{kTH%Ya{={h!VY5OX<*&XFSZo9!j^N@; z{qc{Fou5tmfqgch9V%P)hD80P6;6d6b>hWT{K~%we12svc42WP6OdaQiLEBukRzGb zwkHRh5tukLbGB@m1^_LRiD-3jv0}a@;5FtdL1{zC9UMvB@v{KH$;;QG`Ro2K0l66f zSS(hqfO zXSzPe5SZ~xBl?4Lvx5Pds=ese&XLjn_~dA9^dbR(p?A;BoGMxF0f4gQFo1*YNO+E# zI{HE>z4(0tx^Ei(RT@?Y`9sLyJ@n4HA1Djt9C)AF}HvoqLz&CvGxpZGfM9hC> z#Y&5ODu4w5OX9s;@p!A`schlZ5A(&*wIra&((%khws5*)xf=kM13NsKEhIxq#tmf7 z(24^|RLH3%V;@*Dz|mYWHkMAjxh4cegwvP*zW>l6X5di+G-X5#R z8w5ZivStzhz@H_bTh@i|?NV|=t;#__5r`02S2HR{WNy9dynJXNai~eHP~9mBwdv{B zf1?55`Ba<$ZUA`Z%fkG~g{9JH$=bbvWl}3Bf&AF(s!tAVi%++z+O5?)mFndqTBO)2 quSYvm2HXgMj>uf+kEnwVI`{{ARACu8yv|Ah0000. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +foreach ($pre_cache['enlogic_pdu_input'] as $index => $data) { + if (is_array($data)) { + $oid = '.1.3.6.1.4.1.38446.1.3.4.1.5.' . $index; + $tmp_index = 'pduInputPhaseStatusCurrent.' . $index; + $descr = "Input Phase $index"; + $divisor = 1; + $type = "enlogic-pdu"; + $low_limit = $data['pduInputPhaseConfigCurrentLowerCriticalThreshold']; + $low_warn = $data['pduInputPhaseConfigCurrentLowerWarningThreshold']; + $high_limit = $data['pduInputPhaseConfigCurrentUpperCriticalThreshold']; + $high_warn = $data['pduInputPhaseConfigCurrentUpperWarningThreshold']; + $current = $data['pduInputPhaseStatusCurrent']; + if ($current > 0) { + discover_sensor($valid['sensor'], 'current', $device, $oid, $tmp_index, $type, $descr, $divisor, '1', $low_limit, $low_warn, $high_warn, $high_limit, $current); + } + } +} + +foreach ($pre_cache['enlogic_pdu_circuit'] as $index => $data) { + if (is_array($data)) { + $oid = '.1.3.6.1.4.1.38446.1.4.4.1.5.' . $index; + $tmp_index = 'pduCircuitBreakerStatusCurrent.' . $index; + $descr = "Input Phase {$data['pduCircuitBreakerLabel']}"; + $divisor = 1; + $type = "enlogic-pdu"; + $low_limit = $data['pduCircuitBreakerConfigLowerCriticalThreshold']; + $low_warn = $data['pduCircuitBreakerConfigLowerWarningThreshold']; + $high_limit = $data['pduCircuitBreakerConfigUpperCriticalThreshold']; + $high_warn = $data['pduCircuitBreakerConfigUpperWarningThreshold']; + $current = $data['pduCircuitBreakerStatusCurrent']; + if ($current > 0) { + discover_sensor($valid['sensor'], 'current', $device, $oid, $tmp_index, $type, $descr, $divisor, '1', $low_limit, $low_warn, $high_warn, $high_limit, $current); + } + } +} diff --git a/includes/discovery/sensors/power/enlogic-pdu.inc.php b/includes/discovery/sensors/power/enlogic-pdu.inc.php new file mode 100644 index 0000000000..4602640958 --- /dev/null +++ b/includes/discovery/sensors/power/enlogic-pdu.inc.php @@ -0,0 +1,47 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +foreach ($pre_cache['enlogic_pdu_status'] as $index => $data) { + if (is_array($data)) { + $current = $data['pduUnitStatusActivePower']; + $descr = "Active power #$index"; + $oid = '.1.3.6.1.4.1.38446.1.2.4.1.4.' . $index; + if ($current > 0) { + discover_sensor($valid['sensor'], 'power', $device, $oid, $index, 'enlogic-pdu', $descr, 1, 1, null, null, null, null, $current); + } + } +} + +foreach ($pre_cache['enlogic_pdu_input'] as $index => $data) { + if (is_array($data)) { + $current = $data['pduInputPhaseStatusActivePower']; + $tmp_index = "pduInputPhaseStatusActivePower." . $index; + $descr = "Input Phase #" . $index; + $oid = '.1.3.6.1.4.1.38446.1.3.4.1.7.' . $index; + if ($current > 0) { + discover_sensor($valid['sensor'], 'power', $device, $oid, $tmp_index, 'enlogic-pdu', $descr, 1, 1, null, null, null, null, $current); + } + } +} diff --git a/includes/discovery/sensors/pre-cache/enlogic-pdu.inc.php b/includes/discovery/sensors/pre-cache/enlogic-pdu.inc.php new file mode 100644 index 0000000000..69994a37d4 --- /dev/null +++ b/includes/discovery/sensors/pre-cache/enlogic-pdu.inc.php @@ -0,0 +1,37 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +echo 'pduUnitStatusTable '; +$pre_cache['enlogic_pdu_status'] = snmpwalk_cache_oid($device, 'pduUnitStatusTable', array(), 'ENLOGIC-PDU-MIB'); + +echo 'pduInputPhaseConfigTable '; +$pre_cache['enlogic_pdu_input'] = snmpwalk_cache_oid($device, 'pduInputPhaseConfigTable', array(), 'ENLOGIC-PDU-MIB'); +echo 'pduInputPhaseStatusTable '; +$pre_cache['enlogic_pdu_input'] = snmpwalk_cache_oid($device, 'pduInputPhaseStatusTable', $pre_cache['enlogic_pdu_input'], 'ENLOGIC-PDU-MIB'); + +echo 'pduCircuitBreakerConfigTable '; +$pre_cache['enlogic_pdu_circuit'] = snmpwalk_cache_oid($device, 'pduCircuitBreakerConfigTable', array(), 'ENLOGIC-PDU-MIB'); +echo 'pduCircuitBreakerStatusTable '; +$pre_cache['enlogic_pdu_circuit'] = snmpwalk_cache_oid($device, 'pduCircuitBreakerStatusTable', $pre_cache['enlogic_pdu_circuit'], 'ENLOGIC-PDU-MIB'); diff --git a/includes/discovery/sensors/state/enlogic-pdu.inc.php b/includes/discovery/sensors/state/enlogic-pdu.inc.php new file mode 100644 index 0000000000..ff3a7c8cb4 --- /dev/null +++ b/includes/discovery/sensors/state/enlogic-pdu.inc.php @@ -0,0 +1,173 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +foreach ($pre_cache['enlogic_pdu_status'] as $index => $data) { + if (is_array($data)) { + $oid = '.1.3.6.1.4.1.38446.1.2.4.1.3.' . $index; + $state_name = 'pduUnitStatusLoadState'; + $state_index_id = create_state_index($state_name); + $current = $data['pduUnitStatusLoadState']; + + //Create State Translation + if ($state_index_id !== null) { + $states = array( + array($state_index_id, 'upperCritical', 1, 1, 2), + array($state_index_id, 'upperWarning', 1, 2, 1), + array($state_index_id, 'lowerWarning', 1, 3, 1), + array($state_index_id, 'lowerCritical', 1, 4, 2), + array($state_index_id, 'normal', 1, 5, 0), + ); + foreach ($states as $value) { + $insert = array( + 'state_index_id' => $value[0], + 'state_descr' => $value[1], + 'state_draw_graph' => $value[2], + 'state_value' => $value[3], + 'state_generic_value' => $value[4] + ); + dbInsert($insert, 'state_translations'); + } + } + + $descr = "Load state #$index"; + //Discover Sensors + discover_sensor($valid['sensor'], 'state', $device, $oid, $index, $state_name, $descr, '1', '1', null, null, null, null, $current); + //Create Sensor To State Index + create_sensor_to_state_index($device, $state_name, $index); + } +} + +foreach ($pre_cache['enlogic_pdu_input'] as $index => $data) { + if (is_array($data)) { + $oid = '.1.3.6.1.4.1.38446.1.3.4.1.3.' . $index; + $tmp_index = $state_name . '.' . $index; + $state_name = 'pduInputPhaseStatusCurrentState'; + $current = $data['pduInputPhaseStatusCurrentState']; + $descr = "Current state #$index"; + if (!is_numeric($current)) { + $state_index_id = create_state_index($state_name); + //Create State Translation + if ($state_index_id !== null) { + $states = array( + array($state_index_id, 'upperCritical', 1, 1, 2), + array($state_index_id, 'upperWarning', 1, 2, 1), + array($state_index_id, 'lowerWarning', 1, 3, 1), + array($state_index_id, 'lowerCritical', 1, 4, 2), + array($state_index_id, 'normal', 1, 5, 0), + ); + foreach ($states as $value) { + $insert = array( + 'state_index_id' => $value[0], + 'state_descr' => $value[1], + 'state_draw_graph' => $value[2], + 'state_value' => $value[3], + 'state_generic_value' => $value[4] + ); + dbInsert($insert, 'state_translations'); + } + } + //Discover Sensors + discover_sensor($valid['sensor'], 'state', $device, $oid, $tmp_index, $state_name, $descr, '1', '1', null, null, null, null, $current); + //Create Sensor To State Index + create_sensor_to_state_index($device, $state_name, $tmp_index); + } + + $oid = '.1.3.6.1.4.1.38446.1.3.4.1.4.' . $index; + $tmp_index = $state_name . '.' . $index; + $state_name = 'pduInputPhaseStatusVoltageState'; + $current = $data['pduInputPhaseStatusVoltageState']; + $descr = "Voltage state #$index"; + if (!is_numeric($current)) { + $state_index_id = create_state_index($state_name); + //Create State Translation + if ($state_index_id !== null) { + $states = array( + array($state_index_id, 'upperCritical', 1, 1, 2), + array($state_index_id, 'upperWarning', 1, 2, 1), + array($state_index_id, 'lowerWarning', 1, 3, 1), + array($state_index_id, 'lowerCritical', 1, 4, 2), + array($state_index_id, 'normal', 1, 5, 0), + ); + foreach ($states as $value) { + $insert = array( + 'state_index_id' => $value[0], + 'state_descr' => $value[1], + 'state_draw_graph' => $value[2], + 'state_value' => $value[3], + 'state_generic_value' => $value[4] + ); + dbInsert($insert, 'state_translations'); + } + } + //Discover Sensors + discover_sensor($valid['sensor'], 'state', $device, $oid, $tmp_index, $state_name, $descr, '1', '1', null, null, null, null, $current); + //Create Sensor To State Index + create_sensor_to_state_index($device, $state_name, $tmp_index); + } + } +} + +foreach ($pre_cache['enlogic_pdu_circuit'] as $index => $data) { + if (is_array($data)) { + $oid = '.1.3.6.1.4.1.38446.1.4.4.1.4.' . $index; + $state_name = 'pduCircuitBreakerStatusLoadState'; + $state_index_id = create_state_index($state_name); + $current = $data['pduCircuitBreakerStatusLoadState']; + + if (!is_numeric($current)) { + //Create State Translation + if ($state_index_id !== null) { + $states = array( + array($state_index_id, 'upperCritical', 1, 1, 2), + array($state_index_id, 'upperWarning', 1, 2, 1), + array($state_index_id, 'lowerWarning', 1, 3, 1), + array($state_index_id, 'lowerCritical', 1, 4, 2), + array($state_index_id, 'normal', 1, 5, 0), + ); + foreach ($states as $value) { + $insert = array( + 'state_index_id' => $value[0], + 'state_descr' => $value[1], + 'state_draw_graph' => $value[2], + 'state_value' => $value[3], + 'state_generic_value' => $value[4] + ); + dbInsert($insert, 'state_translations'); + } + } + + $descr = "Circuit breaker state {$data['pduCircuitBreakerLabel']}"; + //Discover Sensors + discover_sensor($valid['sensor'], 'state', $device, $oid, $index, $state_name, $descr, '1', '1', null, null, null, null, $current); + //Create Sensor To State Index + create_sensor_to_state_index($device, $state_name, $index); + } + } +} + +unset( + $index, + $data +); diff --git a/includes/discovery/sensors/voltage/enlogic-pdu.inc.php b/includes/discovery/sensors/voltage/enlogic-pdu.inc.php new file mode 100644 index 0000000000..8b06845766 --- /dev/null +++ b/includes/discovery/sensors/voltage/enlogic-pdu.inc.php @@ -0,0 +1,41 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +foreach ($pre_cache['enlogic_pdu_input'] as $index => $data) { + if (is_array($data)) { + $oid = '.1.3.6.1.4.1.38446.1.3.4.1.6.' . $index; + $descr = "Input Phase $index"; + $divisor = 1; + $type = "enlogic-pdu"; + $low_limit = $data['pduInputPhaseConfigVoltageLowerCriticalThreshold']; + $low_warn = $data['pduInputPhaseConfigVoltageLowerWarningThreshold']; + $high_limit = $data['pduInputPhaseConfigVoltageUpperCriticalThreshold']; + $high_warn = $data['pduInputPhaseConfigVoltageUpperWarningThreshold']; + $current = $data['pduInputPhaseStatusVoltage']; + if ($current > 0) { + discover_sensor($valid['sensor'], 'voltage', $device, $oid, $index, $type, $descr, $divisor, '1', $low_limit, $low_warn, $high_warn, $high_limit, $current); + } + } +} diff --git a/includes/polling/os/enlogic-pdu.inc.php b/includes/polling/os/enlogic-pdu.inc.php new file mode 100644 index 0000000000..3a0f6e037e --- /dev/null +++ b/includes/polling/os/enlogic-pdu.inc.php @@ -0,0 +1,32 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +$tmp_enlogic = snmp_get_multi_oid($device, 'pduNamePlateModelNumber pduNamePlateSerialNumber pduNamePlateFirmwareVersion', '-OUQn', 'ENLOGIC-PDU-MIB'); + +$hardware = $tmp_enlogic['.1.3.6.1.4.1.38446.1.1.2.1.10.1']; +$serial = $tmp_enlogic['.1.3.6.1.4.1.38446.1.1.2.1.11.1']; +$version = $tmp_enlogic['.1.3.6.1.4.1.38446.1.1.2.1.13.1']; + +unset($tmp_enlogic); diff --git a/mibs/enlogic/ENLOGIC-PDU-MIB b/mibs/enlogic/ENLOGIC-PDU-MIB new file mode 100644 index 0000000000..dfb3296bfb --- /dev/null +++ b/mibs/enlogic/ENLOGIC-PDU-MIB @@ -0,0 +1,5191 @@ +ENLOGIC-PDU-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE FROM SNMPv2-SMI + enterprises, Integer32, Unsigned32, IpAddress FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF + TEXTUAL-CONVENTION, DisplayString, MacAddress, TruthValue FROM SNMPv2-TC + InetAddressType, InetAddress FROM INET-ADDRESS-MIB + sysContact, sysName, sysLocation FROM RFC1213-MIB; + +enlogic MODULE-IDENTITY + + LAST-UPDATED "201506180000Z" -- June 18, 2015 + + ORGANIZATION "Enlogic" + + CONTACT-INFO "" + + DESCRIPTION "This MIB describes the SNMP functions of the Enlogic PDU." + + REVISION "201410280000Z" -- October 28, 2014 + + DESCRIPTION " + 1. Add Smart Cabinet related MIB nodes. + " + + REVISION "201406050000Z" -- June 5, 2014 + + DESCRIPTION " + 1. Add new trap named espNetworkUp for ES PDU. + " + + REVISION "201404300000Z" -- April 30, 2014 + + DESCRIPTION " + 1. Modify description of MIB node pduInputPhaseStatusCurrentState, pduInputPhaseStatusCurrent, pduInputPhaseStatusVoltage, pduInputPhaseStatusActivePower, + pduInputPhaseStatusApparentPower and pduInputPhaseStatusPowerFactor. + " + + REVISION "201306050000Z" -- June 5, 2013 + + DESCRIPTION " + 1. Change node pduExternalSensorStatusAisle to be writable. + " + + REVISION "201305310000Z" -- May 31, 2013 + + DESCRIPTION " + 1. Add MIB node for daisy chain state. + " + + REVISION "201303280000Z" -- March 28, 2013 + + DESCRIPTION " + 1. Add one more attribute for all trap oids indicating pdu idx in case of daisy chain. + 2. Add one more MIB node in order to reset network management card + " + + REVISION "201303210000Z" -- March 21, 2013 + + DESCRIPTION " + 1. Add MIB node for external sensor unique identifier. + 2. Add MIB node for external sensor readings with higher Pricision. + " + + REVISION "201301240000Z" -- January 24, 2013 + + DESCRIPTION " + 1. change external sensor name doorContact to doorSwitch + " + + REVISION "201301060000Z" -- January 6, 2013 + + DESCRIPTION " + 1. change the enum value definition of external sensor threshold setting + 2. Add a new node to enable/disable SSH connection + 3. Add one more external sensor unit + " + + REVISION "201212280000Z" -- December 28, 2012 + + DESCRIPTION " + 1. Add one more node to enable/disable sensor + " + + REVISION "201209280000Z" -- September 28, 2012 + + DESCRIPTION " + 1. Added additional indexes. + + " + REVISION "201209250000Z" -- September 25, 2012 + + DESCRIPTION " + 1. Changed descriptions for status readings. + + " + REVISION "201209180000Z" -- September 18, 2012 + + DESCRIPTION " + 1. Changed descriptions for alarm thresholds. + 2. Renamed pduOutletMeteredStatusEnergy to pduOutletMeteredStatusResettableEnergy. + 3. Added pduUnitConfigOutletPeakPowerReset + + " + REVISION "201209130000Z" -- September 13, 2012 + + DESCRIPTION " + 1. Changed SYNTAX of pduUnitConfigUpperWarningThreshold SEQUENCE to Unsigned32 + 2. Changed SYNTAX of pduOutletSwitchedStateOnStartup to Integer32 + 3. Changed SYNTAX of pduServerPingEnabled to TruthValue + 4. Added trapsInformationIndex to SEQUENCE of TrapsInformationEntry + + " + ::= { enterprises 38446 } + + +pdu OBJECT IDENTIFIER ::= { enlogic 1 } +pduNamePlate OBJECT IDENTIFIER ::= { pdu 1 } +pduUnit OBJECT IDENTIFIER ::= { pdu 2 } +pduInputPhase OBJECT IDENTIFIER ::= { pdu 3 } +pduCircuitBreaker OBJECT IDENTIFIER ::= { pdu 4 } +pduOutlet OBJECT IDENTIFIER ::= { pdu 5 } +pduExternalSensor OBJECT IDENTIFIER ::= { pdu 6 } +pduServerPing OBJECT IDENTIFIER ::= { pdu 7 } +pduSmartCabinet OBJECT IDENTIFIER ::= { pdu 8 } +pduTraps OBJECT IDENTIFIER ::= { pdu 9 } + +-- Start pduNamePlate + +pduNamePlateTableSize OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of PDUs" + ::= { pduNamePlate 1 } + +-- pduNamePlateTable +pduNamePlateTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduNamePlateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU nameplate data" + ::= { pduNamePlate 2 } + +pduNamePlateEntry OBJECT-TYPE + SYNTAX PduNamePlateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Nameplate data from the PDU being queried. The numbers of entries equals the value of pduNamePlateTableSize." + INDEX { pduNamePlateIndex } + ::= { pduNamePlateTable 1 } + +PduNamePlateEntry ::= SEQUENCE { + pduNamePlateIndex + Integer32, + pduNamePlateName + DisplayString, + pduNamePlateLocation + DisplayString, + pduNamePlateInetAddressType + InetAddressType, + pduNamePlateIPAddress + InetAddress, + pduNamePlateInetNetMask + InetAddress, + pduNamePlateInetGateway + InetAddress, + pduNamePlateMACAddress + MacAddress, + pduNamePlateUTCTimeOffset + DisplayString, + pduNamePlateModelNumber + DisplayString, + pduNamePlateSerialNumber + DisplayString, + pduNamePlateDateofManufacture + DisplayString, + pduNamePlateFirmwareVersion + DisplayString, + pduNamePlateFirmwareVersionTimeStamp + DisplayString, + pduNamePlateType + INTEGER + } + +pduNamePlateIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU nameplate table entry" + ::= { pduNamePlateEntry 1 } + +pduNamePlateName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the PDU" + ::= { pduNamePlateEntry 2 } + +pduNamePlateLocation OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the location of PDU" + ::= { pduNamePlateEntry 3 } + +pduNamePlateInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format" + ::= { pduNamePlateEntry 4 } + +pduNamePlateIPAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current IP address. A value of 0.0.0.0 indicates an error or an unset option" + ::= { pduNamePlateEntry 5 } + +pduNamePlateInetNetMask OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current netmask. A value of 0.0.0.0 indiates an error or an unset option" + ::= { pduNamePlateEntry 6 } + +pduNamePlateInetGateway OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current gateway. A value of 0.0.0.0 indicates an error or an unset option" + ::= { pduNamePlateEntry 7 } + +pduNamePlateMACAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The assigned MAC address for the PDU" + ::= { pduNamePlateEntry 8 } + +pduNamePlateUTCTimeOffset OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The difference in hours and minutes from Coordinated Universal + Time(UTC) for the time used in a particular time zone" + ::= { pduNamePlateEntry 9 } + +pduNamePlateModelNumber OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU model number" + ::= { pduNamePlateEntry 10 } + +pduNamePlateSerialNumber OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU serial number" + ::= { pduNamePlateEntry 11 } + +pduNamePlateDateofManufacture OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date the PDU was manufactured in mm/dd/yyyy format" + ::= { pduNamePlateEntry 12 } + +pduNamePlateFirmwareVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU firmware version" + ::= { pduNamePlateEntry 13 } + +pduNamePlateFirmwareVersionTimeStamp OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Timestamp of when the PDU firmware was last updated" + ::= { pduNamePlateEntry 14 } + +pduNamePlateType OBJECT-TYPE + SYNTAX INTEGER { + pdu (0), + inlineMeter (1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Unit, PDU or Inline Meter" + ::= { pduNamePlateEntry 15 } + + +-- Start pduUnit + +pduUnitTableSize OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of units." + ::= { pduUnit 1 } + +pduUnitConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduUnitConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU configuration data" + ::= { pduUnit 2 } + +pduUnitConfigEntry OBJECT-TYPE + SYNTAX PduUnitConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration data from the PDU being queried. The number of entries equals the value of pduUnitTableSize" + INDEX { pduUnitConfigIndex } + ::= { pduUnitConfigTable 1 } + +PduUnitConfigEntry ::= SEQUENCE { + pduUnitConfigIndex + Integer32, + pduUnitConfigName + DisplayString, + pduUnitConfigLocation + DisplayString, + pduUnitConfigDisplayOrientation + INTEGER, + pduUnitConfigColdstartDelay + Unsigned32, + pduUnitConfigGlobalOutletStateOnStartup + INTEGER, + pduUnitConfigLowerCriticalThreshold + Unsigned32, + pduUnitConfigLowerWarningThreshold + Unsigned32, + pduUnitConfigUpperCriticalThreshold + Unsigned32, + pduUnitConfigUpperWarningThreshold + Unsigned32, + pduUnitConfigAlarmResetThreshold + Unsigned32, + pduUnitConfigAlarmStateChangeDelay + Unsigned32, + pduUnitConfigEnabledThresholds + BITS, + pduUnitConfigPeakPowerReset + INTEGER, + pduUnitConfigEnergyReset + INTEGER, + pduUnitConfigOutletPeakPowerReset + INTEGER, + pduUnitConfigOutletEnergyReset + INTEGER, + pduUnitConfigUsb + INTEGER, + pduUnitConfigSsh + INTEGER, + pduUnitConfigResetNetworkManagementCard + INTEGER, + pduUnitConfigDaisyChainState + INTEGER + } + +pduUnitConfigIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Unit Config Entry" + ::= { pduUnitConfigEntry 1 } + +pduUnitConfigName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A user-defined string identifying the PDU" + ::= { pduUnitConfigEntry 2 } + +pduUnitConfigLocation OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A user-defined string identifying the location of the PDU" + ::= { pduUnitConfigEntry 3 } + +pduUnitConfigDisplayOrientation OBJECT-TYPE + SYNTAX INTEGER { + displayNormal (1), + displayReverse (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the intended physical orientation of the oLED display + displayNormal (1) indicates normal orientation. + displayReverse (2) indicates upside down orientation" + ::= { pduUnitConfigEntry 4 } + +pduUnitConfigColdstartDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..3600) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time, specified in seconds, between when power + is provided to the PDU and when the PDU start providing basic master + power to the outlets" + ::= { pduUnitConfigEntry 5 } + +pduUnitConfigGlobalOutletStateOnStartup OBJECT-TYPE + SYNTAX INTEGER { + off (0), + on (1), + lastKnownState (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The outlet state on device startup; applies to all outlets + unless overridden at the outlet level" + ::= { pduUnitConfigEntry 6 } + +pduUnitConfigLowerCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower critical unit active power alarm threshold measured in Watts" + ::= { pduUnitConfigEntry 7 } + +pduUnitConfigLowerWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower non-critical (warning) unit active power alarm threshold measured in Watts" + ::= { pduUnitConfigEntry 8 } + +pduUnitConfigUpperCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper critical unit active power alarm threshold measured in Watts" + ::= { pduUnitConfigEntry 9 } + +pduUnitConfigUpperWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper non-critical (warning) unit active power alarm threshold measured in Watts" + ::= { pduUnitConfigEntry 10 } + +pduUnitConfigAlarmResetThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The hysteresis used for deassertions in Watts" + ::= { pduUnitConfigEntry 11 } + +pduUnitConfigAlarmStateChangeDelay OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The delay measured in samples before a state is asserted. If the value is zero, then the state is asserted as soon as it is detected; if it is non-zero, say n, then the assertion condition must exist for n+1 consecutive samples before the corresponding assertion event is reported." + ::= { pduUnitConfigEntry 12 } + +pduUnitConfigEnabledThresholds OBJECT-TYPE + SYNTAX BITS { + lowerCritical (0), + lowerWarning (1), + upperWarning (2), + upperCritical (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A bit string indicating which alarm thresholds are enabled" + ::= { pduUnitConfigEntry 13 } + +pduUnitConfigPeakPowerReset OBJECT-TYPE + SYNTAX INTEGER { + noOperation (1), + reset (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this OID to reset (2) will cause the existing peak power value + to be replaced by the current load power value. Getting this OID will + do nothing and return the noOperation(1) value. " + ::= { pduUnitConfigEntry 14 } + +pduUnitConfigEnergyReset OBJECT-TYPE + SYNTAX INTEGER { + noOperation (1), + reset (2), + notSupported (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this OID to reset (2) will cause the device energy meter value + to be reset to zero. Getting this OID in models that support this + feature will do nothing and return the noOperation(1) value. Models + that do not support this feature will respond to this OID with a + value of notSupported (3). Attempts to set this OID in these models will fail. " + ::= { pduUnitConfigEntry 15 } + +pduUnitConfigOutletPeakPowerReset OBJECT-TYPE + SYNTAX INTEGER { + noOperation (1), + reset (2), + notSupported (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this OID to reset (2) will cause the outlet peak power meter value + to be reset to zero. Getting this OID in models that support this + feature will do nothing and return the noOperation(1) value. Models + that do not support this feature will respond to this OID with a + value of notSupported (3). Attempts to set this OID in these models will fail. " + ::= { pduUnitConfigEntry 16 } + +pduUnitConfigOutletEnergyReset OBJECT-TYPE + SYNTAX INTEGER { + noOperation (1), + reset (2), + notSupported (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this OID to reset (2) will cause the outlet energy meter value + to be reset to zero. Getting this OID in models that support this + feature will do nothing and return the noOperation(1) value. Models + that do not support this feature will respond to this OID with a + value of notSupported (3). Attempts to set this OID in these models will fail. " + ::= { pduUnitConfigEntry 17 } + +pduUnitConfigUsb OBJECT-TYPE + SYNTAX INTEGER { + off (0), + on (1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this OID to off(0) will disable the USB port. Setting this OID to on(1) will enable the USB port." + ::= { pduUnitConfigEntry 18 } + +pduUnitConfigSsh OBJECT-TYPE + SYNTAX INTEGER { + off (0), + on (1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this OID to off(0) will disable the SSH connection. Setting this OID to on(1) will enable the SSH connection." + ::= { pduUnitConfigEntry 19 } + +pduUnitConfigResetNetworkManagementCard OBJECT-TYPE + SYNTAX INTEGER { + noOperation (0), + reset (1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Getting this OID will return noOperation(0). Setting this OID to reset(1) will reset NMC." + ::= { pduUnitConfigEntry 20 } + +pduUnitConfigDaisyChainState OBJECT-TYPE + SYNTAX INTEGER { + daisychain (0) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this OID to daisychain(0) will enable daisychain mode." + ::= { pduUnitConfigEntry 21 } + +pduUnitPropertiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduUnitPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU properties" + ::= { pduUnit 3 } + +pduUnitPropertiesEntry OBJECT-TYPE + SYNTAX PduUnitPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unit properties entry containing objects for a particular unit." + INDEX { pduUnitPropertiesIndex } + ::= { pduUnitPropertiesTable 1 } + +PduUnitPropertiesEntry ::= SEQUENCE { + pduUnitPropertiesIndex + Integer32, + pduUnitPropertiesName + DisplayString, + pduUnitPropertiesOutletCount + Integer32, + pduUnitPropertiesSwitchedOutletCount + Integer32, + pduUnitPropertiesMeteredOutletCount + Integer32, + pduUnitPropertiesInputPhaseCount + Integer32, + pduUnitPropertiesCircuitBreakerCount + Integer32, + pduUnitPropertiesMaxExternalSensorCount + Integer32, + pduUnitPropertiesConnExternalSensorCount + Integer32, + pduUnitPropertiesRatedVoltage + DisplayString, + pduUnitPropertiesRatedMaxCurrent + DisplayString, + pduUnitPropertiesRatedFrequency + DisplayString, + pduUnitPropertiesRatedPower + DisplayString, + pduUnitPropertiesOrientation + INTEGER, + pduUnitPropertiesOutletLayout + INTEGER, + pduUnitPropertiesDaisyChainMemberType + INTEGER, + pduUnitPropertiesServerCount + Integer32 + } + +pduUnitPropertiesIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU properties table entry" + ::= { pduUnitPropertiesEntry 1 } + +pduUnitPropertiesName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the PDU" + ::= { pduUnitPropertiesEntry 2 } + +pduUnitPropertiesOutletCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of outlets on the PDU" + ::= { pduUnitPropertiesEntry 3 } + +pduUnitPropertiesSwitchedOutletCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of switched outlets on the PDU" + ::= { pduUnitPropertiesEntry 4 } + +pduUnitPropertiesMeteredOutletCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of metered outlets on the PDU" + ::= { pduUnitPropertiesEntry 5 } + +pduUnitPropertiesInputPhaseCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of phases on the PDU" + ::= { pduUnitPropertiesEntry 6 } + +pduUnitPropertiesCircuitBreakerCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of circuit breaker on the PDU" + ::= { pduUnitPropertiesEntry 7 } + +pduUnitPropertiesMaxExternalSensorCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of external sensors that can be connected to the PDU" + ::= { pduUnitPropertiesEntry 8 } + +pduUnitPropertiesConnExternalSensorCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of external sensors connected to the PDU" + ::= { pduUnitPropertiesEntry 9 } + +pduUnitPropertiesRatedVoltage OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU voltage rating in Volts" + ::= { pduUnitPropertiesEntry 10 } + +pduUnitPropertiesRatedMaxCurrent OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU current rating in Amps" + ::= { pduUnitPropertiesEntry 11 } + +pduUnitPropertiesRatedFrequency OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU frequency rating in Hz" + ::= { pduUnitPropertiesEntry 12 } + +pduUnitPropertiesRatedPower OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU VA (VoltAmps) rating." + ::= { pduUnitPropertiesEntry 13 } + +pduUnitPropertiesOrientation OBJECT-TYPE + SYNTAX INTEGER { + horizontal (1), + vertical (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU orientation " + ::= { pduUnitPropertiesEntry 14 } + +pduUnitPropertiesOutletLayout OBJECT-TYPE + SYNTAX INTEGER { + seqPhaseToNuetral (1), + seqPhaseToPhase (2), + seqPhToNeu21PhToPh (3), + seqPhToPhGrouped (4), + seqPhToNGrouped (5), + seqPToN1516PToPGrouped (6), + seqPhToPh2xGrouped (7), + seqPhToN2xGrouped (8), + seqNotApplicable (9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The outlet layout for the PDU. Getting this OID will return outlet layout for the device. + seqPhaseToNeutral(1) indicates outlet layout as follows: + 1:1-N,2:2-N,3:3-N,4:1-N,5:2-N,... + seqPhaseToPhase(2) indicates outlet layout as follows: + 1:1-2,2:2-3,3:3-1,4:1-2,5:2-3,... + seqPhToNeu21PhToPh(3) indicates outlet layout as follows: + 1:1-N,2:2-N...21:3-N,22:1-2,23:2-3,24:3-1,... + seqPhToPhGrouped(4) indicates outlet layout as follows: + This unit has 3 outlet groups. Group 1:1-2, Group 2:2-3, Group 3:3-1. + seqPhToNGrouped(5) indicates outlet layout as follows: + This unit has 3 outlet groups. Group 1:1-N, Group 2:2-N, Group 3:3-N. + seqPToN1516PToPGrouped(6) indicates outlet layout as follows: + This unit has 4 outlet groups. Group 1 (Outlets 1-14):1-2, + Group 2 (Outlets 15-16):1-N, Group 3:2-3, Group 4:3-1. + seqPhToPh2xGrouped(7) indicates outlet layout as follows: + This unit has 6 outlet groups. Group 1:1-2, Group 2:1-2, Group 3:2-3, + Group 4:2-3, Group 5:3-1, Group 6:3-1. + seqPhToN2xGrouped(8) indicates outlet layout as follows: + This unit has 6 outlet groups. Group 1:1-N, Group 2:1-N, Group 3:2-N, + Group 4:2-N, Group 5:3-N, Group 6:3-N. + seqNotApplicable(9):" + ::= { pduUnitPropertiesEntry 15 } + +pduUnitPropertiesDaisyChainMemberType OBJECT-TYPE + SYNTAX INTEGER { + standalone (1), + parent (2), + child (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The daisy-chain member type" + ::= { pduUnitPropertiesEntry 16 } + +pduUnitPropertiesServerCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of servers" + ::= { pduUnitPropertiesEntry 17 } + +pduUnitStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduUnitStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU status information" + ::= { pduUnit 4 } + +pduUnitStatusEntry OBJECT-TYPE + SYNTAX PduUnitStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status information from the PDU being queried" + INDEX { pduUnitStatusIndex } + ::= { pduUnitStatusTable 1 } + +PduUnitStatusEntry ::= SEQUENCE { + pduUnitStatusIndex + Integer32, + pduUnitStatusName + DisplayString, + pduUnitStatusLoadState + INTEGER, + pduUnitStatusActivePower + Integer32, + pduUnitStatusApparentPower + Integer32, + pduUnitStatusPeakPower + Integer32, + pduUnitStatusPeakPowerTimestamp + DisplayString, + pduUnitStatusPeakPowerStartTime + DisplayString, + pduUnitStatusEnergy + Integer32, + pduUnitStatusResettableEnergy + Integer32, + pduUnitStatusEnergyStartTime + DisplayString, + pduUnitStatusOutletsEnergyStartTime + DisplayString + } + +pduUnitStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU status table entry" + ::= { pduUnitStatusEntry 1 } + +pduUnitStatusName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the PDU" + ::= { pduUnitStatusEntry 2 } + +pduUnitStatusLoadState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the present load status of the PDU based on Active Power." + ::= { pduUnitStatusEntry 3 } + +pduUnitStatusActivePower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns power consumption, in Watts(W), + of the PDU being queried." + ::= { pduUnitStatusEntry 4 } + +pduUnitStatusApparentPower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns power consumption, in Volt-Amps(VA) + of the PDU load being queried." + ::= { pduUnitStatusEntry 5 } + +pduUnitStatusPeakPower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns peak power consumption, in Watts(W), + of the PDU being queried." + ::= { pduUnitStatusEntry 6 } + +pduUnitStatusPeakPowerTimestamp OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the date and time that peak power consumption occurred" + ::= { pduUnitStatusEntry 7 } + +pduUnitStatusPeakPowerStartTime OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the date and time of the last device peak power reset" + ::= { pduUnitStatusEntry 8 } + +pduUnitStatusEnergy OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns total energy consumed, in tenths of Kilowatt-Hours(kWh), of the PDU over its lifetime." + ::= { pduUnitStatusEntry 9 } + +pduUnitStatusResettableEnergy OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user resettable energy meter measuring PDU energy consumption + in tenths of kilowatt-hours(kWh)." + ::= { pduUnitStatusEntry 10 } + +pduUnitStatusEnergyStartTime OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the date and time of the last device energy meter reset" + ::= { pduUnitStatusEntry 11 } + +pduUnitStatusOutletsEnergyStartTime OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the date and time of the last outlets energy meter reset" + ::= { pduUnitStatusEntry 12 } + +-- Start pduInputPhase +pduInputPhaseTableSize OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PDU Input Phases " + ::= { pduInputPhase 1 } + +pduInputPhaseConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduInputPhaseConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Input Phase configuration data" + ::= { pduInputPhase 2 } + +pduInputPhaseConfigEntry OBJECT-TYPE + SYNTAX PduInputPhaseConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An input phase entry containing objects for a particular input phase." + INDEX { pduUnitConfigIndex, pduInputPhaseConfigIndex } + ::= { pduInputPhaseConfigTable 1 } + +PduInputPhaseConfigEntry ::= SEQUENCE { + pduInputPhaseConfigIndex + Integer32, + pduInputPhaseConfigCount + Integer32, + pduInputPhaseConfigOverloadRestriction + INTEGER, + pduInputPhaseConfigCurrentLowerCriticalThreshold + Unsigned32, + pduInputPhaseConfigCurrentLowerWarningThreshold + Unsigned32, + pduInputPhaseConfigCurrentUpperCriticalThreshold + Unsigned32, + pduInputPhaseConfigCurrentUpperWarningThreshold + Unsigned32, + pduInputPhaseConfigVoltageLowerCriticalThreshold + Unsigned32, + pduInputPhaseConfigVoltageLowerWarningThreshold + Unsigned32, + pduInputPhaseConfigVoltageUpperCriticalThreshold + Unsigned32, + pduInputPhaseConfigVoltageUpperWarningThreshold + Unsigned32, + pduInputPhaseConfigCurrentAlarmResetThreshold + Unsigned32, + pduInputPhaseConfigCurrentAlarmStateChangeDelay + Integer32, + pduInputPhaseConfigCurrentEnabledThresholds + BITS, + pduInputPhaseConfigVoltageAlarmResetThreshold + Unsigned32, + pduInputPhaseConfigVoltageAlarmStateChangeDelay + Integer32, + pduInputPhaseConfigVoltageEnabledThresholds + BITS + } + +pduInputPhaseConfigIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Input Phase configuration table entry" + ::= { pduInputPhaseConfigEntry 1 } + +pduInputPhaseConfigCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Input Phases" + ::= { pduInputPhaseConfigEntry 2 } + +pduInputPhaseConfigOverloadRestriction OBJECT-TYPE + SYNTAX INTEGER { + alwaysAllowTurnOn (1), + restrictOnUpperWarning (2), + restrictOnUpperCritical (3), + notSupported (4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This OID controls the behavior of a Switched PDU Input Phase when an + overload condition is possible and additional outlets are requested + to be turned on. Setting this OID to alwaysAllowTurnON (1) will always + allow the outlets on the corresponding Input Phase to turn on. Setting + this OID to restrictOnUpperWarning (2) will not allow outlets on the + corresponding Input Phase to turn on if the + pduInputPhaseConfigUpperWarningThreshold OID is exceeded. Setting + this OID to restrictOnUpperCritical (3) will not allow outlets on + the corresponding Input Phase to turn on if the + pduInputPhaseConfigUpperCriticalThreshold OID is exceeded. Models + that do not support this feature will respond to this OID with a + value of notSupported (4). Attempts to set this OID in these + models will fail. " + ::= { pduInputPhaseConfigEntry 3 } + +pduInputPhaseConfigCurrentLowerCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower critical input phase current alarm threshold in hundredths of Amps(A)." + ::= { pduInputPhaseConfigEntry 4 } + +pduInputPhaseConfigCurrentLowerWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower non-critical (warning) input phase current alarm threshold in hundredths of Amps(A)." + ::= { pduInputPhaseConfigEntry 5 } + +pduInputPhaseConfigCurrentUpperCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper critical input phase current alarm threshold in hundredths of Amps(A)." + ::= { pduInputPhaseConfigEntry 6 } + +pduInputPhaseConfigCurrentUpperWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper non-critical (warning) input phase current alarm threshold in hundredths of Amps(A)." + ::= { pduInputPhaseConfigEntry 7 } + +pduInputPhaseConfigVoltageLowerCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower critical input phase voltage alarm threshold in Volts(V)." + ::= { pduInputPhaseConfigEntry 8 } + +pduInputPhaseConfigVoltageLowerWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower non-critical (warning) input phase voltage alarm threshold in Volts(V)." + ::= { pduInputPhaseConfigEntry 9 } + +pduInputPhaseConfigVoltageUpperCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper critical input phase voltage alarm threshold in Volts(V)." + ::= { pduInputPhaseConfigEntry 10 } + +pduInputPhaseConfigVoltageUpperWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper non-critical (warning) input phase voltage alarm threshold in Volts(V)." + ::= { pduInputPhaseConfigEntry 11 } + +pduInputPhaseConfigCurrentAlarmResetThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The hysteresis used for current alarm deassertions in hundredths of Amps(A)." + ::= { pduInputPhaseConfigEntry 12 } + +pduInputPhaseConfigCurrentAlarmStateChangeDelay OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The delay measured in samples before a current state is asserted. If the + value is zero, then the state is asserted as soon as it is + detected; if it is non-zero, say n, then the assertion condition + must exist for n+1 consecutive samples before the corresponding + assertion event is reported. " + ::= { pduInputPhaseConfigEntry 13 } + +pduInputPhaseConfigCurrentEnabledThresholds OBJECT-TYPE + SYNTAX BITS { + lowerCritical (0), + lowerWarning (1), + upperWarning (2), + upperCritical (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A bit string indicating which current alarm thresholds are enabled." + ::= { pduInputPhaseConfigEntry 14 } + +pduInputPhaseConfigVoltageAlarmResetThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The hysteresis used for voltage alarm deassertions in Volts(V)." + ::= { pduInputPhaseConfigEntry 15 } + +pduInputPhaseConfigVoltageAlarmStateChangeDelay OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The delay measured in samples before a voltage state is asserted. If the + value is zero, then the state is asserted as soon as it is + detected; if it is non-zero, say n, then the assertion condition + must exist for n+1 consecutive samples before the corresponding + assertion event is reported. " + ::= { pduInputPhaseConfigEntry 16 } + +pduInputPhaseConfigVoltageEnabledThresholds OBJECT-TYPE + SYNTAX BITS { + lowerCritical (0), + lowerWarning (1), + upperWarning (2), + upperCritical (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A bit string indicating which voltage alarm thresholds are enabled." + ::= { pduInputPhaseConfigEntry 17 } + +pduInputPhasePropertiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduInputPhasePropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Input Phase properties" + ::= { pduInputPhase 3 } + +pduInputPhasePropertiesEntry OBJECT-TYPE + SYNTAX PduInputPhasePropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An input phase properties entry containing objects for a particular input phase." + INDEX { pduUnitPropertiesIndex, pduInputPhasePropertiesIndex } + ::= { pduInputPhasePropertiesTable 1 } + +PduInputPhasePropertiesEntry ::= SEQUENCE { + pduInputPhasePropertiesIndex + Integer32, + pduInputPhasePropertiesCount + Integer32 + } + +pduInputPhasePropertiesIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Input Phase status entry" + ::= { pduInputPhasePropertiesEntry 1 } + +pduInputPhasePropertiesCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Input Phase ID" + ::= { pduInputPhasePropertiesEntry 2 } + +pduInputPhaseStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduInputPhaseStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Input Phase status data" + ::= { pduInputPhase 4 } + +pduInputPhaseStatusEntry OBJECT-TYPE + SYNTAX PduInputPhaseStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An input phase status entry containing objects for a particular input phase." + INDEX { pduUnitStatusIndex, pduInputPhaseStatusIndex } + ::= { pduInputPhaseStatusTable 1 } + +PduInputPhaseStatusEntry ::= SEQUENCE { + pduInputPhaseStatusIndex + Integer32, + pduInputPhaseStatusCount + Integer32, + pduInputPhaseStatusCurrentState + INTEGER, + pduInputPhaseStatusVoltageState + INTEGER, + pduInputPhaseStatusCurrent + Integer32, + pduInputPhaseStatusVoltage + Integer32, + pduInputPhaseStatusActivePower + Integer32, + pduInputPhaseStatusApparentPower + Integer32, + pduInputPhaseStatusPowerFactor + Integer32 + } + +pduInputPhaseStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Input Phase status entry" + ::= { pduInputPhaseStatusEntry 1 } + +pduInputPhaseStatusCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Input Phase ID" + ::= { pduInputPhaseStatusEntry 2 } + +pduInputPhaseStatusCurrentState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the present current status of the PDU Phase in case of Y connection or PDU Line in case of Delta conneciton." + ::= { pduInputPhaseStatusEntry 3 } + +pduInputPhaseStatusVoltageState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the present voltage status of the PDU Input Phase being queried" + ::= { pduInputPhaseStatusEntry 4 } + +pduInputPhaseStatusCurrent OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the current draw, in hundredths of Amps(A), of the load on the + PDU Phase/Line being queried. Nodes with + pduInputPhaseStatusIndex from 1 to 3 indicate Y connection Phase values or Delta connection Line values, + and nodes with pduInputPhaseStatusIndex from 4 to 6 indicate Delta connection Phase values. + " + ::= { pduInputPhaseStatusEntry 5 } + +pduInputPhaseStatusVoltage OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the voltage, in Volts(V), of the PDU Phase/Line being queried. + Nodes with pduInputPhaseStatusIndex from 1 to 3 indicate Y connection Phase values or Delta connection Line values, + and nodes with pduInputPhaseStatusIndex from 4 to 6 indicate Delta connection Phase values. + " + ::= { pduInputPhaseStatusEntry 6 } + +pduInputPhaseStatusActivePower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns power consumption, in Watts(W), consumed on the PDU Phase/Line + being queried. Nodes with pduInputPhaseStatusIndex from 1 to 3 indicate Y connection + Phase values or Delta connection Line values, and nodes with + pduInputPhaseStatusIndex from 4 to 6 indicate Delta connection Phase values. + " + ::= { pduInputPhaseStatusEntry 7 } + +pduInputPhaseStatusApparentPower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns power consumption, in Volt-Amps(VA), of the PDU Phase/Line being queried. + Nodes with pduInputPhaseStatusIndex from 1 to 3 indicate Y connection Phase values or Delta connection Line values, + and nodes with pduInputPhaseStatusIndex from 4 to 6 indicate Delta connection Phase values. + " + ::= { pduInputPhaseStatusEntry 8 } + +pduInputPhaseStatusPowerFactor OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the ratio of active to apparent power of the PDU Phase/Line being queried. + Nodes with pduInputPhaseStatusIndex from 1 to 3 indicate Y connection Phase values or Delta connection Line values, + and nodes with pduInputPhaseStatusIndex from 4 to 6 indicate Delta connection Phase values. + " + ::= { pduInputPhaseStatusEntry 9 } + +-- Start pduCircuitBreaker +pduCircuitBreakerTableSize OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PDU Circuit Breakers" + ::= { pduCircuitBreaker 1 } + +pduCircuitBreakerConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduCircuitBreakerConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Circuit Breaker configuration data" + ::= { pduCircuitBreaker 2 } + +pduCircuitBreakerConfigEntry OBJECT-TYPE + SYNTAX PduCircuitBreakerConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A circuit breaker configuration entry containing objects for a particular circuit breaker." + INDEX { pduUnitConfigIndex, pduCircuitBreakerConfigIndex } + ::= { pduCircuitBreakerConfigTable 1 } + +PduCircuitBreakerConfigEntry ::= SEQUENCE { + pduCircuitBreakerConfigIndex + Integer32, + pduCircuitBreakerConfigCount + Integer32, + pduCircuitBreakerName + DisplayString, + pduCircuitBreakerConfigOverloadRestriction + INTEGER, + pduCircuitBreakerConfigLowerCriticalThreshold + Unsigned32, + pduCircuitBreakerConfigLowerWarningThreshold + Unsigned32, + pduCircuitBreakerConfigUpperCriticalThreshold + Unsigned32, + pduCircuitBreakerConfigUpperWarningThreshold + Unsigned32, + pduCircuitBreakerConfigAlarmResetThreshold + Unsigned32, + pduCircuitBreakerConfigAlarmStateChangeDelay + Unsigned32, + pduCircuitBreakerConfigEnabledThresholds + BITS + } + +pduCircuitBreakerConfigIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Circuit Breaker configuration table entry" + ::= { pduCircuitBreakerConfigEntry 1 } + +pduCircuitBreakerConfigCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of circuit breakers on the PDU" + ::= { pduCircuitBreakerConfigEntry 2 } + +pduCircuitBreakerName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The label of the circuit breaker" + ::= { pduCircuitBreakerConfigEntry 3 } + +pduCircuitBreakerConfigOverloadRestriction OBJECT-TYPE + SYNTAX INTEGER { + alwaysAllowTurnOn (1), + restrictOnUpperWarning (2), + restrictOnUpperCritical (3), + notSupported (4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This OID controls the behavior of a Switched PDU Circuit + Breaker when an overload condition is possible and additional + outlets are requested to be turned on. Setting this OID to + alwaysAllowTurnON (1) will always allow the outlets on the + corresponding Circuit Breaker to turn on. Setting this OID + to restrictOnUpperWarning (2) will not allow outlets on the + corresponding Circuit Breaker to turn on if the + pduCircuitBreakerConfigUpperWarningThreshold OID is exceeded. + Setting this OID to restrictOnUpperCritical (3) will not + allow outlets on the corresponding Circuit Breaker to turn + on if the pduCircuitBreakerConfigUpperCriticalThreshold OID + is exceeded. Models that do not support this feature will + respond to this OID with a value of notSupported (4). + Attempts to set this OID in these models will fail. " + ::= { pduCircuitBreakerConfigEntry 4 } + +pduCircuitBreakerConfigLowerCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower critical circuit breaker current alarm threshold in hundredths of Amps(A)." + ::= { pduCircuitBreakerConfigEntry 5 } + +pduCircuitBreakerConfigLowerWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower non-critical (warning) circuit breaker current alarm threshold in hundredths of Amps(A)." + ::= { pduCircuitBreakerConfigEntry 6 } + +pduCircuitBreakerConfigUpperCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper critical circuit breaker current alarm threshold in hundredths of Amps(A)." + ::= { pduCircuitBreakerConfigEntry 7 } + +pduCircuitBreakerConfigUpperWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper non-critical (warning) circuit breaker current alarm threshold in hundredths of Amps(A)." + ::= { pduCircuitBreakerConfigEntry 8 } + +pduCircuitBreakerConfigAlarmResetThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The hysteresis used for deassertions in hundredths of Amps(A)." + ::= { pduCircuitBreakerConfigEntry 9 } + +pduCircuitBreakerConfigAlarmStateChangeDelay OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The delay measured in samples before a state is asserted. + If the value is zero, then the state is asserted as soon + as it is detected; if it is non-zero, say n, then the + assertion condition must exist for n+1 consecutive samples + before the corresponding assertion event is reported." + ::= { pduCircuitBreakerConfigEntry 10 } + +pduCircuitBreakerConfigEnabledThresholds OBJECT-TYPE + SYNTAX BITS { + lowerCritical (0), + lowerWarning (1), + upperWarning (2), + upperCritical (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A bit string indicating which alarm thresholds are enabled." + ::= { pduCircuitBreakerConfigEntry 11 } + +pduCircuitBreakerPropertiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduCircuitBreakerPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU circuit breaker properties" + ::= { pduCircuitBreaker 3 } + +pduCircuitBreakerPropertiesEntry OBJECT-TYPE + SYNTAX PduCircuitBreakerPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A circuit breaker properties entry containing objects for a particular circuit breaker." + INDEX { pduUnitPropertiesIndex, pduCircuitBreakerPropertiesIndex } + ::= { pduCircuitBreakerPropertiesTable 1 } + +PduCircuitBreakerPropertiesEntry ::= SEQUENCE { + pduCircuitBreakerPropertiesIndex + Integer32, + pduCircuitBreakerPropertiesCount + Integer32, + pduCircuitBreakerPropertiesInputLayout + INTEGER + } + +pduCircuitBreakerPropertiesIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Circuit Breaker properties table entry" + ::= { pduCircuitBreakerPropertiesEntry 1 } + +pduCircuitBreakerPropertiesCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Circuit Breakers" + ::= { pduCircuitBreakerPropertiesEntry 2 } + +pduCircuitBreakerPropertiesInputLayout OBJECT-TYPE + SYNTAX INTEGER { + seqPhase1ToNeutral (1), + seqPhase2ToNeutral (2), + seqPhase3ToNeutral (3), + seqPhase1ToPhase2 (4), + seqPhase2ToPhase3 (5), + seqPhase3ToPhase1 (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This OID describes the outlet phase connections on + the referenced bank as follows: + seqPhase1ToNeutral(1) indicates that outlets attached + to circuit breaker are connected from Phase 1 to Neutral. + seqPhase2ToNeutral(2) indicates that outlets attached + to circuit breaker are connected from Phase 2 to Neutral. + seqPhase3ToNeutral(3) indicates that outlets attached + to circuit breaker are connected from Phase 3 to Neutral. + seqPhase1ToPhase2(4) indicates that outlets attached + to circuit breaker are connected from Phase 1 to Phase2. + seqPhase2ToPhase3(5) indicates that outlets attached + to circuit breaker are connected from Phase 2 to Phase3. + seqPhase3ToPhase1(6) indicates that outlets attached + to circuit breaker are connected from Phase 3 to Phase1. " + ::= { pduCircuitBreakerPropertiesEntry 3 } + +pduCircuitBreakerStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduCircuitBreakerStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU circuit breaker status data" + ::= { pduCircuitBreaker 4 } + +pduCircuitBreakerStatusEntry OBJECT-TYPE + SYNTAX PduCircuitBreakerStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A circuit breaker status entry containing objects for a particular circuit breaker." + INDEX { pduUnitStatusIndex, pduCircuitBreakerStatusIndex } + ::= { pduCircuitBreakerStatusTable 1 } + +PduCircuitBreakerStatusEntry ::= SEQUENCE { + pduCircuitBreakerStatusIndex + Integer32, + pduCircuitBreakerStatusCount + Integer32, + pduCircuitBreakerLabel + DisplayString, + pduCircuitBreakerStatusLoadState + INTEGER, + pduCircuitBreakerStatusCurrent + Integer32 + } + +pduCircuitBreakerStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Circuit Breaker status table entry" + ::= { pduCircuitBreakerStatusEntry 1 } + +pduCircuitBreakerStatusCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Circuit Breakers" + ::= { pduCircuitBreakerStatusEntry 2 } + +pduCircuitBreakerLabel OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The label on the PDU identifying the circuit breaker" + ::= { pduCircuitBreakerStatusEntry 3 } + +pduCircuitBreakerStatusLoadState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5), + off (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the present load status of the PDU Circuit + Breaker being queried" + ::= { pduCircuitBreakerStatusEntry 4 } + +pduCircuitBreakerStatusCurrent OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the current draw, in hundredths of Amps(A), of the load on + the PDU Circuit Breaker being queried." + ::= { pduCircuitBreakerStatusEntry 5 } + +-- Start pduOutlet +pduOutletSwitchedTableSize OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PDU Outlets" + ::= { pduOutlet 1 } + +pduOutletSwitchedConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduOutletSwitchedConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Switched Outlet configuration data" + ::= { pduOutlet 2 } + +pduOutletSwitchedConfigEntry OBJECT-TYPE + SYNTAX PduOutletSwitchedConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An outlet configuration entry containing objects for a particular outlet." + INDEX { pduUnitConfigIndex, pduOutletSwitchedConfigIndex } + ::= { pduOutletSwitchedConfigTable 1 } + +PduOutletSwitchedConfigEntry ::= SEQUENCE { + pduOutletSwitchedConfigIndex + Integer32, + pduOutletSwitchedName + DisplayString, + pduOutletSwitchedStateOnStartup + INTEGER, + pduOutletSwitchedConfigPowerOnTime + Integer32, + pduOutletSwitchedConfigPowerOffTime + Integer32, + pduOutletSwitchedConfigRebootDuration + Integer32 + } + +pduOutletSwitchedConfigIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Switched Outlet configuration table entry" + ::= { pduOutletSwitchedConfigEntry 1 } + +pduOutletSwitchedName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The user-defined name for the Switched Outlet" + ::= { pduOutletSwitchedConfigEntry 2 } + +pduOutletSwitchedStateOnStartup OBJECT-TYPE + SYNTAX INTEGER { + off (0), + on (1), + lastKnownState (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The outlet state on device startup; overrides + the global value pduUnitConfigGlobalOutletStateOnStartup." + ::= { pduOutletSwitchedConfigEntry 3 } + +pduOutletSwitchedConfigPowerOnTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of delay, in seconds, between when power is + provided to outlets the outlet and when this outlet + starts providing power" + ::= { pduOutletSwitchedConfigEntry 4 } + +pduOutletSwitchedConfigPowerOffTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time, in seconds, this outlet will delay + powering off" + ::= { pduOutletSwitchedConfigEntry 5 } + +pduOutletSwitchedConfigRebootDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time, in seconds, this outlet will remain + in powered off state before returning to power on state + during a reboot action." + ::= { pduOutletSwitchedConfigEntry 6 } + +pduOutletSwitchedPropertiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduOutletSwitchedPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Switched Outlet properties" + ::= { pduOutlet 3 } + +pduOutletSwitchedPropertiesEntry OBJECT-TYPE + SYNTAX PduOutletSwitchedPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An outlet properties entry containing objects for a particular outlet." + INDEX { pduUnitPropertiesIndex, pduOutletSwitchedPropertiesIndex } + ::= { pduOutletSwitchedPropertiesTable 1 } + +PduOutletSwitchedPropertiesEntry ::= SEQUENCE { + pduOutletSwitchedPropertiesIndex + Integer32, + pduOutletSwitchedPropertiesNumber + Integer32, + pduOutletSwitchedPropertiesName + DisplayString, + pduOutletSwitchedPropertiesInputPhaseLayout + INTEGER, + pduOutletSwitchedPropertiesCircuitBreaker + Integer32 + } + +pduOutletSwitchedPropertiesIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Switched Outlet properties table entry" + ::= { pduOutletSwitchedPropertiesEntry 1 } + +pduOutletSwitchedPropertiesNumber OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Switched Outlet ID" + ::= { pduOutletSwitchedPropertiesEntry 2 } + +pduOutletSwitchedPropertiesName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined switched outlet ID string" + ::= { pduOutletSwitchedPropertiesEntry 3 } + +pduOutletSwitchedPropertiesInputPhaseLayout OBJECT-TYPE + SYNTAX INTEGER { + seqPhase1ToNeutral (1), + seqPhase2ToNeutral (2), + seqPhase3ToNeutral (3), + seqPhase1ToPhase2 (4), + seqPhase2ToPhase3 (5), + seqPhase3ToPhase1 (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This OID describes the outlet phase connections + on the referenced bank as follows: + seqPhase1ToNeutral(1) indicates that outlets + attached to Switched Outlet are connected from Phase 1 to Neutral. + seqPhase2ToNeutral(2) indicates that outlets + attached to Switched Outlet are connected from Phase 2 to Neutral. + seqPhase3ToNeutral(3) indicates that outlets + attached to Switched Outlet are connected from Phase 3 to Neutral. + seqPhase1ToPhase2(4) indicates that outlets + attached to Switched Outlet are connected from Phase 1 to Phase2. + seqPhase2ToPhase3(5) indicates that outlets + attached to Switched Outlet are connected from Phase 2 to Phase3. + seqPhase3ToPhase1(6) indicates that outlets + attached to Switched Outlet are connected from Phase 3 to Phase1. " + ::= { pduOutletSwitchedPropertiesEntry 4 } + +pduOutletSwitchedPropertiesCircuitBreaker OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Circuit Breaker ID" + ::= { pduOutletSwitchedPropertiesEntry 5 } + +pduOutletSwitchedStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduOutletSwitchedStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Switched Outlet status data" + ::= { pduOutlet 4 } + +pduOutletSwitchedStatusEntry OBJECT-TYPE + SYNTAX PduOutletSwitchedStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status data from the PDU Switched Outlet being queried" + INDEX { pduUnitStatusIndex, pduOutletSwitchedStatusIndex } + ::= { pduOutletSwitchedStatusTable 1 } + +PduOutletSwitchedStatusEntry ::= SEQUENCE { + pduOutletSwitchedStatusIndex + Integer32, + pduOutletSwitchedStatusNumber + Integer32, + pduOutletSwitchedStatusName + DisplayString, + pduOutletSwitchedStatusState + INTEGER + } + +pduOutletSwitchedStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Switched Outlet status table entry" + ::= { pduOutletSwitchedStatusEntry 1 } + +pduOutletSwitchedStatusNumber OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Switched Outlet ID" + ::= { pduOutletSwitchedStatusEntry 2 } + +pduOutletSwitchedStatusName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined switched outlet ID string" + ::= { pduOutletSwitchedStatusEntry 3 } + +pduOutletSwitchedStatusState OBJECT-TYPE + SYNTAX INTEGER { + off (0), + on (1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the present switch state of the + PDU switched outlet being queried" + ::= { pduOutletSwitchedStatusEntry 4 } + +pduOutletSwitchedControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduOutletSwitchedControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Switched Outlet status data" + ::= { pduOutlet 5 } + +pduOutletSwitchedControlEntry OBJECT-TYPE + SYNTAX PduOutletSwitchedControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status data from the PDU Switched Outlet + being queried" + INDEX { pduUnitConfigIndex, pduOutletSwitchedControlIndex } + ::= { pduOutletSwitchedControlTable 1 } + +PduOutletSwitchedControlEntry ::= SEQUENCE { + pduOutletSwitchedControlIndex + Integer32, + pduOutletSwitchedControlNumber + Integer32, + pduOutletSwitchedControlName + DisplayString, + pduOutletSwitchedControlCommand + INTEGER + } + +pduOutletSwitchedControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to the PDU switched outlet + control data table entry" + ::= { pduOutletSwitchedControlEntry 1 } + +pduOutletSwitchedControlNumber OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Switched Outlet ID" + ::= { pduOutletSwitchedControlEntry 2 } + +pduOutletSwitchedControlName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined switched outlet ID string" + ::= { pduOutletSwitchedControlEntry 3 } + +pduOutletSwitchedControlCommand OBJECT-TYPE + SYNTAX INTEGER { + immediateOff (1), + immediateOn (2), + delayedOff (3), + delayedOn (4), + immediateReboot (5), + delayedReboot (6), + outletUnknown (7) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Getting this variable will return the outlet state. + If the outlet is on, the immediateOn (2) + value will be returned. If the outlet is off, + the immediateOff (1) value will be returned. + If the state of the outlet cannot be determined, the + outletUnknown (7) value will be returned. If the + outletUnknown condition should occur, all devices + powered by the PDU should be shut down. The PDU's + power should then be cycled to clear this condition. + Setting this variable to immediateOn (2) will immediately + turn the outlet on. Setting this variable to + immediateOff (1) will immediately turn the outlet off. + Setting this variable to immediateReboot (5) + will cause the Switched PDU to perform an immediateOff + command, wait the pduOutletSwitchedConfigRebootDuration + OID time, and then perform an immediateOn command. + Setting this variable to delayedOn (4) will turn the + outlet on after the pduOutletSwitchedConfigPowerOnTime + OID time has elapsed. Setting this variable to + delayedOff (3) will turn the outlet off after the + pduOutletSwitchedConfigPowerOffTime OID time has elapsed. + Setting this variable to delayedReboot (6) will cause + the Switched PDU to perform a delayedOff command, wait + the pduOutletSwitchedConfigRebootDuration OID time, and + then perform a delayedOn command." + ::= { pduOutletSwitchedControlEntry 4 } + +pduOutletMeteredTableSize OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PDU Outlets" + ::= { pduOutlet 6 } + +pduOutletMeteredConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduOutletMeteredConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Metered Outlet configuration data" + ::= { pduOutlet 7 } + +pduOutletMeteredConfigEntry OBJECT-TYPE + SYNTAX PduOutletMeteredConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An outlet configuration entry containing objects for a particular outlet." + INDEX { pduUnitConfigIndex, pduOutletMeteredConfigIndex } + ::= { pduOutletMeteredConfigTable 1 } + +PduOutletMeteredConfigEntry ::= SEQUENCE { + pduOutletMeteredConfigIndex + Integer32, + pduOutletMeteredName + DisplayString, + pduOutletMeteredConfigLowerCriticalThreshold + Unsigned32, + pduOutletMeteredConfigLowerWarningThreshold + Unsigned32, + pduOutletMeteredConfigUpperCriticalThreshold + Unsigned32, + pduOutletMeteredConfigUpperWarningThreshold + Unsigned32, + pduOutletMeteredConfigAlarmResetThreshold + Unsigned32, + pduOutletMeteredConfigAlarmStateChangeDelay + Unsigned32, + pduOutletMeteredConfigEnabledThresholds + BITS + } + +pduOutletMeteredConfigIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Metered Outlet + configuration table entry" + ::= { pduOutletMeteredConfigEntry 1 } + +pduOutletMeteredName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The user-defined name for the Metered Outlet" + ::= { pduOutletMeteredConfigEntry 2 } + +pduOutletMeteredConfigLowerCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower critical outlet active power alarm threshold in Watts(W)." + ::= { pduOutletMeteredConfigEntry 3 } + +pduOutletMeteredConfigLowerWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower non-critical (warning) outlet active power alarm threshold in Watts(W)." + ::= { pduOutletMeteredConfigEntry 4 } + +pduOutletMeteredConfigUpperCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper critical outlet active power alarm threshold in Watts(W)." + ::= { pduOutletMeteredConfigEntry 5 } + +pduOutletMeteredConfigUpperWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper non-critical (warning) outlet active power alarm threshold in Watts(W)." + ::= { pduOutletMeteredConfigEntry 6 } + +pduOutletMeteredConfigAlarmResetThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The hysteresis used for deassertions in Watts(W)." + ::= { pduOutletMeteredConfigEntry 7 } + +pduOutletMeteredConfigAlarmStateChangeDelay OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The delay measured in samples before a state + is asserted. If the value is zero, then the state + is asserted as soon as it is detected; if it is + non-zero, say n, then the assertion condition must + exist for n+1 consecutive samples before the + corresponding assertion event is reported." + ::= { pduOutletMeteredConfigEntry 8 } + +pduOutletMeteredConfigEnabledThresholds OBJECT-TYPE + SYNTAX BITS { + lowerCritical (0), + lowerWarning (1), + upperWarning (2), + upperCritical (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A bit string indicating which alarm + thresholds are enabled." + ::= { pduOutletMeteredConfigEntry 9 } + +pduOutletMeteredPropertiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduOutletMeteredPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Metered Outlet properties" + ::= { pduOutlet 8 } + +pduOutletMeteredPropertiesEntry OBJECT-TYPE + SYNTAX PduOutletMeteredPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration data from the PDU Metered + Outlet being queried" + INDEX { pduUnitPropertiesIndex, pduOutletMeteredPropertiesIndex } + ::= { pduOutletMeteredPropertiesTable 1 } + +PduOutletMeteredPropertiesEntry ::= SEQUENCE { + pduOutletMeteredPropertiesIndex + Integer32, + pduOutletMeteredPropertiesNumber + Integer32, + pduOutletMeteredPropertiesName + DisplayString, + pduOutletMeteredPropertiesInputPhaseLayout + INTEGER, + pduOutletMeteredPropertiesCircuitBreaker + Integer32, + pduOutletMeteredPropertiesPowerRating + Integer32 + } + +pduOutletMeteredPropertiesIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Metered Outlet + properties table entry" + ::= { pduOutletMeteredPropertiesEntry 1 } + +pduOutletMeteredPropertiesNumber OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Metered Outlet ID" + ::= { pduOutletMeteredPropertiesEntry 2 } + +pduOutletMeteredPropertiesName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined Metered outlet ID string" + ::= { pduOutletMeteredPropertiesEntry 3 } + +pduOutletMeteredPropertiesInputPhaseLayout OBJECT-TYPE + SYNTAX INTEGER { + seqPhase1ToNeutral (1), + seqPhase2ToNeutral (2), + seqPhase3ToNeutral (3), + seqPhase1ToPhase2 (4), + seqPhase2ToPhase3 (5), + seqPhase3ToPhase1 (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This OID describes the outlet phase connections + on the referenced bank as follows: + seqPhase1ToNeutral(1) indicates that outlets attached + to Metered Outlet are connected from Phase 1 to Neutral. + seqPhase2ToNeutral(2) indicates that outlets attached + to Metered Outlet are connected from Phase 2 to Neutral. + seqPhase3ToNeutral(3) indicates that outlets attached + to Metered Outlet are connected from Phase 3 to Neutral. + seqPhase1ToPhase2(4) indicates that outlets attached + to Metered Outlet are connected from Phase 1 to Phase2. + seqPhase2ToPhase3(5) indicates that outlets attached + to Metered Outlet are connected from Phase 2 to Phase3. + seqPhase3ToPhase1(6) indicates that outlets attached + to Metered Outlet are connected from Phase 3 to Phase1. " + ::= { pduOutletMeteredPropertiesEntry 4 } + +pduOutletMeteredPropertiesCircuitBreaker OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Circuit Breaker ID" + ::= { pduOutletMeteredPropertiesEntry 5 } + +pduOutletMeteredPropertiesPowerRating OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum power rating of the PDU metered outlet" + ::= { pduOutletMeteredPropertiesEntry 6 } + +pduOutletMeteredStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduOutletMeteredStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Metered Outlet status data" + ::= { pduOutlet 9 } + +pduOutletMeteredStatusEntry OBJECT-TYPE + SYNTAX PduOutletMeteredStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status data from the PDU Metered Outlet being queried" + INDEX { pduUnitStatusIndex, pduOutletMeteredStatusIndex } + ::= { pduOutletMeteredStatusTable 1 } + +PduOutletMeteredStatusEntry ::= SEQUENCE { + pduOutletMeteredStatusIndex + Integer32, + pduOutletMeteredStatusNumber + Integer32, + pduOutletMeteredStatusName + DisplayString, + pduOutletMeteredStatusLoadState + INTEGER, + pduOutletMeteredStatusCurrent + Integer32, + pduOutletMeteredStatusActivePower + Integer32, + pduOutletMeteredStatusPowerFactor + Integer32, + pduOutletMeteredStatusPeakPower + Integer32, + pduOutletMeteredStatusPeakPowerTimeStamp + DisplayString, + pduOutletMeteredStatusPeakPowerStartTime + DisplayString, + pduOutletMeteredStatusResettableEnergy + Integer32 + } + +pduOutletMeteredStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Metered Outlet status table entry" + ::= { pduOutletMeteredStatusEntry 1 } + +pduOutletMeteredStatusNumber OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Metered Outlet ID" + ::= { pduOutletMeteredStatusEntry 2 } + +pduOutletMeteredStatusName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined Metered outlet ID string" + ::= { pduOutletMeteredStatusEntry 3 } + +pduOutletMeteredStatusLoadState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the present load status of the PDU metered outlet being queried." + ::= { pduOutletMeteredStatusEntry 4 } + +pduOutletMeteredStatusCurrent OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the current draw, in hundredths of Amps(A), of the load on the PDU + outlet being queried." + ::= { pduOutletMeteredStatusEntry 5 } + +pduOutletMeteredStatusActivePower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the power draw, in Watts(W), of the load + on the PDU outlet being queried." + ::= { pduOutletMeteredStatusEntry 6 } + +pduOutletMeteredStatusPowerFactor OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the ratio of active to apparent power + of the PDU Outlet being queried" + ::= { pduOutletMeteredStatusEntry 7 } + +pduOutletMeteredStatusPeakPower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns peak power consumption, in Watts(W), + of the Rack PDU outlet being queried." + ::= { pduOutletMeteredStatusEntry 8 } + +pduOutletMeteredStatusPeakPowerTimeStamp OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the date and time that this metered + outlet's peak power consumption occurred" + ::= { pduOutletMeteredStatusEntry 9 } + +pduOutletMeteredStatusPeakPowerStartTime OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the start date and time that this metered + outlet began recording peak power observations" + ::= { pduOutletMeteredStatusEntry 10 } + +pduOutletMeteredStatusResettableEnergy OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user resettable energy meter measuring outlet load energy + consumption in tenths of Kilowatt-Hours(kWh)." + ::= { pduOutletMeteredStatusEntry 11 } + +-- Start pduExternalSensor +pduExternalSensorTableSize OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of External Sensors" + ::= { pduExternalSensor 1 } + +pduExternalSensorNamePlateTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduExternalSensorNamePlateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU ExternalSensorNamePlate data" + ::= { pduExternalSensor 2 } + +pduExternalSensorNamePlateEntry OBJECT-TYPE + SYNTAX PduExternalSensorNamePlateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "External Sensor Name Plate data from the external + sensor being queried. The number of entries equals + the value of pduExternalSensorNamePlateTableSize." + INDEX { pduNamePlateIndex, pduExternalSensorNamePlateIndex } + ::= { pduExternalSensorNamePlateTable 1 } + +PduExternalSensorNamePlateEntry ::= SEQUENCE { + pduExternalSensorNamePlateIndex + Integer32, + pduExternalSensorNamePlateName + DisplayString, + pduExternalSensorNamePlateDescription + DisplayString, + pduExternalSensorNamePlateLocation + DisplayString, + pduExternalSensorNamePlateSerialNumber + DisplayString, + pduExternalSensorNamePlateType + INTEGER, + pduExternalSensorNamePlateUnits + INTEGER, + pduExternalSensorNamePlateIdentifier + Integer32 + } + +pduExternalSensorNamePlateIndex OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU External Sensor status table entry" + ::= { pduExternalSensorNamePlateEntry 1 } + +pduExternalSensorNamePlateName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A user-defined string identifying the external sensor" + ::= { pduExternalSensorNamePlateEntry 2 } + +pduExternalSensorNamePlateDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A user-defined description of the external sensor" + ::= { pduExternalSensorNamePlateEntry 3 } + +pduExternalSensorNamePlateLocation OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A user-defined string identifying the location of the PDU" + ::= { pduExternalSensorNamePlateEntry 4 } + +pduExternalSensorNamePlateSerialNumber OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number of the external sensor being queried" + ::= { pduExternalSensorNamePlateEntry 5 } + +pduExternalSensorNamePlateType OBJECT-TYPE + SYNTAX INTEGER { + temperature (1), + humidity (2), + doorSwitch (3), + dryContact (4), + spotFluid (5), + ropeFluid (6), + smoke (7), + beacon (8), + airVelocity (9), + modbusAdapter (17), + hidAdapter (18) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of external sensor." + ::= { pduExternalSensorNamePlateEntry 6 } + +pduExternalSensorNamePlateUnits OBJECT-TYPE + SYNTAX INTEGER { + logic (0), + degreeC (1), + degreeF (2), + percent (3), + mps (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The base units the external sensor is measured in. + This parameter does not apply to onOff, trip, vibration, + waterDetection, smokeDetection sensors. " + ::= { pduExternalSensorNamePlateEntry 7 } + +pduExternalSensorNamePlateIdentifier OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Unique identifier of the external sensor." + ::= { pduExternalSensorNamePlateEntry 8 } + +pduExternalSensorConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduExternalSensorConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU External Sensor configuration data" + ::= { pduExternalSensor 3 } + +pduExternalSensorConfigEntry OBJECT-TYPE + SYNTAX PduExternalSensorConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration data from the PDU External + Sensor being queried" + INDEX { pduUnitConfigIndex, pduExternalSensorConfigIndex } + ::= { pduExternalSensorConfigTable 1 } + +PduExternalSensorConfigEntry ::= SEQUENCE { + pduExternalSensorConfigIndex + Integer32, + pduExternalSensorConfigLowerCriticalThreshold + Unsigned32, + pduExternalSensorConfigLowerWarningThreshold + Unsigned32, + pduExternalSensorConfigUpperCriticalThreshold + Unsigned32, + pduExternalSensorConfigUpperWarningThreshold + Unsigned32, + pduExternalSensorConfigAlarmResetThreshold + Unsigned32, + pduExternalSensorConfigAlarmStateChangeDelay + Unsigned32, + pduExternalSensorConfigEnabledThresholds + BITS, + pduExternalSensorConfigAlarmState + INTEGER + } + +pduExternalSensorConfigIndex OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU External Sensor + configuration table entry" + ::= { pduExternalSensorConfigEntry 1 } + +pduExternalSensorConfigLowerCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower critical alarm threshold in pduExternalSensorNamePlateUnits." + ::= { pduExternalSensorConfigEntry 2 } + +pduExternalSensorConfigLowerWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined lower non-critical (warning) alarm threshold in pduExternalSensorNamePlateUnits." + ::= { pduExternalSensorConfigEntry 3 } + +pduExternalSensorConfigUpperCriticalThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper critical alarm threshold in pduExternalSensorNamePlateUnits." + ::= { pduExternalSensorConfigEntry 4 } + +pduExternalSensorConfigUpperWarningThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User-defined upper non-critical (warning) alarm threshold in pduExternalSensorNamePlateUnits." + ::= { pduExternalSensorConfigEntry 5 } + +pduExternalSensorConfigAlarmResetThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The hysteresis used for deassertions." + ::= { pduExternalSensorConfigEntry 6 } + +pduExternalSensorConfigAlarmStateChangeDelay OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The delay measured in samples before a state is + asserted. If the value is zero, then the state is + asserted as soon as it is detected; if it is non-zero, + say n, then the assertion condition must exist for n+1 + consecutive samples before the corresponding assertion + event is reported." + ::= { pduExternalSensorConfigEntry 7 } + +pduExternalSensorConfigEnabledThresholds OBJECT-TYPE + SYNTAX BITS { + lowerCritical (0), + lowerWarning (1), + upperWarning (2), + upperCritical (3), + binarySensorAlarm (4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A bit string indicating which alarm + thresholds are enabled." + ::= { pduExternalSensorConfigEntry 8 } + +pduExternalSensorConfigAlarmState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (0) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User defined alarm state of external sensor" + ::= { pduExternalSensorConfigEntry 9 } + +pduExternalSensorStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduExternalSensorStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU External Sensor status data" + ::= { pduExternalSensor 4 } + +pduExternalSensorStatusEntry OBJECT-TYPE + SYNTAX PduExternalSensorStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status data from the PDU External Sensor + being queried" + INDEX { pduUnitStatusIndex, pduExternalSensorStatusIndex } + ::= { pduExternalSensorStatusTable 1 } + +PduExternalSensorStatusEntry ::= SEQUENCE { + pduExternalSensorStatusIndex + Integer32, + pduExternalSensorStatusName + DisplayString, + pduExternalSensorStatusAisle + INTEGER, + pduExternalSensorStatusCommStatus + INTEGER, + pduExternalSensorStatusState + INTEGER, + pduExternalSensorStatusValue + Integer32, + pduExternalSensorStatusTimeStamp + DisplayString, + pduExternalSensorStatusHighPrecisionValue + Integer32 + } + +pduExternalSensorStatusIndex OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU External Sensor status table entry" + ::= { pduExternalSensorStatusEntry 1 } + +pduExternalSensorStatusName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined name for the External Sensor" + ::= { pduExternalSensorStatusEntry 2 } + +pduExternalSensorStatusAisle OBJECT-TYPE + SYNTAX INTEGER { + hotAisle (1), + coldAisle (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the external sensor is + in a hot or cold aisle" + ::= { pduExternalSensorStatusEntry 3 } + +pduExternalSensorStatusCommStatus OBJECT-TYPE + SYNTAX INTEGER { + notInstalled (1), + commsOk (2), + commsLost (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The communications status of the sensor" + ::= { pduExternalSensorStatusEntry 4 } + +pduExternalSensorStatusState OBJECT-TYPE + SYNTAX INTEGER { + notPresent (0), alarmed (1), normal (2), belowLowerCritical (3), belowLowerWarning (4), aboveUpperWarning (5), aboveUpperCritical (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This OID reports the current state of the sensor. + A notPresent (0) response indicates that no sensor is attached. + An alarmed (1) response indicates that the sensor is present + and its measured reading indicates alarmed. + A normal (2) response indicates that the sensor is present + and its measured reading lies within all thresholds. + A belowLowerCritical (3) response indicates that the sensor + is present and its measured reading lies below the lower critical threshold. + A belowLowerWarning (4) response indicates that the sensor + is present and its measured reading lies below the lower warning threshold. + An aboveUpperWarning (5) response indicates that the sensor + is present and its measured reading lies above the upper warning threshold. + An aboveUpperCritical (6) response indicates that the sensor + is present and its measured reading lies above the upper critical threshold." + ::= { pduExternalSensorStatusEntry 5 } + +pduExternalSensorStatusValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Sensor reading in pduExternalSensorConfigUnits value." + ::= { pduExternalSensorStatusEntry 6 } + +pduExternalSensorStatusTimeStamp OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sensor reading timestamp." + ::= { pduExternalSensorStatusEntry 7 } + +pduExternalSensorStatusHighPrecisionValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Temperature sensor reading in tenths of pduExternalSensorConfigUnits value. + This OID is applied to temperature sensor only" + ::= { pduExternalSensorStatusEntry 8 } + +-- Start pduServerPing +pduServerPingTableSize OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Servers" + ::= { pduServerPing 1 } + +pduServerPingTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduServerPingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Server Ping data" + ::= { pduServerPing 2 } + +pduServerPingEntry OBJECT-TYPE + SYNTAX PduServerPingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Server Ping data from the server being queried. + The number of entries equals the value of pduServerPingTableSize." + INDEX { pduUnitConfigIndex, pduServerPingIndex } + ::= { pduServerPingTable 1 } + +PduServerPingEntry ::= SEQUENCE { + pduServerPingIndex + Integer32, + pduServerPingServerIPAddress + DisplayString, + pduServerPingEnabled + INTEGER + } + +pduServerPingIndex OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU pduServerPing table entry" + ::= { pduServerPingEntry 1 } + +pduServerPingServerIPAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address/host name of the server " + ::= { pduServerPingEntry 2 } + +pduServerPingEnabled OBJECT-TYPE + SYNTAX INTEGER { + false (0), true (1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Is ping enabled for this server?" + ::= { pduServerPingEntry 3 } + +-- Smart Cabinet + +pduUnitSmartCabinetTableSize OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Smart Cabinet Configuration " + ::= { pduSmartCabinet 1 } + +pduUnitSmartCabinetTable OBJECT-TYPE + SYNTAX SEQUENCE OF PduUnitSmartCabinetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Smart Cabinet information" + ::= { pduSmartCabinet 2 } + + +pduUnitSmartCabinetEntry OBJECT-TYPE + SYNTAX PduUnitSmartCabinetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information of Smart Cabinet" + INDEX { pduUnitConfigIndex, pduUnitSmartCabinetIndex } + ::= { pduUnitSmartCabinetTable 1 } + +PduUnitSmartCabinetEntry ::= SEQUENCE { + pduUnitSmartCabinetIndex + Integer32, + pduUnitSmartCabinetCardUserName + DisplayString, + pduUnitSmartCabinetCardID + Integer32, + pduUnitSmartCabinetTimestamp + DisplayString, + pduUnitSmartCabinetDoor + Integer32 + } + +pduUnitSmartCabinetIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Smart Cabinet table entry" + ::= { pduUnitSmartCabinetEntry 1 } + +pduUnitSmartCabinetCardUserName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "User name of ID card" + ::= { pduUnitSmartCabinetEntry 2 } + +pduUnitSmartCabinetCardID OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Card ID." + ::= { pduUnitSmartCabinetEntry 3 } + +pduUnitSmartCabinetTimestamp OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the date and time of information update" + ::= { pduUnitSmartCabinetEntry 4 } + +pduUnitSmartCabinetDoor OBJECT-TYPE + SYNTAX INTEGER { + HotAisle (1), + ColdAisle (2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Aisle of Smart Cabinet. " + ::= { pduUnitSmartCabinetEntry 5 } + +pduUnitSmartCabinetControl OBJECT IDENTIFIER ::= { pduSmartCabinet 3 } + +pduUnitSmartCabinetControlUserName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User name of ID card" + ::= { pduUnitSmartCabinetControl 1 } + +pduUnitSmartCabinetControlCardID OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Card ID." + ::= { pduUnitSmartCabinetControl 2 } + +pduUnitSmartCabinetControlTimestamp OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the date and time of information update" + ::= { pduUnitSmartCabinetControl 3 } + +pduUnitSmartCabinetControlDoor OBJECT-TYPE + SYNTAX INTEGER { + HotAisle (1), + ColdAisle (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Aisle of Smart Cabinet. " + ::= { pduUnitSmartCabinetControl 4 } + +pduUnitSmartCabinetCardIDEdit OBJECT-TYPE + SYNTAX INTEGER { + grant (0), remove (1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Smart Cabinet edit CardID " + ::= { pduUnitSmartCabinetControl 5 } + +pduUnitSmartCabinetColdAisleLockState OBJECT-TYPE + SYNTAX INTEGER { + unlock (0), lock (1), notPresent (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Smart Cabinet ColdAisle lock state " + ::= { pduUnitSmartCabinetControl 6 } + +pduUnitSmartCabinetHotAisleLockState OBJECT-TYPE + SYNTAX INTEGER { + unlock (0), lock (1), notPresent (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Smart Cabinet HotAisle lock state " + ::= { pduUnitSmartCabinetControl 7 } + +-- Traps Information +trapsInfo OBJECT IDENTIFIER ::= { pduTraps 1 } + +trapsInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapsInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Trap Information entries. The number of + entries are given by the value of pduUnitTableSize." + ::= { trapsInfo 1 } + +trapsInfoEntry OBJECT-TYPE + SYNTAX TrapsInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing objects used in traps" + INDEX { trapsInfoIndex } + ::= { trapsInfoTable 1 } + +TrapsInfoEntry ::= SEQUENCE { + trapsInfoIndex + Integer32, + userName + DisplayString, + userUpdated + DisplayString, + firmwareVersion + DisplayString, + roleUpdated + DisplayString, + smtpRecipients + DisplayString, + smtpServer + DisplayString + } + +trapsInfoIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the traps table entry" + ::= { trapsInfoEntry 1 } + + +userName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user currently logged in." + ::= { trapsInfoEntry 2 } + +userUpdated OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user added, deleted, or modified." + ::= { trapsInfoEntry 3 } + +firmwareVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of Firmware." + ::= { trapsInfoEntry 4 } + +roleUpdated OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The role added, deleted, or modified." + ::= { trapsInfoEntry 5 } + +smtpRecipients OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Comma separated list of SMTP recipients" + ::= { trapsInfoEntry 6 } + +smtpServer OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address/host name of the SMTP server" + ::= { trapsInfoEntry 7 } + +pduIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "A unique value for PDU. Its value ranges between 1 + and the value of PDU count" + ::= { trapsInfo 2 } + +externalSensorIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "A unique value for each sensor. Its value ranges between 1 + and the value of external sensor count." + ::= { trapsInfo 3 } + +serverPing OBJECT-TYPE + SYNTAX INTEGER { + pingEnable (1), + pingDisable (2), + serverReachable (3), + serverNotReachable (4) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Whether server ping has been enabled or disabled and + whether the server is reachable or not reachable" + ::= { trapsInfo 4 } + +usbDevice OBJECT-TYPE + SYNTAX INTEGER { + connected (1), + disconnected (2) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Whether a USB device has been connected or disconnected" + ::= { trapsInfo 5 } + +errorDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Description of the Error" + ::= { trapsInfo 6 } + +daisyChain OBJECT-TYPE + SYNTAX INTEGER { + connected (1), + disconnected (2) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Whether a daisy chain member has been connected or disconnected" + ::= { trapsInfo 7 } + +systemCommunication OBJECT-TYPE + SYNTAX INTEGER { + ok (1), + lost (2) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Whether the Network management card has lost contact with daisy a chain member." + ::= { trapsInfo 8 } + +networkCardStart NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The network card has started" + ::= { pduTraps 2 } + +networkCardReset NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The network card was reset via the web or command line interface." + ::= { pduTraps 3 } + +userLogin NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user logged in" + ::= { pduTraps 4 } + +userLogoff NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + " A user logged off" + ::= { pduTraps 5 } + +userAuthenticationFailed NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user authentication attempt failed." + ::= { pduTraps 6 } + +userSessionTimeout NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user session timed out" + ::= { pduTraps 7 } + +userAdded NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + userUpdated, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user account was added to system." + ::= { pduTraps 8 } + +userModified NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + userUpdated, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user account was modified." + ::= { pduTraps 9 } + +userDeleted NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + userUpdated, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user account was deleted." + ::= { pduTraps 10 } + +roleAdded NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + roleUpdated, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user role was added." + ::= { pduTraps 11 } + +roleModified NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + roleUpdated, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user role was modified." + ::= { pduTraps 12 } + +roleDeleted NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + roleUpdated, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user role was deleted." + ::= { pduTraps 13 } + +firmwareUpdateStarted NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + firmwareVersion, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A firmware update has started." + ::= { pduTraps 14 } + +firmwareUpdateCompleted NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + firmwareVersion, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The firmware update has completed." + ::= { pduTraps 15 } + +userBlocked NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user is blocked." + ::= { pduTraps 16 } + +outletControl NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduOutletSwitchedControlNumber, + pduOutletSwitchedStatusState, + pduOutletSwitchedControlCommand, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "Outlet control operation applied." + ::= { pduTraps 17 } + +userPasswordChange NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + userUpdated, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user password was changed. " + ::= { pduTraps 18 } + +passwordSettingsChange NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "One or more password policy settings were changed." + ::= { pduTraps 19 } + +logFileCleared NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The log file has been cleared." + ::= { pduTraps 21 } + +pduConfigurationFileImported NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU configuration file was imported." + ::= { pduTraps 22 } + +pduConfigurationFileExported NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU configuration file was exported" + ::= { pduTraps 23 } + +pduUnitActivePowerStateChange NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduUnitStatusLoadState, + pduUnitStatusActivePower, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU unit active power state changes." + ::= { pduTraps 24 } + +pduInputphaseVoltageStateChange NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduInputPhaseStatusCount, + pduInputPhaseStatusVoltageState, + pduInputPhaseStatusVoltage, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU input phase voltage state changes." + ::= { pduTraps 25 } + +pduInputphaseCurrentStateChange NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduInputPhaseStatusCount, + pduInputPhaseStatusCurrentState, + pduInputPhaseStatusCurrent, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU input phase Current state changes." + ::= { pduTraps 26 } + +pduCircuitBreakerCurrentStateChange NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduCircuitBreakerStatusIndex, + pduCircuitBreakerStatusLoadState, + pduCircuitBreakerStatusCurrent, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU Circuit Breaker Current state changes." + ::= { pduTraps 27 } + +pduOutletActivePowerStateChange NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduOutletMeteredStatusIndex, + pduOutletMeteredStatusLoadState, + pduOutletMeteredStatusActivePower, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU Metered Outlet Active Power state changes." + ::= { pduTraps 28 } + +pduExternalSensorStateChange NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduExternalSensorStatusIndex, + pduExternalSensorStatusName, + pduExternalSensorNamePlateType, + pduExternalSensorStatusAisle, + pduExternalSensorNamePlateUnits, + pduExternalSensorStatusState, + pduExternalSensorStatusValue, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU External Sensor state changes." + ::= { pduTraps 29 } + +smtpTransmissionFailure NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + smtpRecipients, + smtpServer, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "SMTP message transmission failed." + ::= { pduTraps 30 } + +ldapError NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + errorDescription, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A LDAP error occurred" + ::= { pduTraps 31 } + +firmwareUpdateFailed NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + firmwareVersion, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A firmware update has failed." + ::= { pduTraps 32 } + +serverPingState NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + userName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduServerPingServerIPAddress, + serverPing, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The Ping feature has been enabled." + ::= { pduTraps 33 } + +bootloaderState NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "Enter into Bootloader mode" + ::= { pduTraps 34 } + +daisyChainState NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + daisyChain, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A daisy chain member has been connected or disconnected." + ::= { pduTraps 35 } + +systemInternalCommunicationLost NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + systemCommunication, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "Network management card has lost contaction with internal boards." + ::= { pduTraps 36 } + + +SmartCabinetLockUnlocked NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduUnitSmartCabinetDoor, + pduExternalSensorStatusValue, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The Cabinet lock is unlocked." + ::= { pduTraps 37 } + +SmartCabinetLockLocked NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduUnitSmartCabinetDoor, + pduExternalSensorStatusValue, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The Cabinet lock is locked" + ::= { pduTraps 38 } + +SmartCabinetSwapCard NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduUnitSmartCabinetDoor, + pduUnitSmartCabinetCardID, + pduExternalSensorStatusValue, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "Card is swapped" + ::= { pduTraps 39 } + +SmartCabinetLockerLockDoorOpen NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduUnitSmartCabinetDoor, + pduExternalSensorStatusValue, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "Locker locked but door open" + ::= { pduTraps 40 } + +SmartCabinetLockerUnlockDoorClose NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + pduUnitSmartCabinetDoor, + pduExternalSensorStatusValue, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "Locker unlocked but door close" + ::= { pduTraps 41 } + +systemReboot NOTIFICATION-TYPE + OBJECTS { pduIndex, + pduNamePlateName, + pduNamePlateInetAddressType, + pduNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "System has rebooted" + ::= { pduTraps 50 } + +esp OBJECT IDENTIFIER ::= { enlogic 2 } +espNamePlate OBJECT IDENTIFIER ::= { esp 1 } +espUnit OBJECT IDENTIFIER ::= { esp 2 } +espInputPhase OBJECT IDENTIFIER ::= { esp 3 } +espCircuitBreaker OBJECT IDENTIFIER ::= { esp 4 } +espExternalSensor OBJECT IDENTIFIER ::= { esp 6 } +espTraps OBJECT IDENTIFIER ::= { esp 9 } + +-- Start espNamePlate + +-- espNamePlateTable +espNamePlateTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspNamePlateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of es PDU nameplate data" + ::= { espNamePlate 2 } + +espNamePlateEntry OBJECT-TYPE + SYNTAX EspNamePlateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Nameplate data from the PDU being queried. The numbers of entries equals the value of espNamePlateTableSize." + INDEX { espNamePlateIndex } + ::= { espNamePlateTable 1 } + +EspNamePlateEntry ::= SEQUENCE { + espNamePlateIndex + Integer32, + espNamePlateName + DisplayString, + espNamePlateLocation + DisplayString, + espNamePlateInetAddressType + InetAddressType, + espNamePlateIPAddress + InetAddress, + espNamePlateInetNetMask + InetAddress, + espNamePlateInetGateway + InetAddress, + espNamePlateMACAddress + MacAddress, + espNamePlateUTCTimeOffset + DisplayString, + espNamePlateModelNumber + DisplayString, + espNamePlateSerialNumber + DisplayString, + espNamePlateDateofManufacture + DisplayString, + espNamePlateFirmwareVersion + DisplayString, + espNamePlateFirmwareVersionTimeStamp + DisplayString, + espNamePlateType + INTEGER + } + +espNamePlateIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the es PDU nameplate table entry" + ::= { espNamePlateEntry 1 } + +espNamePlateName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the es PDU" + ::= { espNamePlateEntry 2 } + +espNamePlateLocation OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the location of PDU" + ::= { espNamePlateEntry 3 } + +espNamePlateInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format" + ::= { espNamePlateEntry 4 } + +espNamePlateIPAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current IP address. A value of 0.0.0.0 indicates an error or an unset option" + ::= { espNamePlateEntry 5 } + +espNamePlateInetNetMask OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current netmask. A value of 0.0.0.0 indiates an error or an unset option" + ::= { espNamePlateEntry 6 } + +espNamePlateInetGateway OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current gateway. A value of 0.0.0.0 indicates an error or an unset option" + ::= { espNamePlateEntry 7 } + +espNamePlateMACAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The assigned MAC address for the PDU" + ::= { espNamePlateEntry 8 } + +espNamePlateUTCTimeOffset OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The difference in hours and minutes from Coordinated Universal + Time(UTC) for the time used in a particular time zone" + ::= { espNamePlateEntry 9 } + +espNamePlateModelNumber OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU model number" + ::= { espNamePlateEntry 10 } + +espNamePlateSerialNumber OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU serial number" + ::= { espNamePlateEntry 11 } + +espNamePlateDateofManufacture OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date the PDU was manufactured in mm/dd/yyyy format" + ::= { espNamePlateEntry 12 } + +espNamePlateFirmwareVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU firmware version" + ::= { espNamePlateEntry 13 } + +espNamePlateFirmwareVersionTimeStamp OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Timestamp of when the PDU firmware was last updated" + ::= { espNamePlateEntry 14 } + +espNamePlateType OBJECT-TYPE + SYNTAX INTEGER { + pdu (0), + inlineMeter (1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Unit, PDU or Inline Meter" + ::= { espNamePlateEntry 15 } + + +-- Start espUnit + +espUnitConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspUnitConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU configuration data" + ::= { espUnit 2 } + +espUnitConfigEntry OBJECT-TYPE + SYNTAX EspUnitConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration data from the PDU being queried. The number of entries equals the value of espUnitTableSize" + INDEX { espUnitConfigIndex } + ::= { espUnitConfigTable 1 } + +EspUnitConfigEntry ::= SEQUENCE { + espUnitConfigIndex + Integer32, + espUnitConfigName + DisplayString, + espUnitConfigLocation + DisplayString, + espUnitConfigEnergyReset + INTEGER, + espUnitConfigResetNetworkManagementCard + INTEGER + } + +espUnitConfigIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Unit Config Entry" + ::= { espUnitConfigEntry 1 } + +espUnitConfigName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A user-defined string identifying the PDU" + ::= { espUnitConfigEntry 2 } + +espUnitConfigLocation OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A user-defined string identifying the location of the PDU" + ::= { espUnitConfigEntry 3 } + +espUnitConfigEnergyReset OBJECT-TYPE + SYNTAX INTEGER { + noOperation (1), + reset (2), + notSupported (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this OID to reset (2) will cause the device energy meter value + to be reset to zero. Getting this OID in models that support this + feature will do nothing and return the noOperation(1) value. Models + that do not support this feature will respond to this OID with a + value of notSupported (3). Attempts to set this OID in these models will fail. " + ::= { espUnitConfigEntry 15 } + +espUnitConfigResetNetworkManagementCard OBJECT-TYPE + SYNTAX INTEGER { + noOperation (0), + reset (1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Getting this OID will return noOperation(0). Setting this OID to reset(1) will reset NMC." + ::= { espUnitConfigEntry 20 } + +espUnitPropertiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspUnitPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU properties" + ::= { espUnit 3 } + +espUnitPropertiesEntry OBJECT-TYPE + SYNTAX EspUnitPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unit properties entry containing objects for a particular unit." + INDEX { espUnitPropertiesIndex } + ::= { espUnitPropertiesTable 1 } + +EspUnitPropertiesEntry ::= SEQUENCE { + espUnitPropertiesIndex + Integer32, + espUnitPropertiesName + DisplayString, + espUnitPropertiesOutletCount + Integer32, + espUnitPropertiesSwitchedOutletCount + Integer32, + espUnitPropertiesMeteredOutletCount + Integer32, + espUnitPropertiesInputPhaseCount + Integer32, + espUnitPropertiesCircuitBreakerCount + Integer32, + espUnitPropertiesMaxExternalSensorCount + Integer32, + espUnitPropertiesConnExternalSensorCount + Integer32, + espUnitPropertiesRatedVoltage + DisplayString, + espUnitPropertiesRatedMaxCurrent + DisplayString, + espUnitPropertiesRatedFrequency + DisplayString, + espUnitPropertiesRatedPower + DisplayString + } + +espUnitPropertiesIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU properties table entry" + ::= { espUnitPropertiesEntry 1 } + +espUnitPropertiesName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the PDU" + ::= { espUnitPropertiesEntry 2 } + +espUnitPropertiesOutletCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of outlets on the PDU" + ::= { espUnitPropertiesEntry 3 } + +espUnitPropertiesSwitchedOutletCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of switched outlets on the PDU" + ::= { espUnitPropertiesEntry 4 } + +espUnitPropertiesMeteredOutletCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of metered outlets on the PDU" + ::= { espUnitPropertiesEntry 5 } + +espUnitPropertiesInputPhaseCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of phases on the PDU" + ::= { espUnitPropertiesEntry 6 } + +espUnitPropertiesCircuitBreakerCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of circuit breaker on the PDU" + ::= { espUnitPropertiesEntry 7 } + +espUnitPropertiesMaxExternalSensorCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of external sensors that can be connected to the PDU" + ::= { espUnitPropertiesEntry 8 } + +espUnitPropertiesConnExternalSensorCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of external sensors connected to the PDU" + ::= { espUnitPropertiesEntry 9 } + +espUnitPropertiesRatedVoltage OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU voltage rating in Volts" + ::= { espUnitPropertiesEntry 10 } + +espUnitPropertiesRatedMaxCurrent OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU current rating in Amps" + ::= { espUnitPropertiesEntry 11 } + +espUnitPropertiesRatedFrequency OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU frequency rating in Hz" + ::= { espUnitPropertiesEntry 12 } + +espUnitPropertiesRatedPower OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU VA (VoltAmps) rating." + ::= { espUnitPropertiesEntry 13 } + +espUnitStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspUnitStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU status information" + ::= { espUnit 4 } + +espUnitStatusEntry OBJECT-TYPE + SYNTAX EspUnitStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status information from the PDU being queried" + INDEX { espUnitStatusIndex } + ::= { espUnitStatusTable 1 } + +EspUnitStatusEntry ::= SEQUENCE { + espUnitStatusIndex + Integer32, + espUnitStatusName + DisplayString, + espUnitStatusLoadState + INTEGER, + espUnitStatusActivePower + Integer32, + espUnitStatusApparentPower + Integer32, + espUnitStatusEnergy + Integer32, + espUnitStatusResettableEnergy + Integer32, + espUnitStatusEnergyStartTime + DisplayString + } + +espUnitStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU status table entry" + ::= { espUnitStatusEntry 1 } + +espUnitStatusName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the PDU" + ::= { espUnitStatusEntry 2 } + +espUnitStatusLoadState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the present load status of the PDU based on Active Power." + ::= { espUnitStatusEntry 3 } + +espUnitStatusActivePower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns power consumption, in Watts(W), + of the PDU being queried." + ::= { espUnitStatusEntry 4 } + +espUnitStatusApparentPower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns power consumption, in Volt-Amps(VA) + of the PDU load being queried." + ::= { espUnitStatusEntry 5 } + +espUnitStatusEnergy OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns total energy consumed, in tenths of Kilowatt-Hours(kWh), of the PDU over its lifetime." + ::= { espUnitStatusEntry 9 } + +espUnitStatusResettableEnergy OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user resettable energy meter measuring PDU energy consumption + in tenths of kilowatt-hours(kWh)." + ::= { espUnitStatusEntry 10 } + +espUnitStatusEnergyStartTime OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the date and time of the last device energy meter reset" + ::= { espUnitStatusEntry 11 } + + +-- Start espInputPhase +espInputPhaseConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspInputPhaseConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Input Phase configuration data" + ::= { espInputPhase 2 } + +espInputPhaseConfigEntry OBJECT-TYPE + SYNTAX EspInputPhaseConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An input phase entry containing objects for a particular input phase." + INDEX { espUnitConfigIndex, espInputPhaseConfigIndex } + ::= { espInputPhaseConfigTable 1 } + +EspInputPhaseConfigEntry ::= SEQUENCE { + espInputPhaseConfigIndex + Integer32, + espInputPhaseConfigCount + Integer32 + } + +espInputPhaseConfigIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Input Phase configuration table entry" + ::= { espInputPhaseConfigEntry 1 } + +espInputPhaseConfigCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Input Phases" + ::= { espInputPhaseConfigEntry 2 } + +espInputPhaseStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspInputPhaseStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Input Phase status data" + ::= { espInputPhase 4 } + +espInputPhaseStatusEntry OBJECT-TYPE + SYNTAX EspInputPhaseStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An input phase status entry containing objects for a particular input phase." + INDEX { espUnitStatusIndex, espInputPhaseStatusIndex } + ::= { espInputPhaseStatusTable 1 } + +EspInputPhaseStatusEntry ::= SEQUENCE { + espInputPhaseStatusIndex + Integer32, + espInputPhaseStatusCount + Integer32, + espInputPhaseStatusCurrentState + INTEGER, + espInputPhaseStatusVoltageState + INTEGER, + espInputPhaseStatusCurrent + Integer32, + espInputPhaseStatusVoltage + Integer32, + espInputPhaseStatusActivePower + Integer32, + espInputPhaseStatusApparentPower + Integer32, + espInputPhaseStatusPowerFactor + Integer32 + } + +espInputPhaseStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Input Phase status entry" + ::= { espInputPhaseStatusEntry 1 } + +espInputPhaseStatusCount OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The numeric Input Phase ID" + ::= { espInputPhaseStatusEntry 2 } + +espInputPhaseStatusCurrentState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the present current status of the PDU Input Phase being queried" + ::= { espInputPhaseStatusEntry 3 } + +espInputPhaseStatusVoltageState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the present voltage status of the PDU Input Phase being queried" + ::= { espInputPhaseStatusEntry 4 } + +espInputPhaseStatusCurrent OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the current draw, in hundredths of Amps(A), of the load on the + PDU Input Phase being queried." + ::= { espInputPhaseStatusEntry 5 } + +espInputPhaseStatusVoltage OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the voltage, in Volts(V), of the PDU Input Phase being queried." + ::= { espInputPhaseStatusEntry 6 } + +espInputPhaseStatusActivePower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns power consumption, in Watts(W), + consumed on the PDU Input Phase being queried." + ::= { espInputPhaseStatusEntry 7 } + +espInputPhaseStatusApparentPower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns power consumption, in Volt-Amps(VA), + of the PDU Input Phase being queried." + ::= { espInputPhaseStatusEntry 8 } + +espInputPhaseStatusPowerFactor OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the ratio of active to apparent power of the PDU Input Phase being queried." + ::= { espInputPhaseStatusEntry 9 } + +-- Start espCircuitBreaker +espCircuitBreakerConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspCircuitBreakerConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU Circuit Breaker configuration data" + ::= { espCircuitBreaker 2 } + +espCircuitBreakerConfigEntry OBJECT-TYPE + SYNTAX EspCircuitBreakerConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A circuit breaker configuration entry containing objects for a particular circuit breaker." + INDEX { espUnitConfigIndex, espCircuitBreakerConfigIndex } + ::= { espCircuitBreakerConfigTable 1 } + +EspCircuitBreakerConfigEntry ::= SEQUENCE { + espCircuitBreakerConfigIndex + Integer32, + espCircuitBreakerConfigCount + Integer32, + espCircuitBreakerName + DisplayString + } + +espCircuitBreakerConfigIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Circuit Breaker configuration table entry" + ::= { espCircuitBreakerConfigEntry 1 } + +espCircuitBreakerConfigCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of circuit breakers on the PDU" + ::= { espCircuitBreakerConfigEntry 2 } + +espCircuitBreakerName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The label of the circuit breaker" + ::= { espCircuitBreakerConfigEntry 3 } + +espCircuitBreakerPropertiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspCircuitBreakerPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU circuit breaker properties" + ::= { espCircuitBreaker 3 } + +espCircuitBreakerPropertiesEntry OBJECT-TYPE + SYNTAX EspCircuitBreakerPropertiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A circuit breaker properties entry containing objects for a particular circuit breaker." + INDEX { espUnitPropertiesIndex, espCircuitBreakerPropertiesIndex } + ::= { espCircuitBreakerPropertiesTable 1 } + +EspCircuitBreakerPropertiesEntry ::= SEQUENCE { + espCircuitBreakerPropertiesIndex + Integer32, + espCircuitBreakerPropertiesCount + Integer32, + espCircuitBreakerPropertiesInputLayout + INTEGER + } + +espCircuitBreakerPropertiesIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Circuit Breaker properties table entry" + ::= { espCircuitBreakerPropertiesEntry 1 } + +espCircuitBreakerPropertiesCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Circuit Breakers" + ::= { espCircuitBreakerPropertiesEntry 2 } + +espCircuitBreakerPropertiesInputLayout OBJECT-TYPE + SYNTAX INTEGER { + seqPhase1ToNeutral (1), + seqPhase2ToNeutral (2), + seqPhase3ToNeutral (3), + seqPhase1ToPhase2 (4), + seqPhase2ToPhase3 (5), + seqPhase3ToPhase1 (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This OID describes the outlet phase connections on + the referenced bank as follows: + seqPhase1ToNeutral(1) indicates that outlets attached + to circuit breaker are connected from Phase 1 to Neutral. + seqPhase2ToNeutral(2) indicates that outlets attached + to circuit breaker are connected from Phase 2 to Neutral. + seqPhase3ToNeutral(3) indicates that outlets attached + to circuit breaker are connected from Phase 3 to Neutral. + seqPhase1ToPhase2(4) indicates that outlets attached + to circuit breaker are connected from Phase 1 to Phase2. + seqPhase2ToPhase3(5) indicates that outlets attached + to circuit breaker are connected from Phase 2 to Phase3. + seqPhase3ToPhase1(6) indicates that outlets attached + to circuit breaker are connected from Phase 3 to Phase1. " + ::= { espCircuitBreakerPropertiesEntry 3 } + +espCircuitBreakerStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspCircuitBreakerStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU circuit breaker status data" + ::= { espCircuitBreaker 4 } + +espCircuitBreakerStatusEntry OBJECT-TYPE + SYNTAX EspCircuitBreakerStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A circuit breaker status entry containing objects for a particular circuit breaker." + INDEX { espUnitStatusIndex, espCircuitBreakerStatusIndex } + ::= { espCircuitBreakerStatusTable 1 } + +EspCircuitBreakerStatusEntry ::= SEQUENCE { + espCircuitBreakerStatusIndex + Integer32, + espCircuitBreakerStatusCount + Integer32, + espCircuitBreakerLabel + DisplayString, + espCircuitBreakerStatusLoadState + INTEGER, + espCircuitBreakerStatusCurrent + Integer32 + } + +espCircuitBreakerStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU Circuit Breaker status table entry" + ::= { espCircuitBreakerStatusEntry 1 } + +espCircuitBreakerStatusCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Circuit Breakers" + ::= { espCircuitBreakerStatusEntry 2 } + +espCircuitBreakerLabel OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The label on the PDU identifying the circuit breaker" + ::= { espCircuitBreakerStatusEntry 3 } + +espCircuitBreakerStatusLoadState OBJECT-TYPE + SYNTAX INTEGER { + upperCritical (1), + upperWarning (2), + lowerWarning (3), + lowerCritical (4), + normal (5), + off (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the present load status of the PDU Circuit + Breaker being queried" + ::= { espCircuitBreakerStatusEntry 4 } + +espCircuitBreakerStatusCurrent OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Returns the current draw, in hundredths of Amps(A), of the load on + the PDU Circuit Breaker being queried." + ::= { espCircuitBreakerStatusEntry 5 } + +-- Start espExternalSensor +espExternalSensorNamePlateTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspExternalSensorNamePlateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU ExternalSensorNamePlate data" + ::= { espExternalSensor 2 } + +espExternalSensorNamePlateEntry OBJECT-TYPE + SYNTAX EspExternalSensorNamePlateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "External Sensor Name Plate data from the external + sensor being queried. The number of entries equals + the value of espExternalSensorNamePlateTableSize." + INDEX { espNamePlateIndex, espExternalSensorNamePlateIndex } + ::= { espExternalSensorNamePlateTable 1 } + +EspExternalSensorNamePlateEntry ::= SEQUENCE { + espExternalSensorNamePlateIndex + Integer32, + espExternalSensorNamePlateName + DisplayString, + espExternalSensorNamePlateSerialNumber + DisplayString, + espExternalSensorNamePlateType + INTEGER, + espExternalSensorNamePlateUnits + INTEGER + } + +espExternalSensorNamePlateIndex OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU External Sensor status table entry" + ::= { espExternalSensorNamePlateEntry 1 } + +espExternalSensorNamePlateName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A user-defined string identifying the external sensor" + ::= { espExternalSensorNamePlateEntry 2 } + +espExternalSensorNamePlateSerialNumber OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number of the external sensor being queried" + ::= { espExternalSensorNamePlateEntry 5 } + +espExternalSensorNamePlateType OBJECT-TYPE + SYNTAX INTEGER { + temperature (1), + humidity (2), + doorSwitch (3), + dryContact (4), + spotFluid (5), + ropeFluid (6), + smoke (7), + beacon (8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of external sensor." + ::= { espExternalSensorNamePlateEntry 6 } + +espExternalSensorNamePlateUnits OBJECT-TYPE + SYNTAX INTEGER { + logic (0), + degreeC (1), + degreeF (2), + percent (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The base units the external sensor is measured in. + This parameter does not apply to onOff, trip, vibration, + waterDetection, smokeDetection sensors. " + ::= { espExternalSensorNamePlateEntry 7 } + +espExternalSensorConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspExternalSensorConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU External Sensor configuration data" + ::= { espExternalSensor 3 } + +espExternalSensorConfigEntry OBJECT-TYPE + SYNTAX EspExternalSensorConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration data from the PDU External + Sensor being queried" + INDEX { espUnitConfigIndex, espExternalSensorConfigIndex } + ::= { espExternalSensorConfigTable 1 } + +EspExternalSensorConfigEntry ::= SEQUENCE { + espExternalSensorConfigIndex + Integer32, + espExternalSensorConfigAlarmState + INTEGER + } + +espExternalSensorConfigIndex OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU External Sensor + configuration table entry" + ::= { espExternalSensorConfigEntry 1 } + +espExternalSensorConfigAlarmState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (0) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "User defined alarm state of external sensor" + ::= { espExternalSensorConfigEntry 9 } + +espExternalSensorStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EspExternalSensorStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of PDU External Sensor status data" + ::= { espExternalSensor 4 } + +espExternalSensorStatusEntry OBJECT-TYPE + SYNTAX EspExternalSensorStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status data from the PDU External Sensor + being queried" + INDEX { espUnitStatusIndex, espExternalSensorStatusIndex } + ::= { espExternalSensorStatusTable 1 } + +EspExternalSensorStatusEntry ::= SEQUENCE { + espExternalSensorStatusIndex + Integer32, + espExternalSensorStatusName + DisplayString, + espExternalSensorStatusAisle + INTEGER, + espExternalSensorStatusCommStatus + INTEGER, + espExternalSensorStatusState + INTEGER, + espExternalSensorStatusValue + Integer32, + espExternalSensorStatusHighPrecisionValue + Integer32 + } + +espExternalSensorStatusIndex OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the PDU External Sensor status table entry" + ::= { espExternalSensorStatusEntry 1 } + +espExternalSensorStatusName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined name for the External Sensor" + ::= { espExternalSensorStatusEntry 2 } + +espExternalSensorStatusAisle OBJECT-TYPE + SYNTAX INTEGER { + hotAisle (1), + coldAisle (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the external sensor is + in a hot or cold aisle" + ::= { espExternalSensorStatusEntry 3 } + +espExternalSensorStatusCommStatus OBJECT-TYPE + SYNTAX INTEGER { + notInstalled (1), + commsOk (2), + commsLost (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The communications status of the sensor" + ::= { espExternalSensorStatusEntry 4 } + +espExternalSensorStatusState OBJECT-TYPE + SYNTAX INTEGER { + notPresent (0), alarmed (1), normal (2), belowLowerCritical (3), belowLowerWarning (4), aboveUpperWarning (5), aboveUpperCritical (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This OID reports the current state of the sensor. + A notPresent (0) response indicates that no sensor is attached. + An alarmed (1) response indicates that the sensor is present + and its measured reading indicates alarmed. + A normal (2) response indicates that the sensor is present + and its measured reading lies within all thresholds. + A belowLowerCritical (3) response indicates that the sensor + is present and its measured reading lies below the lower critical threshold. + A belowLowerWarning (4) response indicates that the sensor + is present and its measured reading lies below the lower warning threshold. + An aboveUpperWarning (5) response indicates that the sensor + is present and its measured reading lies above the upper warning threshold. + An aboveUpperCritical (6) response indicates that the sensor + is present and its measured reading lies above the upper critical threshold." + ::= { espExternalSensorStatusEntry 5 } + +espExternalSensorStatusValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Sensor reading in espExternalSensorConfigUnits value." + ::= { espExternalSensorStatusEntry 6 } + +espExternalSensorStatusHighPrecisionValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Temperature sensor reading in tenths of espExternalSensorConfigUnits value. + This OID is applied to temperature sensor only" + ::= { espExternalSensorStatusEntry 8 } + + +-- Traps Information + +espTrapsInfoIndex OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the traps table entry" + ::= { espTraps 1 } + + +espUserName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user currently logged in." + ::= { espTraps 2 } + +espFirmwareVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of Firmware." + ::= { espTraps 4 } + +espIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "A unique value for PDU. Its value ranges between 1 + and the value of PDU count" + ::= { espTraps 5 } + +espExternalSensorIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "A unique value for each sensor. Its value ranges between 1 + and the value of external sensor count." + ::= { espTraps 6 } + +espErrorDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Description of the Error" + ::= { espTraps 7 } + +espNetworkCardStart NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The network card has started" + ::= { espTraps 8 } + +espNetworkCardReset NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + userName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The network card was reset via the web or command line interface." + ::= { espTraps 9} + + +espFirmwareUpdateCompleted NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + userName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + firmwareVersion, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The firmware update has completed." + ::= { espTraps 10 } + +espUserPasswordChange NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + userName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + userUpdated, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "A user password was changed. " + ::= { espTraps 11 } + + +espLogFileCleared NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + userName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "The log file has been cleared." + ::= { espTraps 12 } + +espConfigurationFileExported NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + userName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU configuration file was exported" + ::= { espTraps 13 } + +espUnitActivePowerStateChange NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + espUnitStatusLoadState, + espUnitStatusActivePower, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU unit active power state changes." + ::= { espTraps 14 } + +espInputphaseVoltageStateChange NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + espInputPhaseStatusCount, + espInputPhaseStatusVoltageState, + espInputPhaseStatusVoltage, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU input phase voltage state changes." + ::= { espTraps 15 } + +espInputphaseCurrentStateChange NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + espInputPhaseStatusCount, + espInputPhaseStatusCurrentState, + espInputPhaseStatusCurrent, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU input phase Current state changes." + ::= { espTraps 16 } + +espCircuitBreakerCurrentStateChange NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + espCircuitBreakerStatusIndex, + espCircuitBreakerStatusLoadState, + espCircuitBreakerStatusCurrent, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU Circuit Breaker Current state changes." + ::= { espTraps 17 } + +espExternalSensorStateChange NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + espExternalSensorStatusIndex, + espExternalSensorStatusName, + espExternalSensorNamePlateType, + espExternalSensorStatusAisle, + espExternalSensorNamePlateUnits, + espExternalSensorStatusState, + espExternalSensorStatusValue, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU External Sensor state changes." + ::= { espTraps 18 } + +espConfigurationFileImported NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + userName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU configuration file was imported" + ::= { espTraps 19 } +espNetworkUp NOTIFICATION-TYPE + OBJECTS { espIndex, + espNamePlateName, + userName, + espNamePlateInetAddressType, + espNamePlateIPAddress, + sysContact, + sysName, + sysLocation } + STATUS current + DESCRIPTION + "PDU Network is up " + ::= { espTraps 20 } +END diff --git a/tests/OSDiscoveryTest.php b/tests/OSDiscoveryTest.php index e38fd0f55d..682cd3f194 100644 --- a/tests/OSDiscoveryTest.php +++ b/tests/OSDiscoveryTest.php @@ -684,6 +684,11 @@ class DiscoveryTest extends \PHPUnit_Framework_TestCase $this->checkOS('engenius', 'engenius2'); } + public function testEnlogicPDU() + { + $this->checkOS('enlogic-pdu'); + } + public function testEnterasys() { $this->checkOS('enterasys'); diff --git a/tests/snmpsim/enlogic-pdu.snmprec b/tests/snmpsim/enlogic-pdu.snmprec new file mode 100644 index 0000000000..33e8fc7525 --- /dev/null +++ b/tests/snmpsim/enlogic-pdu.snmprec @@ -0,0 +1,2 @@ +1.3.6.1.2.1.1.1.0|4|Enlogic PDU +1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.38446.1 \ No newline at end of file