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?
Out of the box, there are 4 attributes involved with populating the NRM_RunningFirmware attribute:
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:
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:
Assuming "22.214.171.124" 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.
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 new attribute MUST be of type TEXT_STRING or OCTET_STRING and CANNOT be a list/table 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.