[VOL-4183] Sending the right flowMetadata value to the adapters
Change-Id: Id720bc982c2f44e72c857e53f10521d8d3d1b3f8
diff --git a/rw_core/core/device/logical_agent_flow.go b/rw_core/core/device/logical_agent_flow.go
index 31a8b69..f4c88fa 100644
--- a/rw_core/core/device/logical_agent_flow.go
+++ b/rw_core/core/device/logical_agent_flow.go
@@ -140,12 +140,6 @@
if changed {
updatedFlows := map[uint64]*ofp.OfpFlowStats{flow.Id: flow}
- flowMeterConfig, err := agent.GetMeterConfig(ctx, updatedFlows)
- if err != nil {
- logger.Error(ctx, "meter-referred-in-flow-not-present")
- return changed, updated, err
- }
-
groupIDs := agent.groupCache.ListIDs()
groups := make(map[uint32]*ofp.OfpGroupEntry, len(groupIDs))
for groupID := range groupIDs {
@@ -167,7 +161,7 @@
return changed, updated, err
}
}
- respChannels := agent.addFlowsAndGroupsToDevices(ctx, deviceRules, toMetadata(flowMeterConfig))
+ respChannels := agent.addFlowsAndGroupsToDevices(ctx, deviceRules)
// Create the go routines to wait
go func() {
@@ -182,7 +176,7 @@
subCtx := coreutils.WithSpanAndRPCMetadataFromContext(ctx)
// Revert added flows
- if err := agent.revertAddedFlows(subCtx, mod, flow, flowToReplace, deviceRules, toMetadata(flowMeterConfig)); err != nil {
+ if err := agent.revertAddedFlows(subCtx, mod, flow, flowToReplace, deviceRules); err != nil {
logger.Errorw(ctx, "failure-to-delete-flow-after-failed-addition", log.Fields{
"error": err,
"logical-device-id": agent.logicalDeviceID,
@@ -211,8 +205,8 @@
// revertAddedFlows reverts flows after the flowAdd request has failed. All flows corresponding to that flowAdd request
// will be reverted, both from the logical devices and the devices.
-func (agent *LogicalAgent) revertAddedFlows(ctx context.Context, mod *ofp.OfpFlowMod, addedFlow *ofp.OfpFlowStats, replacedFlow *ofp.OfpFlowStats, deviceRules *fu.DeviceRules, metadata *voltha.FlowMetadata) error {
- logger.Debugw(ctx, "revert-flow-add", log.Fields{"added-flow": addedFlow, "replaced-flow": replacedFlow, "device-rules": deviceRules, "metadata": metadata})
+func (agent *LogicalAgent) revertAddedFlows(ctx context.Context, mod *ofp.OfpFlowMod, addedFlow *ofp.OfpFlowStats, replacedFlow *ofp.OfpFlowStats, deviceRules *fu.DeviceRules) error {
+ logger.Debugw(ctx, "revert-flow-add", log.Fields{"added-flow": addedFlow, "replaced-flow": replacedFlow, "device-rules": deviceRules})
flowHandle, have := agent.flowCache.Lock(addedFlow.Id)
if !have {
@@ -238,7 +232,7 @@
}
// Update the devices
- respChnls := agent.deleteFlowsAndGroupsFromDevices(ctx, deviceRules, metadata, mod)
+ respChnls := agent.deleteFlowsAndGroupsFromDevices(ctx, deviceRules, mod)
// Wait for the responses
go func() {
@@ -311,12 +305,6 @@
}
}
- metersConfig, err := agent.GetMeterConfig(ctx, toDelete)
- if err != nil { // This should never happen
- logger.Error(ctx, "meter-referred-in-flows-not-present")
- return err
- }
-
groups := make(map[uint32]*ofp.OfpGroupEntry)
for groupID := range agent.groupCache.ListIDs() {
if groupHandle, have := agent.groupCache.Lock(groupID); have {
@@ -341,9 +329,9 @@
// Update the devices
if partialRoute {
- respChnls = agent.deleteFlowsFromParentDevice(ctx, toDelete, toMetadata(metersConfig), mod)
+ respChnls = agent.deleteFlowsFromParentDevice(ctx, toDelete, mod)
} else {
- respChnls = agent.deleteFlowsAndGroupsFromDevices(ctx, deviceRules, toMetadata(metersConfig), mod)
+ respChnls = agent.deleteFlowsAndGroupsFromDevices(ctx, deviceRules, mod)
}
// Wait for the responses
@@ -407,11 +395,6 @@
flowsToDelete := map[uint64]*ofp.OfpFlowStats{flow.Id: flowHandle.GetReadOnly()}
- flowMetadata, err := agent.GetMeterConfig(ctx, flowsToDelete)
- if err != nil {
- logger.Error(ctx, "meter-referred-in-flows-not-present")
- return err
- }
var respChnls []coreutils.Response
var partialRoute bool
deviceRules, err := agent.flowDecomposer.DecomposeRules(ctx, agent, flowsToDelete, groups)
@@ -431,9 +414,9 @@
}
// Update the devices
if partialRoute {
- respChnls = agent.deleteFlowsFromParentDevice(ctx, flowsToDelete, toMetadata(flowMetadata), mod)
+ respChnls = agent.deleteFlowsFromParentDevice(ctx, flowsToDelete, mod)
} else {
- respChnls = agent.deleteFlowsAndGroupsFromDevices(ctx, deviceRules, toMetadata(flowMetadata), mod)
+ respChnls = agent.deleteFlowsAndGroupsFromDevices(ctx, deviceRules, mod)
}
// Wait for completion