Revert "[VOL-4518] remove flowKey and use only flowID for OLT and ONU flow cache since flowID's are unique"

This reverts commit d444598f453757cc0b9fb4ad7295dc1726a69c3f.

Change-Id: I449099e083d363db5834dc6c56330af3fd0ce921
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index 931bd6d..8520bf2 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -1032,8 +1032,10 @@
 		"PortNo":    flow.PortNo,
 	}).Tracef("OLT receives FlowAdd")
 
+	flowKey := FlowKey{}
 	if !o.enablePerf {
-		o.Flows.Store(flow.FlowId, *flow)
+		flowKey = FlowKey{ID: flow.FlowId, Direction: flow.FlowType}
+		olt.Flows.Store(flowKey, *flow)
 	}
 
 	if flow.AccessIntfId == -1 {
@@ -1092,8 +1094,9 @@
 		}
 
 		if !o.enablePerf {
+			onu.Flows = append(onu.Flows, flowKey)
 			// Generate event on first flow for ONU
-			if len(onu.FlowIds) == 0 {
+			if len(onu.Flows) == 1 {
 				publishEvent("Flow-add-received", int32(onu.PonPortID), int32(onu.ID), onu.Sn())
 			}
 		}
@@ -1148,8 +1151,13 @@
 	olt.freeAllocId(flow)
 
 	if !o.enablePerf { // remove only if flow were stored
+		flowKey := FlowKey{
+			ID:        flow.FlowId,
+			Direction: flow.FlowType,
+		}
+
 		// Check if flow exists
-		storedFlowIntf, ok := o.Flows.Load(flow.FlowId)
+		storedFlowIntf, ok := o.Flows.Load(flowKey)
 		if !ok {
 			oltLogger.Errorf("Flow %v not found", flow)
 			return new(openolt.Empty), status.Errorf(codes.NotFound, "Flow not found")
@@ -1178,11 +1186,12 @@
 				}).Error("ONU-not-found")
 				return new(openolt.Empty), nil
 			}
+			onu.DeleteFlow(flowKey)
 			publishEvent("Flow-remove-received", int32(onu.PonPortID), int32(onu.ID), onu.Sn())
 		}
 
 		// delete from olt flows
-		o.Flows.Delete(flow.FlowId)
+		o.Flows.Delete(flowKey)
 	}
 
 	if flow.AccessIntfId == -1 {