[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)