Topo2: Correctly track location of nodes PER Region.
- User's chosen drag location overrides script-configured choice.
Change-Id: If25c28c01ad79a33d0c44817351868a600870235
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2ViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2ViewMessageHandler.java
index d9e9c47..801a970d 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2ViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2ViewMessageHandler.java
@@ -19,6 +19,7 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.collect.ImmutableSet;
import org.onlab.osgi.ServiceDirectory;
+import org.onosproject.net.region.Region;
import org.onosproject.ui.RequestHandler;
import org.onosproject.ui.UiConnection;
import org.onosproject.ui.UiMessageHandler;
@@ -94,6 +95,10 @@
// ==================================================================
+ private String safeId(Region r) {
+ return r == null ? "(root)" : r.id().toString();
+ }
+
private ObjectNode mkLayoutMessage(UiTopoLayout currentLayout) {
List<UiTopoLayout> crumbs = topoSession.breadCrumbs();
@@ -109,8 +114,9 @@
private ObjectNode mkPeersMessage(UiTopoLayout currentLayout) {
Set<UiNode> peers = topoSession.getPeerNodes(currentLayout);
+ String ridStr = safeId(topoSession.currentLayout().region());
ObjectNode peersPayload = objectNode();
- peersPayload.set("peers", t2json.closedNodes(peers));
+ peersPayload.set("peers", t2json.closedNodes(ridStr, peers));
return peersPayload;
}
@@ -204,7 +210,10 @@
@Override
public void process(ObjectNode payload) {
- t2json.updateMeta(payload);
+ // NOTE: metadata for a node is stored within the context of the
+ // current region.
+ String ridStr = safeId(topoSession.currentLayout().region());
+ t2json.updateMeta(ridStr, payload);
}
}