[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