[VOL-3655] Hardening: Cope with vendor-specific error-results of ONUs due to unsupported OMCI-MEs
[VOL-3642] Optimize logging with level "info" used for scale test
plus minor refactorizations
Change-Id: Ib2127048dc11bba55632494fb8aa77355b958900
diff --git a/internal/pkg/onuadaptercore/mib_sync.go b/internal/pkg/onuadaptercore/mib_sync.go
index 90dd7bb..7d52b36 100644
--- a/internal/pkg/onuadaptercore/mib_sync.go
+++ b/internal/pkg/onuadaptercore/mib_sync.go
@@ -446,26 +446,10 @@
return nil
}
}
- } else if msgObj.Result == me.UnknownInstance {
- logger.Debugw("MibSync FSM - Unknown Instance in GetResponse Data", log.Fields{"device-id": oo.deviceID, "data-fields": msgObj})
- entityID := oo.PDevOmciCC.pLastTxMeInstance.GetEntityID()
- if msgObj.EntityClass == oo.PDevOmciCC.pLastTxMeInstance.GetClassID() && msgObj.EntityInstance == entityID {
- meInstance := oo.PDevOmciCC.pLastTxMeInstance.GetName()
- switch meInstance {
- case "IpHostConfigData":
- logger.Debugf("MibSync FSM - Unknown Instance for IpHostConfigData received - ONU doesn't support ME - fill macAddress with zeros",
- log.Fields{"device-id": oo.deviceID, "data-fields": msgObj})
- oo.macAddress = cEmptyMacAddrString
- // trigger retrieval of mib template
- _ = oo.pMibUploadFsm.pFsm.Event(ulEvGetMibTemplate)
- return nil
- default:
- logger.Debugf("MibSync FSM - Unknown Instance in GetResponse Data for %s", log.Fields{"device-id": oo.deviceID, "data-fields": msgObj}, meInstance)
- }
- }
} else {
- logger.Errorw("mibSync FSM - Omci GetResponse Error", log.Fields{"Error": msgObj.Result, "device-id": oo.deviceID})
- err = fmt.Errorf("mibSync FSM - Omci GetResponse Error: %s", oo.deviceID)
+ if err = oo.handleOmciGetResponseErrors(msgObj); err == nil {
+ return nil
+ }
}
logger.Info("MibSync Msg", log.Fields{"Stopped handling of MibSyncChan for device-id": oo.deviceID})
_ = oo.pMibUploadFsm.pFsm.Event(ulEvStop)
@@ -496,6 +480,34 @@
}
}
+func (oo *OnuDeviceEntry) handleOmciGetResponseErrors(msgObj *omci.GetResponse) error {
+ var err error = nil
+ logger.Debugf("MibSync FSM - erroneous result in GetResponse Data: %s", log.Fields{"device-id": oo.deviceID, "data-fields": msgObj}, msgObj.Result)
+ // Up to now the following erroneous results have been seen for different ONU-types to indicate an unsupported ME
+ if msgObj.Result == me.UnknownInstance || msgObj.Result == me.UnknownEntity || msgObj.Result == me.ProcessingError || msgObj.Result == me.NotSupported {
+ entityID := oo.PDevOmciCC.pLastTxMeInstance.GetEntityID()
+ if msgObj.EntityClass == oo.PDevOmciCC.pLastTxMeInstance.GetClassID() && msgObj.EntityInstance == entityID {
+ meInstance := oo.PDevOmciCC.pLastTxMeInstance.GetName()
+ switch meInstance {
+ case "IpHostConfigData":
+ logger.Debugw("MibSync FSM - erroneous result for IpHostConfigData received - ONU doesn't support ME - fill macAddress with zeros",
+ log.Fields{"device-id": oo.deviceID, "data-fields": msgObj})
+ oo.macAddress = cEmptyMacAddrString
+ // trigger retrieval of mib template
+ _ = oo.pMibUploadFsm.pFsm.Event(ulEvGetMibTemplate)
+ return nil
+ default:
+ logger.Warnf("MibSync FSM - erroneous result for %s received - no exceptional treatment defined", log.Fields{"device-id": oo.deviceID, "data-fields": msgObj}, meInstance)
+ err = fmt.Errorf("erroneous result for %s received - no exceptional treatment defined: %s", meInstance, oo.deviceID)
+ }
+ }
+ } else {
+ logger.Errorf("MibSync FSM - erroneous result in GetResponse Data: %s", log.Fields{"device-id": oo.deviceID, "data-fields": msgObj}, msgObj.Result)
+ err = fmt.Errorf("erroneous result in GetResponse Data: %s - %s", msgObj.Result, oo.deviceID)
+ }
+ return err
+}
+
func isSupportedClassID(meClassID me.ClassID) bool {
for _, v := range supportedClassIds {
if v == meClassID {