[VOL-4120] openonu-adapter-go: support command "voltctl device onuimage list <onu-id>"

Change-Id: If6bc1a94663c09881059b1f91d34944dccec52f3
diff --git a/internal/pkg/onuadaptercore/device_handler.go b/internal/pkg/onuadaptercore/device_handler.go
index af5cb57..ba969a1 100644
--- a/internal/pkg/onuadaptercore/device_handler.go
+++ b/internal/pkg/onuadaptercore/device_handler.go
@@ -1337,6 +1337,28 @@
 	}
 }
 
+func (dh *deviceHandler) getOnuImages(ctx context.Context) (*voltha.OnuImages, error) {
+
+	var onuImageStatus *OnuImageStatus
+
+	pDevEntry := dh.getOnuDeviceEntry(ctx, false)
+	if pDevEntry != nil {
+		onuImageStatus = NewOnuImageStatus(pDevEntry)
+		pDevEntry.mutexOnuImageStatus.Lock()
+		pDevEntry.pOnuImageStatus = onuImageStatus
+		pDevEntry.mutexOnuImageStatus.Unlock()
+
+	} else {
+		logger.Errorw(ctx, "No valid OnuDevice - aborting", log.Fields{"device-id": dh.deviceID})
+		return nil, fmt.Errorf("no-valid-OnuDevice-aborting")
+	}
+	images, err := onuImageStatus.getOnuImageStatus(ctx)
+	pDevEntry.mutexOnuImageStatus.Lock()
+	pDevEntry.pOnuImageStatus = nil
+	pDevEntry.mutexOnuImageStatus.Unlock()
+	return images, err
+}
+
 //  deviceHandler methods that implement the adapters interface requests## end #########
 // #####################################################################################
 
@@ -1919,6 +1941,11 @@
 	if pDevEntry.PDevOmciCC != nil {
 		pDevEntry.PDevOmciCC.CancelRequestMonitoring()
 	}
+	pDevEntry.mutexOnuImageStatus.RLock()
+	if pDevEntry.pOnuImageStatus != nil {
+		pDevEntry.pOnuImageStatus.CancelProcessing(ctx)
+	}
+	pDevEntry.mutexOnuImageStatus.RUnlock()
 
 	if includingMibSyncFsm {
 		pDevEntry.CancelProcessing(ctx)