[VOL-4445] Correct error type to proceed with deletion with half route

ALso moving deletion of logical device and meters to correct place in transitions.go

Change-Id: I91242ae9611792a1aeb7ac9ebd6116a5fe820392
diff --git a/rw_core/core/device/manager_state_callback.go b/rw_core/core/device/manager_state_callback.go
index c0227dc..9990ef6 100644
--- a/rw_core/core/device/manager_state_callback.go
+++ b/rw_core/core/device/manager_state_callback.go
@@ -80,6 +80,16 @@
 // RunPostDeviceDelete removes any reference of this device
 func (dMgr *Manager) RunPostDeviceDelete(ctx context.Context, cDevice *voltha.Device) error {
 	logger.Infow(ctx, "run-post-device-delete", log.Fields{"device-id": cDevice.Id})
+	//deleting the logical device
+	logger.Debugw(ctx, "delete-logical-device", log.Fields{"device-id": cDevice.Id})
+	if dMgr.logicalDeviceMgr != nil && cDevice.Root {
+		if err := dMgr.logicalDeviceMgr.deleteLogicalDevice(ctx, cDevice); err != nil {
+			logger.Warnw(ctx, "failure-delete-logical-device", log.Fields{"device-id": cDevice.Id, "error": err.Error()})
+		}
+		// Remove the logical device Id from the parent device
+		logicalID := ""
+		dMgr.UpdateDeviceAttribute(ctx, cDevice.Id, "ParentId", logicalID)
+	}
 	if agent := dMgr.getDeviceAgent(ctx, cDevice.Id); agent != nil {
 		logger.Debugw(ctx, "invoking-delete-device-and-ports", log.Fields{"device-id": cDevice.Id})
 		//delete ports
@@ -158,7 +168,7 @@
 	logger.Debugw(ctx, "delete-all-logical-device-meters", log.Fields{"device-id": cDevice.Id})
 	if err := dMgr.logicalDeviceMgr.deleteAllLogicalMeters(ctx, cDevice.Id); err != nil {
 		// Just log the error.   The logical device or port may already have been deleted before this callback is invoked.
-		logger.Warnw(ctx, "delete-logical-ports-error", log.Fields{"device-id": cDevice.Id, "error": err})
+		logger.Warnw(ctx, "delete-logical-meters-error", log.Fields{"device-id": cDevice.Id, "error": err})
 	}
 	return nil