VOL-3049 initial support changes for alarm notifications
Change-Id: Ic6e17196e6955a669e2bf8fc248bdbdbca1654c5
diff --git a/internal/pkg/onuadaptercore/device_handler.go b/internal/pkg/onuadaptercore/device_handler.go
index 379afa8..5db246b 100644
--- a/internal/pkg/onuadaptercore/device_handler.go
+++ b/internal/pkg/onuadaptercore/device_handler.go
@@ -177,6 +177,7 @@
pOnuOmciDevice *OnuDeviceEntry
pOnuTP *onuUniTechProf
pOnuMetricsMgr *onuMetricsManager
+ pAlarmMgr *onuAlarmManager
exitChannel chan int
lockDevice sync.RWMutex
pOnuIndication *oop.OnuIndication
@@ -194,6 +195,7 @@
collectorIsRunning bool
mutexCollectorFlag sync.RWMutex
stopCollector chan bool
+ stopAlarmManager chan bool
stopHeartbeatCheck chan bool
uniEntityMap map[uint32]*onuUniPort
lockVlanConfig sync.Mutex
@@ -219,6 +221,7 @@
dh.deviceEntrySet = make(chan bool, 1)
dh.collectorIsRunning = false
dh.stopCollector = make(chan bool, 2)
+ dh.stopAlarmManager = make(chan bool, 2)
dh.stopHeartbeatCheck = make(chan bool, 2)
//dh.metrics = pmmetrics.NewPmMetrics(cloned.Id, pmmetrics.Frequency(150), pmmetrics.FrequencyOverride(false), pmmetrics.Grouped(false), pmmetrics.Metrics(pmNames))
//TODO initialize the support classes.
@@ -1236,12 +1239,13 @@
//setOnuDeviceEntry sets the ONU device entry within the handler
func (dh *deviceHandler) setOnuDeviceEntry(
- apDeviceEntry *OnuDeviceEntry, apOnuTp *onuUniTechProf, apOnuMetricsMgr *onuMetricsManager) {
+ apDeviceEntry *OnuDeviceEntry, apOnuTp *onuUniTechProf, apOnuMetricsMgr *onuMetricsManager, apOnuAlarmMgr *onuAlarmManager) {
dh.lockDevice.Lock()
defer dh.lockDevice.Unlock()
dh.pOnuOmciDevice = apDeviceEntry
dh.pOnuTP = apOnuTp
dh.pOnuMetricsMgr = apOnuMetricsMgr
+ dh.pAlarmMgr = apOnuAlarmMgr
}
//addOnuDeviceEntry creates a new ONU device or returns the existing
@@ -1257,8 +1261,9 @@
deviceEntry = newOnuDeviceEntry(ctx, dh)
onuTechProfProc := newOnuUniTechProf(ctx, dh)
onuMetricsMgr := newonuMetricsManager(ctx, dh)
+ onuAlarmManager := newAlarmManager(ctx, dh)
//error treatment possible //TODO!!!
- dh.setOnuDeviceEntry(deviceEntry, onuTechProfProc, onuMetricsMgr)
+ dh.setOnuDeviceEntry(deviceEntry, onuTechProfProc, onuMetricsMgr, onuAlarmManager)
// fire deviceEntry ready event to spread to possibly waiting processing
dh.deviceEntrySet <- true
logger.Debugw(ctx, "onuDeviceEntry-added", log.Fields{"device-id": dh.deviceID})
@@ -1454,6 +1459,8 @@
// Start PM collector routine
go dh.startCollector(ctx)
}
+ go dh.startAlarmManager(ctx)
+
return nil
}
@@ -1578,6 +1585,7 @@
// Stop collector routine
dh.stopCollector <- true
}
+ dh.stopAlarmManager <- true
return nil
}
@@ -2859,3 +2867,14 @@
dh.mutexCollectorFlag.RUnlock()
return flagValue
}
+
+func (dh *deviceHandler) startAlarmManager(ctx context.Context) {
+ logger.Debugf(ctx, "startingAlarmManager")
+
+ // Start routine to process OMCI GET Responses
+ go dh.pAlarmMgr.startOMCIAlarmMessageProcessing(ctx)
+ if stop := <-dh.stopAlarmManager; stop {
+ logger.Debugw(ctx, "stopping-collector-for-onu", log.Fields{"device-id": dh.device.Id})
+ dh.pAlarmMgr.stopProcessingOmciMessages <- true // Stop the OMCI routines if any
+ }
+}