SEBA-909 store flows and implement GetFlow API
Change-Id: If2c214f8be5808ef89e0521f75d03da49153dc2a
diff --git a/internal/bbsim/api/onus_handler.go b/internal/bbsim/api/onus_handler.go
index b9c697c..975b426 100644
--- a/internal/bbsim/api/onus_handler.go
+++ b/internal/bbsim/api/onus_handler.go
@@ -295,6 +295,38 @@
return res, nil
}
+// GetFlows for OLT/ONUs
+func (s BBSimServer) GetFlows(ctx context.Context, req *bbsim.ONURequest) (*bbsim.Flows, error) {
+ logger.WithFields(log.Fields{
+ "OnuSn": req.SerialNumber,
+ }).Info("Received GetFlows request")
+
+ olt := devices.GetOLT()
+ res := &bbsim.Flows{}
+
+ if req.SerialNumber == "" {
+ for flowKey := range olt.Flows {
+ flow := olt.Flows[flowKey]
+ res.Flows = append(res.Flows, &flow)
+ }
+ res.FlowCount = uint32(len(olt.Flows))
+ } else {
+ onu, err := olt.FindOnuBySn(req.SerialNumber)
+ if err != nil {
+ logger.WithFields(log.Fields{
+ "OnuSn": req.SerialNumber,
+ }).Error("Can't get ONU in GetFlows request")
+ return nil, err
+ }
+ for _, flowKey := range onu.Flows {
+ flow := olt.Flows[flowKey]
+ res.Flows = append(res.Flows, &flow)
+ }
+ res.FlowCount = uint32(len(onu.Flows))
+ }
+ return res, nil
+}
+
func (s BBSimServer) GetOnuTrafficSchedulers(ctx context.Context, req *bbsim.ONURequest) (*bbsim.ONUTrafficSchedulers, error) {
olt := devices.GetOLT()
ts := bbsim.ONUTrafficSchedulers{}