[VOL-4381] Fix missing device unlock in the core when invoking
some image request. Also fixes a unit test issue.

Change-Id: I8afa4b4cb641509340e912d4f14ea93815135f71
diff --git a/rw_core/core/device/agent_image.go b/rw_core/core/device/agent_image.go
index 0fda20e..2fa8dac 100644
--- a/rw_core/core/device/agent_image.go
+++ b/rw_core/core/device/agent_image.go
@@ -358,10 +358,10 @@
 	if err := agent.requestQueue.WaitForGreenLight(ctx); err != nil {
 		return nil, err
 	}
-	defer agent.requestQueue.RequestComplete()
 
 	device := agent.getDeviceReadOnlyWithoutLock()
 	if !agent.proceedWithRequest(device) {
+		agent.requestQueue.RequestComplete()
 		return nil, status.Errorf(codes.FailedPrecondition, "%s", "cannot complete operation as device deletion is in progress or reconciling is in progress/failed")
 	}
 
@@ -375,8 +375,10 @@
 				"device-type":      agent.deviceType,
 				"adapter-endpoint": device.AdapterEndpoint,
 			})
+		agent.requestQueue.RequestComplete()
 		return nil, err
 	}
+	agent.requestQueue.RequestComplete()
 	return client.GetImageDownloadStatus(ctx, &ic.ImageDownloadMessage{
 		Device: device,
 		Image:  img,
@@ -644,6 +646,7 @@
 	defer cancel()
 	subCtx = coreutils.WithRPCMetadataFromContext(subCtx, ctx)
 
+	agent.requestQueue.RequestComplete()
 	return client.GetOnuImageStatus(subCtx, request)
 }
 
@@ -715,7 +718,6 @@
 	subCtx = coreutils.WithRPCMetadataFromContext(subCtx, ctx)
 
 	agent.requestQueue.RequestComplete()
-
 	return client.AbortOnuImageUpgrade(subCtx, request)
 }
 
@@ -750,6 +752,7 @@
 	defer cancel()
 	subCtx = coreutils.WithRPCMetadataFromContext(subCtx, ctx)
 
+	agent.requestQueue.RequestComplete()
 	return client.CommitOnuImage(subCtx, request)
 }