In this commit:
Removing dependence on hashing for unique groupkeys in ofdpa driver.
Group-store no longer removes groups from store if a group-operation fails due to GROUP_EXISTS.
Group-store also checks for unique group-id when given by app.
Group-provider now logs warning before making call to core.
Change-Id: I4a1dcb887cb74cd6e245df0c82c90a50d8f3898a
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
index 72fe8aa..4ccf671 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
@@ -1030,26 +1030,30 @@
obj.context().ifPresent(context -> context.onError(obj, error));
}
-
@Override
public List<String> getNextMappings(NextGroup nextGroup) {
List<String> mappings = new ArrayList<>();
List<Deque<GroupKey>> gkeys = appKryo.deserialize(nextGroup.data());
for (Deque<GroupKey> gkd : gkeys) {
Group lastGroup = null;
- String gchain = "";
+ StringBuffer gchain = new StringBuffer();
for (GroupKey gk : gkd) {
Group g = groupService.getGroup(deviceId, gk);
- gchain += " 0x" + Integer.toHexString(g.id().id()) + " -->";
+ if (g == null) {
+ gchain.append(" ERROR").append(" -->");
+ continue;
+ }
+ gchain.append(" 0x").append(Integer.toHexString(g.id().id()))
+ .append(" -->");
lastGroup = g;
}
// add port information for last group in group-chain
for (Instruction i: lastGroup.buckets().buckets().get(0).treatment().allInstructions()) {
if (i instanceof OutputInstruction) {
- gchain += " port:" + ((OutputInstruction) i).port();
+ gchain.append(" port:").append(((OutputInstruction) i).port());
}
}
- mappings.add(gchain);
+ mappings.add(gchain.toString());
}
return mappings;
}