ENERGY-OBJECT-CONTEXT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    mib-2, Integer32
        FROM SNMPv2-SMI                           -- RFC 2578
    TEXTUAL-CONVENTION, MacAddress, TruthValue,
       RowStatus, StorageType
        FROM SNMPv2-TC                            -- RFC 2579
    MODULE-COMPLIANCE,  OBJECT-GROUP
        FROM SNMPv2-CONF                          -- RFC 2580
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB                   -- RFC 3411
    InetAddressType, InetAddress
       FROM INET-ADDRESS-MIB                      -- RFC 4001
    entPhysicalIndex
       FROM ENTITY-MIB                            -- RFC 6933
    UUIDorZero
       FROM UUID-TC-MIB                           -- RFC 6933
    IANAEnergyRelationship
       FROM IANA-ENERGY-RELATION-MIB;

energyObjectContextMIB MODULE-IDENTITY
    LAST-UPDATED    "201502090000Z"

    ORGANIZATION    "IETF EMAN Working Group"
    CONTACT-INFO
       "WG Charter:
        http://datatracker.ietf.org/wg/eman/charter/

       Mailing Lists:
        General Discussion: eman@ietf.org
        To Subscribe: https://www.ietf.org/mailman/listinfo/eman
        Archive: http://www.ietf.org/mail-archive/web/eman

       Editors:
          John Parello
          Cisco Systems, Inc.
          3550 Cisco Way
          San Jose, California 95134
          United States
          Phone: +1 408 525 2339
          Email: jparello@cisco.com

          Benoit Claise
          Cisco Systems, Inc.
          De Kleetlaan 6a b1
          Degem 1831
          Belgium
          Phone:  +32 2 704 5622
          Email: bclaise@cisco.com

          Mouli Chandramouli
          Cisco Systems, Inc.
          Sarjapur Outer Ring Road
          Bangalore 560103
          India
          Phone: +91 80 4429 2409
          Email: moulchan@cisco.com"
    DESCRIPTION
       "Copyright (c) 2015 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject
        to the license terms contained in, the Simplified BSD License
        set forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (http://trustee.ietf.org/license-info).

        This MIB is used for describing the identity and the
        context information of Energy Objects."
    REVISION
        "201502090000Z"
    DESCRIPTION
       "Initial version, published as RFC 7461."
   ::= { mib-2 231 }

energyObjectContextMIBNotifs OBJECT IDENTIFIER
    ::= { energyObjectContextMIB 0 }

energyObjectContextMIBObjects OBJECT IDENTIFIER
    ::= { energyObjectContextMIB 1 }

energyObjectContextMIBConform  OBJECT IDENTIFIER
    ::= { energyObjectContextMIB 2 }

-- Textual Conventions

PethPsePortIndexOrZero ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "d"
   STATUS            current
   DESCRIPTION
       "This textual convention is an extension of the
       pethPsePortIndex convention, which defines a greater-
       than-zero value used to identify a power Ethernet Power
       Sourcing Equipment (PSE) port.

       This extension permits the additional value of zero.  The
       semantics of the value zero are object-specific and must,
       therefore, be defined as part of the description of any
       object that uses this syntax.  Examples of the usage of
       this extension are situations where none or all physical
       entities need to be referenced."
   SYNTAX Integer32 (0..2147483647)

PethPsePortGroupIndexOrZero ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS            current
    DESCRIPTION
        "This textual convention is an extension of the
        pethPsePortGroupIndex convention from the Power Over
        Ethernet MIB in RFC 3621, which defines a greater-than-zero
        value used to identify the group containing the port to which
        a power Ethernet PSE is connected.  This extension
        permits the additional value of zero.  The semantics of
        the value zero are object-specific and must, therefore,
        be defined as part of the description of any object that
        uses this syntax.  Examples of the usage of this
        extension are situations where none or all physical
        entities need to be referenced."
    SYNTAX Integer32 (0..2147483647)

LldpPortNumberOrZero ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "d"
     STATUS     current
     DESCRIPTION
        "This textual convention is an extension of the
        LldpPortNumber convention specified in the LLDP MIB,
        which defines a greater than zero value used to uniquely
        identify each port contained in the chassis (that is
        known to the LLDP agent) by a port number.  This
        extension permits the additional value of zero.  The
        semantics of the value zero are object-specific and must,
        therefore, be defined as part of the description of any
        object that uses this syntax.  Examples of the usage of
        this extension are situations where none or all physical
        entities need to be referenced."
   SYNTAX Integer32(0..4096)

 EnergyObjectKeywordList ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "A list of keywords that can be used to group Energy
        Objects for reporting or searching.  If multiple keywords
        are present, then this string will contain all the
        keywords separated by the ',' character.  All alphanumeric
        characters and symbols (other than a comma), such as #,
        (, $, !, and &, are allowed.  White spaces before and
        after the commas are ignored, as well as within a keyword
        itself.

        For example, if an Energy Object were to be tagged with
        the keyword values 'hospitality' and 'guest', then the
        keyword list will be 'hospitality,guest'."
    SYNTAX OCTET STRING (SIZE (0..2048))

 -- Objects

 eoTable OBJECT-TYPE
     SYNTAX          SEQUENCE OF EoEntry
     MAX-ACCESS      not-accessible
     STATUS          current
     DESCRIPTION
        "This table lists Energy Objects."
     ::= { energyObjectContextMIBObjects 1 }

 eoEntry OBJECT-TYPE
     SYNTAX          EoEntry
     MAX-ACCESS      not-accessible
     STATUS          current
     DESCRIPTION
        "An entry describes the attributes of an Energy Object.
        Whenever a new Energy Object is added or an existing
        Energy Object is deleted, a row in the eoTable is added
        or deleted."
      INDEX      {entPhysicalIndex }
     ::= { eoTable 1 }

 EoEntry ::= SEQUENCE {
         eoEthPortIndex              PethPsePortIndexOrZero,
         eoEthPortGrpIndex           PethPsePortGroupIndexOrZero,
         eoLldpPortNumber            LldpPortNumberOrZero,
         eoMgmtMacAddress            MacAddress,
         eoMgmtAddressType           InetAddressType,
         eoMgmtAddress               InetAddress,
         eoMgmtDNSName               OCTET STRING,
         eoDomainName                SnmpAdminString,
         eoRoleDescription           SnmpAdminString,
         eoKeywords                  EnergyObjectKeywordList,
         eoImportance                Integer32,
         eoPowerCategory             INTEGER,
         eoAlternateKey              SnmpAdminString,
         eoPowerInterfaceType        INTEGER
        }

 eoEthPortIndex   OBJECT-TYPE
     SYNTAX      PethPsePortIndexOrZero
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
        "This variable uniquely identifies the power Ethernet
        port to which a Power over Ethernet device is connected.
        If the Power over Ethernet MIB in RFC 3621 is supported by
        the SNMP agent managing the Energy Object, then the
        Energy Object eoethPortIndex MUST contain the
        corresponding value of pethPsePortIndex.  If such a power
        Ethernet port cannot be specified or is not known, then
        the object is zero."
     REFERENCE
        "RFC 3621: Power Ethernet MIB"
     DEFVAL { 0 }
     ::= { eoEntry 1 }

 eoEthPortGrpIndex   OBJECT-TYPE
     SYNTAX      PethPsePortGroupIndexOrZero
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
        "This variable uniquely identifies the group containing
        the port to which a power over Ethernet device PSE is
        connected (RFC 3621).  If the Power over Ethernet MIB (RFC
        3621) is supported by the SNMP agent managing the Energy
        Object, then the Energy Object eoEthPortGrpIndex MUST
        contain the corresponding value of eoethPortGrpIndex.  If
        such a power Ethernet port cannot be specified or is not
        known, then the object is zero."
     REFERENCE
        "RFC 3621: Power Ethernet MIB"
     DEFVAL { 0 }
     ::= { eoEntry 2 }

 eoLldpPortNumber   OBJECT-TYPE
     SYNTAX      LldpPortNumberOrZero
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
        "This variable uniquely identifies the port component
        (contained in the local chassis with the LLDP agent) as
        defined by the lldpLocPortNum in the LLDP-MIB and
        LLDP-MED-MIB.  If the LLDP-MIB is supported by the
        SNMP agent managing the Energy Object, then the Energy
        Object eoLldpPortNumber MUST contain the corresponding
        value of lldpLocPortNum from the LLDP-MIB.  If such a
        port number cannot be specified or is not known, then the
        object is zero."
     REFERENCE
        "LLDP MIB, IEEE 802.1AB-2005; LLDP-MED-MIB, ANSI/TIA-1057"
     DEFVAL { 0 }
     ::= { eoEntry 3 }

 eoMgmtMacAddress OBJECT-TYPE
     SYNTAX          MacAddress
     MAX-ACCESS      read-only
     STATUS          current
     DESCRIPTION
        "This object specifies a Media Access Control (MAC) address
        of the Energy Object."
     ::= { eoEntry 4  }

 eoMgmtAddressType OBJECT-TYPE
     SYNTAX          InetAddressType
     MAX-ACCESS      read-only
     STATUS          current
     DESCRIPTION
        "This object specifies the eoMgmtAddress type, i.e., an
        IPv4 or IPv6 address.  This object MUST be
        populated when eoMgmtAddress is populated."
     ::= { eoEntry 5  }

 eoMgmtAddress OBJECT-TYPE
     SYNTAX          InetAddress
     MAX-ACCESS      read-only
     STATUS          current
     DESCRIPTION
        "This object specifies the management address as an IPv4
        address or IPv6 address of Energy Object.  The IP address
        type, i.e. IPv4 or IPv6, is determined by the
        eoMgmtAddressType value.  This object can be used as an
        alternate key to help link the Energy Object with other
        keyed information that may be stored within the EnMS(s)."
     ::= { eoEntry 6  }

 eoMgmtDNSName OBJECT-TYPE
     SYNTAX          OCTET STRING
     MAX-ACCESS      read-only
     STATUS          current
     DESCRIPTION
        "This object specifies a DNS name of the eoMgmtAddress.
        This object can be used as an alternate key to help link
        the Energy Object with other keyed information that may
        be stored within the EnMS(s).  A DNS Name must always be a
        fully qualified name.  This MIB uses the same encoding as
        the DNS protocol."
      REFERENCE
        "RFC 1034: Domain names - concepts and facilities,
         Section 3.1."
     ::= { eoEntry 7  }

 eoDomainName OBJECT-TYPE
     SYNTAX          SnmpAdminString
     MAX-ACCESS      read-write
     STATUS          current
     DESCRIPTION
        "This object specifies the name of an Energy Management
        Domain for the Energy Object.  By default, this object
        should be an empty string.  The value of eoDomainName must
        remain constant at least from one re-initialization of

        the entity local management system to the next re-
        initialization."
     ::= { eoEntry 8   }

 eoRoleDescription OBJECT-TYPE
     SYNTAX          SnmpAdminString
     MAX-ACCESS      read-write
     STATUS          current
     DESCRIPTION
        "This object specifies an administratively assigned name
        to indicate the purpose an Energy Object serves in the
        network.

        For example, we can have a phone deployed to a lobby with
        eoRoleDescription as 'Lobby phone'.

        This object specifies that the value is the zero-length
        string value if no role description is configured.
        The value of eoRoleDescription must remain constant at
        least from one re-initialization of the entity local
        management system to the next re-initialization."
     ::= { eoEntry 9   }

 eoKeywords OBJECT-TYPE
     SYNTAX          EnergyObjectKeywordList
     MAX-ACCESS      read-write
     STATUS          current
     DESCRIPTION
        "This object specifies a list of keywords that can be
        used to group Energy Objects for reporting or searching.
        The value is the zero-length string if no keywords have
        been configured.  If multiple keywords are present, then
        this string will contain all the keywords separated by
        the ',' character.  For example, if an Energy Object were
        to be tagged with the keyword values 'hospitality' and
        'guest', then the keyword list will be
        'hospitality,guest'.

        If write access is implemented and a value is written
        into the instance, the agent must retain the supplied
        value in the eoKeywords instance associated with
        the same physical entity for as long as that entity
        remains instantiated.  This includes instantiations
        across all re-initializations/reboots of the local
        management agent."
     ::= { eoEntry 10     }

 eoImportance OBJECT-TYPE
     SYNTAX          Integer32 (1..100)
     MAX-ACCESS      read-write
     STATUS          current
     DESCRIPTION
        "This object specifies a ranking of how important the
        Energy Object is (on a scale of 1 to 100) compared with
        other Energy Objects in the same Energy Management
        Domain.  The ranking should provide a business or
        operational context for the Energy Object as compared to
        other similar Energy Objects.  This ranking could be used
        as input for policy-based network management.

        Although network managers must establish their own
        ranking, the following is a broad recommendation:

        90 to 100 Emergency response
        80 to 89  Executive or business critical
        70 to 79  General or average
        60 to 69  Staff or support
        40 to 59  Public or guest
         1 to 39  Decorative or hospitality

        The value of eoImportance must remain constant at least
        from one re-initialization of the Energy Object local
        management system to the next re-initialization."
     DEFVAL          { 1 }
     ::= { eoEntry 11   }

 eoPowerCategory OBJECT-TYPE
     SYNTAX          INTEGER {
                         consumer(0),
                         producer(1),
                         meter(2),
                         distributor(3),
                         store(4)
                     }
     MAX-ACCESS      read-only
     STATUS          current
     DESCRIPTION
        "This object describes the Energy Object category, which
        indicates the expected behavior or physical property of
        the Energy Object, based on its design.  An Energy Object
        can be a consumer(0), producer(1), meter(2),
        distributor(3), or store(4).

        In some cases, a meter is required to measure the power
        consumption.  In such a case, this meter Energy Object
        category is meter(2).  If a device is distributing

        electric Energy, the category of the Energy Object is
        distributor (3).  If a device is storing electric Energy,
        the category of the device can be store (4)."
     ::= { eoEntry 12    }

 eoAlternateKey OBJECT-TYPE
     SYNTAX          SnmpAdminString
     MAX-ACCESS      read-write
     STATUS          current
     DESCRIPTION
        "The eoAlternateKey object specifies an alternate key
        string that can be used to identify the Energy Object.
        Since Energy Management Systems (EnMS) and Network
        Management Systems (NMSs) may need to correlate objects
        across management systems, this alternate key is provided
        to provide such a link.  This optional value is intended
        as a foreign key or alternate identifier for a
        manufacturer or EnMS/NMS to use to correlate the unique
        Energy Object Id in other systems or namespaces.  If an
        alternate key is not available or is not applicable, then
        the value is the zero-length string.
        The value of eoAlternateKey must remain constant at
        least from one re-initialization of the entity local
        management system to the next re-initialization."
     ::= { eoEntry 13 }

 eoPowerInterfaceType            OBJECT-TYPE
     SYNTAX          INTEGER {
                         inlet(0),
                         outlet(1),
                         both(2)
                     }
     MAX-ACCESS      read-only
     STATUS          current
     DESCRIPTION
        "This object describes the Power Interface for an Energy
        Object.  A Power Interface is an interface at which an
        Energy Object is connected to a power transmission
        medium, at which it can in turn receive power, provide
        power, or both.  A Power Interface type can be an inlet(0),
        an outlet(1), or both(2), respectively."
     ::= { eoEntry 14 }

 eoRelationTable OBJECT-TYPE
     SYNTAX          SEQUENCE OF EoRelationEntry
     MAX-ACCESS      not-accessible
     STATUS          current
     DESCRIPTION
        "This table describes the relationships between Energy
        Objects."
     ::= { energyObjectContextMIBObjects 2 }

 eoRelationEntry OBJECT-TYPE
     SYNTAX          EoRelationEntry
     MAX-ACCESS      not-accessible
     STATUS          current
     DESCRIPTION
        "An entry in this table specifies the Energy relationship
        between Energy objects.  Energy relations between two
        Energy objects are defined in RFC 7326."
     REFERENCE
        " RFC 7326: Energy Management Framework"
     INDEX        { entPhysicalIndex, eoRelationIndex }
     ::= { eoRelationTable 1 }

 EoRelationEntry ::= SEQUENCE {
                eoRelationIndex        Integer32,
                eoRelationID           UUIDorZero,
                eoRelationship         IANAEnergyRelationship,
                eoRelationStatus       RowStatus,
                eoRelationStorageType  StorageType
               }

 eoRelationIndex     OBJECT-TYPE
     SYNTAX          Integer32 (0..2147483647)
     MAX-ACCESS      not-accessible
     STATUS          current
     DESCRIPTION
        "This object is an arbitrary index to identify the Energy
        Object related to another Energy Object."
     ::= { eoRelationEntry 1 }

 eoRelationID        OBJECT-TYPE
     SYNTAX          UUIDorZero
     MAX-ACCESS      read-create
     STATUS          current
     DESCRIPTION
        "This object specifies the Universally Unique Identifier
        (UUID) of the peer (other) Energy Object.  The UUID must
        comply with the specifications of UUID in UUID-TC-MIB.

        If the UUID of the Energy Object is unknown or nonexistent,
        the eoRelationID will be set to a zero-length string
        instead.  It is preferable that the value of
        entPhysicalUUID from ENTITY-MIB is used for values for
        this object."
  REFERENCE
        "RFC 6933: Entity MIB (Version 4)"
     ::= { eoRelationEntry 2 }

 eoRelationship      OBJECT-TYPE
     SYNTAX          IANAEnergyRelationship
     MAX-ACCESS      read-create
     STATUS          current
     DESCRIPTION
        "This object describes the relations between Energy
        Objects.  For each Energy Object, the relations between
        the other Energy Objects are specified using the bitmap."
     ::= { eoRelationEntry 3 }

 eoRelationStatus OBJECT-TYPE
     SYNTAX          RowStatus
     MAX-ACCESS      read-create
     STATUS          current
     DESCRIPTION
      "The status controls and reflects the creation and
       activation status of a row in this table to specify energy
       relationship between Energy Objects.

      An entry status may not be active(1) unless all objects in
      the entry have the appropriate values.

      No attempt to modify a row columnar object instance value
      in the eoRelationTable should be issued while the value of
      eoRelationStatus is active(1).  The data can be destroyed by
      setting up the eoRelationStatus to destroy(2)."
 ::= { eoRelationEntry 4 }

  eoRelationStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
     "This variable indicates the storage type for this row."
        DEFVAL { nonVolatile }
  ::= {eoRelationEntry 5 }

 -- Conformance

 energyObjectContextMIBCompliances  OBJECT IDENTIFIER
     ::= { energyObjectContextMIBConform 1   }

 energyObjectContextMIBGroups  OBJECT IDENTIFIER
     ::= { energyObjectContextMIBConform 2   }

 energyObjectContextMIBFullCompliance MODULE-COMPLIANCE
     STATUS          current
     DESCRIPTION
         "When this MIB is implemented with support for
         read-write, then such an implementation can
         claim full compliance.  Such devices can then
         be both monitored and configured with this MIB.
         Module Compliance of ENTITY-MIB with respect to
         entity4CRCompliance MUST be supported."

     MODULE          -- this module
     MANDATORY-GROUPS {
                 energyObjectContextMIBTableGroup,
                 energyObjectRelationTableGroup
                      }

     GROUP     energyObjectOptionalMIBTableGroup
               DESCRIPTION
               "A compliant implementation does not have to
               implement."
     ::= { energyObjectContextMIBCompliances 1 }

 energyObjectContextMIBReadOnlyCompliance MODULE-COMPLIANCE
     STATUS          current
     DESCRIPTION
         "When this MIB is implemented without support for
         read-write (i.e., in read-only mode), then such an
         implementation can claim read-only compliance.
         Such a device can then be monitored but cannot be
         configured with this MIB.
         Module Compliance of ENTITY-MIB with respect to
         entity4CRCompliance MUST be supported."
     MODULE          -- this module

     MANDATORY-GROUPS {
                  energyObjectContextMIBTableGroup,
                  energyObjectRelationTableGroup
                      }

    GROUP energyObjectOptionalMIBTableGroup
       DESCRIPTION
       "A compliant implementation does not have to implement
        the managed objects in this GROUP."
    ::= { energyObjectContextMIBCompliances 2 }

 -- Units of Conformance
 energyObjectContextMIBTableGroup OBJECT-GROUP
     OBJECTS         {
                         eoDomainName,
                         eoRoleDescription,
                         eoAlternateKey,
                         eoKeywords,
                         eoImportance,
                         eoPowerCategory,
                         eoPowerInterfaceType
                     }
     STATUS          current
     DESCRIPTION
         "This group contains the collection of all the objects
         related to the EnergyObject."
     ::= { energyObjectContextMIBGroups 1 }

 energyObjectOptionalMIBTableGroup OBJECT-GROUP
        OBJECTS         {
                         eoEthPortIndex,
                         eoEthPortGrpIndex,
                         eoLldpPortNumber,
                         eoMgmtMacAddress,
                         eoMgmtAddressType,
                         eoMgmtAddress,
                         eoMgmtDNSName
                        }
     STATUS          current
     DESCRIPTION
         "This group contains the collection of all the objects
         related to the Energy Object."
     ::= { energyObjectContextMIBGroups 2 }

 energyObjectRelationTableGroup OBJECT-GROUP
      OBJECTS         {

                     eoRelationID,
                     eoRelationship,
                     eoRelationStatus,
                     eoRelationStorageType
                      }
      STATUS          current
      DESCRIPTION
         "This group contains the collection of all objects
         specifying the relationship between Energy Objects."
     ::= { energyObjectContextMIBGroups 3 }
 END
