Revert "VOL-1847-Add flow only if it does not exist in device,No delete here as delete flows/groups handled now in deleteFlowsAndGroups"
This reverts commit 33f779a44ddacea9ac3312a668ebb75c143f028a.
Change-Id: Id17a9a7d43fb1d894d9fb4aa43268febc9a232f8
diff --git a/rw_core/core/device_agent.go b/rw_core/core/device_agent.go
index d9e8364..bcce15b 100755
--- a/rw_core/core/device_agent.go
+++ b/rw_core/core/device_agent.go
@@ -257,42 +257,35 @@
var updatedFlows []*ofp.OfpFlowStats
var flowsToDelete []*ofp.OfpFlowStats
+ var groupsToDelete []*ofp.OfpGroupEntry
var updatedGroups []*ofp.OfpGroupEntry
- var flowsToAdd []*ofp.OfpFlowStats
- var groupsToAdd []*ofp.OfpGroupEntry
// Process flows
for _, flow := range newFlows {
updatedFlows = append(updatedFlows, flow)
- if idx := fu.FindFlows(existingFlows.Items, flow); idx == -1 { // does not exist now , add new flow
- flowsToAdd = append(flowsToAdd, flow)
- }
}
for _, flow := range existingFlows.Items {
if idx := fu.FindFlows(newFlows, flow); idx == -1 {
- updatedFlows = append(updatedFlows, flow) // append existing flows
+ updatedFlows = append(updatedFlows, flow)
} else {
- // OF-1.3.1: If a flow entry with identical match fields and priority already resides , clear old flow and add new flow
flowsToDelete = append(flowsToDelete, flow)
- flowsToAdd = append(flowsToAdd, newFlows[idx])
}
}
// Process groups
for _, g := range newGroups {
updatedGroups = append(updatedGroups, g)
- if fu.FindGroup(existingGroups.Items, g.Desc.GroupId) == -1 { // does not exist now
- groupsToAdd = append(groupsToAdd, g)
- }
}
for _, group := range existingGroups.Items {
- if fu.FindGroup(newGroups, group.Desc.GroupId) == -1 {
- updatedGroups = append(updatedGroups, group) // Add existing groups
+ if fu.FindGroup(newGroups, group.Desc.GroupId) == -1 { // does not exist now
+ updatedGroups = append(updatedGroups, group)
+ } else {
+ groupsToDelete = append(groupsToDelete, group)
}
}
// Sanity check
- if (len(updatedFlows) | len(flowsToDelete) | len(updatedGroups)) == 0 {
+ if (len(updatedFlows) | len(flowsToDelete) | len(updatedGroups) | len(groupsToDelete)) == 0 {
log.Debugw("nothing-to-update", log.Fields{"deviceId": agent.deviceId, "flows": newFlows, "groups": newGroups})
return nil
}
@@ -315,12 +308,12 @@
} else {
flowChanges := &ofp.FlowChanges{
- ToAdd: &voltha.Flows{Items: flowsToAdd},
+ ToAdd: &voltha.Flows{Items: newFlows},
ToRemove: &voltha.Flows{Items: flowsToDelete},
}
groupChanges := &ofp.FlowGroupChanges{
- ToAdd: &voltha.FlowGroups{Items: groupsToAdd},
- ToRemove: &voltha.FlowGroups{Items: nil},
+ ToAdd: &voltha.FlowGroups{Items: newGroups},
+ ToRemove: &voltha.FlowGroups{Items: groupsToDelete},
ToUpdate: &voltha.FlowGroups{Items: []*ofp.OfpGroupEntry{}},
}
go agent.sendIncrementalFlowsToAdapters(device, flowChanges, groupChanges, flowMetadata, chAdapters)