Spectrum NRM_RunningFirmware attribute not populating for some device models.

Document ID : KB000045787
Last Modified Date : 19/09/2018
Show Technical Document Details
Issue:

We have several different device models where the Spectrum NRM_RunningFirmware attribute id 0x12de0 is not being populated. How can we get Spectrum to populate the NRM_RunningFirmware attribute?

Environment:
Spectrum 10.2.x
Cause:

Out of the box, there are 4 attributes involved with populating the NRM_RunningFirmware attribute:

  • sysDescr                                        attribute ID 0x10052 
  • NRM_RunningFirmware_Source attribute ID 0x12de4 
  • NRM_RunningFirmwareAttr       attribute ID  0x12de1 
  • NRM_RunningFirmwareFilters attribute ID 0x12de2 

The way it works is the default value of NRM_RunningFirmwareAttr is 0x10052 which is the attribute id for sysDescr. The NRM_RunningFirmwareFilters attribute contains a list of 14 regular expression filters that are applied to the value of the sysDescr attribute. For example, "(?<!h\/w)s\/?w\_?\s*Rev(?:ision)?:?\s*([^\s;,\n\r]+)". Spectrum starts at the top of this list and applies the filter to the value of sysDescr. If Spectrum gets a value after applying a filter, then Spectrum populates the NRM_RunningFirmware_Source attribute with the filter number that returned a value.

For example, if the 2nd filter in the list returned a value, then the value of NRM_RunningFirmware_Source will be set to 0x10052:2. It then populates NRM_RunningFirmwareAttr  with the value from the applied filter. 

The following is an example of a device where the NRM_RunningFirmwareAttr was populated by the first filter in the NRM_RunningFirmwareFilters attribute:

444077_1.png

Resolution:

For devices where the NRM_RunningFirmwareAttr is not populated, there are two possible ways to get Spectrum to populate it.

1. If you have a device where the NRM_RunningFirmware attribute is not being populated but the sysDesc does contain the firmware information, a new regexp can be added to the NRM_RunningFirmwareFilters attribute to find it. The change must be done using the Model Type Editor (MTE). For example, a Nortel router that has the following for the value of sysDesc:

ERS-8806 (7.2.20.0) 

Assuming "7.2.20.0" in the above sysDesc is the firmware version of the device, the following regexp can be added to the NRM_RunningFirmwareFilters attribute to populate the NRM_RunningFirmware attribute.

(^ERS)*([0-9]*[.][0-9]*[.][0-9]*[.][0-9]*)

2. If you have a device where the NRM_RunningFirmware attribute is not being populated and the sysDescr does not contain information about the firmware rev but there is another attribute that does, the NRM_RunningFirmwareAttr can be populated with this other attribute id in addition to the sysDesc attribute. The NRM_RunningFirmwareAttr is a list of attributes to test the filters against. This attribute can only be modified using the MTE. If this method is used, the NRM_RunningFirmwareFilters attribute may also need a new regexp to filter for and extract the firmware version information to populate the NRM_RunningFirmware attribute.

After making these changes using the MTE, a reconfigure of current models of this type must be done by right mouse clicking on the model and selecting Reconfiguration -> Reconfigure Model from the menu. Then check the value of the NRM_RunningFirmware attribute.