VOL-3368 Added object+error pair for funtion within error handling. This patch include modification requested for omci_cc send functions.
Change-Id: I2a8ed3123f4a2f3a33ae7a418bd9d1dbabbf103d
diff --git a/internal/pkg/onuadaptercore/mib_sync.go b/internal/pkg/onuadaptercore/mib_sync.go
index 8ae5742..2191a75 100644
--- a/internal/pkg/onuadaptercore/mib_sync.go
+++ b/internal/pkg/onuadaptercore/mib_sync.go
@@ -97,9 +97,19 @@
func (oo *OnuDeviceEntry) enterGettingVendorAndSerialState(ctx context.Context, e *fsm.Event) {
logger.Debugw(ctx, "MibSync FSM", log.Fields{"Start getting VendorId and SerialNumber in State": e.FSM.Current(), "device-id": oo.deviceID})
requestedAttributes := me.AttributeValueMap{"VendorId": "", "SerialNumber": 0}
- meInstance := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.OnuGClassID, onugMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
+ meInstance, err := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.OnuGClassID, onugMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
//accept also nil as (error) return value for writing to LastTx
// - this avoids misinterpretation of new received OMCI messages
+ if err != nil {
+ logger.Errorw(ctx, "ONU-G get failed, aborting MibSync FSM", log.Fields{"device-id": oo.deviceID})
+ pMibUlFsm := oo.pMibUploadFsm
+ if pMibUlFsm != nil {
+ go func(a_pAFsm *AdapterFsm) {
+ _ = oo.pMibUploadFsm.pFsm.Event(ulEvResetMib)
+ }(pMibUlFsm)
+ }
+ return
+ }
oo.lastTxParamStruct.lastTxMessageType = omci.GetRequestType
oo.lastTxParamStruct.pLastTxMeInstance = meInstance
}
@@ -107,9 +117,19 @@
func (oo *OnuDeviceEntry) enterGettingEquipmentIDState(ctx context.Context, e *fsm.Event) {
logger.Debugw(ctx, "MibSync FSM", log.Fields{"Start getting EquipmentId in State": e.FSM.Current(), "device-id": oo.deviceID})
requestedAttributes := me.AttributeValueMap{"EquipmentId": ""}
- meInstance := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.Onu2GClassID, onu2gMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
+ meInstance, err := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.Onu2GClassID, onu2gMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
//accept also nil as (error) return value for writing to LastTx
// - this avoids misinterpretation of new received OMCI messages
+ if err != nil {
+ logger.Errorw(ctx, "ONU2-G get failed, aborting MibSync FSM!", log.Fields{"device-id": oo.deviceID})
+ pMibUlFsm := oo.pMibUploadFsm
+ if pMibUlFsm != nil {
+ go func(a_pAFsm *AdapterFsm) {
+ _ = oo.pMibUploadFsm.pFsm.Event(ulEvResetMib)
+ }(pMibUlFsm)
+ }
+ return
+ }
oo.lastTxParamStruct.lastTxMessageType = omci.GetRequestType
oo.lastTxParamStruct.pLastTxMeInstance = meInstance
}
@@ -117,9 +137,19 @@
func (oo *OnuDeviceEntry) enterGettingFirstSwVersionState(ctx context.Context, e *fsm.Event) {
logger.Debugw(ctx, "MibSync FSM", log.Fields{"Start getting IsActive and Version of first SW-image in State": e.FSM.Current(), "device-id": oo.deviceID})
requestedAttributes := me.AttributeValueMap{"IsCommitted": 0, "IsActive": 0, "Version": ""}
- meInstance := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.SoftwareImageClassID, firstSwImageMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
+ meInstance, err := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.SoftwareImageClassID, firstSwImageMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
//accept also nil as (error) return value for writing to LastTx
// - this avoids misinterpretation of new received OMCI messages
+ if err != nil {
+ logger.Errorw(ctx, "SoftwareImage get failed, aborting MibSync FSM", log.Fields{"device-id": oo.deviceID})
+ pMibUlFsm := oo.pMibUploadFsm
+ if pMibUlFsm != nil {
+ go func(a_pAFsm *AdapterFsm) {
+ _ = oo.pMibUploadFsm.pFsm.Event(ulEvResetMib)
+ }(pMibUlFsm)
+ }
+ return
+ }
oo.lastTxParamStruct.lastTxMessageType = omci.GetRequestType
oo.lastTxParamStruct.pLastTxMeInstance = meInstance
}
@@ -127,9 +157,19 @@
func (oo *OnuDeviceEntry) enterGettingSecondSwVersionState(ctx context.Context, e *fsm.Event) {
logger.Debugw(ctx, "MibSync FSM", log.Fields{"Start getting IsActive and Version of second SW-image in State": e.FSM.Current(), "device-id": oo.deviceID})
requestedAttributes := me.AttributeValueMap{"IsCommitted": 0, "IsActive": 0, "Version": ""}
- meInstance := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.SoftwareImageClassID, secondSwImageMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
+ meInstance, err := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.SoftwareImageClassID, secondSwImageMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
//accept also nil as (error) return value for writing to LastTx
// - this avoids misinterpretation of new received OMCI messages
+ if err != nil {
+ logger.Errorw(ctx, "SoftwareImage get failed, aborting MibSync FSM", log.Fields{"device-id": oo.deviceID})
+ pMibUlFsm := oo.pMibUploadFsm
+ if pMibUlFsm != nil {
+ go func(a_pAFsm *AdapterFsm) {
+ _ = oo.pMibUploadFsm.pFsm.Event(ulEvResetMib)
+ }(pMibUlFsm)
+ }
+ return
+ }
oo.lastTxParamStruct.lastTxMessageType = omci.GetRequestType
oo.lastTxParamStruct.pLastTxMeInstance = meInstance
}
@@ -137,9 +177,19 @@
func (oo *OnuDeviceEntry) enterGettingMacAddressState(ctx context.Context, e *fsm.Event) {
logger.Debugw(ctx, "MibSync FSM", log.Fields{"Start getting MacAddress in State": e.FSM.Current(), "device-id": oo.deviceID})
requestedAttributes := me.AttributeValueMap{"MacAddress": ""}
- meInstance := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.IpHostConfigDataClassID, ipHostConfigDataMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
+ meInstance, err := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx), me.IpHostConfigDataClassID, ipHostConfigDataMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
//accept also nil as (error) return value for writing to LastTx
// - this avoids misinterpretation of new received OMCI messages
+ if err != nil {
+ logger.Errorw(ctx, "IpHostConfigData get failed, aborting MibSync FSM", log.Fields{"device-id": oo.deviceID})
+ pMibUlFsm := oo.pMibUploadFsm
+ if pMibUlFsm != nil {
+ go func(a_pAFsm *AdapterFsm) {
+ _ = oo.pMibUploadFsm.pFsm.Event(ulEvResetMib)
+ }(pMibUlFsm)
+ }
+ return
+ }
oo.lastTxParamStruct.lastTxMessageType = omci.GetRequestType
oo.lastTxParamStruct.pLastTxMeInstance = meInstance
}
@@ -383,8 +433,13 @@
if oo.lastTxParamStruct.lastTxMessageType == omci.GetRequestType && oo.lastTxParamStruct.repeatCount == 0 {
logger.Debugw(ctx, "MibSync FSM - repeat MdsGetRequest (updated SequenceNumber)", log.Fields{"device-id": oo.deviceID})
requestedAttributes := me.AttributeValueMap{"MibDataSync": ""}
- _ = oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx),
+ _, err := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx),
me.OnuDataClassID, onuDataMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
+ if err != nil {
+ logger.Errorw(ctx, "ONUData get failed, aborting MibSync", log.Fields{"device-id": oo.deviceID})
+ _ = oo.pMibUploadFsm.pFsm.Event(ulEvResetMib)
+ return
+ }
//TODO: needs extra handling of timeouts
oo.lastTxParamStruct.repeatCount = 1
return
@@ -788,10 +843,20 @@
func (oo *OnuDeviceEntry) requestMdsValue(ctx context.Context) {
logger.Debugw(ctx, "Request MDS value", log.Fields{"device-id": oo.deviceID})
requestedAttributes := me.AttributeValueMap{"MibDataSync": ""}
- meInstance := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx),
+ meInstance, err := oo.PDevOmciCC.sendGetMe(log.WithSpanFromContext(context.TODO(), ctx),
me.OnuDataClassID, onuDataMeID, requestedAttributes, oo.pOpenOnuAc.omciTimeout, true, oo.pMibUploadFsm.commChan)
//accept also nil as (error) return value for writing to LastTx
// - this avoids misinterpretation of new received OMCI messages
+ if err != nil {
+ logger.Errorw(ctx, "ONUData get failed, aborting MibSync FSM!", log.Fields{"device-id": oo.deviceID})
+ pMibUlFsm := oo.pMibUploadFsm
+ if pMibUlFsm != nil {
+ go func(a_pAFsm *AdapterFsm) {
+ _ = oo.pMibUploadFsm.pFsm.Event(ulEvResetMib)
+ }(pMibUlFsm)
+ }
+ return
+ }
oo.lastTxParamStruct.lastTxMessageType = omci.GetRequestType
oo.lastTxParamStruct.pLastTxMeInstance = meInstance
oo.lastTxParamStruct.repeatCount = 0