VOL-3444 Handling of ONT Activation Failure and generation of an alarm

Change-Id: Ibb931634616722f00b930bafaab84bdd67459192
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 3eb43fe..0dfb781 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -1274,6 +1274,11 @@
 		dh.onus.Store(onuKey, NewOnuDevice(onuDevice.Id, onuDevice.Type, onuDevice.SerialNumber, onuInd.GetOnuId(), onuInd.GetIntfId(), onuDevice.ProxyAddress.DeviceId, false))
 
 	}
+	if onuInd.OperState == "down" && onuInd.FailReason != oop.OnuIndication_ONU_ACTIVATION_FAIL_REASON_NONE {
+		if err := dh.eventMgr.onuActivationIndication(ctx, onuActivationFailEvent, onuInd, dh.device.Id, time.Now().UnixNano()); err != nil {
+			logger.Warnw(ctx, "onu-activation-indication-reporting-failed", log.Fields{"error": err})
+		}
+	}
 	if err := dh.updateOnuStates(ctx, onuDevice, onuInd); err != nil {
 		return olterrors.NewErrCommunication("state-update-failed", errFields, err)
 	}