diff --git a/src/main/java/org/o3project/odenos/component/federator/FederatorOnFlow.java b/src/main/java/org/o3project/odenos/component/federator/FederatorOnFlow.java index 0c28577..c9bdcdf 100644 --- a/src/main/java/org/o3project/odenos/component/federator/FederatorOnFlow.java +++ b/src/main/java/org/o3project/odenos/component/federator/FederatorOnFlow.java @@ -325,6 +325,7 @@ protected void doFlowAddedSelect(BasicFlow fedFlow) { BasicFlow orgFlow = fedFlow.clone(); orgFlow.getPath().clear(); + orgFlow.getEdgeActions().clear(); orgFlow.setVersion("0"); // convert match @@ -347,6 +348,17 @@ protected void doFlowAddedSelect(BasicFlow fedFlow) { continue; } edgeNode = fedLink.getDstNode(); + + // convert action + Map> newEdgeActions = + convertAction2(fedNwId, fedLink.getSrcNode(), fedLink.getSrcPort(), fedFlow.getEdgeActions()); + + Map> orgEdgeActions = orgFlow.getEdgeActions(); + for (Map.Entry> entry : newEdgeActions.entrySet()) { + orgEdgeActions.put(entry.getKey(), entry.getValue()); + } + orgFlow.putEdgeActions(orgEdgeActions); + // convert path String orgPathId = convertPath(fedNwId, fedPathId); if (orgPathId != null) { @@ -354,9 +366,6 @@ protected void doFlowAddedSelect(BasicFlow fedFlow) { continue; } - // convert action - orgFlow.putEdgeActions( - convertAction2(fedNwId, fedLink.getSrcNode(), fedLink.getSrcPort(), orgFlow.getEdgeActions())); doFlowAddedSetFlowRegister(orgNwId, orgFlow); // next network @@ -365,6 +374,7 @@ protected void doFlowAddedSelect(BasicFlow fedFlow) { orgFlow = fedFlow.clone(); orgFlow.getPath().clear(); + orgFlow.getEdgeActions().clear(); orgFlow.setVersion("0"); // set match @@ -378,8 +388,7 @@ protected void doFlowAddedSelect(BasicFlow fedFlow) { // convert action try { - orgFlow.putEdgeActions( - convertAction(fedNwId, edgeNode, orgFlow.getEdgeActions())); + orgFlow.putEdgeActions(convertAction(fedNwId, edgeNode, fedFlow.getEdgeActions())); } catch (Exception e) { log.warn("failed convert flow's actions."); }