[VOL-2440] : code changes to update port status on PON disable

Change-Id: I8839f2083509ebbd5fba7f1c683f9ec1c5f033e5
diff --git a/adaptercore/device_handler.go b/adaptercore/device_handler.go
index 36bb01a..ee53736 100644
--- a/adaptercore/device_handler.go
+++ b/adaptercore/device_handler.go
@@ -240,6 +240,24 @@
 		log.Errorw("Invalid-port-label", log.Fields{"portNum": portNum, "portType": portType})
 		return
 	}
+
+	device, err := dh.coreProxy.GetDevice(context.TODO(), dh.device.Id, dh.device.Id)
+	if err != nil || device == nil {
+		log.Errorw("Failed-to-fetch-device", log.Fields{"err": err})
+		return
+	}
+	if device.Ports != nil {
+		for _, dPort := range device.Ports {
+			if dPort.Type == portType && dPort.PortNo == portNum {
+				log.Debug("port-already-exists-updating-oper-status-of-port")
+				if err := dh.coreProxy.PortStateUpdate(context.TODO(), dh.device.Id, portType, portNum, operStatus); err != nil {
+					log.Errorw("failed-to-update-port-state", log.Fields{"err": err})
+					return
+				}
+				return
+			}
+		}
+	}
 	//    Now create  Port
 	port := &voltha.Port{
 		PortNo:     portNum,
@@ -247,11 +265,13 @@
 		Type:       portType,
 		OperStatus: operStatus,
 	}
-	log.Debugw("Sending port update to core", log.Fields{"port": port})
+	log.Debugw("Sending-port-update-to-core", log.Fields{"port": port})
 	// Synchronous call to update device - this method is run in its own go routine
 	if err := dh.coreProxy.PortCreated(context.TODO(), dh.device.Id, port); err != nil {
-		log.Errorw("error-creating-nni-port", log.Fields{"deviceID": dh.device.Id, "portType": portType, "error": err})
+		log.Errorw("Error-creating-port", log.Fields{"deviceID": dh.device.Id, "portType": portType, "error": err})
+		return
 	}
+	return
 }
 
 // readIndications to read the indications from the OLT device