VOL-2293, VOL-2456 improve error handling
Change-Id: I4be5f12719a31b40363758cd47cc02968f180c75
diff --git a/adaptercore/openolt.go b/adaptercore/openolt.go
index 15e8aae..62e34c9 100644
--- a/adaptercore/openolt.go
+++ b/adaptercore/openolt.go
@@ -19,8 +19,6 @@
import (
"context"
- "errors"
- "fmt"
"sync"
"time"
@@ -142,8 +140,7 @@
func (oo *OpenOLT) Adopt_device(device *voltha.Device) error {
ctx := context.Background()
if device == nil {
- log.Warn("device-is-nil")
- return errors.New("nil-device")
+ return NewErrInvalidValue(log.Fields{"device": nil}, nil).Log()
}
log.Infow("adopt-device", log.Fields{"deviceId": device.Id})
var handler *DeviceHandler
@@ -163,8 +160,7 @@
if handler := oo.getDeviceHandler(device.Id); handler != nil {
return handler.GetOfpDeviceInfo(device)
}
- log.Errorw("device-handler-not-set", log.Fields{"deviceId": device.Id})
- return nil, errors.New("device-handler-not-set")
+ return nil, NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil).Log()
}
//Get_ofp_port_info returns OFP port information for the given device
@@ -173,8 +169,7 @@
if handler := oo.getDeviceHandler(device.Id); handler != nil {
return handler.GetOfpPortInfo(device, portNo)
}
- log.Errorw("device-handler-not-set", log.Fields{"deviceId": device.Id})
- return nil, errors.New("device-handler-not-set")
+ return nil, NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil).Log()
}
//Process_inter_adapter_message sends messages to a target device (between adapters)
@@ -188,30 +183,29 @@
if handler := oo.getDeviceHandler(targetDevice); handler != nil {
return handler.ProcessInterAdapterMessage(msg)
}
- return fmt.Errorf(fmt.Sprintf("handler-not-found-%s", targetDevice))
+ return NewErrNotFound("device-handler", log.Fields{"device-id": targetDevice}, nil).Log()
}
//Adapter_descriptor not implemented
func (oo *OpenOLT) Adapter_descriptor() error {
- return errors.New("unImplemented")
+ return ErrNotImplemented
}
//Device_types unimplemented
func (oo *OpenOLT) Device_types() (*voltha.DeviceTypes, error) {
- return nil, errors.New("unImplemented")
+ return nil, ErrNotImplemented
}
//Health returns unimplemented
func (oo *OpenOLT) Health() (*voltha.HealthStatus, error) {
- return nil, errors.New("unImplemented")
+ return nil, ErrNotImplemented
}
//Reconcile_device unimplemented
func (oo *OpenOLT) Reconcile_device(device *voltha.Device) error {
ctx := context.Background()
if device == nil {
- log.Warn("device-is-nil")
- return errors.New("nil-device")
+ return NewErrInvalidValue(log.Fields{"device": nil}, nil).Log()
}
log.Infow("reconcile-device", log.Fields{"deviceId": device.Id})
var handler *DeviceHandler
@@ -226,7 +220,7 @@
//Abandon_device unimplemented
func (oo *OpenOLT) Abandon_device(device *voltha.Device) error {
- return errors.New("unImplemented")
+ return ErrNotImplemented
}
//Disable_device disables the given device
@@ -235,8 +229,7 @@
if handler := oo.getDeviceHandler(device.Id); handler != nil {
return handler.DisableDevice(device)
}
- log.Errorw("device-handler-not-set", log.Fields{"deviceId": device.Id})
- return errors.New("device-handler-not-found")
+ return NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil).Log()
}
//Reenable_device enables the olt device after disable
@@ -245,8 +238,7 @@
if handler := oo.getDeviceHandler(device.Id); handler != nil {
return handler.ReenableDevice(device)
}
- log.Errorw("device-handler-not-set", log.Fields{"deviceId": device.Id})
- return errors.New("device-handler-not-found")
+ return NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil).Log()
}
//Reboot_device reboots the given device
@@ -255,14 +247,12 @@
if handler := oo.getDeviceHandler(device.Id); handler != nil {
return handler.RebootDevice(device)
}
- log.Errorw("device-handler-not-set", log.Fields{"deviceId": device.Id})
- return errors.New("device-handler-not-found")
-
+ return NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil).Log()
}
//Self_test_device unimplented
func (oo *OpenOLT) Self_test_device(device *voltha.Device) error {
- return errors.New("unImplemented")
+ return ErrNotImplemented
}
//Delete_device unimplemented
@@ -276,18 +266,17 @@
oo.deleteDeviceHandlerToMap(handler)
return nil
}
- log.Errorw("device-handler-not-set", log.Fields{"deviceId": device.Id})
- return errors.New("device-handler-not-found")
+ return NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil).Log()
}
//Get_device_details unimplemented
func (oo *OpenOLT) Get_device_details(device *voltha.Device) error {
- return errors.New("unImplemented")
+ return ErrNotImplemented
}
//Update_flows_bulk returns
func (oo *OpenOLT) Update_flows_bulk(device *voltha.Device, flows *voltha.Flows, groups *voltha.FlowGroups, flowMetadata *voltha.FlowMetadata) error {
- return errors.New("unImplemented")
+ return ErrNotImplemented
}
//Update_flows_incrementally updates (add/remove) the flows on a given device
@@ -297,13 +286,12 @@
if handler := oo.getDeviceHandler(device.Id); handler != nil {
return handler.UpdateFlowsIncrementally(ctx, device, flows, groups, flowMetadata)
}
- log.Errorw("Update_flows_incrementally failed-device-handler-not-set", log.Fields{"deviceId": device.Id})
- return errors.New("device-handler-not-set")
+ return NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil).Log()
}
//Update_pm_config returns PmConfigs nil or error
func (oo *OpenOLT) Update_pm_config(device *voltha.Device, pmConfigs *voltha.PmConfigs) error {
- return errors.New("unImplemented")
+ return ErrNotImplemented
}
//Receive_packet_out sends packet out to the device
@@ -313,43 +301,42 @@
if handler := oo.getDeviceHandler(deviceID); handler != nil {
return handler.PacketOut(ctx, egressPortNo, packet)
}
- log.Errorw("Receive_packet_out failed-device-handler-not-set", log.Fields{"deviceId": deviceID, "egressport": egressPortNo, "packet": packet})
- return errors.New("device-handler-not-set")
+ return NewErrNotFound("device-handler", log.Fields{"device-id": deviceID}, nil).Log()
}
//Suppress_event unimplemented
func (oo *OpenOLT) Suppress_event(filter *voltha.EventFilter) error {
- return errors.New("unImplemented")
+ return ErrNotImplemented
}
//Unsuppress_event unimplemented
func (oo *OpenOLT) Unsuppress_event(filter *voltha.EventFilter) error {
- return errors.New("unImplemented")
+ return ErrNotImplemented
}
//Download_image unimplemented
func (oo *OpenOLT) Download_image(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error) {
- return nil, errors.New("unImplemented")
+ return nil, ErrNotImplemented
}
//Get_image_download_status unimplemented
func (oo *OpenOLT) Get_image_download_status(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error) {
- return nil, errors.New("unImplemented")
+ return nil, ErrNotImplemented
}
//Cancel_image_download unimplemented
func (oo *OpenOLT) Cancel_image_download(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error) {
- return nil, errors.New("unImplemented")
+ return nil, ErrNotImplemented
}
//Activate_image_update unimplemented
func (oo *OpenOLT) Activate_image_update(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error) {
- return nil, errors.New("unImplemented")
+ return nil, ErrNotImplemented
}
//Revert_image_update unimplemented
func (oo *OpenOLT) Revert_image_update(device *voltha.Device, request *voltha.ImageDownload) (*voltha.ImageDownload, error) {
- return nil, errors.New("unImplemented")
+ return nil, ErrNotImplemented
}
// Enable_port to Enable PON/NNI interface
@@ -368,8 +355,10 @@
func (oo *OpenOLT) enableDisablePort(deviceID string, port *voltha.Port, enablePort bool) error {
log.Infow("enableDisablePort", log.Fields{"deviceId": deviceID, "port": port})
if port == nil {
- log.Errorw("port-cannot-be-nil", log.Fields{"Device": deviceID, "port": port})
- return errors.New("sent-port-cannot-be-nil")
+ return NewErrInvalidValue(log.Fields{
+ "reason": "port cannot be nil",
+ "device-id": deviceID,
+ "port": nil}, nil).Log()
}
if handler := oo.getDeviceHandler(deviceID); handler != nil {
log.Debugw("Enable_Disable_Port", log.Fields{"deviceId": deviceID, "port": port})