Subject: Alarm #40 - Resource Identification

From: "Sharon Chisholm" <[email-masked]>
Date: Mon, 24 Jun 2002 21:44:23 -0400

hi

I did a rather serious "oops" to my computer, so I wasn't able
to send this out sooner.

Alarm #40 Identify where to find resource identifier in notification
  Option 1) Document how knowledge of the given notifications is assumed
  Option 2) Add Sharon's suggestion which allows raise/clear correlation 
            in most cases
  Option 3) Add Randy's suggestion which allows algorithmic determination
            of resourceId from notification varbinds in most cases.

Solution: Option 3)

Add two new objects which can be used both by the agent to calculate the
resource ID and by the manager to determine when alarms are against
the same resource.

   alarmModelVarbindSubtree  OBJECT-TYPE
      SYNTAX  OBJECT IDENTIFIER
      MAX-ACCESS   read-create
      STATUS       current
      DESCRIPTION
        "The name portion of each VarBind in the notification,
         in order, is compared to the value of this object.
         If the name is equal to or a subtree of the value
         of this object, for purposes of computing the value
         of AlarmActiveResourceID the 'prefix' will be the
         matching portion, and the 'indexes' will be any
         remainder.  The examination of varbinds ends with
         the first match.
        "
      DEFVAL { {0 0} }
      ::= { whatever }

   alarmModelResourcePrefix  OBJECT-TYPE
      SYNTAX  OBJECT IDENTIFIER
      MAX-ACCESS   read-create
      STATUS       current
      DESCRIPTION
        "The value of AlarmActiveResourceID is computed
         by appending any indexes extracted in accordance
         with the description of alarmModelVarbindSubtree
         onto the value of this object.  If this object's
         value is 0.0, then the 'prefix' extracted is used
         instead.
        "
      DEFVAL { {0 0} }
      ::= { whatever }

Three concrete examples:

1) if I receive an authenticationFailure, I'd like the
   resource to be 1.3.6.1.6.3.15.1.1, so I configure:
        alarmModelVarbindSubtree = 0.0
        alarmModelResourcePrefix = 1.3.6.1.6.3.15.1.1

2) if I receive a linkDown that contains SDLC physicalFailures
   statistics, I'd like to have my alarm refer to the right ifEntry:
        alarmModelVarbindSubtree = 1.3.6.1.2.1.41.1.1.3.1.1
        alarmModelResourcePrefix = 1.3.6.1.2.1.2.2.1.1

3) if the first varbind is always going to point to the
   right thing, then I just:
        alarmModelVarbindSubtree = 0.0
        alarmModelResourcePrefix = 0.0

Sharon's attempt at pseudo code:

  if ( alarmModelResourcePrefix == 0.0 )
     resourceId = fullExtractedFirstMatch(varbinds,alarmModeVarbindSubtree)
  else {
     resourceId = alarmModelResoucePrefix + 
 
extractInstanceFromFirstMatch(varbinds,alarmModelVarbindSubree)
  }
Sharon Chisholm
Preside Management
Nortel Networks
Ottawa, Ontario