VOL-4147
Add support of setting operation state to RECONCILE_FAILED from adapters

Change-Id: I419517fc741abb5d625862740c91e291f02df89f
diff --git a/rw_core/core/device/agent_image.go b/rw_core/core/device/agent_image.go
index 075e2bf..fc56c02 100644
--- a/rw_core/core/device/agent_image.go
+++ b/rw_core/core/device/agent_image.go
@@ -44,7 +44,7 @@
 	}
 	if !agent.proceedWithRequestNoLock() {
 		agent.requestQueue.RequestComplete()
-		return nil, status.Errorf(codes.FailedPrecondition, "deviceId:%s, Device reconciling or deletion is in progress.",
+		return nil, status.Errorf(codes.FailedPrecondition, "deviceId:%s, Cannot complete operation as Device deletion/reconciling is in progress or reconcile failed.",
 			agent.deviceID)
 	}
 
@@ -107,7 +107,7 @@
 
 	if !agent.proceedWithRequestNoLock() {
 		agent.requestQueue.RequestComplete()
-		return nil, status.Errorf(codes.FailedPrecondition, "deviceId:%s, Device reconciling or deletion is in progress.",
+		return nil, status.Errorf(codes.FailedPrecondition, "deviceId:%s, Cannot complete operation as Device deletion/reconciling is in progress or reconcile failed.",
 			agent.deviceID)
 	}
 
@@ -151,7 +151,7 @@
 
 	if !agent.proceedWithRequestNoLock() {
 		agent.requestQueue.RequestComplete()
-		return nil, status.Errorf(codes.FailedPrecondition, "deviceId:%s, Device reconciling or deletion is in progress.",
+		return nil, status.Errorf(codes.FailedPrecondition, "deviceId:%s, Cannot complete operation as Device deletion/reconciling is in progress or reconcile failed.",
 			agent.deviceID)
 	}
 
@@ -270,7 +270,7 @@
 
 	if !agent.proceedWithRequestNoLock() {
 		agent.requestQueue.RequestComplete()
-		return status.Errorf(codes.FailedPrecondition, "deviceId:%s, Device reconciling or deletion is in progress.",
+		return status.Errorf(codes.FailedPrecondition, "deviceId:%s, Cannot complete operation as Device deletion/reconciling is in progress or reconcile failed.",
 			agent.deviceID)
 	}
 
@@ -333,6 +333,8 @@
 	}
 	if !agent.proceedWithRequestNoLock() {
 		agent.requestQueue.RequestComplete()
+		logger.Errorw(subCtx, "Cannot complete operation as Device deletion/reconciling is in progress or reconcile failed.",
+			log.Fields{"rpc": rpc, "device-id": agent.deviceID})
 		return
 	}
 	if res, ok := response.(error); ok {
@@ -383,6 +385,8 @@
 	}
 	if !agent.proceedWithRequestNoLock() {
 		agent.requestQueue.RequestComplete()
+		logger.Errorw(ctx, "Cannot complete operation as Device deletion/reconciling is in progress or reconcile failed.",
+			log.Fields{"rpc": rpc, "device-id": agent.deviceID})
 		return
 	}
 	logger.Infow(ctx, "rpc-successful", log.Fields{"rpc": rpc, "device-id": agent.deviceID, "response": response, "args": reqArgs})