VOL-4670: Fix for flowIDsForGem cache in openolt adapter
          resource manager is not updated on adapter restarts

- The cache flowIDsForGem is empty on adapter restarts.
  So use GetFlowIDsForGem API to update the cache and use it.

VOL-4672: Stale etcd data in openolt adapter after olt device delete

- If OLT device is getting deleted ignore ChildDeviceLost processing.
  The ChildDeviceLost could create entries already cleaned up by
  OLT device delete processing under some race conditions.

Change-Id: I535d9c968acb6bcee897fea49c78362230a52ac9
diff --git a/internal/pkg/core/openolt_flowmgr.go b/internal/pkg/core/openolt_flowmgr.go
index 06ad2c0..3d5b490 100644
--- a/internal/pkg/core/openolt_flowmgr.go
+++ b/internal/pkg/core/openolt_flowmgr.go
@@ -1954,12 +1954,18 @@
 	case *tp_pb.TechProfileInstance:
 		for _, gemPort := range techprofileInst.UpstreamGemPortAttributeList {
 			gemPortID := gemPort.GemportId
-			used := f.resourceMgr.IsGemPortUsedByAnotherFlow(gemPortID, flowID)
-			if used {
-				flowIDs, err := f.resourceMgr.GetFlowIDsForGem(ctx, gemPortID)
-				if err != nil {
-					return err
+			flowIDs, err := f.resourceMgr.GetFlowIDsForGem(ctx, gemPortID)
+			if err != nil {
+				return err
+			}
+			used := false
+			for _, id := range flowIDs {
+				if flowID != id {
+					used = true
+					break
 				}
+			}
+			if used {
 				for i, flowIDinMap := range flowIDs {
 					if flowIDinMap == flowID {
 						flowIDs = append(flowIDs[:i], flowIDs[i+1:]...)