[VOL-3085]Implement UpdatePmConfig api for voltha-openolt-adapter
Change-Id: Id1f2ae30d7f0d8f4aa4516b96809cf4a1e116dd1
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 39775a0..a5b131d 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -703,6 +703,10 @@
}
}()
go dh.updateLocalDevice()
+
+ if device.PmConfigs != nil {
+ dh.UpdatePmConfig(device.PmConfigs)
+ }
return nil
}
@@ -777,13 +781,12 @@
func startCollector(dh *DeviceHandler) {
logger.Debugf("starting-collector")
- freq := dh.metrics.ToPmConfigs().DefaultFreq
for {
select {
case <-dh.stopCollector:
logger.Debugw("stopping-collector-for-olt", log.Fields{"deviceID:": dh.device.Id})
return
- case <-time.After(time.Duration(freq) * time.Second):
+ case <-time.After(time.Duration(dh.metrics.ToPmConfigs().DefaultFreq) * time.Second):
ports := make([]*voltha.Port, len(dh.device.Ports))
copy(ports, dh.device.Ports)
@@ -1361,6 +1364,25 @@
}
}
+// UpdatePmConfig updates the pm metrics.
+func (dh *DeviceHandler) UpdatePmConfig(pmConfigs *voltha.PmConfigs) {
+
+ logger.Infow("update-pm-configs", log.Fields{"device-id": dh.device.Id, "pm-configs": pmConfigs})
+
+ if pmConfigs.DefaultFreq != dh.metrics.ToPmConfigs().DefaultFreq {
+ dh.metrics.UpdateFrequency(pmConfigs.DefaultFreq)
+ logger.Debugf("frequency-updated")
+ }
+
+ if pmConfigs.Grouped == false {
+ metrics := dh.metrics.GetSubscriberMetrics()
+ for _, m := range pmConfigs.Metrics {
+ metrics[m.Name].Enabled = m.Enabled
+
+ }
+ }
+}
+
//UpdateFlowsIncrementally updates the device flow
func (dh *DeviceHandler) UpdateFlowsIncrementally(ctx context.Context, device *voltha.Device, flows *of.FlowChanges, groups *of.FlowGroupChanges, flowMetadata *voltha.FlowMetadata) error {
logger.Debugw("received-incremental-flowupdate-in-device-handler", log.Fields{"device-id": device.Id, "flows": flows, "groups": groups, "flowMetadata": flowMetadata})