blob: a44d63933aff24af4a89bc58965948984737569e [file] [log] [blame]
Devmalya Paulfb990a52019-07-09 10:01:49 -04001/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Scott Bakerdbd960e2020-02-28 08:57:51 -080017// Package core provides APIs for the openOLT adapter
18package core
Devmalya Paulfb990a52019-07-09 10:01:49 -040019
20import (
kesavand39e0aa32020-01-28 20:58:50 -050021 ctx "context"
Devmalya Paulfb990a52019-07-09 10:01:49 -040022 "fmt"
Naga Manjunath9546b912019-11-28 20:56:20 +053023 "strconv"
Naga Manjunatha8dc9372019-10-31 23:01:18 +053024
Esin Karamanccb714b2019-11-29 15:02:06 +000025 "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
26 "github.com/opencord/voltha-lib-go/v3/pkg/log"
Thomas Lee S94109f12020-03-03 16:39:29 +053027 "github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
kesavand39e0aa32020-01-28 20:58:50 -050028 "github.com/opencord/voltha-protos/v3/go/common"
Esin Karamanccb714b2019-11-29 15:02:06 +000029 oop "github.com/opencord/voltha-protos/v3/go/openolt"
30 "github.com/opencord/voltha-protos/v3/go/voltha"
Devmalya Paulfb990a52019-07-09 10:01:49 -040031)
32
33const (
Devmalya Paul41a762d2020-03-01 18:56:54 -050034 onuDiscoveryEvent = "ONU_DISCOVERY"
35 onuLosEvent = "ONU_LOSS_OF_SIGNAL"
36 onuLobEvent = "ONU_LOSS_OF_BURST"
37 onuLopcMissEvent = "ONU_LOPC_MISS"
38 onuLopcMicErrorEvent = "ONU_LOPC_MIC_ERROR"
39 oltLosEvent = "OLT_LOSS_OF_SIGNAL"
40 oltIndicationDown = "OLT_DOWN_INDICATION"
41 onuDyingGaspEvent = "ONU_DYING_GASP"
42 onuSignalsFailEvent = "ONU_SIGNALS_FAIL"
43 onuStartupFailEvent = "ONU_STARTUP_FAIL"
44 onuSignalDegradeEvent = "ONU_SIGNAL_DEGRADE"
45 onuDriftOfWindowEvent = "ONU_DRIFT_OF_WINDOW"
46 onuActivationFailEvent = "ONU_ACTIVATION_FAIL"
47 onuProcessingErrorEvent = "ONU_PROCESSING_ERROR"
48 onuTiwiEvent = "ONU_TRANSMISSION_WARNING"
49 onuLossOmciEvent = "ONU_LOSS_OF_OMCI_CHANNEL"
50 onuLossOfKeySyncEvent = "ONU_LOSS_OF_KEY_SYNC"
51 onuLossOfFrameEvent = "ONU_LOSS_OF_FRAME"
52 onuLossOfPloamEvent = "ONU_LOSS_OF_PLOAM"
53 ponIntfDownIndiction = "OLT_PON_INTERFACE_DOWN"
54 onuDeactivationFailureEvent = "ONU_DEACTIVATION_FAILURE"
55 onuRemoteDefectIndication = "ONU_REMOTE_DEFECT"
56 onuLossOfGEMChannelDelineationEvent = "ONU_LOSS_OF_GEM_CHANNEL_DELINEATION"
57 onuPhysicalEquipmentErrorEvent = "ONU_PHYSICAL_EQUIPMENT_ERROR"
58 onuLossOfAcknowledgementEvent = "ONU_LOSS_OF_ACKNOWLEDGEMENT"
Devmalya Paulfb990a52019-07-09 10:01:49 -040059)
60
61const (
62 pon = voltha.EventSubCategory_PON
63 olt = voltha.EventSubCategory_OLT
64 ont = voltha.EventSubCategory_ONT
65 onu = voltha.EventSubCategory_ONU
66 nni = voltha.EventSubCategory_NNI
67 service = voltha.EventCategory_SERVICE
68 security = voltha.EventCategory_SECURITY
69 equipment = voltha.EventCategory_EQUIPMENT
70 processing = voltha.EventCategory_PROCESSING
71 environment = voltha.EventCategory_ENVIRONMENT
72 communication = voltha.EventCategory_COMMUNICATION
73)
74
Naga Manjunath9546b912019-11-28 20:56:20 +053075const (
76 // statusCheckOn represents status check On
77 statusCheckOn = "on"
78 // statusCheckOff represents status check Off
79 statusCheckOff = "off"
80 // operationStateUp represents operation state Up
81 operationStateUp = "up"
82 // operationStateDown represents operation state Down
83 operationStateDown = "down"
84 // base10 represents base 10 conversion
85 base10 = 10
86)
87
Devmalya Paulfb990a52019-07-09 10:01:49 -040088// OpenOltEventMgr struct contains
89type OpenOltEventMgr struct {
kdarapu381c6902019-07-31 18:23:16 +053090 eventProxy adapterif.EventProxy
Devmalya Paul90ca3012019-09-02 21:55:45 -040091 handler *DeviceHandler
Devmalya Paulfb990a52019-07-09 10:01:49 -040092}
93
94// NewEventMgr is a Function to get a new event manager struct for the OpenOLT to process and publish OpenOLT event
Devmalya Paul90ca3012019-09-02 21:55:45 -040095func NewEventMgr(eventProxy adapterif.EventProxy, handler *DeviceHandler) *OpenOltEventMgr {
Devmalya Paulfb990a52019-07-09 10:01:49 -040096 var em OpenOltEventMgr
97 em.eventProxy = eventProxy
Devmalya Paul90ca3012019-09-02 21:55:45 -040098 em.handler = handler
Devmalya Paulfb990a52019-07-09 10:01:49 -040099 return &em
100}
101
102// ProcessEvents is function to process and publish OpenOLT event
Devmalya Paul41a762d2020-03-01 18:56:54 -0500103// nolint: gocyclo
David K. Bainbridge794735f2020-02-11 21:01:37 -0800104func (em *OpenOltEventMgr) ProcessEvents(alarmInd *oop.AlarmIndication, deviceID string, raisedTs int64) error {
Naga Manjunath9546b912019-11-28 20:56:20 +0530105 var err error
Devmalya Paulfb990a52019-07-09 10:01:49 -0400106 switch alarmInd.Data.(type) {
107 case *oop.AlarmIndication_LosInd:
108 log.Infow("Received LOS indication", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530109 err = em.oltLosIndication(alarmInd.GetLosInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400110 case *oop.AlarmIndication_OnuAlarmInd:
111 log.Infow("Received onu alarm indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530112 err = em.onuAlarmIndication(alarmInd.GetOnuAlarmInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400113 case *oop.AlarmIndication_DyingGaspInd:
114 log.Infow("Received dying gasp indication", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530115 err = em.onuDyingGaspIndication(alarmInd.GetDyingGaspInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400116 case *oop.AlarmIndication_OnuActivationFailInd:
117 log.Infow("Received onu activation fail indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530118 err = em.onuActivationFailIndication(alarmInd.GetOnuActivationFailInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400119 case *oop.AlarmIndication_OnuLossOmciInd:
120 log.Infow("Received onu loss omci indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530121 err = em.onuLossOmciIndication(alarmInd.GetOnuLossOmciInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400122 case *oop.AlarmIndication_OnuDriftOfWindowInd:
123 log.Infow("Received onu drift of window indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530124 err = em.onuDriftOfWindowIndication(alarmInd.GetOnuDriftOfWindowInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400125 case *oop.AlarmIndication_OnuSignalDegradeInd:
126 log.Infow("Received onu signal degrade indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530127 err = em.onuSignalDegradeIndication(alarmInd.GetOnuSignalDegradeInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400128 case *oop.AlarmIndication_OnuSignalsFailInd:
129 log.Infow("Received onu signal fail indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530130 err = em.onuSignalsFailIndication(alarmInd.GetOnuSignalsFailInd(), deviceID, raisedTs)
Naga Manjunathf6f74642020-01-13 21:37:28 +0530131 case *oop.AlarmIndication_OnuStartupFailInd:
Devmalya Paulfb990a52019-07-09 10:01:49 -0400132 log.Infow("Received onu startup fail indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunathf6f74642020-01-13 21:37:28 +0530133 err = em.onuStartupFailedIndication(alarmInd.GetOnuStartupFailInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400134 case *oop.AlarmIndication_OnuTiwiInd:
135 log.Infow("Received onu transmission warning indication ", log.Fields{"alarm_ind": alarmInd})
136 log.Infow("Not implemented yet", log.Fields{"alarm_ind": "Onu-Transmission-indication"})
Naga Manjunath9546b912019-11-28 20:56:20 +0530137 case *oop.AlarmIndication_OnuLossOfSyncFailInd:
138 log.Infow("Received onu Loss of Sync Fail indication ", log.Fields{"alarm_ind": alarmInd})
139 err = em.onuLossOfSyncIndication(alarmInd.GetOnuLossOfSyncFailInd(), deviceID, raisedTs)
140 case *oop.AlarmIndication_OnuItuPonStatsInd:
141 log.Infow("Received onu Itu Pon Stats indication ", log.Fields{"alarm_ind": alarmInd})
142 log.Infow("Not implemented yet", log.Fields{"alarm_ind": alarmInd})
Devmalya Paul6f063a62020-02-19 19:19:06 -0500143 case *oop.AlarmIndication_OnuRemoteDefectInd:
144 log.Infow("Received onu remote defect indication ", log.Fields{"alarm_ind": alarmInd})
145 err = em.onuRemoteDefectIndication(alarmInd.GetOnuRemoteDefectInd(), deviceID, raisedTs)
Devmalya Paul1abc34e2020-02-04 20:48:06 -0500146 case *oop.AlarmIndication_OnuDeactivationFailureInd:
147 log.Infow("Received onu deactivation failure indication ", log.Fields{"alarm_ind": alarmInd})
148 err = em.onuDeactivationFailureIndication(alarmInd.GetOnuDeactivationFailureInd(), deviceID, raisedTs)
Devmalya Paul41a762d2020-03-01 18:56:54 -0500149 case *oop.AlarmIndication_OnuLossGemDelineationInd:
150 log.Infow("Received onu loss of GEM channel delineation indication ", log.Fields{"alarm_ind": alarmInd})
151 err = em.onuLossOfGEMChannelDelineationIndication(alarmInd.GetOnuLossGemDelineationInd(), deviceID, raisedTs)
152 case *oop.AlarmIndication_OnuPhysicalEquipmentErrorInd:
153 log.Infow("Received onu physical equipment error indication ", log.Fields{"alarm_ind": alarmInd})
154 err = em.onuPhysicalEquipmentErrorIndication(alarmInd.GetOnuPhysicalEquipmentErrorInd(), deviceID, raisedTs)
155 case *oop.AlarmIndication_OnuLossOfAckInd:
156 log.Infow("Received onu loss of acknowledgement indication ", log.Fields{"alarm_ind": alarmInd})
157 err = em.onuLossOfAcknowledgementIndication(alarmInd.GetOnuLossOfAckInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400158 default:
Thomas Lee S94109f12020-03-03 16:39:29 +0530159 err = olterrors.NewErrInvalidValue(log.Fields{"indication-type": alarmInd}, nil)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400160 }
Naga Manjunath9546b912019-11-28 20:56:20 +0530161 if err != nil {
Thomas Lee S94109f12020-03-03 16:39:29 +0530162 return olterrors.NewErrCommunication("publish-message", log.Fields{"indication-type": alarmInd}, err).Log()
Naga Manjunath9546b912019-11-28 20:56:20 +0530163 }
David K. Bainbridge794735f2020-02-11 21:01:37 -0800164 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400165}
166
Daniele Rossi051466a2019-07-26 13:39:37 +0000167// oltUpDownIndication handles Up and Down state of an OLT
Naga Manjunath9546b912019-11-28 20:56:20 +0530168func (em *OpenOltEventMgr) oltUpDownIndication(oltIndication *oop.OltIndication, deviceID string, raisedTs int64) error {
Daniele Rossi051466a2019-07-26 13:39:37 +0000169 var de voltha.DeviceEvent
170 context := make(map[string]string)
171 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530172 context["oper-state"] = oltIndication.OperState
Daniele Rossi051466a2019-07-26 13:39:37 +0000173 /* Populating device event body */
174 de.Context = context
175 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530176 if oltIndication.OperState == operationStateDown {
Daniele Rossi051466a2019-07-26 13:39:37 +0000177 de.DeviceEventName = fmt.Sprintf("%s_%s", oltIndicationDown, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530178 } else if oltIndication.OperState == operationStateUp {
Daniele Rossi051466a2019-07-26 13:39:37 +0000179 de.DeviceEventName = fmt.Sprintf("%s_%s", oltIndicationDown, "CLEAR_EVENT")
180 }
181 /* Send event to KAFKA */
182 if err := em.eventProxy.SendDeviceEvent(&de, communication, olt, raisedTs); err != nil {
Girish Kumarf26e4882020-03-05 06:49:10 +0000183 return olterrors.NewErrCommunication("send-olt-event", log.Fields{"device-id": deviceID}, err)
Daniele Rossi051466a2019-07-26 13:39:37 +0000184 }
185 log.Infow("OLT UpDown event sent to KAFKA", log.Fields{})
Naga Manjunath9546b912019-11-28 20:56:20 +0530186 return nil
Daniele Rossi051466a2019-07-26 13:39:37 +0000187}
188
Devmalya Paulfb990a52019-07-09 10:01:49 -0400189// OnuDiscoveryIndication is an exported method to handle ONU discovery event
Naga Manjunath9546b912019-11-28 20:56:20 +0530190func (em *OpenOltEventMgr) OnuDiscoveryIndication(onuDisc *oop.OnuDiscIndication, deviceID string, OnuID uint32, serialNumber string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400191 var de voltha.DeviceEvent
192 context := make(map[string]string)
193 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530194 context["onu-id"] = strconv.FormatUint(uint64(OnuID), base10)
195 context["intf-id"] = strconv.FormatUint(uint64(onuDisc.IntfId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400196 context["serial-number"] = serialNumber
197 /* Populating device event body */
198 de.Context = context
199 de.ResourceId = deviceID
200 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDiscoveryEvent, "RAISE_EVENT")
201 /* Send event to KAFKA */
202 if err := em.eventProxy.SendDeviceEvent(&de, equipment, pon, raisedTs); err != nil {
Girish Kumarf26e4882020-03-05 06:49:10 +0000203 return olterrors.NewErrCommunication("send-onu-discovery-event", log.Fields{"serial-number": serialNumber, "intf-id": onuDisc.IntfId}, err)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400204 }
205 log.Infow("ONU discovery event sent to KAFKA", log.Fields{"serial-number": serialNumber, "intf-id": onuDisc.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530206 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400207}
208
Naga Manjunath9546b912019-11-28 20:56:20 +0530209func (em *OpenOltEventMgr) oltLosIndication(oltLos *oop.LosIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400210 var de voltha.DeviceEvent
211 context := make(map[string]string)
212 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530213 context["intf-id"] = strconv.FormatUint(uint64(oltLos.IntfId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400214 /* Populating device event body */
215 de.Context = context
216 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530217 if oltLos.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400218 de.DeviceEventName = fmt.Sprintf("%s_%s", oltLosEvent, "RAISE_EVENT")
219 } else {
220 de.DeviceEventName = fmt.Sprintf("%s_%s", oltLosEvent, "CLEAR_EVENT")
221 }
222 /* Send event to KAFKA */
223 if err := em.eventProxy.SendDeviceEvent(&de, communication, olt, raisedTs); err != nil {
224 log.Errorw("Failed to send OLT loss of signal event", log.Fields{"intf-id": oltLos.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530225 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400226 }
227 log.Infow("OLT LOS event sent to KAFKA", log.Fields{"intf-id": oltLos.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530228 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400229}
230
Naga Manjunath9546b912019-11-28 20:56:20 +0530231func (em *OpenOltEventMgr) onuDyingGaspIndication(dgi *oop.DyingGaspIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400232 var de voltha.DeviceEvent
Devmalya Paul90ca3012019-09-02 21:55:45 -0400233 var serialNumber string
Devmalya Paulfb990a52019-07-09 10:01:49 -0400234 context := make(map[string]string)
235 /* Populating event context */
Devmalya Paul90ca3012019-09-02 21:55:45 -0400236 serialNumber = ""
Naga Manjunatha8dc9372019-10-31 23:01:18 +0530237 onu := em.handler.formOnuKey(dgi.IntfId, dgi.OnuId)
238 if onu, ok := em.handler.onus.Load(onu); ok {
239 serialNumber = onu.(*OnuDevice).serialNumber
Devmalya Paul90ca3012019-09-02 21:55:45 -0400240 }
241 context["serial-number"] = serialNumber
Naga Manjunath9546b912019-11-28 20:56:20 +0530242 context["intf-id"] = strconv.FormatUint(uint64(dgi.IntfId), base10)
243 context["onu-id"] = strconv.FormatUint(uint64(dgi.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400244 /* Populating device event body */
245 de.Context = context
246 de.ResourceId = deviceID
Thomas Lee Sf68399e2020-02-11 15:41:38 +0530247 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDyingGaspEvent, "EVENT")
Devmalya Paulfb990a52019-07-09 10:01:49 -0400248 /* Send event to KAFKA */
249 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
250 log.Errorw("Failed to send ONU Dying gasp event", log.Fields{"intf-id": dgi.IntfId, "onu-id": dgi.OnuId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530251 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400252 }
253 log.Infow("ONU dying gasp event sent to KAFKA", log.Fields{"intf-id": dgi.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530254 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400255}
256
Naga Manjunath9546b912019-11-28 20:56:20 +0530257func (em *OpenOltEventMgr) onuAlarmIndication(onuAlarm *oop.OnuAlarmIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400258 var de voltha.DeviceEvent
259 context := make(map[string]string)
260 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530261 context["intf-id"] = strconv.FormatUint(uint64(onuAlarm.IntfId), base10)
262 context["onu-id"] = strconv.FormatUint(uint64(onuAlarm.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400263 /* Populating device event body */
264 de.Context = context
265 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530266 if onuAlarm.LosStatus == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400267 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLosEvent, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530268 } else if onuAlarm.LosStatus == statusCheckOff {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400269 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLosEvent, "CLEAR_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530270 } else if onuAlarm.LobStatus == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400271 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLobEvent, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530272 } else if onuAlarm.LobStatus == statusCheckOff {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400273 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLobEvent, "CLEAR_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530274 } else if onuAlarm.LopcMissStatus == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400275 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLopcMissEvent, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530276 } else if onuAlarm.LopcMissStatus == statusCheckOff {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400277 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLopcMissEvent, "CLEAR_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530278 } else if onuAlarm.LopcMicErrorStatus == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400279 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLopcMicErrorEvent, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530280 } else if onuAlarm.LopcMicErrorStatus == statusCheckOff {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400281 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLopcMicErrorEvent, "CLEAR_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530282 } else if onuAlarm.LofiStatus == statusCheckOn {
283 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfFrameEvent, "RAISE_EVENT")
284 } else if onuAlarm.LofiStatus == statusCheckOff {
285 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfFrameEvent, "CLEAR_EVENT")
Naga Manjunathffa5c212019-12-06 15:15:04 +0530286 } else if onuAlarm.LoamiStatus == statusCheckOn {
287 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfPloamEvent, "RAISE_EVENT")
288 } else if onuAlarm.LoamiStatus == statusCheckOff {
289 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfPloamEvent, "CLEAR_EVENT")
Devmalya Paulfb990a52019-07-09 10:01:49 -0400290 }
291 /* Send event to KAFKA */
292 if err := em.eventProxy.SendDeviceEvent(&de, communication, onu, raisedTs); err != nil {
293 log.Errorw("Failed to send ONU Los event", log.Fields{"onu-id": onuAlarm.OnuId, "intf-id": onuAlarm.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530294 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400295 }
296 log.Infow("ONU LOS event sent to KAFKA", log.Fields{"onu-id": onuAlarm.OnuId, "intf-id": onuAlarm.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530297 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400298}
299
Naga Manjunath9546b912019-11-28 20:56:20 +0530300func (em *OpenOltEventMgr) onuActivationFailIndication(oaf *oop.OnuActivationFailureIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400301 var de voltha.DeviceEvent
302 context := make(map[string]string)
303 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530304 context["intf-id"] = strconv.FormatUint(uint64(oaf.IntfId), base10)
305 context["onu-id"] = strconv.FormatUint(uint64(oaf.OnuId), base10)
Scott Bakerd4df1182020-02-05 11:38:42 -0800306 context["fail-reason"] = strconv.FormatUint(uint64(oaf.FailReason), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400307 /* Populating device event body */
308 de.Context = context
309 de.ResourceId = deviceID
310 de.DeviceEventName = fmt.Sprintf("%s_%s", onuActivationFailEvent, "RAISE_EVENT")
311 /* Send event to KAFKA */
312 if err := em.eventProxy.SendDeviceEvent(&de, equipment, pon, raisedTs); err != nil {
313 log.Errorw("Failed to send ONU activation failure event", log.Fields{"onu-id": oaf.OnuId, "intf-id": oaf.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530314 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400315 }
316 log.Infow("ONU activation failure event sent to KAFKA", log.Fields{"onu-id": oaf.OnuId, "intf-id": oaf.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530317 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400318}
319
Naga Manjunath9546b912019-11-28 20:56:20 +0530320func (em *OpenOltEventMgr) onuLossOmciIndication(onuLossOmci *oop.OnuLossOfOmciChannelIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400321 var de voltha.DeviceEvent
322 context := make(map[string]string)
323 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530324 context["intf-id"] = strconv.FormatUint(uint64(onuLossOmci.IntfId), base10)
325 context["onu-id"] = strconv.FormatUint(uint64(onuLossOmci.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400326 /* Populating device event body */
327 de.Context = context
328 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530329 if onuLossOmci.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400330 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOmciEvent, "RAISE_EVENT")
331 } else {
332 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOmciEvent, "CLEAR_EVENT")
333 }
334 /* Send event to KAFKA */
335 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
336 log.Errorw("Failed to send ONU loss of OMCI channel event", log.Fields{"onu-id": onuLossOmci.OnuId, "intf-id": onuLossOmci.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530337 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400338 }
339 log.Infow("ONU loss of OMCI channel event sent to KAFKA", log.Fields{"onu-id": onuLossOmci.OnuId, "intf-id": onuLossOmci.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530340 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400341}
342
Naga Manjunath9546b912019-11-28 20:56:20 +0530343func (em *OpenOltEventMgr) onuDriftOfWindowIndication(onuDriftWindow *oop.OnuDriftOfWindowIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400344 var de voltha.DeviceEvent
345 context := make(map[string]string)
346 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530347 context["intf-id"] = strconv.FormatUint(uint64(onuDriftWindow.IntfId), base10)
348 context["onu-id"] = strconv.FormatUint(uint64(onuDriftWindow.OnuId), base10)
Scott Bakerd4df1182020-02-05 11:38:42 -0800349 context["drift"] = strconv.FormatUint(uint64(onuDriftWindow.Drift), base10)
350 context["new-eqd"] = strconv.FormatUint(uint64(onuDriftWindow.NewEqd), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400351 /* Populating device event body */
352 de.Context = context
353 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530354 if onuDriftWindow.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400355 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDriftOfWindowEvent, "RAISE_EVENT")
356 } else {
357 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDriftOfWindowEvent, "CLEAR_EVENT")
358 }
359 /* Send event to KAFKA */
360 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
361 log.Errorw("Failed to send ONU drift of window event", log.Fields{"onu-id": onuDriftWindow.OnuId, "intf-id": onuDriftWindow.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530362 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400363 }
364 log.Infow("ONU drift of window event sent to KAFKA", log.Fields{"onu-id": onuDriftWindow.OnuId, "intf-id": onuDriftWindow.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530365 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400366}
367
Naga Manjunath9546b912019-11-28 20:56:20 +0530368func (em *OpenOltEventMgr) onuSignalDegradeIndication(onuSignalDegrade *oop.OnuSignalDegradeIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400369 var de voltha.DeviceEvent
370 context := make(map[string]string)
371 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530372 context["intf-id"] = strconv.FormatUint(uint64(onuSignalDegrade.IntfId), base10)
373 context["onu-id"] = strconv.FormatUint(uint64(onuSignalDegrade.OnuId), base10)
Scott Bakerd4df1182020-02-05 11:38:42 -0800374 context["inverse-bit-error-rate"] = strconv.FormatUint(uint64(onuSignalDegrade.InverseBitErrorRate), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400375 /* Populating device event body */
376 de.Context = context
377 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530378 if onuSignalDegrade.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400379 de.DeviceEventName = fmt.Sprintf("%s_%s", onuSignalDegradeEvent, "RAISE_EVENT")
380 } else {
381 de.DeviceEventName = fmt.Sprintf("%s_%s", onuSignalDegradeEvent, "CLEAR_EVENT")
382 }
383 /* Send event to KAFKA */
384 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
385 log.Errorw("Failed to send ONU signals degrade event", log.Fields{"onu-id": onuSignalDegrade.OnuId, "intf-id": onuSignalDegrade.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530386 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400387 }
388 log.Infow("ONU signal degrade event sent to KAFKA", log.Fields{"onu-id": onuSignalDegrade.OnuId, "intf-id": onuSignalDegrade.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530389 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400390}
391
Naga Manjunath9546b912019-11-28 20:56:20 +0530392func (em *OpenOltEventMgr) onuSignalsFailIndication(onuSignalsFail *oop.OnuSignalsFailureIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400393 var de voltha.DeviceEvent
394 context := make(map[string]string)
395 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530396 context["onu-id"] = strconv.FormatUint(uint64(onuSignalsFail.OnuId), base10)
397 context["intf-id"] = strconv.FormatUint(uint64(onuSignalsFail.IntfId), base10)
398 context["inverse-bit-error-rate"] = strconv.FormatUint(uint64(onuSignalsFail.InverseBitErrorRate), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400399 /* Populating device event body */
400 de.Context = context
401 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530402 if onuSignalsFail.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400403 de.DeviceEventName = fmt.Sprintf("%s_%s", onuSignalsFailEvent, "RAISE_EVENT")
404 } else {
405 de.DeviceEventName = fmt.Sprintf("%s_%s", onuSignalsFailEvent, "CLEAR_EVENT")
406 }
407 /* Send event to KAFKA */
408 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
409 log.Errorw("Failed to send ONU signals fail event", log.Fields{"onu-id": onuSignalsFail.OnuId, "intf-id": onuSignalsFail.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530410 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400411 }
412 log.Infow("ONU signals fail event sent to KAFKA", log.Fields{"onu-id": onuSignalsFail.OnuId, "intf-id": onuSignalsFail.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530413 return nil
414}
415
Naga Manjunathf6f74642020-01-13 21:37:28 +0530416func (em *OpenOltEventMgr) onuStartupFailedIndication(onuStartupFail *oop.OnuStartupFailureIndication, deviceID string, raisedTs int64) error {
417 var de voltha.DeviceEvent
418 context := make(map[string]string)
419 /* Populating event context */
420 context["onu-id"] = strconv.FormatUint(uint64(onuStartupFail.OnuId), base10)
421 context["intf-id"] = strconv.FormatUint(uint64(onuStartupFail.IntfId), base10)
422
423 /* Populating device event body */
424 de.Context = context
425 de.ResourceId = deviceID
426 if onuStartupFail.Status == statusCheckOn {
427 de.DeviceEventName = fmt.Sprintf("%s_%s", onuStartupFailEvent, "RAISE_EVENT")
428 } else {
429 de.DeviceEventName = fmt.Sprintf("%s_%s", onuStartupFailEvent, "CLEAR_EVENT")
430 }
431 /* Send event to KAFKA */
432 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
433 log.Errorw("Failed to send ONU startup fail event", log.Fields{"onu-id": onuStartupFail.OnuId, "intf-id": onuStartupFail.IntfId})
434 return err
435 }
436 log.Infow("ONU startup fail event sent to KAFKA", log.Fields{"onu-id": onuStartupFail.OnuId, "intf-id": onuStartupFail.IntfId})
437 return nil
438}
439
Naga Manjunath9546b912019-11-28 20:56:20 +0530440func (em *OpenOltEventMgr) onuLossOfSyncIndication(onuLOKI *oop.OnuLossOfKeySyncFailureIndication, deviceID string, raisedTs int64) error {
441 var de voltha.DeviceEvent
442 context := make(map[string]string)
443 /* Populating event context */
444 context["onu-id"] = strconv.FormatUint(uint64(onuLOKI.OnuId), base10)
445 context["intf-id"] = strconv.FormatUint(uint64(onuLOKI.IntfId), base10)
446 /* Populating device event body */
447 de.Context = context
448 de.ResourceId = deviceID
449 if onuLOKI.Status == statusCheckOn {
450 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfKeySyncEvent, "RAISE_EVENT")
451 } else {
452 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfKeySyncEvent, "CLEAR_EVENT")
453 }
454
455 /* Send event to KAFKA */
456 if err := em.eventProxy.SendDeviceEvent(&de, security, onu, raisedTs); err != nil {
457 log.Errorw("Failed to send ONU loss of key sync event", log.Fields{"onu-id": onuLOKI.OnuId, "intf-id": onuLOKI.IntfId})
458 return err
459 }
460 log.Infow("ONU loss of key sync event sent to KAFKA", log.Fields{"onu-id": onuLOKI.OnuId, "intf-id": onuLOKI.IntfId})
461 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400462}
kesavand39e0aa32020-01-28 20:58:50 -0500463
464// oltIntfOperIndication handles Up and Down state of an OLT PON ports
465func (em *OpenOltEventMgr) oltIntfOperIndication(ifindication *oop.IntfOperIndication, deviceID string, raisedTs int64) {
466 var de voltha.DeviceEvent
467 context := make(map[string]string)
468 portID := IntfIDToPortNo(ifindication.IntfId, voltha.Port_PON_OLT)
469 device, err := em.handler.coreProxy.GetDevice(ctx.Background(), deviceID, deviceID)
470 if err != nil {
471 log.Errorw("Error while fetching Device object", log.Fields{"DeviceId": deviceID})
Girish Kumarf26e4882020-03-05 06:49:10 +0000472 return
kesavand39e0aa32020-01-28 20:58:50 -0500473 }
474 for _, port := range device.Ports {
475 if port.PortNo == portID {
476 // Events are suppressed if the Port Adminstate is not enabled.
477 if port.AdminState != common.AdminState_ENABLED {
478 log.Infow("Port disable/enable event not generated because, The port is not enabled by operator", log.Fields{"deviceId": deviceID, "port": port})
479 return
480 }
481 break
482 }
483 }
484 /* Populating event context */
485 context["oper-state"] = ifindication.GetOperState()
486 /* Populating device event body */
487 de.Context = context
488 de.ResourceId = deviceID
489
490 if ifindication.GetOperState() == operationStateDown {
491 de.DeviceEventName = fmt.Sprintf("%s_%s", ponIntfDownIndiction, "RAISE_EVENT")
492 } else if ifindication.OperState == operationStateUp {
493 de.DeviceEventName = fmt.Sprintf("%s_%s", ponIntfDownIndiction, "CLEAR_EVENT")
494 }
495 /* Send event to KAFKA */
496 if err := em.eventProxy.SendDeviceEvent(&de, communication, olt, raisedTs); err != nil {
Girish Kumarf26e4882020-03-05 06:49:10 +0000497 olterrors.NewErrCommunication("send-olt-intf-oper-status-event", log.Fields{"device-id": deviceID, "intf-id": ifindication.IntfId, "oper-state": ifindication.OperState}, err).Log()
kesavand39e0aa32020-01-28 20:58:50 -0500498 }
499 log.Info("sent-olt-intf-oper-status-event-to-kafka")
500}
Devmalya Paul1abc34e2020-02-04 20:48:06 -0500501
502func (em *OpenOltEventMgr) onuDeactivationFailureIndication(onuDFI *oop.OnuDeactivationFailureIndication, deviceID string, raisedTs int64) error {
503 var de voltha.DeviceEvent
504 context := make(map[string]string)
505 /* Populating event context */
506 context["onu-id"] = strconv.FormatUint(uint64(onuDFI.OnuId), base10)
507 context["intf-id"] = strconv.FormatUint(uint64(onuDFI.IntfId), base10)
508 context["failure-reason"] = strconv.FormatUint(uint64(onuDFI.FailReason), base10)
509 /* Populating device event body */
510 de.Context = context
511 de.ResourceId = deviceID
512 de.DeviceEventName = onuDeactivationFailureEvent
513
514 /* Send event to KAFKA */
515 if err := em.eventProxy.SendDeviceEvent(&de, equipment, onu, raisedTs); err != nil {
516 log.Errorw("Failed to send ONU deactivation failure event", log.Fields{"onu-id": onuDFI.OnuId, "intf-id": onuDFI.IntfId})
517 return err
518 }
519 log.Infow("ONU deactivation failure event sent to KAFKA", log.Fields{"onu-id": onuDFI.OnuId, "intf-id": onuDFI.IntfId})
520 return nil
521}
Devmalya Paul6f063a62020-02-19 19:19:06 -0500522
523func (em *OpenOltEventMgr) onuRemoteDefectIndication(onuRDI *oop.OnuRemoteDefectIndication, deviceID string, raisedTs int64) error {
524 /* Populating event context */
525 context := map[string]string{
526 "onu-id": strconv.FormatUint(uint64(onuRDI.OnuId), base10),
527 "intf-id": strconv.FormatUint(uint64(onuRDI.IntfId), base10),
528 "rdi-errors": strconv.FormatUint(uint64(onuRDI.RdiErrors), base10),
529 }
530 /* Populating device event body */
531 de := &voltha.DeviceEvent{
532 Context: context,
533 ResourceId: deviceID,
534 DeviceEventName: onuRemoteDefectIndication,
535 }
536 /* Send event to KAFKA */
537 if err := em.eventProxy.SendDeviceEvent(de, equipment, onu, raisedTs); err != nil {
Devmalya Paul6f063a62020-02-19 19:19:06 -0500538 return err
539 }
Devmalya Paul41a762d2020-03-01 18:56:54 -0500540 log.Debugw("ONU remote defect event sent to KAFKA", log.Fields{"onu-id": onuRDI.OnuId, "intf-id": onuRDI.IntfId})
541 return nil
542}
543
544func (em *OpenOltEventMgr) onuLossOfGEMChannelDelineationIndication(onuGCD *oop.OnuLossOfGEMChannelDelineationIndication, deviceID string, raisedTs int64) error {
545 /* Populating event context */
546 context := map[string]string{
547 "onu-id": strconv.FormatUint(uint64(onuGCD.OnuId), base10),
548 "intf-id": strconv.FormatUint(uint64(onuGCD.IntfId), base10),
549 "delineation-errors": strconv.FormatUint(uint64(onuGCD.DelineationErrors), base10),
550 }
551 /* Populating device event body */
552 de := &voltha.DeviceEvent{
553 Context: context,
554 ResourceId: deviceID,
555 }
556 if onuGCD.Status == statusCheckOn {
557 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfGEMChannelDelineationEvent, "RAISE_EVENT")
558 } else {
559 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfGEMChannelDelineationEvent, "CLEAR_EVENT")
560 }
561 /* Send event to KAFKA */
562 if err := em.eventProxy.SendDeviceEvent(de, communication, onu, raisedTs); err != nil {
563 return err
564 }
565 log.Debugw("ONU loss of GEM channel delineation event sent to KAFKA", log.Fields{"onu-id": onuGCD.OnuId, "intf-id": onuGCD.IntfId})
566 return nil
567}
568
569func (em *OpenOltEventMgr) onuPhysicalEquipmentErrorIndication(onuErr *oop.OnuPhysicalEquipmentErrorIndication, deviceID string, raisedTs int64) error {
570 /* Populating event context */
571 context := map[string]string{
572 "onu-id": strconv.FormatUint(uint64(onuErr.OnuId), base10),
573 "intf-id": strconv.FormatUint(uint64(onuErr.IntfId), base10),
574 }
575 /* Populating device event body */
576 de := &voltha.DeviceEvent{
577 Context: context,
578 ResourceId: deviceID,
579 }
580 if onuErr.Status == statusCheckOn {
581 de.DeviceEventName = fmt.Sprintf("%s_%s", onuPhysicalEquipmentErrorEvent, "RAISE_EVENT")
582 } else {
583 de.DeviceEventName = fmt.Sprintf("%s_%s", onuPhysicalEquipmentErrorEvent, "CLEAR_EVENT")
584 }
585 /* Send event to KAFKA */
586 if err := em.eventProxy.SendDeviceEvent(de, equipment, onu, raisedTs); err != nil {
587 return err
588 }
589 log.Debugw("ONU physical equipment error event sent to KAFKA", log.Fields{"onu-id": onuErr.OnuId, "intf-id": onuErr.IntfId})
590 return nil
591}
592
593func (em *OpenOltEventMgr) onuLossOfAcknowledgementIndication(onuLOA *oop.OnuLossOfAcknowledgementIndication, deviceID string, raisedTs int64) error {
594 /* Populating event context */
595 context := map[string]string{
596 "onu-id": strconv.FormatUint(uint64(onuLOA.OnuId), base10),
597 "intf-id": strconv.FormatUint(uint64(onuLOA.IntfId), base10),
598 }
599 /* Populating device event body */
600 de := &voltha.DeviceEvent{
601 Context: context,
602 ResourceId: deviceID,
603 }
604 if onuLOA.Status == statusCheckOn {
605 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfAcknowledgementEvent, "RAISE_EVENT")
606 } else {
607 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfAcknowledgementEvent, "CLEAR_EVENT")
608 }
609 /* Send event to KAFKA */
610 if err := em.eventProxy.SendDeviceEvent(de, equipment, onu, raisedTs); err != nil {
611 return err
612 }
613 log.Debugw("ONU physical equipment error event sent to KAFKA", log.Fields{"onu-id": onuLOA.OnuId, "intf-id": onuLOA.IntfId})
Devmalya Paul6f063a62020-02-19 19:19:06 -0500614 return nil
615}