VOL-2437 Leftover state in etcd after OLT device deleted

Some of the kv store values were not cleared when device is deleted.

 Added APis to clear the kv values once device is deleted.

Change-Id: Id3978206dd4375dd6cb17df2f140d3a9c25cb91b
diff --git a/adaptercore/device_handler.go b/adaptercore/device_handler.go
index ee53736..3ec4d0e 100644
--- a/adaptercore/device_handler.go
+++ b/adaptercore/device_handler.go
@@ -1288,6 +1288,7 @@
 		for _, flowID := range flowIDs {
 			dh.resourceMgr.FreeFlowID(uint32(nniIntfID), -1, -1, uint32(flowID))
 		}
+		dh.resourceMgr.RemoveResourceMap(nniIntfID, int32(nniOnuID), int32(nniUniID))
 	}
 	if err = dh.resourceMgr.DelNNiFromKVStore(); err != nil {
 		log.Error("Failed to clear nni from kv store")
@@ -1321,11 +1322,19 @@
 				return err
 			}
 			for _, onu := range onuGemData {
+				onuID := make([]uint32, 1)
 				log.Debugw("onu data ", log.Fields{"onu": onu})
 				if err = dh.clearUNIData(&onu); err != nil {
 					log.Errorw("Failed to clear data for onu", log.Fields{"onu-device": onu})
 				}
+				// Clear flowids for gem cache.
+				for _, gem := range onu.GemPorts {
+					dh.resourceMgr.DeleteFlowIDsForGem(ponPort, gem)
+				}
+				onuID[0] = onu.OnuID
+				dh.resourceMgr.FreeonuID(ponPort, onuID)
 			}
+			dh.resourceMgr.DeleteIntfIDGempMapPath(ponPort)
 			onuGemData = nil
 			err = dh.resourceMgr.DelOnuGemInfoForIntf(ponPort)
 			if err != nil {