VOL-4277 onu-adapter should change device's operational-state to FAILED if EnableDevice fails in adapter.

Change-Id: I71e34e1f3efd322ab2e06073dab9fe60e445dbd7
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 09b04ee..a6bba99 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -2356,6 +2356,17 @@
 	}
 }
 
+func (dh *deviceHandler) processUniEnableStateFailedEvent(ctx context.Context, devEvent cmn.OnuDeviceEvent) {
+	logger.Debugw(ctx, "DeviceStateUpdate upon re-enable failure. ", log.Fields{
+		"OperStatus": voltha.OperStatus_FAILED, "device-id": dh.DeviceID})
+	if err := dh.updateDeviceStateInCore(ctx, &ic.DeviceStateFilter{
+		DeviceId:   dh.DeviceID,
+		OperStatus: voltha.OperStatus_FAILED,
+	}); err != nil {
+		logger.Errorw(ctx, "error-updating-device-state", log.Fields{"device-id": dh.DeviceID, "error": err})
+	}
+}
+
 func (dh *deviceHandler) processOmciAniConfigDoneEvent(ctx context.Context, devEvent cmn.OnuDeviceEvent) {
 	if devEvent == cmn.OmciAniConfigDone {
 		logger.Debugw(ctx, "OmciAniConfigDone event received", log.Fields{"device-id": dh.DeviceID})
@@ -2436,6 +2447,10 @@
 		{
 			dh.processUniEnableStateDoneEvent(ctx, devEvent)
 		}
+	case cmn.UniEnableStateFailed:
+		{
+			dh.processUniEnableStateFailedEvent(ctx, devEvent)
+		}
 	case cmn.UniDisableStateDone:
 		{
 			dh.processUniDisableStateDoneEvent(ctx, devEvent)