blob: 2f896f5c5c8f1329512ae863022b0d2680431372 [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
17// Package adaptercore provides APIs for the openOLT adapter
18package adaptercore
19
20import (
21 "fmt"
Naga Manjunath9546b912019-11-28 20:56:20 +053022 "strconv"
Naga Manjunatha8dc9372019-10-31 23:01:18 +053023
Scott Baker51290152019-10-24 14:23:20 -070024 "github.com/opencord/voltha-lib-go/v2/pkg/adapters/adapterif"
25 "github.com/opencord/voltha-lib-go/v2/pkg/log"
Scott Bakerc6e54cb2019-11-04 09:31:25 -080026 oop "github.com/opencord/voltha-protos/v2/go/openolt"
27 "github.com/opencord/voltha-protos/v2/go/voltha"
Devmalya Paulfb990a52019-07-09 10:01:49 -040028)
29
30const (
31 onuDiscoveryEvent = "ONU_DISCOVERY"
32 onuLosEvent = "ONU_LOSS_OF_SIGNAL"
33 onuLobEvent = "ONU_LOSS_OF_BURST"
34 onuLopcMissEvent = "ONU_LOPC_MISS"
35 onuLopcMicErrorEvent = "ONU_LOPC_MIC_ERROR"
36 oltLosEvent = "OLT_LOSS_OF_SIGNAL"
Daniele Rossi051466a2019-07-26 13:39:37 +000037 oltIndicationDown = "OLT_DOWN_INDICATION"
Devmalya Paulfb990a52019-07-09 10:01:49 -040038 onuDyingGaspEvent = "ONU_DYING_GASP"
39 onuSignalsFailEvent = "ONU_SIGNALS_FAIL"
40 onuStartupFailEvent = "ONU_STARTUP_FAIL"
41 onuSignalDegradeEvent = "ONU_SIGNAL_DEGRADE"
42 onuDriftOfWindowEvent = "ONU_DRIFT_OF_WINDOW"
43 onuActivationFailEvent = "ONU_ACTIVATION_FAIL"
44 onuProcessingErrorEvent = "ONU_PROCESSING_ERROR"
45 onuTiwiEvent = "ONU_TRANSMISSION_WARNING"
46 onuLossOmciEvent = "ONU_LOSS_OF_OMCI_CHANNEL"
Naga Manjunath9546b912019-11-28 20:56:20 +053047 onuLossOfKeySyncEvent = "ONU_LOSS_OF_KEY_SYNC"
48 onuLossOfFrameEvent = "ONU_LOSS_OF_FRAME"
Devmalya Paulfb990a52019-07-09 10:01:49 -040049)
50
51const (
52 pon = voltha.EventSubCategory_PON
53 olt = voltha.EventSubCategory_OLT
54 ont = voltha.EventSubCategory_ONT
55 onu = voltha.EventSubCategory_ONU
56 nni = voltha.EventSubCategory_NNI
57 service = voltha.EventCategory_SERVICE
58 security = voltha.EventCategory_SECURITY
59 equipment = voltha.EventCategory_EQUIPMENT
60 processing = voltha.EventCategory_PROCESSING
61 environment = voltha.EventCategory_ENVIRONMENT
62 communication = voltha.EventCategory_COMMUNICATION
63)
64
Naga Manjunath9546b912019-11-28 20:56:20 +053065const (
66 // statusCheckOn represents status check On
67 statusCheckOn = "on"
68 // statusCheckOff represents status check Off
69 statusCheckOff = "off"
70 // operationStateUp represents operation state Up
71 operationStateUp = "up"
72 // operationStateDown represents operation state Down
73 operationStateDown = "down"
74 // base10 represents base 10 conversion
75 base10 = 10
76)
77
Devmalya Paulfb990a52019-07-09 10:01:49 -040078// OpenOltEventMgr struct contains
79type OpenOltEventMgr struct {
kdarapu381c6902019-07-31 18:23:16 +053080 eventProxy adapterif.EventProxy
Devmalya Paul90ca3012019-09-02 21:55:45 -040081 handler *DeviceHandler
Devmalya Paulfb990a52019-07-09 10:01:49 -040082}
83
84// 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 -040085func NewEventMgr(eventProxy adapterif.EventProxy, handler *DeviceHandler) *OpenOltEventMgr {
Devmalya Paulfb990a52019-07-09 10:01:49 -040086 var em OpenOltEventMgr
87 em.eventProxy = eventProxy
Devmalya Paul90ca3012019-09-02 21:55:45 -040088 em.handler = handler
Devmalya Paulfb990a52019-07-09 10:01:49 -040089 return &em
90}
91
92// ProcessEvents is function to process and publish OpenOLT event
93func (em *OpenOltEventMgr) ProcessEvents(alarmInd *oop.AlarmIndication, deviceID string, raisedTs int64) {
Naga Manjunath9546b912019-11-28 20:56:20 +053094 var err error
Devmalya Paulfb990a52019-07-09 10:01:49 -040095 switch alarmInd.Data.(type) {
96 case *oop.AlarmIndication_LosInd:
97 log.Infow("Received LOS indication", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +053098 err = em.oltLosIndication(alarmInd.GetLosInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -040099
100 case *oop.AlarmIndication_OnuAlarmInd:
101 log.Infow("Received onu alarm indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530102 err = em.onuAlarmIndication(alarmInd.GetOnuAlarmInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400103
104 case *oop.AlarmIndication_DyingGaspInd:
105 log.Infow("Received dying gasp indication", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530106 err = em.onuDyingGaspIndication(alarmInd.GetDyingGaspInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400107 case *oop.AlarmIndication_OnuActivationFailInd:
108 log.Infow("Received onu activation fail indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530109 err = em.onuActivationFailIndication(alarmInd.GetOnuActivationFailInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400110
111 case *oop.AlarmIndication_OnuLossOmciInd:
112 log.Infow("Received onu loss omci indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530113 err = em.onuLossOmciIndication(alarmInd.GetOnuLossOmciInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400114
115 case *oop.AlarmIndication_OnuDriftOfWindowInd:
116 log.Infow("Received onu drift of window indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530117 err = em.onuDriftOfWindowIndication(alarmInd.GetOnuDriftOfWindowInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400118
119 case *oop.AlarmIndication_OnuSignalDegradeInd:
120 log.Infow("Received onu signal degrade indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530121 err = em.onuSignalDegradeIndication(alarmInd.GetOnuSignalDegradeInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400122
123 case *oop.AlarmIndication_OnuSignalsFailInd:
124 log.Infow("Received onu signal fail indication ", log.Fields{"alarm_ind": alarmInd})
Naga Manjunath9546b912019-11-28 20:56:20 +0530125 err = em.onuSignalsFailIndication(alarmInd.GetOnuSignalsFailInd(), deviceID, raisedTs)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400126
127 case *oop.AlarmIndication_OnuProcessingErrorInd:
128 log.Infow("Received onu startup fail indication ", log.Fields{"alarm_ind": alarmInd})
129 log.Infow("Not implemented yet", log.Fields{"alarm_ind": alarmInd})
130 case *oop.AlarmIndication_OnuTiwiInd:
131 log.Infow("Received onu transmission warning indication ", log.Fields{"alarm_ind": alarmInd})
132 log.Infow("Not implemented yet", log.Fields{"alarm_ind": "Onu-Transmission-indication"})
Naga Manjunath9546b912019-11-28 20:56:20 +0530133 case *oop.AlarmIndication_OnuLossOfSyncFailInd:
134 log.Infow("Received onu Loss of Sync Fail indication ", log.Fields{"alarm_ind": alarmInd})
135 err = em.onuLossOfSyncIndication(alarmInd.GetOnuLossOfSyncFailInd(), deviceID, raisedTs)
136 case *oop.AlarmIndication_OnuItuPonStatsInd:
137 log.Infow("Received onu Itu Pon Stats indication ", log.Fields{"alarm_ind": alarmInd})
138 log.Infow("Not implemented yet", log.Fields{"alarm_ind": alarmInd})
Devmalya Paulfb990a52019-07-09 10:01:49 -0400139 default:
140 log.Errorw("Received unknown indication type", log.Fields{"alarm_ind": alarmInd})
141
142 }
Naga Manjunath9546b912019-11-28 20:56:20 +0530143 if err != nil {
144 log.Errorw("Failed to publish message to KAFKA", log.Fields{"error": err})
145 }
Devmalya Paulfb990a52019-07-09 10:01:49 -0400146}
147
Daniele Rossi051466a2019-07-26 13:39:37 +0000148// oltUpDownIndication handles Up and Down state of an OLT
Naga Manjunath9546b912019-11-28 20:56:20 +0530149func (em *OpenOltEventMgr) oltUpDownIndication(oltIndication *oop.OltIndication, deviceID string, raisedTs int64) error {
Daniele Rossi051466a2019-07-26 13:39:37 +0000150 var de voltha.DeviceEvent
151 context := make(map[string]string)
152 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530153 context["oper-state"] = oltIndication.OperState
Daniele Rossi051466a2019-07-26 13:39:37 +0000154 /* Populating device event body */
155 de.Context = context
156 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530157 if oltIndication.OperState == operationStateDown {
Daniele Rossi051466a2019-07-26 13:39:37 +0000158 de.DeviceEventName = fmt.Sprintf("%s_%s", oltIndicationDown, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530159 } else if oltIndication.OperState == operationStateUp {
Daniele Rossi051466a2019-07-26 13:39:37 +0000160 de.DeviceEventName = fmt.Sprintf("%s_%s", oltIndicationDown, "CLEAR_EVENT")
161 }
162 /* Send event to KAFKA */
163 if err := em.eventProxy.SendDeviceEvent(&de, communication, olt, raisedTs); err != nil {
164 log.Errorw("Failed to send OLT event", log.Fields{"err": err})
Naga Manjunath9546b912019-11-28 20:56:20 +0530165 return err
Daniele Rossi051466a2019-07-26 13:39:37 +0000166 }
167 log.Infow("OLT UpDown event sent to KAFKA", log.Fields{})
Naga Manjunath9546b912019-11-28 20:56:20 +0530168 return nil
Daniele Rossi051466a2019-07-26 13:39:37 +0000169}
170
Devmalya Paulfb990a52019-07-09 10:01:49 -0400171// OnuDiscoveryIndication is an exported method to handle ONU discovery event
Naga Manjunath9546b912019-11-28 20:56:20 +0530172func (em *OpenOltEventMgr) OnuDiscoveryIndication(onuDisc *oop.OnuDiscIndication, deviceID string, OnuID uint32, serialNumber string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400173 var de voltha.DeviceEvent
174 context := make(map[string]string)
175 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530176 context["onu-id"] = strconv.FormatUint(uint64(OnuID), base10)
177 context["intf-id"] = strconv.FormatUint(uint64(onuDisc.IntfId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400178 context["serial-number"] = serialNumber
179 /* Populating device event body */
180 de.Context = context
181 de.ResourceId = deviceID
182 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDiscoveryEvent, "RAISE_EVENT")
183 /* Send event to KAFKA */
184 if err := em.eventProxy.SendDeviceEvent(&de, equipment, pon, raisedTs); err != nil {
185 log.Errorw("Failed to send ONU discovery event", log.Fields{"serial-number": serialNumber, "intf-id": onuDisc.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530186 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400187 }
188 log.Infow("ONU discovery event sent to KAFKA", log.Fields{"serial-number": serialNumber, "intf-id": onuDisc.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530189 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400190}
191
Naga Manjunath9546b912019-11-28 20:56:20 +0530192func (em *OpenOltEventMgr) oltLosIndication(oltLos *oop.LosIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400193 var de voltha.DeviceEvent
194 context := make(map[string]string)
195 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530196 context["intf-id"] = strconv.FormatUint(uint64(oltLos.IntfId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400197 /* Populating device event body */
198 de.Context = context
199 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530200 if oltLos.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400201 de.DeviceEventName = fmt.Sprintf("%s_%s", oltLosEvent, "RAISE_EVENT")
202 } else {
203 de.DeviceEventName = fmt.Sprintf("%s_%s", oltLosEvent, "CLEAR_EVENT")
204 }
205 /* Send event to KAFKA */
206 if err := em.eventProxy.SendDeviceEvent(&de, communication, olt, raisedTs); err != nil {
207 log.Errorw("Failed to send OLT loss of signal event", log.Fields{"intf-id": oltLos.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530208 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400209 }
210 log.Infow("OLT LOS event sent to KAFKA", log.Fields{"intf-id": oltLos.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530211 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400212}
213
Naga Manjunath9546b912019-11-28 20:56:20 +0530214func (em *OpenOltEventMgr) onuDyingGaspIndication(dgi *oop.DyingGaspIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400215 var de voltha.DeviceEvent
Devmalya Paul90ca3012019-09-02 21:55:45 -0400216 var serialNumber string
Devmalya Paulfb990a52019-07-09 10:01:49 -0400217 context := make(map[string]string)
218 /* Populating event context */
Devmalya Paul90ca3012019-09-02 21:55:45 -0400219 serialNumber = ""
Naga Manjunatha8dc9372019-10-31 23:01:18 +0530220 onu := em.handler.formOnuKey(dgi.IntfId, dgi.OnuId)
221 if onu, ok := em.handler.onus.Load(onu); ok {
222 serialNumber = onu.(*OnuDevice).serialNumber
Devmalya Paul90ca3012019-09-02 21:55:45 -0400223 }
224 context["serial-number"] = serialNumber
Naga Manjunath9546b912019-11-28 20:56:20 +0530225 context["intf-id"] = strconv.FormatUint(uint64(dgi.IntfId), base10)
226 context["onu-id"] = strconv.FormatUint(uint64(dgi.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400227 /* Populating device event body */
228 de.Context = context
229 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530230 if dgi.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400231 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDyingGaspEvent, "RAISE_EVENT")
232 } else {
233 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDyingGaspEvent, "CLEAR_EVENT")
234 }
235 /* Send event to KAFKA */
236 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
237 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 +0530238 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400239 }
240 log.Infow("ONU dying gasp event sent to KAFKA", log.Fields{"intf-id": dgi.IntfId})
Naga Manjunath9546b912019-11-28 20:56:20 +0530241 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400242}
243
Naga Manjunath9546b912019-11-28 20:56:20 +0530244func (em *OpenOltEventMgr) onuAlarmIndication(onuAlarm *oop.OnuAlarmIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400245 var de voltha.DeviceEvent
246 context := make(map[string]string)
247 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530248 context["intf-id"] = strconv.FormatUint(uint64(onuAlarm.IntfId), base10)
249 context["onu-id"] = strconv.FormatUint(uint64(onuAlarm.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400250 /* Populating device event body */
251 de.Context = context
252 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530253 if onuAlarm.LosStatus == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400254 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLosEvent, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530255 } else if onuAlarm.LosStatus == statusCheckOff {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400256 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLosEvent, "CLEAR_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530257 } else if onuAlarm.LobStatus == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400258 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLobEvent, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530259 } else if onuAlarm.LobStatus == statusCheckOff {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400260 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLobEvent, "CLEAR_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530261 } else if onuAlarm.LopcMissStatus == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400262 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLopcMissEvent, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530263 } else if onuAlarm.LopcMissStatus == statusCheckOff {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400264 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLopcMissEvent, "CLEAR_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530265 } else if onuAlarm.LopcMicErrorStatus == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400266 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLopcMicErrorEvent, "RAISE_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530267 } else if onuAlarm.LopcMicErrorStatus == statusCheckOff {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400268 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLopcMicErrorEvent, "CLEAR_EVENT")
Naga Manjunath9546b912019-11-28 20:56:20 +0530269 } else if onuAlarm.LofiStatus == statusCheckOn {
270 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfFrameEvent, "RAISE_EVENT")
271 } else if onuAlarm.LofiStatus == statusCheckOff {
272 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfFrameEvent, "CLEAR_EVENT")
Devmalya Paulfb990a52019-07-09 10:01:49 -0400273 }
274 /* Send event to KAFKA */
275 if err := em.eventProxy.SendDeviceEvent(&de, communication, onu, raisedTs); err != nil {
276 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 +0530277 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400278 }
279 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 +0530280 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400281}
282
Naga Manjunath9546b912019-11-28 20:56:20 +0530283func (em *OpenOltEventMgr) onuActivationFailIndication(oaf *oop.OnuActivationFailureIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400284 var de voltha.DeviceEvent
285 context := make(map[string]string)
286 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530287 context["intf-id"] = strconv.FormatUint(uint64(oaf.IntfId), base10)
288 context["onu-id"] = strconv.FormatUint(uint64(oaf.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400289 /* Populating device event body */
290 de.Context = context
291 de.ResourceId = deviceID
292 de.DeviceEventName = fmt.Sprintf("%s_%s", onuActivationFailEvent, "RAISE_EVENT")
293 /* Send event to KAFKA */
294 if err := em.eventProxy.SendDeviceEvent(&de, equipment, pon, raisedTs); err != nil {
295 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 +0530296 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400297 }
298 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 +0530299 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400300}
301
Naga Manjunath9546b912019-11-28 20:56:20 +0530302func (em *OpenOltEventMgr) onuLossOmciIndication(onuLossOmci *oop.OnuLossOfOmciChannelIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400303 var de voltha.DeviceEvent
304 context := make(map[string]string)
305 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530306 context["intf-id"] = strconv.FormatUint(uint64(onuLossOmci.IntfId), base10)
307 context["onu-id"] = strconv.FormatUint(uint64(onuLossOmci.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400308 /* Populating device event body */
309 de.Context = context
310 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530311 if onuLossOmci.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400312 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOmciEvent, "RAISE_EVENT")
313 } else {
314 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOmciEvent, "CLEAR_EVENT")
315 }
316 /* Send event to KAFKA */
317 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
318 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 +0530319 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400320 }
321 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 +0530322 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400323}
324
Naga Manjunath9546b912019-11-28 20:56:20 +0530325func (em *OpenOltEventMgr) onuDriftOfWindowIndication(onuDriftWindow *oop.OnuDriftOfWindowIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400326 var de voltha.DeviceEvent
327 context := make(map[string]string)
328 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530329 context["intf-id"] = strconv.FormatUint(uint64(onuDriftWindow.IntfId), base10)
330 context["onu-id"] = strconv.FormatUint(uint64(onuDriftWindow.OnuId), base10)
331 context["drift"] = strconv.FormatUint(uint64(onuDriftWindow.OnuId), base10)
332 context["new-eqd"] = strconv.FormatUint(uint64(onuDriftWindow.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400333 /* Populating device event body */
334 de.Context = context
335 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530336 if onuDriftWindow.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400337 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDriftOfWindowEvent, "RAISE_EVENT")
338 } else {
339 de.DeviceEventName = fmt.Sprintf("%s_%s", onuDriftOfWindowEvent, "CLEAR_EVENT")
340 }
341 /* Send event to KAFKA */
342 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
343 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 +0530344 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400345 }
346 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 +0530347 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400348}
349
Naga Manjunath9546b912019-11-28 20:56:20 +0530350func (em *OpenOltEventMgr) onuSignalDegradeIndication(onuSignalDegrade *oop.OnuSignalDegradeIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400351 var de voltha.DeviceEvent
352 context := make(map[string]string)
353 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530354 context["intf-id"] = strconv.FormatUint(uint64(onuSignalDegrade.IntfId), base10)
355 context["onu-id"] = strconv.FormatUint(uint64(onuSignalDegrade.OnuId), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400356 /* Populating device event body */
357 de.Context = context
358 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530359 if onuSignalDegrade.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400360 de.DeviceEventName = fmt.Sprintf("%s_%s", onuSignalDegradeEvent, "RAISE_EVENT")
361 } else {
362 de.DeviceEventName = fmt.Sprintf("%s_%s", onuSignalDegradeEvent, "CLEAR_EVENT")
363 }
364 /* Send event to KAFKA */
365 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
366 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 +0530367 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400368 }
369 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 +0530370 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400371}
372
Naga Manjunath9546b912019-11-28 20:56:20 +0530373func (em *OpenOltEventMgr) onuSignalsFailIndication(onuSignalsFail *oop.OnuSignalsFailureIndication, deviceID string, raisedTs int64) error {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400374 var de voltha.DeviceEvent
375 context := make(map[string]string)
376 /* Populating event context */
Naga Manjunath9546b912019-11-28 20:56:20 +0530377 context["onu-id"] = strconv.FormatUint(uint64(onuSignalsFail.OnuId), base10)
378 context["intf-id"] = strconv.FormatUint(uint64(onuSignalsFail.IntfId), base10)
379 context["inverse-bit-error-rate"] = strconv.FormatUint(uint64(onuSignalsFail.InverseBitErrorRate), base10)
Devmalya Paulfb990a52019-07-09 10:01:49 -0400380 /* Populating device event body */
381 de.Context = context
382 de.ResourceId = deviceID
Naga Manjunath9546b912019-11-28 20:56:20 +0530383 if onuSignalsFail.Status == statusCheckOn {
Devmalya Paulfb990a52019-07-09 10:01:49 -0400384 de.DeviceEventName = fmt.Sprintf("%s_%s", onuSignalsFailEvent, "RAISE_EVENT")
385 } else {
386 de.DeviceEventName = fmt.Sprintf("%s_%s", onuSignalsFailEvent, "CLEAR_EVENT")
387 }
388 /* Send event to KAFKA */
389 if err := em.eventProxy.SendDeviceEvent(&de, communication, pon, raisedTs); err != nil {
390 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 +0530391 return err
Devmalya Paulfb990a52019-07-09 10:01:49 -0400392 }
393 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 +0530394 return nil
395}
396
397func (em *OpenOltEventMgr) onuLossOfSyncIndication(onuLOKI *oop.OnuLossOfKeySyncFailureIndication, deviceID string, raisedTs int64) error {
398 var de voltha.DeviceEvent
399 context := make(map[string]string)
400 /* Populating event context */
401 context["onu-id"] = strconv.FormatUint(uint64(onuLOKI.OnuId), base10)
402 context["intf-id"] = strconv.FormatUint(uint64(onuLOKI.IntfId), base10)
403 /* Populating device event body */
404 de.Context = context
405 de.ResourceId = deviceID
406 if onuLOKI.Status == statusCheckOn {
407 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfKeySyncEvent, "RAISE_EVENT")
408 } else {
409 de.DeviceEventName = fmt.Sprintf("%s_%s", onuLossOfKeySyncEvent, "CLEAR_EVENT")
410 }
411
412 /* Send event to KAFKA */
413 if err := em.eventProxy.SendDeviceEvent(&de, security, onu, raisedTs); err != nil {
414 log.Errorw("Failed to send ONU loss of key sync event", log.Fields{"onu-id": onuLOKI.OnuId, "intf-id": onuLOKI.IntfId})
415 return err
416 }
417 log.Infow("ONU loss of key sync event sent to KAFKA", log.Fields{"onu-id": onuLOKI.OnuId, "intf-id": onuLOKI.IntfId})
418 return nil
Devmalya Paulfb990a52019-07-09 10:01:49 -0400419}