VOL-2535 : Update the PON-ports on Disable olt,
Openolt agent doesn't disable the NNI port on disble olt device.
Hence NNI operstatus is not updating to UNKNOWN on Disble olt.

Change-Id: I172a1c2c0f3f27567d0740504b1fb5ece614a00d
diff --git a/adaptercore/device_handler.go b/adaptercore/device_handler.go
index e373523..6be5be7 100644
--- a/adaptercore/device_handler.go
+++ b/adaptercore/device_handler.go
@@ -548,7 +548,7 @@
 		return err
 	}
 	dh.populateActivePorts(device)
-	if err := dh.updatePortAdminState(device); err != nil {
+	if err := dh.disableAdminDownPorts(device); err != nil {
 		log.Errorw("Error-on-updating-port-status", log.Fields{"device": device})
 		return err
 	}
@@ -1197,10 +1197,14 @@
 
 	go dh.notifyChildDevices("unreachable")
 	cloned := proto.Clone(device).(*voltha.Device)
-	// Update the all ports state on that device to disable
-	if err := dh.coreProxy.PortsStateUpdate(context.TODO(), cloned.Id, voltha.OperStatus_UNKNOWN); err != nil {
-		log.Errorw("updating-ports-failed", log.Fields{"deviceID": device.Id, "error": err})
-		return err
+	// Update the all pon ports state on that device to disable and NNI remains active as NNI remains active in openolt agent.
+	for _, port := range cloned.Ports {
+		if port.GetType() == voltha.Port_PON_OLT {
+			if err := dh.coreProxy.PortStateUpdate(context.TODO(), cloned.Id,
+				voltha.Port_PON_OLT, port.GetPortNo(), voltha.OperStatus_UNKNOWN); err != nil {
+				return err
+			}
+		}
 	}
 
 	log.Debugw("disable-device-end", log.Fields{"deviceID": device.Id})
@@ -1255,7 +1259,7 @@
 	cloned := proto.Clone(device).(*voltha.Device)
 	// Update the all ports state on that device to enable
 
-	if err := dh.updatePortAdminState(device); err != nil {
+	if err := dh.disableAdminDownPorts(device); err != nil {
 		log.Errorw("Error-on-updating-port-status-after-reenabling-olt", log.Fields{"device": device})
 		return err
 	}
@@ -1606,18 +1610,19 @@
 // EnablePort to enable Pon interface
 func (dh *DeviceHandler) EnablePort(port *voltha.Port) error {
 	log.Debugw("enable-port", log.Fields{"Device": dh.device, "port": port})
-	return dh.invokeDisableorEnablePort(port, true)
+	return dh.modifyPhyPort(port, true)
 }
 
 // DisablePort to disable pon interface
 func (dh *DeviceHandler) DisablePort(port *voltha.Port) error {
 	log.Debugw("disable-port", log.Fields{"Device": dh.device, "port": port})
-	return dh.invokeDisableorEnablePort(port, false)
+	return dh.modifyPhyPort(port, false)
 }
 
-func (dh *DeviceHandler) invokeDisableorEnablePort(port *voltha.Port, enablePort bool) error {
+//modifyPhyPort is common function to enable and disable the port. parm :enablePort, true to enablePort and false to disablePort.
+func (dh *DeviceHandler) modifyPhyPort(port *voltha.Port, enablePort bool) error {
 	ctx := context.Background()
-	log.Infow("invokeDisableorEnablePort", log.Fields{"port": port, "Enable": enablePort})
+	log.Infow("modifyPhyPort", log.Fields{"port": port, "Enable": enablePort})
 	if port.GetType() == voltha.Port_ETHERNET_NNI {
 		// Bug is opened for VOL-2505 to support NNI disable feature.
 		log.Infow("voltha-supports-single-nni-hence-disable-of-nni-not-allowed",
@@ -1657,14 +1662,14 @@
 	return nil
 }
 
-//updatePortAdminState update the ports on reboot and re-enable device.
-func (dh *DeviceHandler) updatePortAdminState(device *voltha.Device) error {
+//disableAdminDownPorts disables the ports, if the corresponding port Adminstate is disabled on reboot and Renable device.
+func (dh *DeviceHandler) disableAdminDownPorts(device *voltha.Device) error {
 	cloned := proto.Clone(device).(*voltha.Device)
 	// Disable the port and update the oper_port_status to core
 	// if the Admin state of the port is disabled on reboot and re-enable device.
 	for _, port := range cloned.Ports {
 		if port.AdminState == common.AdminState_DISABLED {
-			if err := dh.invokeDisableorEnablePort(port, false); err != nil {
+			if err := dh.DisablePort(port); err != nil {
 				log.Errorw("error-occurred-while-disabling-port", log.Fields{"DeviceId": dh.deviceID, "port": port, "error": err})
 				return err
 			}