[VOL-2641] Returning errors for flows and groups from the open olt adapter to the core
Change-Id: I513c2d391ddfa99d82589ab974956b1f4359bb68
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 1fe5770..67b852a 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -1199,6 +1199,9 @@
//UpdateFlowsIncrementally updates the device flow
func (dh *DeviceHandler) UpdateFlowsIncrementally(ctx context.Context, device *voltha.Device, flows *of.FlowChanges, groups *of.FlowGroupChanges, flowMetadata *voltha.FlowMetadata) error {
log.Debugw("Received-incremental-flowupdate-in-device-handler", log.Fields{"deviceID": device.Id, "flows": flows, "groups": groups, "flowMetadata": flowMetadata})
+
+ var errorsList []error
+
if flows != nil {
for _, flow := range flows.ToRemove.Items {
log.Debug("Removing flow", log.Fields{"deviceId": device.Id, "flowToRemove": flow})
@@ -1207,7 +1210,10 @@
for _, flow := range flows.ToAdd.Items {
log.Debug("Adding flow", log.Fields{"deviceId": device.Id, "flowToAdd": flow})
- dh.flowMgr.AddFlow(ctx, flow, flowMetadata)
+ err := dh.flowMgr.AddFlow(ctx, flow, flowMetadata)
+ if err != nil {
+ errorsList = append(errorsList, err)
+ }
}
}
if groups != nil && flows != nil {
@@ -1219,15 +1225,24 @@
if groups != nil {
for _, group := range groups.ToAdd.Items {
- dh.flowMgr.AddGroup(ctx, group)
+ err := dh.flowMgr.AddGroup(ctx, group)
+ if err != nil {
+ errorsList = append(errorsList, err)
+ }
}
for _, group := range groups.ToUpdate.Items {
- dh.flowMgr.ModifyGroup(ctx, group)
+ err := dh.flowMgr.ModifyGroup(ctx, group)
+ if err != nil {
+ errorsList = append(errorsList, err)
+ }
}
if len(groups.ToRemove.Items) != 0 {
log.Debug("Group delete operation is not supported for now")
}
}
+ if len(errorsList) > 0 {
+ return fmt.Errorf("errors-installing-flows-groups, errors:%v", errorsList)
+ }
log.Debug("UpdateFlowsIncrementally done successfully")
return nil
}