VOL-4029 Fetch ONU stats on demand
Change-Id: I7248ab65f320858e9bdf9bdf6a60a27a734b8640
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index d998dbb..493c83a 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -2581,3 +2581,40 @@
}
return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INTERNAL_ERROR)
}
+
+func (dh *DeviceHandler) getOnuPonCounters(ctx context.Context, onuPonInfo *extension.GetOnuCountersRequest) *extension.SingleGetValueResponse {
+
+ singleValResp := extension.SingleGetValueResponse{
+ Response: &extension.GetValueResponse{
+ Response: &extension.GetValueResponse_OnuPonCounters{
+ OnuPonCounters: &extension.GetOnuCountersResponse{},
+ },
+ },
+ }
+
+ errResp := func(status extension.GetValueResponse_Status,
+ reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
+ return &extension.SingleGetValueResponse{
+ Response: &extension.GetValueResponse{
+ Status: status,
+ ErrReason: reason,
+ },
+ }
+ }
+ intfID := onuPonInfo.IntfId
+ onuID := onuPonInfo.OnuId
+ onuKey := dh.formOnuKey(intfID, onuID)
+
+ if _, ok := dh.onus.Load(onuKey); !ok {
+ logger.Errorw(ctx, "get-onui-pon-counters-request-invalid-request-received", log.Fields{"intfID": intfID, "onuID": onuID})
+ return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INVALID_DEVICE)
+ }
+ logger.Debugw(ctx, "get-onui-pon-counters-request-received", log.Fields{"intfID": intfID, "onuID": onuID})
+ cmnni := dh.portStats.collectOnDemandOnuStats(ctx, intfID, onuID)
+ if cmnni == nil {
+ return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INTERNAL_ERROR)
+ }
+ dh.portStats.updateGetOnuPonCountersResponse(ctx, &singleValResp, cmnni)
+ return &singleValResp
+
+}