[VOL-3538] Store unsupported OMCI-MEs into DB
Change-Id: I8879313c1321fff9298854a4296a57eeb7b84919
diff --git a/internal/pkg/mib/mib_sync.go b/internal/pkg/mib/mib_sync.go
index f36cf9d..e5e047d 100755
--- a/internal/pkg/mib/mib_sync.go
+++ b/internal/pkg/mib/mib_sync.go
@@ -542,16 +542,14 @@
return
}
meName := msgObj.ReportedME.GetName()
- if meName == "UnknownItuG988ManagedEntity" || meName == "UnknownVendorSpecificManagedEntity" {
- logger.Debugw(ctx, "MibUploadNextResponse Data for unknown ME received - temporary workaround is to ignore it!",
- log.Fields{"device-id": oo.deviceID, "data-fields": msgObj, "meName": meName})
- } else {
- logger.Debugw(ctx, "MibUploadNextResponse Data for:",
- log.Fields{"device-id": oo.deviceID, "meName": meName, "data-fields": msgObj})
- meClassID := msgObj.ReportedME.GetClassID()
- meEntityID := msgObj.ReportedME.GetEntityID()
- meAttributes := msgObj.ReportedME.GetAttributeValueMap()
+ meClassID := msgObj.ReportedME.GetClassID()
+ meEntityID := msgObj.ReportedME.GetEntityID()
+ logger.Debugw(ctx, "MibUploadNextResponse Data for:", log.Fields{"device-id": oo.deviceID, "meName": meName, "data-fields": msgObj})
+
+ if meName == devdb.CUnknownItuG988ManagedEntity || meName == devdb.CUnknownVendorSpecificManagedEntity {
+ oo.pOnuDB.PutUnknownMe(ctx, devdb.UnknownMeName(meName), meClassID, meEntityID, msgObj.ReportedME.GetAttributeMask(), msgObj.BaseLayer.Payload)
+ } else {
//with relaxed decoding set in the OMCI-LIB we have the chance to detect if there are some unknown attributes appended which we cannot decode
if unknownAttrLayer := (*msg.OmciPacket).Layer(omci.LayerTypeUnknownAttributes); unknownAttrLayer != nil {
logger.Warnw(ctx, "MibUploadNextResponse contains unknown attributes", log.Fields{"device-id": oo.deviceID})
@@ -572,8 +570,7 @@
logger.Errorw(ctx, "unknownAttrLayer could not be decoded", log.Fields{"device-id": oo.deviceID})
}
}
-
- oo.pOnuDB.PutMe(ctx, meClassID, meEntityID, meAttributes)
+ oo.pOnuDB.PutMe(ctx, meClassID, meEntityID, msgObj.ReportedME.GetAttributeValueMap())
}
if oo.PDevOmciCC.UploadSequNo < oo.PDevOmciCC.UploadNoOfCmds {
_ = oo.PDevOmciCC.SendMibUploadNext(log.WithSpanFromContext(context.TODO(), ctx), oo.baseDeviceHandler.GetOmciTimeout(), true)
@@ -934,6 +931,10 @@
secondLevelMap["ClassId"] = classID
templateMap[classID] = secondLevelMap
}
+ unknownMeMap := oo.pOnuDB.UnknownMeDb
+ for unknownMeMapKey := range unknownMeMap {
+ templateMap[string(unknownMeMapKey)] = unknownMeMap[unknownMeMapKey]
+ }
mibTemplate, err := json.Marshal(&templateMap)
if err != nil {
logger.Errorw(ctx, "MibSync - MibTemplate - Failed to marshal mibTemplate", log.Fields{"error": err, "device-id": oo.deviceID})