[VOL-4523] ONU SW download fails if the already present stdby image is NOT valid
Change-Id: Ie2c9e96476355af9828f9a8e6fd4256837366573
diff --git a/internal/pkg/swupg/onu_image_status.go b/internal/pkg/swupg/onu_image_status.go
index 0da9e0b..eb4021f 100755
--- a/internal/pkg/swupg/onu_image_status.go
+++ b/internal/pkg/swupg/onu_image_status.go
@@ -109,7 +109,6 @@
images.Items = append(images.Items, &image)
}
logger.Debugw(ctx, "images of the ONU", log.Fields{"images": images})
- oo.updateOnuSwImageIndications(ctx, &images)
oo.updateOnuSwImagePersistentData(ctx)
return &images, nil
}
@@ -214,15 +213,16 @@
meAttributes := msgObj.Attributes
logger.Debugw(ctx, "processAttributesReceived", log.Fields{"attributes": meAttributes, "device-id": oo.deviceID})
- for k := range oo.requestedAttributes {
-
- if msgObj.Result != me.Success && k != cImgProductCode && k != cImgImageHash {
+ if _, ok := oo.requestedAttributes[cImgVersion]; ok {
+ if msgObj.Result != me.Success {
logger.Errorw(ctx, "processAttributesReceived retrieval of mandatory attributes failed",
log.Fields{"device-id": oo.deviceID})
return fmt.Errorf("process-image-status-response-error")
}
+ oo.pDevEntry.HandleSwImageIndications(ctx, msgObj.EntityInstance, meAttributes)
+ }
+ for k := range oo.requestedAttributes {
switch k {
-
// mandatory attributes
case cImgIsCommitted:
if meAttributes[cImgIsCommitted].(uint8) == cmn.SwIsCommitted {
@@ -270,50 +270,6 @@
return nil
}
-func (oo *OnuImageStatus) updateOnuSwImageIndications(ctx context.Context, images *voltha.OnuImages) {
-
- oo.pDevEntry.LockMutexOnuSwImageIndications()
- onuSwImageIndications := oo.pDevEntry.GetOnuSwImageIndications()
- validActiveImageFound := false
- for i := cmn.FirstSwImageMeID; i <= cmn.SecondSwImageMeID; i++ {
- if images.Items[i].IsActive && images.Items[i].IsValid {
- onuSwImageIndications.ActiveEntityEntry.EntityID = uint16(i)
- onuSwImageIndications.ActiveEntityEntry.Valid = images.Items[i].IsValid
- onuSwImageIndications.ActiveEntityEntry.Version = images.Items[i].Version
- if images.Items[i].IsCommited {
- onuSwImageIndications.ActiveEntityEntry.IsCommitted = cmn.SwIsCommitted
- } else {
- onuSwImageIndications.ActiveEntityEntry.IsCommitted = cmn.SwIsUncommitted
- }
- validActiveImageFound = true
- break
- }
- }
- if !validActiveImageFound {
- onuSwImageIndications.ActiveEntityEntry.Valid = false
- }
- validInactiveImageFound := false
- for i := cmn.FirstSwImageMeID; i <= cmn.SecondSwImageMeID; i++ {
- if !images.Items[i].IsActive && images.Items[i].IsValid {
- onuSwImageIndications.InActiveEntityEntry.EntityID = uint16(i)
- onuSwImageIndications.InActiveEntityEntry.Valid = images.Items[i].IsValid
- onuSwImageIndications.InActiveEntityEntry.Version = images.Items[i].Version
- if images.Items[i].IsCommited {
- onuSwImageIndications.InActiveEntityEntry.IsCommitted = cmn.SwIsCommitted
- } else {
- onuSwImageIndications.InActiveEntityEntry.IsCommitted = cmn.SwIsUncommitted
- }
- validInactiveImageFound = true
- break
- }
- }
- if !validInactiveImageFound {
- onuSwImageIndications.InActiveEntityEntry.Valid = false
- }
- oo.pDevEntry.SetOnuSwImageIndications(onuSwImageIndications)
- oo.pDevEntry.UnlockMutexOnuSwImageIndications()
-}
-
func (oo *OnuImageStatus) updateOnuSwImagePersistentData(ctx context.Context) {
activeImageVersion := oo.pDevEntry.GetActiveImageVersion(ctx)