--
-- CISCO-ERM-MIB.my : Cisco Embedded Resource Manager MIB file
--
-- February 2006, Ashok Kumar A
--
-- Copyright (c) 2006 by cisco Systems, Inc.
-- All rights reserved.
--

CISCO-ERM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    NOTIFICATION-TYPE,
    Integer32,
    Unsigned32
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION,
    RowStatus,
    StorageType,
    TruthValue
        FROM SNMPv2-TC
    OBJECT-GROUP,
    NOTIFICATION-GROUP,
    MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    PhysicalIndex,
    entPhysicalIndex
        FROM ENTITY-MIB
    ciscoMgmt
        FROM CISCO-SMI;

ciscoErmMIB MODULE-IDENTITY
    LAST-UPDATED    "200602110000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO    "Cisco Systems
                     Customer Service
            Postal:  170 West Tasman Drive
                     San Jose, California 95134-1706
            E-mail:  cs-erm@cisco.com"
    DESCRIPTION
        "Cisco Embedded Resource Manager (ERM) MIB.

         The Embedded Resource Manager (ERM) is a framework which
         helps in effectively managing resources such as cpu, memory,
         buffers, etc. There are two important scenarios where the ERM
         framework would be useful:

         1. Resource Depletion
            - how to gracefully handle a situation where the system
              runs out of a finite resource.

         2. Resource Separation
            - how to share resources fairly between different entities
              in the system such that activity of one entity does not
              adversely affect others.

         The ERM framework has the following entities:

         1. Resource Owner

            Resource Owner (RO) provides resources to one or more
            resource users. Example: cpu, memory and buffer.

            The resource owner doesn't mean the physical resource.
            For example, 'memory' resource owner would actually 
            mean the memory manager rather than the physical memory.

         2. Resource User Type

            Resource User Type (RUT) is a template which defines
            a set of resource owners from where resources can be
            obtained by any of the resource users instantiated from
            the resource user type. 

         3. Resource User

            Resource User (RU) is a logical entity or application
            that consumes one or more resources. Resource users are
            instantiated from the Resource User Type. Resource user
            can also be called as 'instance of a resource user type'.
            A resource user registers with a resource user type and 
            thus it is indirectly registered with all resource owners 
            defined by the resource user type. 

         4. Resource User Group

            Resource User Group (RG) is a logical entity which contains
            group of resource users. It would hence forth be referred
            as Resource Group. In some cases (for example, multiple
            users with same name), user may want to set threshold value
            for sum of resource utilized by a group of resource users.
            In such case, those resource users can be grouped/added
            under a resource group. Then, user can apply a resource
            policy to the resource group.

         5. Resource Usage Monitor

            This is also called as Resource Monitor (RM). The resource
            monitor is a logical entity or application that monitors
            resource owner, resource user, resource policy and resource
            owner <-> resource user relationship. When any applied
            resource policy is violated, all resource monitors
            monitoring the resource policy will be notified and the 
            resource monitor can take appropriate action based on the 
            resource owner and resource user attributes.

         The ERM framework allows three types of thresholding:

         1) System Global Thresholding

            When total utilization of a resource exceeds the applied
            global rising threshold value, all resource users which
            consume resources from the concerned resource owner are
            notified to take appropriate action. The notification
            order is determined by priority of the resource users.
            Resource users with a lower priority are notified first,
            so as to enable lower priority resource users to reduce its
            resource consumption prior to any higher priority resource
            users. This order prevents higher priority resource
            users to start freeing up their resource, thereby not
            affecting their performance.

         2) User Local Thresholding

            When utilization of a resource by a specific resource user
            exceeds the applied user local rising threshold value,
            a notification is sent *only* to the concerned resource
            user. The user local thresholding method can be used to
            prevent a resource user from monopolizing any available
            resources.

         3) Per User Global Thresholding

            When total utilization of a resource exceeds the applied
            per user global rising threshold value, a notification
            is sent *only* to the concerned resource user. Each
            resource user can have its own per user global threshold
            value (per resource owner). Per User Global Thresholding
            is similar to System Global Thresholding, except that
            notification for Per User Global Threshold violation is
            sent only to the corresponding resource user. The main
            purpose of the Per User Global Thresholding is that a
            resource user can take preventive actions based on the
            global resource utilization of a resource.

         The Embedded Resource Manager (ERM) framework allows applying
         and monitoring threshold limit for usage of resources such as
         cpu, memory, buffer, etc. Exceeding any applied rising
         threshold value will trigger an 'up' notification to relevant
         resource user(s) and resource monitor(s) based on the type 
         of violated resource policy.  After the 'up' notification,
         if the utilization goes below the falling threshold value,
         a 'down' notification will be sent to the resource user(s)
         and resource monitor(s). The 'up' and 'down' notifications
         do not mean the SNMP notifications/traps. Rising threshold
         value and falling threshold value should be different to
         avoid flapping.

         The ERM framework enables configuration of resource policy
         in which rising/falling threshold values for a set of
         resource owners can be specified. There are two types of
         resource policies which can be configured.

         1) Global Resource Policy
            There can be only one global resource policy applied
            in the system at any point of time, though multiple
            global resource policies can be configured. On violation 
            of a applied global resource policy, all resource users
            (which consume resources from the concerned resource owner)
            and resource monitors (which watch the concerned
            resource owner) will be notified to take appropriate
            action.

         2) Local Resource Policy
            The local resource policy is configured for a specific
            resource user type. This policy can be applied for a
            resource user (or group) of the same resource user type.
            A local resource policy can be applied for more than one
            resource users (or groups). Both user local thresholding
            and per user global thresholding can be configured under
            a local resource policy. On violation of any local resource
            policy, only those resource users on which the violated
            resource policy was applied, will be notified in order to
            take appropriate action.

         Whenever a resource is consumed, current utilization of the
         resource will be compared against the applied rising
         threshold value. The ERM framework provides a mechanism
         to send notifications to resource user(s) and resource
         monitor(s) whenever resource utilization exceeds any applied
         rising threshold value or falls below any applied falling
         threshold value. In such situations, the resource user(s)
         can take appropriate corrective action (for example, limiting
         or avoiding resource consumption). Thus, the ERM framework
         helps in preventing catastrophic system failures caused by
         high levels of resource depletion. The ERM framework can be
         extended to all kinds of resources (for example, incoming
         control plane packets) that need to be managed.

         The ERM MIB module facilitates the following operations:

         1. Getting information about all the above mentioned
            ERM entities available in a managed system.
         2. Creating/modifying/removing a resource policy.
         3. Creating/modifying/removing a threshold configuration
            for a particular resource policy.
         4. Creating/removing a resource group.
         5. Adding/removing a resource user to/from a particular
            resource group.
         6. Applying global resource policy.
         7. Applying local resource policy for a resource user or
            resource group."

    REVISION    "200602110000Z"
    DESCRIPTION
        "Initial version of Cisco ERM MIB module."
    ::= { ciscoMgmt 510 }


ciscoErmMIBNotifs       OBJECT IDENTIFIER ::= { ciscoErmMIB 0 }
ciscoErmMIBObjects      OBJECT IDENTIFIER ::= { ciscoErmMIB 1 }
ciscoErmMIBConform      OBJECT IDENTIFIER ::= { ciscoErmMIB 2 }

cermScalars             OBJECT IDENTIFIER ::=  { ciscoErmMIBObjects 1 }
cermStats               OBJECT IDENTIFIER ::=  { ciscoErmMIBObjects 2 }
cermConfig              OBJECT IDENTIFIER ::=  { ciscoErmMIBObjects 3 }
cermNotifObjects        OBJECT IDENTIFIER ::=  { ciscoErmMIBObjects 4 }
cermNotifControlObjects OBJECT IDENTIFIER ::=  { ciscoErmMIBObjects 5 }

--
-- Textual Conventions
--

CermSubEntityId ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the sub-entity identifier. If a physical entity
         has multiple logical processing entities and these entities
         have its own set of resources, we use sub-entities to uniquely
         identiy these logical processing entities.

         For example, if each process in the system has separate memory
         address space (i.e. memory address space is not shared between
         processes), then each process can be considered as a separate
         logical processing entity.

         In such cases, the sub-entity identifier can be used to
         distinguish an ERM entity in one logical processing entity
         from others. Each sub-entity (i.e. logical processing entity)
         might have its own set of resources owners, resource user
         types, resource users, resource groups and resource monitors.

         If the system doesn't have more than one logical processing
         entities, then sub-entity identifier may have zero value."
    SYNTAX  Unsigned32 (0..4294967295)

CermUserTypeId ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the resource user type identifier.
         The resource user type identifier is used to uniquely
         identify a resource user type in the system."
    SYNTAX  Unsigned32 (1..65535)

CermUserTypeIdOrZero ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This textual convention is an extension of the CermUserTypeId
         convention. The latter defines a greater than zero value used
         to identify a resource user type in the managed system. This
         extension permits the additional value of zero. The value zero
         is object specific and must therefore be defined as part of
         the description of any object which uses this syntax."
    SYNTAX  Unsigned32 (0..65535)

CermUserId ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the resource user identifier. The resource
         user identifier represents a resource user instantiated
         from a resource user type. This identifier is used to
         uniquely identify a resource user in a resource user type."
    SYNTAX  Unsigned32 (1..4294967295)

CermUserIdOrZero ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This textual convention is an extension of the CermUserId
         convention. The latter defines a greater than zero value used
         to identify a resource user in the managed system. This
         extension permits the additional value of zero. The value zero
         is object specific and must therefore be defined as part of
         the description of any object which uses this syntax."
    SYNTAX  Unsigned32 (0..4294967295)

CermGroupId ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the resource group identifier. This identifier
         is used to uniquely identify a resource group in a resource
         user type."
    SYNTAX  Unsigned32 (1..4294967295)

CermOwnerId ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the resource owner identifier. The resource
         owner identifier is used to uniquely identify a resource
         owner in the system."
    SYNTAX  Unsigned32 (1..4294967295)

CermOwnerIdOrZero ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This textual convention is an extension of the CermOwnerId
         convention. The latter defines a greater than zero value used
         to identify a resource owner in the managed system. This
         extension permits the additional value of zero. The value zero
         is object specific and must therefore be defined as part of
         the description of any object which uses this syntax."
    SYNTAX  Unsigned32 (0..4294967295)

CermMonitorId ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the resource monitor identifier. The resource
         monitor identifier is used to uniquely identify a resource
         monitor in the system."
    SYNTAX  Unsigned32 (1..4294967295)

CermUserOrGroup ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates one of the following:
         1. group - resource group.
         2. user  - resource user."
    SYNTAX  INTEGER {
                group(1),
                user(2)
            }

CermResUsagePct ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the resource utilization value, in percentage.
         That means the percentage of resources utilized from a
         resource owner."
    SYNTAX  Unsigned32

CermThreshold ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the threshold value for resource utilization,
         in percentage."
    SYNTAX  Unsigned32 (1..4294967295)

CermThresholdOrZero ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This textual convention is an extension of the CermThreshold
         convention. The latter defines a greater than zero value
         used to indicate a resource utilization threshold value
         in percentage. This extension permits the additional value
         of zero. The value zero is object specific and must therefore
         be defined as part of the description of any object which uses
         this syntax."
    SYNTAX  Unsigned32 (0..4294967295)

CermDampenInterval ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the dampening or observation interval time
         during which the variations in the resource utilization
         are not notified to any relevant resource user(s) or resource
         monitor(s). The interval is set to avoid unnecessary and
         unwanted notifications."
    SYNTAX  Integer32 (0..2592000)

CermThresholdSeverity ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the severity of thresholds. The threshold
         severity is used to reflect the severity of resource
         utilization related problem in the system. There are three
         thresholding severity levels defined in the ERM:

         1. Minor
            Violation of 'minor' thresholding indicates a minor
            problem (related to resource utilization) in the system.
         2. Major
            Violation of 'major' thresholding indicates a major
            problem (related to resource utilization) in the system.
         3. Critical
            Violation of 'critical' thresholding indicates a critical
            problem (related to resource utilization) in the system."

    SYNTAX  INTEGER {
                minor(1),
                major(2),
                critical(3)
            }

CermNotificationSeverity ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the severity of ERM notification that reflects
         the severity of resource utilization related problem.
         The following notification severites are defined in the ERM:
         1. None
            This indicates that the system is running without violating
            any applied resource utilization threshold values.
         2. Minor
            This indicates that a 'minor' severity level threshold has
            been violated in the system.
         3. Major
            This indicates that a 'major' severity level threshold has
            been violated in the system.
         4. Critical
            This indicates that a 'critical' severity level threshold
            has been violated in the system."

    SYNTAX  INTEGER {
                none(1),
                minor(2),
                major(3),
                critical(4)
            }

CermNotificationDirection ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This indicates the direction/cause of the ERM notifications.
         There are two ERM notification directions defined in the ERM:

         1. Up Notification
            The 'up' notification would be triggered by a resource
            owner when utilization of the corresponding resource exceeds
            an applied rising threshold value for the resource owner.
            The 'up' notification indicates that utilization for a
            resource owner has gone above an applied rising threshold.

         2. Down Notification
            The 'down' notification would be triggered by a resource
            owner when resource utilization of the resource owner falls
            below (after exceeding an applied rising threshold value)
            any applied falling threshold value for the resource owner.
            The 'down' notification indicates that utilization for
            a resource owner has come down to normal state after
            exceeding an applied rising threshold."

    SYNTAX  INTEGER {
                up(1),
                down(2)
            }

--
-- Global Resource Policy Name
--
cermScalarsGlobalPolicyName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..64))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This is a textual string containing name of the global resource
         policy applied in the system. If global resource policy is not
         applied in the system, then this scalar object will contain
         zero-length string. A global resource policy can be applied
         to the system by setting this scalar object to any global
         resource policy name (i.e. cermPolicyName) present in the
         cermConfigPolicyTable. Setting this object to zero-length
         string, will undo any applied global resource policy in
         the system."
    ::= { cermScalars 1 }

--
-- Resource Owner Table
--
cermResOwnerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResOwnerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each resource owner
         in the system. 

         Each resource owner maintains a list of resource users and
         performs the following:

         a) Accounting and Thresholding

            Accounting and thresholding involves accounting of
            resources allocated to each resource user and using
            threshold limits for notifying resource user(s) and
            resource usage monitor(s) about violations. Accounting
            is done by each resource owner.

            The ERM framework allows user to configure thresholding
            values for each resource owner. When resource utilization
            of a resource owner exceeds an applied threshold value,
            the resource owner will send notification to relevant
            resource user(s).

         b) Notifications Sent and Actions Taken

            In case of system global thresholding, whenever total
            resource utilization of a resource owner exceeds an applied
            rising threshold value, the resource owner will send an 'up'
            notification to the ERM framework. Whenever total resource
            utilization of the same resource owner falls below
            the corresponding falling threshold value (after crossing
            the rising threshold value), the resource owner will sent
            a 'down' notification to the ERM framework.

            On receiving the 'up' notification, resource user(s)
            is(are) expected to take appropriate action by freeing
            the resource or limiting the resource consumption.
            The resource owner may restrain from allocating
            resource to the resource user(s) in case of the
            resource user(s) not taking any action."
    ::= { cermStats 1 }

cermResOwnerEntry OBJECT-TYPE
    SYNTAX      CermResOwnerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a particular resource
         owner. This entry includes resource owner name, measurement
         units for the resource owner, flag indicating whether 
         thresholding for the resource owner is configurable by
         the user, number of resource users and number of resource
         groups for the resource owner.

         Whenever a resource owner registers with the ERM framework
         (normally this happens during system initialization), an
         entry for the resource owner will be included in this table.
         Likewise, whenever a resource owner is unregistered itself
         from the ERM framework, the corresponding entry in this table
         will be removed. Resource owners are created by the system;
         not by the user.

         The entPhysicalIndex represents the physical entity to which
         the resource owner belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX { entPhysicalIndex,
            cermResOwnerSubEntityId,
            cermResOwnerId }
    ::= { cermResOwnerTable 1 }

CermResOwnerEntry ::= SEQUENCE {
    cermResOwnerSubEntityId              CermSubEntityId,
    cermResOwnerId                       CermOwnerId,
    cermResOwnerName                     SnmpAdminString,
    cermResOwnerMeasurementUnit          SnmpAdminString,
    cermResOwnerThreshIsConfigurable     TruthValue,
    cermResOwnerResUserCount             Unsigned32,
    cermResOwnerResGroupCount            Unsigned32
}

cermResOwnerSubEntityId  OBJECT-TYPE
    SYNTAX      CermSubEntityId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the sub-entity (i.e. logical processing
         entity in a physical entity) in which the resource owner is
         present."
    ::= { cermResOwnerEntry 1 }

cermResOwnerId  OBJECT-TYPE
    SYNTAX      CermOwnerId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the resource owner identifier. This
         object value is unique in a sub-entity."
    ::= { cermResOwnerEntry 2 }

cermResOwnerName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a textual string containing name of the resource
         owner. For example: cpu, memory."
    ::= { cermResOwnerEntry 3 }

cermResOwnerMeasurementUnit  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a textual string containing unit of measurement for
         the resource owner.

         For example, utilization of 'memory' and 'cpu' resource
         owners can be specified in terms of 'bytes' and 'percentage'
         respectively. In that case, this object value would be
         'bytes' for the 'memory' resource owner and 'percentage'
         for the 'cpu' resource owner."
    ::= { cermResOwnerEntry 4 }

cermResOwnerThreshIsConfigurable  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a flag indicating whether thresholding is configurable
         for the resource owner by users or not. Some resource owners
         may not allow users to configure resource utilization
         threshold values. This object value will be 'false' for
         such resource owners."
    ::= { cermResOwnerEntry 5 }

cermResOwnerResUserCount  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the number of resource users which
         consume resources from the resource owner."
    ::= { cermResOwnerEntry 6 }

cermResOwnerResGroupCount  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the number of resource groups which
         consume resources from the resource owner."
    ::= { cermResOwnerEntry 7 }

--
-- Resource Owner Sub-Type Table
--
cermResOwnerSubTypeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResOwnerSubTypeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each sub-type for
         each resource owner in the cermResOwnerTable.

         For example, lets consider that the 'memory' resource owner
         has two sub-types called 'processor' and 'io' in the system.
         Then, two entries (one is for 'processor' memory and another
         one is for 'io' memory) will be present in this table for
         the 'memory' resource owner.

         If a resource owner does not have any sub-types, then
         this table will have an entry with the zero value for
         the cermResOwnerSubTypeId and zero-length string value
         for the cermResOwnerSubTypeName, for the corresponding
         resource owner."
    ::= { cermStats 2 }

cermResOwnerSubTypeEntry OBJECT-TYPE
    SYNTAX      CermResOwnerSubTypeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a resource owner
         sub-type. This entry includes resource owner sub-type name,
         utilization in percentage, utilization in its own measurement
         unit, maximum utilization in its own measurement unit and
         current global notification severity level for the resource
         owner sub-type.

         Whenever a resource owner is registered with the ERM framework
         (normally this happens during system initialization), a new
         entry will be included in the cermResOwnerTable for the
         resource owner. At the sametime, one new entry will be included
         in this table for each sub-type of the resource owner.
         Likewise, whenever a resource owner is unregistered from
         the ERM framework, the resource owner entry will be removed
         from the cermResOwnerTable and the corresponding resource owner
         sub-types entries will be removed from this table.

         The entPhysicalIndex represents the physical entity to which
         the resource owner belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX { entPhysicalIndex,
            cermResOwnerSubEntityId,
            cermResOwnerId,
            cermResOwnerSubTypeId }
    ::= { cermResOwnerSubTypeTable 1 }

CermResOwnerSubTypeEntry ::= SEQUENCE {
    cermResOwnerSubTypeId                 Unsigned32,
    cermResOwnerSubTypeName               SnmpAdminString,
    cermResOwnerSubTypeUsagePct           CermResUsagePct,
    cermResOwnerSubTypeUsage              Unsigned32,
    cermResOwnerSubTypeMaxUsage           Unsigned32,
    cermResOwnerSubTypeGlobNotifSeverity  CermNotificationSeverity
}

cermResOwnerSubTypeId  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the resource owner sub-type identifier.
         If the resource owner does not have any sub-types, this object
         value for the resource owner will be zero. Otherwise, it will
         have a non-zero value."
    ::= { cermResOwnerSubTypeEntry 1 }

cermResOwnerSubTypeName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a textual string indicating name of the resource
         owner sub-type.

         For example, 'processor' memory and 'io' memory are two
         sub-types in the 'memory' resource owner.

         If the resource owner does not have any sub-types, this
         object value for the resource owner will be a zero-length
         string."
    ::= { cermResOwnerSubTypeEntry 2 }

cermResOwnerSubTypeUsagePct  OBJECT-TYPE
    SYNTAX      CermResUsagePct
    UNITS       "percentage"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the percentage of resource utilized for
         the resource owner sub-type."
    ::= { cermResOwnerSubTypeEntry 3 }

cermResOwnerSubTypeUsage  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the resource utilization,
         in the unit of measurement specified by the object
         cermResOwnerMeasurementUnit, for the corresponding
         resource owner sub-type."
    ::= { cermResOwnerSubTypeEntry 4 }

cermResOwnerSubTypeMaxUsage  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the maximum resource utilization
         since the system has been up, in the measurement unit
         specified by the object cermResOwnerMeasurementUnit, for
         the corresponding resource owner sub-type.

         For example, if maximum utilization for the 'io' memory
         resource owner is 15000000 bytes since the system has been up,
         this object value for the 'io' memory resource owner would be
         15000000.

         If this object is not implemented for the resource owner
         sub-type, then value of this object would be zero."
    ::= { cermResOwnerSubTypeEntry 5 }

cermResOwnerSubTypeGlobNotifSeverity  OBJECT-TYPE
    SYNTAX      CermNotificationSeverity
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the current global notification severity
         level for the resource owner sub-type."
    ::= { cermResOwnerSubTypeEntry 6 }

--
-- System Global Thresholding Table
--
cermResOwnerSubTypeThresholdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResOwnerSubTypeThresholdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each applied global
         threshold configuration for each resource owner sub-type in
         the system."
    ::= { cermStats 3 }

cermResOwnerSubTypeThresholdEntry OBJECT-TYPE
    SYNTAX      CermResOwnerSubTypeThresholdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing an applied global threshold configuration
         details for a resource owner sub-type. This entry includes
         threshold severity level, rising threshold value, rising
         interval time, falling threshold value and falling interval
         time for the threshold configuration.

         One or more entries will be included in this table when
         a global resource policy is applied. If the system has
         internally applied any threshold values, those threshold
         configurations will also be present in this table.

         For example, if the applied global resource policy has 'major'
         and 'critical' severity threshold configurations for
         'processor' memory sub-type of the 'memory' resource owner,
         then two entries will be included in this table for the
         'processor' memory sub-type. All threshold configuration
         entries included via applying the global resource policy,
         will be removed when the applied global resource policy is
         unapplied/unconfigured.

         Note: Global resource policy is applied by setting the scalar
         object cermScalarsGlobalPolicyName to an existing global
         resource policy in the cermConfigPolicyTable. Global resource
         policy is unapplied by setting the cermScalarsGlobalPolicyName
         to zero-length string.

         Apart from threshold configurations in the applied global
         resource policy (those are configured and applied by the user),
         the system may have some internally applied global threshold
         configurations for some resource owners for which the user
         is not allowed to configure thresholding.

         The entPhysicalIndex represents the physical entity to which
         the resource owner belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX { entPhysicalIndex,
            cermResOwnerSubEntityId,
            cermResOwnerId,
            cermResOwnerSubTypeId,
            cermResOwnerSubTypeThreshSeverity }
    ::= { cermResOwnerSubTypeThresholdTable 1 }

CermResOwnerSubTypeThresholdEntry ::= SEQUENCE {
    cermResOwnerSubTypeThreshSeverity   CermThresholdSeverity,
    cermResOwnerSubTypeRisingThresh     CermThreshold,
    cermResOwnerSubTypeRisingInterval   CermDampenInterval,
    cermResOwnerSubTypeFallingThresh    CermThreshold,
    cermResOwnerSubTypeFallingInterval  CermDampenInterval
}

cermResOwnerSubTypeThreshSeverity  OBJECT-TYPE
    SYNTAX      CermThresholdSeverity
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the threshold severity of an applied
         threshold configuration, for a resource owner sub-type."
    ::= { cermResOwnerSubTypeThresholdEntry 1 }

cermResOwnerSubTypeRisingThresh  OBJECT-TYPE
    SYNTAX      CermThreshold
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the applied global rising threshold
         value for the resource owner sub-type.

         When total resource utilization of the resource owner sub-type
         exceeds the rising threshold value set for it, the resource
         owner sends an 'up' notification to the ERM framework.
         If the ERM framework did not receive any 'down' notification
         from the same resource owner sub-type till the rising interval
         time (represented by cermResOwnerSubTypeRisingInterval)
         is elapsed, the 'up' notification will be sent to all resource
         users which consume resources from the resource owner.

         The order of sending the 'up' notification will be based on
         priority of those resource users. Lowest priority resource
         user will get the 'up' notification first. Upon receiving
         the 'up' notification, the resource users can take appropriate
         action (for example, limiting consumption of the concerned
         resource)."
    ::= { cermResOwnerSubTypeThresholdEntry 2 }

cermResOwnerSubTypeRisingInterval  OBJECT-TYPE
    SYNTAX      CermDampenInterval
    UNITS       "seconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the dampening interval time for the
         global rising threshold, specified in the applied threshold
         configuration for the resource owner sub-type. Whenever the
         ERM framework gets an 'up' notification from the resource
         owner sub-type, it will wait till the rising interval time
         (represented by this object) is elapsed. If the ERM framework
         did not receive any 'down' notification from the same resource
         owner sub-type before the rising interval time is elapsed,
         it will send the 'up' notification to all resource users
         which consume resources from the resource owner. Otherwise,
         the 'up' notification will be dropped by the ERM framework.

         If the global rising threshold is configured but the rising
         interval time is not configured in the applied threshold
         configuration for the resource owner sub-type, then default
         value would be taken. The default value is specific to the
         resource owner sub-type."
    ::= { cermResOwnerSubTypeThresholdEntry 3 }

cermResOwnerSubTypeFallingThresh  OBJECT-TYPE
    SYNTAX      CermThreshold
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the applied global falling threshold
         value for the resource owner sub-type.

         The global falling threshold value will be applicable
         only after an 'up' notification is sent by the resource
         owner. When resource utilization of the resource owner
         sub-type falls below the applied global falling threshold
         value (after crossing the corresponding global rising
         threshold value), the resource owner sub-type sends a 'down'
         notification to the ERM framework. If the ERM framework did
         not receive any 'up' notification from the same resource owner
         sub-type till the falling interval time (represented by the
         object cermResOwnerSubTypeFallingInterval) is elapsed, the
         'down' notification will be sent to all resource users which
         consume resources from the concerned resource owner sub-type.
         The order of sending the 'down' notification will be based on
         priority of those resource users. Highest priority resource
         user will get the 'down' notification first. Upon receiving
         the 'down' notification, the resource users can start
         consuming the concerned resource as usual.

         If the global rising threshold value is configured but
         the global falling threshold value is not configured in
         the applied threshold configuration for the resource owner
         sub-type, then default value would be taken. The default value
         is specific to the resource owner sub-type and may depend on
         the rising threshold value."
    ::= { cermResOwnerSubTypeThresholdEntry 4 }

cermResOwnerSubTypeFallingInterval  OBJECT-TYPE
    SYNTAX      CermDampenInterval
    UNITS       "seconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the dampening interval time
         for the global falling threshold, specified in the applied
         threshold configuration for the resource owner sub-type.
         Whenever the ERM framework gets a 'down' notification from
         the resource owner sub-type, it will wait till the falling
         interval time (represented by this object) is elapsed.
         If the ERM framework did not receive any 'up' notification
         from the same resource owner sub-type before the falling
         interval time is elapsed, it will send the 'down' notification
         to all resource users which consume resources from the
         concerned resource owner sub-type. Otherwise, the 'down'
         notification will be dropped by the ERM framework.

         If the global rising threshold is configured but the falling
         interval time is not configured in the applied threshold
         configuration for the resource owner sub-type, then default
         value would be taken. The default value is specific to the
         resource owner sub-type."
    ::= { cermResOwnerSubTypeThresholdEntry 5 }

--
-- Resource User Type Table
--
cermResUserTypeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResUserTypeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each resource user type
         in the system. This table will have one entry for each
         resource user type in the system."
    ::= { cermStats 4 }

cermResUserTypeEntry OBJECT-TYPE
    SYNTAX      CermResUserTypeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a particular resource
         user type in the system. This entry includes the resource
         user type name, number of resource owners present in the
         resource user type, number of resource users and resource
         groups instantiated from the resource user type.

         Whenever a new resource user type is registered with the ERM
         framework (normally this happens during system initialization),
         an entry will be included in this table for the resource user
         type. Likewise, whenever a resource user type is unregistered
         from the ERM framework, the corresponding resource user type
         entry in this table will be removed.

         The entPhysicalIndex represents the physical entity to which
         the resource user type belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX       { entPhysicalIndex,
                  cermResUserTypeSubEntityId,
                  cermResUserTypeId }
    ::= { cermResUserTypeTable 1 }

CermResUserTypeEntry ::= SEQUENCE {
    cermResUserTypeSubEntityId    CermSubEntityId,
    cermResUserTypeId             CermUserTypeId,
    cermResUserTypeName           SnmpAdminString,
    cermResUserTypeResOwnerCount  Unsigned32,
    cermResUserTypeResUserCount   Unsigned32,
    cermResUserTypeResGroupCount  Unsigned32
}

cermResUserTypeSubEntityId  OBJECT-TYPE
    SYNTAX      CermSubEntityId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the sub-entity (i.e. logical processing
         entity in a physical entity) in which the resource user type
         is present."
    ::= { cermResUserTypeEntry 1 }

cermResUserTypeId  OBJECT-TYPE
    SYNTAX      CermUserTypeId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the resource user type identifier. This
         uniquely identifies a resource user type in a sub-entity."
    ::= { cermResUserTypeEntry 2 }

cermResUserTypeName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a textual string containing name of the resource
         user type."
    ::= { cermResUserTypeEntry 3 }

cermResUserTypeResOwnerCount  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the number of resource owners in
         the resource user type."
    ::= { cermResUserTypeEntry 4 }

cermResUserTypeResUserCount  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the number of resource users
         instantiated from the resource user type. This object value
         will be equal to the number of resource user entries present
         in the cermResUserTable for the resource user type."
    ::= { cermResUserTypeEntry 5 }

cermResUserTypeResGroupCount  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the number of resource groups in
         the resource user type. This object value will be equal to
         the number of resource group entries present in the
         cermResGroupTable for the resource user type."
    ::= { cermResUserTypeEntry 6 }

--
-- Resource User Table
--
cermResUserTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table which contains information about each resource user
         in the system. This table will have one entry for each
         resource user in the system."
    ::= { cermStats 5 }

cermResUserEntry OBJECT-TYPE
    SYNTAX      CermResUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a particular resource
         user in the system. This entry includes the resource user
         name and priority of the resource user.

         Whenever a new resource user is registered with the ERM
         framework (normally this happens when the resource user
         is created in the system), an entry will be included in
         this table for the resource user. Likewise, whenever a
         resource user is unregistered from the ERM framework,
         the corresponding resource user entry in this table will
         be removed.

         The entPhysicalIndex represents the physical entity to which
         the resource user belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX { entPhysicalIndex,
            cermResUserTypeSubEntityId,
            cermResUserTypeId,
            cermResUserId }
    ::= { cermResUserTable 1 }

CermResUserEntry ::= SEQUENCE {
    cermResUserId          CermUserId,
    cermResUserName        SnmpAdminString,
    cermResUserPriority    Unsigned32,
    cermResUserResGroupId  CermGroupId
}

cermResUserId  OBJECT-TYPE
    SYNTAX      CermUserId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the resource user identifier. This
         uniquely identifies a resource user in a resource user type."
    ::= { cermResUserEntry 1 }

cermResUserName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object is a textual string containing name of
         the resource user. For example: 'IP Input' process."
    ::= { cermResUserEntry 2 }

cermResUserPriority  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates priority of the resource user.
         High value for this object indicates that corresponding
         resource user has *low* priority and vice versa. The global
         ERM notification will be sent to the resource user in the
         order based on its priority. Lowest priority resource user
         (i.e. resource user which has highest value for this object)
         will get the global 'up' notification first and 'down'
         notification last."
    ::= { cermResUserEntry 3 }

cermResUserResGroupId  OBJECT-TYPE
    SYNTAX      CermGroupId
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the resource group in which the resource
         user is present. If the resource user does not belong to any
         resource group, then the value of this object will be zero.
         Otherwise, this object will contain value of the object
         cermResGroupId corresponding to the resource group
         entry in the cermResGroupTable."
    ::= { cermResUserEntry 4 }

--
-- Resource Group Table
--
cermResGroupTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each resource group
         in the system. This table will have one entry for each
         resource group in the system."
    ::= { cermStats 6 }

cermResGroupEntry OBJECT-TYPE
    SYNTAX      CermResGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a particular resource
         group in the system. This entry includes the resource group
         name and number of resource users in the resource group.

         Whenever a new resource group is configured, an entry will
         be included in this table for the resource group. Likewise,
         whenever a resource group is unconfigured, the corresponding
         resource group entry in this table will be removed. Resource
         groups can be created/deleted by the user using the table
         cermConfigResGroupTable. Resource groups will also be created
         internally if multiple instances of same resource user (i.e.
         more than one resource users with the same name) are present
         in the system.

         The entPhysicalIndex represents the physical entity to which
         the resource group belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX { entPhysicalIndex,
            cermResUserTypeSubEntityId,
            cermResUserTypeId,
            cermResGroupId }
    ::= { cermResGroupTable 1 }

CermResGroupEntry ::= SEQUENCE {
    cermResGroupId                 CermGroupId,
    cermResGroupName               SnmpAdminString,
    cermResGroupUserInstanceCount  Unsigned32
}

cermResGroupId  OBJECT-TYPE
    SYNTAX      CermGroupId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the resource group identifier. This
         uniquely identifies a resource group in a resource user type."
    ::= { cermResGroupEntry 1 }

cermResGroupName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object is a textual string containing name of the
         resource group. If the resource group has been configured
         by the user, this object will contain value of the
         cermConfigResGroupName corresponding to the configured
         resource group in the cermConfigResGroupTable."
    ::= { cermResGroupEntry 2 }

cermResGroupUserInstanceCount  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the number of resource user instances
         present in the resource group."
    ::= { cermResGroupEntry 3 }

--
-- Resource Group ==> Resource User Mapping Table
--
cermResGroupResUserTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResGroupResUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table has list of resource users present in each
         resource group."
    ::= { cermStats 7 }

cermResGroupResUserEntry OBJECT-TYPE
    SYNTAX      CermResGroupResUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a resource group identifier and one of
         the resource users identifier in the resource group.

         Whenever a new resource user is added into a resource group,
         an entry will be included in this table. Likewise, whenever
         a resource user is removed from a resource group,
         the corresponding entry in this table will be removed.

         The entPhysicalIndex represents the physical entity to which
         the resource group and resource user belong. Only 'module'
         class physical entities which run operating system with
         the ERM framework, are applicable here."
    INDEX { entPhysicalIndex,
            cermResUserTypeSubEntityId,
            cermResUserTypeId,
            cermResGroupId,
            cermResGroupResUserId }
    ::= { cermResGroupResUserTable 1 }

CermResGroupResUserEntry ::= SEQUENCE {
    cermResGroupResUserId  CermUserId
}

cermResGroupResUserId  OBJECT-TYPE
    SYNTAX      CermUserId
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object identifies one of the resource users in a
         particular resource group. This object will contain value of
         the cermResUserId, in the cermResUserTable, corresponding to
         one of resource users in the resource group."
    ::= { cermResGroupResUserEntry 1 }

--
-- Resource Owner <-> Resource Group/User Relationship Table
--
cermResOwnerResUserOrGroupTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResOwnerResUserOrGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each resource owner
         sub-type and resource user/group relationship."
    ::= { cermStats 8 }

cermResOwnerResUserOrGroupEntry OBJECT-TYPE
    SYNTAX      CermResOwnerResUserOrGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a resource owner
         sub-type and resource user/group relationship.

         Whenever a resource user/group is registered with the ERM
         framework, one or more number of entries will be created in
         this table. The number of entries that will be created,
         depends upon the number of resource owners in the resource
         user type from which the resource user was instantiated
         and the number of sub-types in each resource owner. Even if
         the resource owner does not have any sub-types, there will be
         one entry per resource user/group for the resource owner.

         The entPhysicalIndex represents the physical entity to which
         the resource owner and resource user belong. Only 'module'
         class physical entities which run operating system with
         the ERM framework, are applicable here."
    INDEX { entPhysicalIndex,
            cermResOwnerSubEntityId,
            cermResOwnerId,
            cermResOwnerSubTypeId,
            cermResOwnerResUserTypeId,
            cermResOwnerResUserOrGroupId }
    ::= { cermResOwnerResUserOrGroupTable 1 }

CermResOwnerResUserOrGroupEntry ::= SEQUENCE {
    cermResOwnerResUserTypeId            CermUserTypeId,
    cermResOwnerResUserOrGroupId         CermUserId,
    cermResUserOrGroupFlag               CermUserOrGroup,
    cermResUserOrGroupUsagePct           CermResUsagePct,
    cermResUserOrGroupUsage              Unsigned32,
    cermResUserOrGroupMaxUsage           Unsigned32,
    cermResUserOrGroupNotifSeverity      CermNotificationSeverity,
    cermResUserOrGroupGlobNotifSeverity  CermNotificationSeverity
}

cermResOwnerResUserTypeId  OBJECT-TYPE
    SYNTAX      CermUserTypeId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the resource user type corresponding
         to the resource user/group which is part of the resource owner
         <-> resource user/group relationship. This object will contain
         value of the cermResUserTypeId in the cermResUserTypeTable,
         corresponding to the resource user type."
    ::= { cermResOwnerResUserOrGroupEntry 1 }

cermResOwnerResUserOrGroupId  OBJECT-TYPE
    SYNTAX      CermUserId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the resource group/user which is part
         of the resource owner sub-type <-> resource group/user
         relationship. If the cermResUserOrGroupFlag is 'user',
         this object will contain value of the cermResUserId for one
         of the resource user entry in the cermResUserTable. If the
         cermResUserOrGroupFlag is 'group', this object will contain
         value of the cermResGroupId for one of the resource group
         entry in the cermResGroupTable."
    ::= { cermResOwnerResUserOrGroupEntry 2 }

cermResUserOrGroupFlag  OBJECT-TYPE
    SYNTAX      CermUserOrGroup
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a flag indicating whether corresponding entry belongs
         to a resource group or resource user. If this object value
         is 'user', this entry belongs to a resource owner sub-type
         <-> resource user relationship. If this object value is
         'group', this entry belongs to a resource owner sub-type
         <-> resource group relationship."
    ::= { cermResOwnerResUserOrGroupEntry 3 }

cermResUserOrGroupUsagePct  OBJECT-TYPE
    SYNTAX      CermResUsagePct
    UNITS       "percentage"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates percentage of resources utilized from
         the resource owner sub-type by the resource user (if the
         cermResUserOrGroupFlag is 'user') or resource group
         (if the cermResUserOrGroupFlag is 'group').

         For example, if 1 MB out of 50 MB 'processor' memory has
         been utilized by the resource user 'RU-1', then value of
         this object would be 2 in the entry corresponding to
         the 'processor' memory <-> 'RU-1' relationship."
    ::= { cermResOwnerResUserOrGroupEntry 4 }

cermResUserOrGroupUsage  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the amount of resources utilized from
         the resource owner sub-type by the resource user (if the
         cermResUserOrGroupFlag is 'user') or resource group
         (if the cermResUserOrGroupFlag is 'group'), in the unit
         of measurement indicated by the object
         cermResOwnerMeasurementUnit for the corresponding
         resource owner.

         For example, if 1 MB (i.e. 1048576 bytes) of 'processor'
         memory has been utilized by the resource user 'RU-1', then
         value of this object would be 1048576 in the entry
         corresponding to the 'processor' memory <-> 'RU-1'
         relationship."
    ::= { cermResOwnerResUserOrGroupEntry 5 }

cermResUserOrGroupMaxUsage  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the maximum amount of resource utilized
         from the resource owner sub-type by the resource user (if the
         cermResUserOrGroupFlag is 'user') or resource group
         (if the cermResUserOrGroupFlag is 'group') since the system
         has been up, in the unit of measurement specified by the object
         cermResOwnerMeasurementUnit for the corresponding resource
         owner. If this object is not implemented by the resource owner
         sub-type, then value of this object would be zero."
    ::= { cermResOwnerResUserOrGroupEntry 6 }

cermResUserOrGroupNotifSeverity  OBJECT-TYPE
    SYNTAX      CermNotificationSeverity
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the user local current notification
         severity for the resource owner sub-type and resource
         user/group relationship.

         For example, lets assume that the resource user 'RU-1'
         has utilized the 'processor' memory more than the applied
         *minor* severity user local rising threshold value (and
         its utilization is still above the corresponding falling
         threshold value), then current user local notification
         severity for the 'processor' memory <-> 'RU-1' relationship
         would be 'minor'."
    ::= { cermResOwnerResUserOrGroupEntry 7 }

cermResUserOrGroupGlobNotifSeverity  OBJECT-TYPE
    SYNTAX      CermNotificationSeverity
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates per user global current notification
         severity for the resource owner sub-type and resource
         user/group relationship.

         For example, lets assume that total utilization of the
         'processor' memory resource owner has exceeded the applied
         per user global rising threshold value for *minor* severity
         (and its utilization is still above the corresponding
         falling threshold value), then current per user global
         notification severity for the 'processor' memory and 'RU-1'
         relationship would be 'minor'."
    ::= { cermResOwnerResUserOrGroupEntry 8 }

--
-- Resource Owner <-> Resource User Threshold Table
--
cermResOwnerResUserOrGroupThresholdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResOwnerResUserOrGroupThresholdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each applied
         threshold configuration for each resource owner sub-type <->
         resource user/group relationship. This table will have
         an entry for each threshold configuration for each 
         resource owner sub-type <-> resource user/group relationship
         for which a rising threshold value is set. If rising threshold
         value is not set for a resource owner sub-type <-> resource
         user/group relationship, then an entry will not be present
         in this table for the relationship."
    ::= { cermStats 9 }

cermResOwnerResUserOrGroupThresholdEntry OBJECT-TYPE
    SYNTAX      CermResOwnerResUserOrGroupThresholdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a applied threshold
         configuration for a resource owner sub-type <-> resource
         user/group relationship.

         Whenever a local resource policy is applied for a resource
         user/group, one or more number of entries will be included
         in this table. The number of entries that will be created,
         depends upon the number of threshold configurations present
         in the local resource policy.

         The entPhysicalIndex represents the physical entity to which
         the resource owner and resource user belong. Only 'module'
         class physical entities which run operating system with
         the ERM framework, are applicable here."
    INDEX { entPhysicalIndex,
            cermResOwnerSubEntityId,
            cermResOwnerId,
            cermResOwnerSubTypeId,
            cermResOwnerResUserTypeId,
            cermResOwnerResUserOrGroupId,
            cermResUserOrGroupThreshIsUserGlob,
            cermResUserOrGroupThreshSeverity }
    ::= { cermResOwnerResUserOrGroupThresholdTable 1 }

CermResOwnerResUserOrGroupThresholdEntry ::= SEQUENCE {
    cermResUserOrGroupThreshIsUserGlob  TruthValue,
    cermResUserOrGroupThreshSeverity    CermThresholdSeverity,
    cermResUserOrGroupThreshFlag        CermUserOrGroup,
    cermResUserOrGroupRisingThresh      CermThreshold,
    cermResUserOrGroupRisingInterval    CermDampenInterval,
    cermResUserOrGroupFallingThresh     CermThreshold,
    cermResUserOrGroupFallingInterval   CermDampenInterval
}

cermResUserOrGroupThreshIsUserGlob  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A flag which indicates whether the threshold configuration
         is about user local thresholding or per user global
         thresholding. The value of this object would be 'true' for
         the per user global threshold configuration."
    ::= { cermResOwnerResUserOrGroupThresholdEntry 1 }

cermResUserOrGroupThreshSeverity  OBJECT-TYPE
    SYNTAX      CermThresholdSeverity
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the threshold severity for the threshold
         configuration entry. The value of this object can be 'minor',
         'major' and 'critical'."
    ::= { cermResOwnerResUserOrGroupThresholdEntry 2 }

cermResUserOrGroupThreshFlag  OBJECT-TYPE
    SYNTAX      CermUserOrGroup
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a flag indicating whether corresponding entry belongs
         to a resource group or resource user. If this object value
         is 'user', this entry belongs to a resource owner sub-type
         <-> resource user relationship. If this object value is
         'group', this entry belongs to a resource owner sub-type
         <-> resource group relationship."
    ::= { cermResOwnerResUserOrGroupThresholdEntry 3 }

cermResUserOrGroupRisingThresh  OBJECT-TYPE
    SYNTAX      CermThreshold
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the rising threshold value set for the
         thereshold configuration for the resource owner sub-type <->
         resource user/group relationship. If the rising threshold
         value is not set for the resource owner sub-type <-> resource
         user/group relationship, then this table will not have any
         entry for the relationship."
    ::= { cermResOwnerResUserOrGroupThresholdEntry 4 }

cermResUserOrGroupRisingInterval  OBJECT-TYPE
    SYNTAX      CermDampenInterval
    UNITS       "seconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates dampening interval time set for the
         rising threshold for the threshold configuration entry
         in this table. If the rising threshold value is configured
         but the rising interval time is not configured for the
         resource owner sub-type <-> resource user/group relationship,
         then default value would be taken. The default value is
         specific to the resource owner sub-type."
    ::= { cermResOwnerResUserOrGroupThresholdEntry 5 }

cermResUserOrGroupFallingThresh  OBJECT-TYPE
    SYNTAX      CermThreshold
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the falling threshold value set for
         the threshold configuration for the resource owner sub-type
         <-> resource user/group relationship. If the rising threshold
         value is configured but the falling threshold value is not
         configured for the resource owner sub-type <-> resource
         user/group relationship, then default value would be taken.
         The default value is specific to the resource owner sub-type."
    ::= { cermResOwnerResUserOrGroupThresholdEntry 6 }

cermResUserOrGroupFallingInterval  OBJECT-TYPE
    SYNTAX      CermDampenInterval
    UNITS       "seconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the dampening interval time set for
         the falling threshold for the threshold configuration entry
         in this table. If the rising threshold value is configured
         but the falling interval value is not configured for the
         resource owner sub-type <-> resource user/group relationship,
         then default value would be taken. The default value is
         specific to the resource owner sub-type."
    ::= { cermResOwnerResUserOrGroupThresholdEntry 7 }

--
-- Resource User Type <==> Resource Owner Mapping Table
--
cermResUserTypeResOwnerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResUserTypeResOwnerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains an entry for each resource user type
         and resource owner relationship in the system. This table
         would be useful in getting list of resource owners in a
         particular resource user type and vice versa."
    ::= { cermStats 10 }

cermResUserTypeResOwnerEntry OBJECT-TYPE
    SYNTAX      CermResUserTypeResOwnerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a resource user type identifier and one
         of it's resource owners.

         Whenever a resource user type is registered with the ERM
         framework, <N> number of entries will be included in this table
         for the resource user type.  Where, <N> is equal to the number
         of resource owners in the resource user type. Likewise,
         whenever a resource user type is unregistered from the ERM
         framework, then all entries corresponding to the resource user
         type will be removed from this table.

         The entPhysicalIndex represents the physical entity to which
         the resource user type and resource owner belong. Only 'module'
         class physical entities which run operating system with
         the ERM framework, are applicable here."
    INDEX { entPhysicalIndex,
            cermResUserTypeSubEntityId,
            cermResUserTypeId,
            cermResUserTypeResOwnerId }
    ::= { cermResUserTypeResOwnerTable 1 }

CermResUserTypeResOwnerEntry ::= SEQUENCE {
    cermResUserTypeResOwnerId  CermOwnerId
}

cermResUserTypeResOwnerId  OBJECT-TYPE
    SYNTAX      CermOwnerId
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A unique identifier representing one of the resource owner
         in the resource user type. This object contains value of
         the cermResOwnerId in one of the entries in the
         cermResOwnerTable."
    ::= { cermResUserTypeResOwnerEntry 1 }

--
-- Resource Monitor Table
--
cermResMonitorTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResMonitorEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each resource monitor
         in the system."
    ::= { cermStats 11 }

cermResMonitorEntry OBJECT-TYPE
    SYNTAX      CermResMonitorEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a resource monitor in
         the system.

         Whenever a new resource monitor is registered with the ERM
         framework, an entry will be included in this table for the
         resource monitor. Likewise, whenever a resource monitor is
         unregistered from the ERM framework, the corresponding 
         resource monitor entry will be removed from this table.

         The entPhysicalIndex represents the physical entity to which
         the resource monitor belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX { entPhysicalIndex,
            cermResMonitorSubEntityId,
            cermResMonitorId }
    ::= { cermResMonitorTable 1 }

CermResMonitorEntry ::= SEQUENCE {
    cermResMonitorSubEntityId  CermSubEntityId,
    cermResMonitorId           CermMonitorId,
    cermResMonitorName         SnmpAdminString
}

cermResMonitorSubEntityId  OBJECT-TYPE
    SYNTAX      CermSubEntityId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the sub-entity (i.e. logical processing
         entity in a physical entity) in which the resource monitor
         is present."
    ::= { cermResMonitorEntry 1 }

cermResMonitorId  OBJECT-TYPE
    SYNTAX      CermMonitorId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the resource monitor identifier."
    ::= { cermResMonitorEntry 2 }

cermResMonitorName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a textual string containing name of the
         resource monitor."
    ::= { cermResMonitorEntry 3 }

--
-- Resource Monitor <==> Resource Owner - Resource User Mapping Table
--
cermResMonitorResOwnerResUserTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResMonitorResOwnerResUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains the following information:
         1) resource owners being watched by each resource monitor.
         2) resource users being watched by each resource monitor.
         3) resource owner and resource user relationships being
            watched by each resource monitor."
    ::= { cermStats 12 }

cermResMonitorResOwnerResUserEntry OBJECT-TYPE
    SYNTAX      CermResMonitorResOwnerResUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing any of the following information:
         1) one of the resource owners being watched by a resource
            monitor.
         2) one of the resource users being watched by a resource
            monitor.
         3) one of the resource owner and resource user relationships
            being watched by a resource monitor.

         Whenever a resource monitor starts watching a resource owner
         or resource user or resource owner <-> resource user
         relationship, an entry will be included in this table for
         the resource monitor.

         The entPhysicalIndex represents the physical entity to which
         the resource monitor belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX { entPhysicalIndex,
            cermResMonitorSubEntityId,
            cermResMonitorId,
            cermResMonitorResOwnerId,
            cermResMonitorResUserTypeId,
            cermResMonitorResUserId }
    ::= { cermResMonitorResOwnerResUserTable 1 }

CermResMonitorResOwnerResUserEntry ::= SEQUENCE {
    cermResMonitorResOwnerId     CermOwnerIdOrZero,
    cermResMonitorResUserTypeId  CermUserTypeIdOrZero,
    cermResMonitorResUserId      CermUserIdOrZero,
    cermResMonitorResPolicyName  SnmpAdminString
}

cermResMonitorResOwnerId  OBJECT-TYPE
    SYNTAX      CermOwnerIdOrZero
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the resource owner which is being
         monitored by the resource monitor. The value of this object
         would be 0 in the entry where only the resource user (not
         the resource owner and resource user relationship) being
         watched by the resource monitor.

         In case of non-zero value, this object indicates the 
         cermResOwnerId object value for one of the resource owner
         entry in the cermResOwnerTable."
    ::= { cermResMonitorResOwnerResUserEntry 1 }

cermResMonitorResUserTypeId  OBJECT-TYPE
    SYNTAX      CermUserTypeIdOrZero
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the resource user type of the resource
         user which is being monitored by the resource monitor.
         The value of this object would be 0 in the entry where only
         the resource owner (not the resource owner and resource user
         relationship) being watched by the resource monitor.

         In case of non-zero value, this object indicates the 
         cermResUserTypeId object value for one of the resource user
         type entry in the cermResUserTypeTable."
    ::= { cermResMonitorResOwnerResUserEntry 2 }

cermResMonitorResUserId  OBJECT-TYPE
    SYNTAX      CermUserIdOrZero
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the resource user which is being
         monitored by the resource monitor. The value of this object
         would be 0 in the entry where only the resource owner (not
         the resource owner and resource user relationship) being
         watched by the resource monitor.

         In case of non-zero value, this object indicates the 
         cermResUserId object value for one of the resource user
         entry in the cermResUserTable."
    ::= { cermResMonitorResOwnerResUserEntry 3 }

cermResMonitorResPolicyName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the policy name corresponding to the
         resource owner <-> resource user relationship being watched
         by the resource monitor. If there is no corresponding applied
         resource policy for the resource owner and resource user in
         the entry, then this object will contain zero-length string.

         This object indicates the cermPolicyName object value in one
         of the resource policy entry in the cermConfigPolicyTable."
    ::= { cermResMonitorResOwnerResUserEntry 4 }

--
-- Resource Monitor ==> Resource Policy Mapping Table
--
cermResMonitorPolicyTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermResMonitorPolicyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains an entry for each resource policy being
         watched by each resource monitor in the system. This table
         will be useful to get the name of all the resource policies
         being watched by a particular resource monitor.
         If a resource monitor doesn't watch any resource policy,
         then this table will not have any entry for the resource
         monitor."
    ::= { cermStats 13 }

cermResMonitorPolicyEntry OBJECT-TYPE
    SYNTAX      CermResMonitorPolicyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing one of the resource policies being
         watched by a particular resource monitor.

         Whenever a resource monitor starts watching a resource policy,
         an entry will be added into this table, for the resource
         monitor <-> resource policy relationship.

         The entPhysicalIndex represents the physical entity to which
         the resource monitor belongs. Only 'module' class physical
         entities which run operating system with the ERM framework,
         are applicable here."
    INDEX { entPhysicalIndex,
            cermResMonitorSubEntityId,
            cermResMonitorId,
            cermResMonitorPolicyName }
    ::= { cermResMonitorPolicyTable 1 }

CermResMonitorPolicyEntry ::= SEQUENCE {
    cermResMonitorPolicyName  SnmpAdminString
}

cermResMonitorPolicyName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a textual string indicating name of a resource policy
         being watched by the resource monitor. This object will contain
         the cermPolicyName object value in one of the resource policy
         entry in the cermConfigPolicyTable."
    ::= { cermResMonitorPolicyEntry 1 }

--
-- Cisco ERM Configuration Related Tables
--

--
-- Resource Policy Table
--
cermConfigPolicyTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermConfigPolicyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each resource policy
         configured in the system. Resource Policy will contain
         threshold configurations for a set of resource owners.
         Each threshold configuration must specify the threshold
         severity and the rising threshold value which are mandatory.
         The rising interval time, falling threshold value and falling
         interval time are optional for the threshold configuration.
         Only one local resource policy can be applied for a resource
         user or resource group, at any point in time. The global
         resource policy cannot be applied for a resource user or
         resource group.

         Whenever a resource policy is applied to a resource user
         instance, each threshold configuration in the resource policy
         will be applied to all relevant resource owner and resource
         user relationships."
    ::= { cermConfig 1 }

cermConfigPolicyEntry OBJECT-TYPE
    SYNTAX      CermConfigPolicyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about a resource policy.

         Whenever a new resource policy is configured in the system,
         an entry will be added in this table for the resource
         policy. Likewise, whenever a resource policy is unconfigured,
         corresponding entry for the resource policy will be removed
         from this table."
    INDEX { cermPolicyName }
    ::= { cermConfigPolicyTable 1 }

CermConfigPolicyEntry ::= SEQUENCE {
    cermPolicyName              SnmpAdminString,
    cermPolicyIsGlobal          TruthValue,
    cermPolicyUserTypeName      SnmpAdminString,
    cermPolicyLoggingEnabled    TruthValue,
    cermPolicySnmpNotifEnabled  TruthValue,
    cermPolicyStorageType       StorageType,
    cermPolicyRowStatus         RowStatus
}

cermPolicyName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is textual string containing name of the resource policy.
         The resource policy name should be unique for each resource
         policy configured in the system."
    ::= { cermConfigPolicyEntry 1 }

cermPolicyIsGlobal  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This is a flag indicating whether the resource policy is a
         global resource policy or not. For global resource policies,
         this object value would be 'true'. This object value
         cannot be changed after creating the resource policy."
    DEFVAL { false }
    ::= { cermConfigPolicyEntry 2 }

cermPolicyUserTypeName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..64))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This is a  textual string indicating the resource user type
         name for the resource policy. For a global resource policy,
         this object will have zero-length string. For a local resource
         policy, this object will contain name of the resource user
         type for the resource policy. The resource user type name
         for a resource policy, cannot be changed after creating the
         resource policy."
    ::= { cermConfigPolicyEntry 3 }

cermPolicyLoggingEnabled  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This is a flag indicating whether syslog is enabled for the
         resource policy or not."
    DEFVAL { true }
    ::= { cermConfigPolicyEntry 4 }

cermPolicySnmpNotifEnabled  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This is a flag indicating whether SNMP notifications are
         enabled for the resource policy or not. If this object value
         is set to 'true', all notifications related to the resource
         policy will be sent to all remote hosts which are configured
         to get SNMP notifications from the managed device."
    DEFVAL { true }
    ::= { cermConfigPolicyEntry 5 }

cermPolicyStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the storage type of this conceptual row.
         If it is set to 'nonVolatile', this entry can be saved into
         non-volatile memory."
    DEFVAL { nonVolatile }
    ::= { cermConfigPolicyEntry 6 }

cermPolicyRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the status of the conceptual row in the
         cermConfigPolicyTable. To create a new entry (i.e. creating
         a new resource policy) in the cermConfigPolicyTable, this
         object has to be set to 'createAndGo' after setting all
         mandatory columnar objects for the corresponding entry.
         Setting the status to 'createAndGo' will fail if any of the
         columnar objects in the same row does not have acceptable
         value. If it succeeds, status of this row will be set to
         'active'.

         To delete an existing resource policy, this object has to be
         set to 'destroy'. Deletion may fail if the resource policy
         is being configured by any other user or the resource policy
         has been associated with any resource user instance."
    ::= { cermConfigPolicyEntry 7 }

--
-- Resource Policy and Resource Owner Threshold Configuration Table
--
cermConfigPolicyResOwnerThreshTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermConfigPolicyResOwnerThreshEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each threshold
         configuration in each resource policy in the
         cermConfigPolicyTable. This table can be used to configure
         threshold details (i.e. threshold severity, rising threshold
         value, falling threshold value, rising interval time and
         falling interval time) for a resource policy in the
         cermConfigPolicyTable."
    ::= { cermConfig 2 }

cermConfigPolicyResOwnerThreshEntry OBJECT-TYPE
    SYNTAX      CermConfigPolicyResOwnerThreshEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing threshold configuration details for a
         resource owner sub-type, for a particular resource policy.

         Whenever a new threshold configuration is added in the resource
         policy, an entry wil be created in this table for the threshold
         configuration for the resource policy. Likewise, whenever
         a threshold configuration is removed from the resource policy,
         the corresponding entry will be removed from this table.

         The cermPolicyPhysicalIndex represents the physical entity
         to which the resource owner belongs. Only 'module' class
         physical entities which run operating system with the ERM
         framework, are applicable here."
    INDEX { cermPolicyName,
            cermPolicyPhysicalIndex,
            cermPolicyResOwnerSubEntityId,
            cermPolicyResOwnerId,
            cermPolicyResOwnerSubTypeId,
            cermPolicyIsUserGlobal,
            cermPolicyThresholdSeverity }
    ::= { cermConfigPolicyResOwnerThreshTable 1 }

CermConfigPolicyResOwnerThreshEntry ::= SEQUENCE {
    cermPolicyPhysicalIndex              PhysicalIndex,
    cermPolicyResOwnerSubEntityId        CermSubEntityId,
    cermPolicyResOwnerId                 CermOwnerId,
    cermPolicyResOwnerSubTypeId          Unsigned32,
    cermPolicyIsUserGlobal               TruthValue,
    cermPolicyThresholdSeverity          CermThresholdSeverity,
    cermPolicyRisingThreshold            CermThreshold,
    cermPolicyRisingInterval             CermDampenInterval,
    cermPolicyFallingThreshold           CermThresholdOrZero,
    cermPolicyFallingInterval            CermDampenInterval,
    cermPolicyResOwnerThreshStorageType  StorageType,
    cermPolicyResOwnerThreshRowStatus    RowStatus
}

cermPolicyPhysicalIndex  OBJECT-TYPE
    SYNTAX      PhysicalIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object uniquely identifies the physical entity to which
         the threshold configuration belongs. This objects indicates
         the entPhysicalIndex value (in the entPhysicalTable) for the
         corresponding physical entity."
    ::= { cermConfigPolicyResOwnerThreshEntry 1 }

cermPolicyResOwnerSubEntityId  OBJECT-TYPE
    SYNTAX      CermSubEntityId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object indicates the sub-entity (i.e. logical processing
         entity in a physical entity) in which the resource owner is
         present. This object indicates the cermResOwnerSubEntityId
         value (in the cermResOwnerTable) for the resource owner."
    ::= { cermConfigPolicyResOwnerThreshEntry 2 }

cermPolicyResOwnerId  OBJECT-TYPE
    SYNTAX      CermOwnerId
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the resource owner for which
         the threshold is configured. This object indicates the
         cermResOwnerId value (in the cermResOwnerTable) for the
         corresponding resource owner."
    ::= { cermConfigPolicyResOwnerThreshEntry 3 }

cermPolicyResOwnerSubTypeId  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the resource owner sub-type for which
         threshold is configured.

         For example, 'processor' and 'io' are sub-types of the
         'memory' resource owner. Each resource owner sub-type may
         have different threshold configuration. If the resource owner
         does not have any sub-type, then value of this object would
         be zero. This object indicates the 'cermResOwnerSubTypeId'
         value (in the cermResOwnerSubTypeTable) for the corresponding
         resource owner sub-type."
    ::= { cermConfigPolicyResOwnerThreshEntry 4 }

cermPolicyIsUserGlobal  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is a flag indicating whether the threshold configuration
         is for per user global thresholding or user local thresholding.
         For per user global threshold configuration, value of this
         object would be 'true'. For system global and user local
         threshold configuration, value of this object would be
         'false'."
    ::= { cermConfigPolicyResOwnerThreshEntry 5 }

cermPolicyThresholdSeverity  OBJECT-TYPE
    SYNTAX      CermThresholdSeverity
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object identifies the threshold severity set for the
         threshold configuration.

         For a minor threshold configuration, value of this object
         would be 'minor'. For major threshold configuration, value
         of this object would be 'major'. For critical threshold
         configuration, value of this object would be 'critical'."
    ::= { cermConfigPolicyResOwnerThreshEntry 6 }

cermPolicyRisingThreshold  OBJECT-TYPE
    SYNTAX      CermThreshold
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the rising threshold value set for
         the threshold configuration entry.

         Lets assume that system global threshold value (in percentage)
         for 'io' memory resource owner is set to 60% as minor rising
         threshold value, 70% as major rising threshold value and 90%
         as critical rising threshold value. When the total 'io' memory
         utilization exceeds the 60% threshold limit, a minor 'up'
         notification will be sent to relevant resource user(s).
         When the total 'io' memory utilization exceeds the 70%
         threshold limit, a major 'up' notification will be sent to
         relevant resource user(s). When it exceeds the 90% threshold
         limit, a critical 'up' notification will be sent to relevant
         resource user(s).

         The rising threshold value is mandatory for any threshold
         configuration entry in the
         cermConfigPolicyResOwnerThreshTable."
    ::= { cermConfigPolicyResOwnerThreshEntry 7 }

cermPolicyRisingInterval  OBJECT-TYPE
    SYNTAX      CermDampenInterval
    UNITS       "seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the dampening interval for the
         rising threshold, for the threshold configuration. That means,
         an interval during which variations in the rising and falling
         threshold values are not notified to any resource user(s).

         If the dampening interval for the rising threshold is not
         configured, it will contain zero."
    DEFVAL { 0 }
    ::= { cermConfigPolicyResOwnerThreshEntry 8 }

cermPolicyFallingThreshold  OBJECT-TYPE
    SYNTAX      CermThresholdOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the falling threshold value set for
         the threshold configuration.

         Lets assume that system global threshold value (in percentage)
         for 'io' memory resource owner is set to 10% as minor falling
         threshold value, 20% as major falling threshold value and 30%
         as critical falling threshold value. When the total 'io' memory
         utilization falls below 10%, a minor 'down' notification will
         be sent to relevant resource user(s). When the total 'io'
         memory utilization falls below 20%, a major 'down'
         notification will be sent to relevant resource user(s). When
         it falls below 30%, a critical 'down' notification will be
         sent to relevant resource user(s). The 'down' notification
         will be sent only if corresponding 'up' notification has
         already been sent to relevant resource user(s).

         Zero value for this object indicates that the falling
         threshold value is not configured."
    DEFVAL { 0 }
    ::= { cermConfigPolicyResOwnerThreshEntry 9 }

cermPolicyFallingInterval  OBJECT-TYPE
    SYNTAX      CermDampenInterval
    UNITS       "seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the dampening interval for the
         falling threshold for the threshold configuration. That means,
         an interval during which variations in the rising and falling
         threshold values are not notified to the resource user(s).

         If the dampening interval for the falling threshold is not
         configured, it will contain zero."
    DEFVAL { 0 }
    ::= { cermConfigPolicyResOwnerThreshEntry 10 }

cermPolicyResOwnerThreshStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the storage type of this conceptual row.
         If it is set to 'nonVolatile', this entry can be saved into
         non-volatile memory."
    DEFVAL { nonVolatile }
    ::= { cermConfigPolicyResOwnerThreshEntry 11 }

cermPolicyResOwnerThreshRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the status of the conceptual row
         in the cermConfigPolicyResOwnerThreshTable.

         To create a new entry (i.e. adding a new threshold
         configuration for the resource policy) in the
         cermConfigPolicyResOwnerThreshTable, this object
         has to be set to 'createAndGo'. Setting the status to
         'createAndGo' will fail if any columnar object in the same row
         does not have acceptable value. If it succeeds, status of this
         row will be set to 'active'.

         To delete an existing threshold configuration in the resource
         policy, this object value to be set to 'destroy'."
    ::= { cermConfigPolicyResOwnerThreshEntry 12 }

--
-- Resource Group Configuration Table
--
cermConfigResGroupTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermConfigResGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about each resource group
         created by the user in the system. This table is used to
         create or delete a resource group in the system."
    ::= { cermConfig 3 }

cermConfigResGroupEntry OBJECT-TYPE
    SYNTAX      CermConfigResGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a resource group name and its resource
         user type name.

         Whenever a new resource group is configured by the user,
         an entry will be created for the resource group in this table.
         Likewise, whenever a resource group is unconfigured by the
         user, the corresponding resource group entry will be removed
         from this table."
    INDEX { cermConfigResGroupName }
    ::= { cermConfigResGroupTable 1 }

CermConfigResGroupEntry ::= SEQUENCE {
    cermConfigResGroupName          SnmpAdminString,
    cermConfigResGroupUserTypeName  SnmpAdminString,
    cermConfigResGroupStorageType   StorageType,
    cermConfigResGroupRowStatus     RowStatus
}

cermConfigResGroupName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..48))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is a textual string containing name of the resource group.
         The name is unique for each resource group available in
         the system."
    ::= { cermConfigResGroupEntry 1 }

cermConfigResGroupUserTypeName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This is a textual string containing name of the resource user
         type to which the resource group belongs. Only the resource
         user instance of the same resource user type, can be added
         into the resource group."
    ::= { cermConfigResGroupEntry 2 }

cermConfigResGroupStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the storage type of this conceptual row.
         If it is set to 'nonVolatile', this entry can be saved into
         non-volatile memory."
    DEFVAL { nonVolatile }
    ::= { cermConfigResGroupEntry 3 }

cermConfigResGroupRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the status of the conceptual row in
         the cermConfigResGroupTable. To create a new row
         (i.e. creating a new resource group) in this table,
         this object has to be set to 'createAndGo'. If it succeeds,
         status of the row will be set to 'active'.

         To delete an existing resource group, this object has to be
         set to 'destroy'."
    ::= { cermConfigResGroupEntry 4 }

--
-- Resource Group ==> Resource User Instance Table
--
cermConfigResGroupUserTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermConfigResGroupUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table has list of resource user instances added into
         each resource group."
    ::= { cermConfig 4 }

cermConfigResGroupUserEntry OBJECT-TYPE
    SYNTAX      CermConfigResGroupUserEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a resource group name and one of it's
         resource user instance name.

         Whenever a resource user instance is added into the resource
         group by the user, an entry will be created in this table.
         Likewise, whenever a resource user instance is removed from
         the resource group, the corresponding entry in this table
         will be removed."
    INDEX { cermConfigResGroupName,
            cermConfigResGroupUserName }
    ::= { cermConfigResGroupUserTable 1 }

CermConfigResGroupUserEntry ::= SEQUENCE {
    cermConfigResGroupUserName         SnmpAdminString,
    cermConfigResGroupUserStorageType  StorageType,
    cermConfigResGroupUserRowStatus    RowStatus
}

cermConfigResGroupUserName  OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..64))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is a textual string containing name of the resource user
         instance in the resource group. The resource user instance
         need not exist in the system when the resource group is
         configured."
    ::= { cermConfigResGroupUserEntry 1 }

cermConfigResGroupUserStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the storage type of this conceptual row.
         If it is set to 'nonVolatile', this entry can be saved into
         non-volatile memory."
    DEFVAL { nonVolatile }
    ::= { cermConfigResGroupUserEntry 2 }

cermConfigResGroupUserRowStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the status of the conceptual row in
         the cermConfigResGroupUserTable. To create a new row
         (i.e. adding a new resource user instance) in the
         cermConfigResGroupUserTable, this object has to be set to
         'createAndGo'. Setting the status to 'createAndGo' will fail
         if the given resource group is not yet created (i.e. not
         available in the cermConfigResGroupTable) or given resource
         user instance index is already exist. If it succeeds, status
         of the row will be set to 'active'.

         To delete an resource user instance from the resource group,
         this object has to be set to 'destroy'."
    ::= { cermConfigResGroupUserEntry 3 }

--
-- Resource Policy Apply Table
--
cermConfigPolicyApplyTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CermConfigPolicyApplyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table has a list of resource users (or groups) for which
         local resource policies are applied in the system. The main
         purpose of this table is to apply a local resource policy for
         a resource user or resource group."
    ::= { cermConfig 5 }

cermConfigPolicyApplyEntry OBJECT-TYPE
    SYNTAX      CermConfigPolicyApplyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a resource user (or group) name and
         a local resource policy name applied to the resource user
         (or group).

         Whenever a policy is applied to a resource user (or group),
         an entry will be created in this table. Likewise, whenever
         a policy applied to a resource user (or group) is removed,
         the corresponding entry will be removed."
    INDEX { cermPolicyApplyUserOrGroupName,
            cermPolicyApplyUserOrGroupFlag }
    ::= { cermConfigPolicyApplyTable 1 }

CermConfigPolicyApplyEntry ::= SEQUENCE {
    cermPolicyApplyUserOrGroupName  SnmpAdminString,
    cermPolicyApplyUserOrGroupFlag  CermUserOrGroup,
    cermPolicyApplyPolicyName       SnmpAdminString,
    cermPolicyApplyStorageType      StorageType,
    cermPolicyApplyRowStatus        RowStatus
}

cermPolicyApplyUserOrGroupName  OBJECT-TYPE
    SYNTAX          SnmpAdminString (SIZE (1..64))
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This is a textual string containing name of the resource
         user (or resource group) for which the resource policy is
         applied.  A resource user (or group) cannot be associated
         with more than one resource policies. In other words, more
         than one resource polices cannot be applied to a resource
         user (or group) at any point in time."
    ::= { cermConfigPolicyApplyEntry 1 }

cermPolicyApplyUserOrGroupFlag  OBJECT-TYPE
    SYNTAX          CermUserOrGroup
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This is a flag indicating whether the
         cermPolicyApplyUserOrGroupName is a resource user name or
         resource group name. For resource group name, this object
         has to be set to 'group'."
    ::= { cermConfigPolicyApplyEntry 2 }

cermPolicyApplyPolicyName  OBJECT-TYPE
    SYNTAX          SnmpAdminString (SIZE (1..64))
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "A textual string indicating name of the resource policy which
         is applied for the resource user (or resource group). This
         object indicates the cermPolicyName, in the
         cermConfigPolicyTable, applied to the resource user (or group)
         name."
    ::= { cermConfigPolicyApplyEntry 3 }

cermPolicyApplyStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the storage type of this conceptual row.
         If it is set to 'nonVolatile', this entry can be saved into
         non-volatile memory."
    DEFVAL { nonVolatile }
    ::= { cermConfigPolicyApplyEntry 4 }

cermPolicyApplyRowStatus  OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object indicates the status of the row in the
         cermConfigPolicyApplyTable. To create a new entry
         (i.e. applying a resource policy to a resource group or
         resource user) in the cermConfigPolicyApplyTable, this object
         has to be set to 'createAndGo'. Setting the status to
         'createAndGo' will fail if any columnar object in the
         same row does not have acceptable value (for example,
         the specified resource policy name does not exist in
         the cermConfigPolicyTable). If it succeeds, status of
         the row will be set to 'active'.

         To delete a row in the table (i.e. unconfiguring a policy
         for a resource group/user), this object has to be set to
         'destroy'."
    ::= { cermConfigPolicyApplyEntry 5 }

--
-- Notification Control Objects
--

cermNotifsEnabled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object indicates whether generation of traps for ERM
         policy violation notifications are allowed or not.

         When this object is set to 'true', it allows generation
         of traps for the ERM policy violation related notifications
         ciscoErmGlobalPolicyViolation and
         ciscoErmLocalPolicyViolation."
    DEFVAL { false }
    ::= { cermNotifControlObjects 1 }

--
-- Notification related Objects
--

cermNotifsThresholdSeverity OBJECT-TYPE
    SYNTAX      CermThresholdSeverity


    MAX-ACCESS  read-only
--    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "This object indicates the severity of the threshold
         configuration."
    ::= { cermNotifObjects 1 }

cermNotifsThresholdIsUserGlob OBJECT-TYPE
    SYNTAX      TruthValue


    MAX-ACCESS  read-only
--    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "This object indicates whether the threshold configuration is
         per user global thresholding or not."
    ::= { cermNotifObjects 2 }

cermNotifsThresholdValue OBJECT-TYPE
    SYNTAX      CermThreshold


    MAX-ACCESS  read-only
--    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "This object indicates the rising (or falling) threshold value."
    ::= { cermNotifObjects 3 }

cermNotifsDirection OBJECT-TYPE
    SYNTAX      CermNotificationDirection


    MAX-ACCESS  read-only
--    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "This object indicates the direction of the ERM notification."
    ::= { cermNotifObjects 4 }

cermNotifsPolicyName OBJECT-TYPE
    SYNTAX      SnmpAdminString


    MAX-ACCESS  read-only
--    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "This object indicates the name of the resource policy."
    ::= { cermNotifObjects 5 }

--
-- Resource Policy Violation Notifications
--

ciscoErmGlobalPolicyViolation NOTIFICATION-TYPE
    OBJECTS  { cermResOwnerName,
               cermResOwnerSubTypeName,
               cermNotifsThresholdSeverity,
               cermNotifsThresholdValue,
               cermNotifsDirection,
               cermNotifsPolicyName
    }
    STATUS  current
    DESCRIPTION
        "This notification event will be generated whenever system
         global resource policy is violated i.e. total resource
         utilization exceeds the applied global threshold limit for
         any resource owner sub-type. Also, this notificatioin will be
         generated when resource utilization of the affected resource
         owner sub-type falls below the corresponding falling threshold
         value.

         The cermResOwnerName and cermResOwnerSubTypeName objects
         indicates the resource owner name and resource owner sub-type
         name for which an applied global threshold value got violated.

         The cermNotifsThresholdSeverity object indicates the configured
         threshold severity which got violated. This object contains
         value of the cermResOwnerSubTypeThreshSeverity corresponding
         to the global threshold configuration which got violated.

         The cermNotifsThresholdValue object indicates the configured
         threshold limit which got violated. This object contains value
         of either cermResOwnerSubTypeRisingThresh or
         cermResOwnerSubTypeFallingThresh based on the ERM notification
         direction indicated by the object cermNotifsDirection.
         If the cermNotifsDirection object value is 'up', the
         cermNotifsThresholdValue object would contain the value of
         the object cermResOwnerSubTypeRisingThresh. If the
         cermNotifsDirection object value is 'down', the
         cermNotifsThresholdValue object would contain the value of
         the object cermResOwnerSubTypeFallingThresh.

         The cermNotifsDirection object indicates whether it is
         an 'up' notification or a 'down' notification.

         The cermNotifsPolicyName object indicates name of the global
         resource policy which got violated. This object contains
         value of the cermPolicyName for the violated resource policy,
         in the cermConfigPolicyTable. If there is no associated
         resource policy name for the notification, then this object
         will contain zero-length string."
    ::= { ciscoErmMIBNotifs 1 }

ciscoErmLocalPolicyViolation NOTIFICATION-TYPE
    OBJECTS  { cermResOwnerName,
               cermResOwnerSubTypeName,
               cermResUserTypeName,
               cermResUserName,
               cermResUserOrGroupThreshFlag,
               cermNotifsThresholdIsUserGlob,
               cermNotifsThresholdSeverity,
               cermNotifsThresholdValue,
               cermNotifsDirection,
               cermNotifsPolicyName
    }
    STATUS  current
    DESCRIPTION
        "This notification event will be generated whenever a local
         resource policy is violated i.e. resource utilization exceeds
         the applied user local or per user global threshold limit
         for any resource owner sub-type <-> resource user relationship.

         The cermResOwnerName and cermResOwnerSubTypeName objects
         indicates the resource owner name and resource owner sub-type
         name for which an applied per user global or user local
         threshold value got violated.

         The cermResUserOrGroupThreshFlag object indicates whether
         the ERM notification is because of *resource user* threshold
         violation or *resource group* threshold violation.

         The cermNotifsThresholdIsUserGlob object indicates whether
         the notification belongs to Per User Global threshold
         violation or User Local threshold violation. This object
         contains the value of cermResUserOrGroupThreshIsUserGlob 
         corresponding to the threshold configuration which got
         violated.

         The cermNotifsThresholdValue object indicates the configured
         threshold limit which got violated. This object contains
         value of either cermResUserOrGroupRisingThresh or
         cermResUserOrGroupFallingThresh based on the ERM notification
         direction indicated by the object cermNotifsDirection. For
         the 'up' notification, this object would contain value of
         the object cermResUserOrGroupRisingThresh. For the 'down'
         notification, it would contain value of the object
         cermResUserOrGroupFallingThresh.

         The cermNotifsThresholdSeverity object indicates the
         configured threshold severity which got violated. This object
         contains value of the object cermResUserOrGroupThreshSeverity
         corresponding to the resource owner sub-type and resource user
         relationship.

         The cermNotifsDirection object indicates whether it is an
         'up' notification or a 'down' notification.

         The cermNotifsPolicyName object indicates name of the local
         resource policy which got violated. If there is no associated
         policy name for the notification, then this object will
         contain zero-length string."
    ::= { ciscoErmMIBNotifs 2 }

--
-- Conformance
--

ciscoErmMIBCompliances OBJECT IDENTIFIER ::=
                       { ciscoErmMIBConform 1 }

ciscoErmMIBGroups      OBJECT IDENTIFIER ::=
                       { ciscoErmMIBConform 2 }

ciscoErmMIBCompliance  MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for the ERM MIB module."
    MODULE  -- this module
            MANDATORY-GROUPS {
                ciscoErmResOwnerGroup,
                ciscoErmResUserTypeGroup,
                ciscoErmResUserGroup,
                ciscoErmResGroupGroup,
                ciscoErmResOwnerResUserOrGroupRelationGroup,
                ciscoErmResMonitorGroup,
                ciscoErmPolicyConfigGroup,
                ciscoErmResGroupConfigGroup,
                ciscoErmNotifObjectsGroup,
                ciscoErmNotifControlObjectsGroup,
                ciscoErmPolicyViolationNotifGroup
            }
    ::= { ciscoErmMIBCompliances 1 }

--
-- Units of Conformance
--

ciscoErmResOwnerGroup OBJECT-GROUP
    OBJECTS  {
        cermResOwnerName,
        cermResOwnerMeasurementUnit,
        cermResOwnerThreshIsConfigurable,
        cermResOwnerResUserCount,
        cermResOwnerResGroupCount,
        cermResOwnerSubTypeName,
        cermResOwnerSubTypeUsagePct,
        cermResOwnerSubTypeUsage,
        cermResOwnerSubTypeMaxUsage,
        cermResOwnerSubTypeGlobNotifSeverity,
        cermResOwnerSubTypeRisingThresh,
        cermResOwnerSubTypeRisingInterval,
        cermResOwnerSubTypeFallingThresh,
        cermResOwnerSubTypeFallingInterval
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information relevant to
         resource owner entity in the ERM framework."
    ::= { ciscoErmMIBGroups 1 }

ciscoErmResUserTypeGroup OBJECT-GROUP
    OBJECTS  {
        cermResUserTypeName,
        cermResUserTypeResOwnerCount,
        cermResUserTypeResUserCount,
        cermResUserTypeResGroupCount,
        cermResUserTypeResOwnerId
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information relevant to
         resource user type entity in the ERM framework."
    ::= { ciscoErmMIBGroups 2 }

ciscoErmResUserGroup OBJECT-GROUP
    OBJECTS  {
        cermResUserName,
        cermResUserPriority,
        cermResUserResGroupId
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information relevant to
         resource user entity in the ERM framework."
    ::= { ciscoErmMIBGroups 3 }

ciscoErmResGroupGroup OBJECT-GROUP
    OBJECTS  {
        cermResGroupName,
        cermResGroupUserInstanceCount,
        cermResGroupResUserId
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information relevant to
         resource group entity in the ERM framework."
    ::= { ciscoErmMIBGroups 4 }

ciscoErmResOwnerResUserOrGroupRelationGroup OBJECT-GROUP
    OBJECTS  {
        cermResUserOrGroupFlag,
        cermResUserOrGroupUsagePct,
        cermResUserOrGroupUsage,
        cermResUserOrGroupMaxUsage,
        cermResUserOrGroupNotifSeverity,
        cermResUserOrGroupGlobNotifSeverity,
        cermResUserOrGroupThreshFlag,
        cermResUserOrGroupRisingThresh,
        cermResUserOrGroupRisingInterval,
        cermResUserOrGroupFallingThresh,
        cermResUserOrGroupFallingInterval
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information relevant to
         resource owner sub-type <-> resource user/group relationship."
    ::= { ciscoErmMIBGroups 5 }

ciscoErmResMonitorGroup OBJECT-GROUP
    OBJECTS  {
        cermResMonitorName,
        cermResMonitorResPolicyName,
        cermResMonitorPolicyName
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information relevant to
         resource monitor entity in the ERM framework."
    ::= { ciscoErmMIBGroups 6 }

ciscoErmPolicyConfigGroup OBJECT-GROUP
    OBJECTS  {
        cermScalarsGlobalPolicyName,
        cermPolicyIsGlobal,
        cermPolicyUserTypeName,
        cermPolicyLoggingEnabled,
        cermPolicySnmpNotifEnabled,
        cermPolicyStorageType,
        cermPolicyRowStatus,
        cermPolicyRisingThreshold,
        cermPolicyRisingInterval,
        cermPolicyFallingThreshold,
        cermPolicyFallingInterval,
        cermPolicyResOwnerThreshStorageType,
        cermPolicyResOwnerThreshRowStatus,
        cermPolicyApplyPolicyName,
        cermPolicyApplyStorageType,
        cermPolicyApplyRowStatus
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing the ability to configure
         a resource policy and applying the resource policy to a
         resource group or resource user."
    ::= { ciscoErmMIBGroups 7 }

ciscoErmResGroupConfigGroup OBJECT-GROUP
    OBJECTS  {
        cermConfigResGroupUserTypeName,
        cermConfigResGroupStorageType,
        cermConfigResGroupRowStatus,
        cermConfigResGroupUserStorageType,
        cermConfigResGroupUserRowStatus
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing the ability to configure
         a resource group."
    ::= { ciscoErmMIBGroups 8 }

ciscoErmNotifControlObjectsGroup OBJECT-GROUP
    OBJECTS  {
        cermNotifsEnabled
    }
    STATUS  current
    DESCRIPTION
        "A collection of notification control objects."
    ::= { ciscoErmMIBGroups 9 }

ciscoErmNotifObjectsGroup OBJECT-GROUP
    OBJECTS  {
        cermNotifsThresholdSeverity,
        cermNotifsThresholdIsUserGlob,
        cermNotifsThresholdValue,
        cermNotifsDirection,
        cermNotifsPolicyName
    }
    STATUS  current
    DESCRIPTION
        "A collection of notification related objects."
    ::= { ciscoErmMIBGroups 10 }

ciscoErmPolicyViolationNotifGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        ciscoErmGlobalPolicyViolation,
        ciscoErmLocalPolicyViolation
    }
    STATUS  current
    DESCRIPTION
        "A collection of notifications relevant to policy violation."
    ::= { ciscoErmMIBGroups 11 }

END
