diff options
Diffstat (limited to 'framework/src/onos/tools/package')
2 files changed, 28 insertions, 3 deletions
diff --git a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java index 7c35cc53..65e3489f 100644 --- a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java +++ b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovMessageHandler.java @@ -33,7 +33,10 @@ import org.onosproject.net.link.LinkService; import org.onosproject.ui.RequestHandler; import org.onosproject.ui.UiConnection; import org.onosproject.ui.UiMessageHandler; +import org.onosproject.ui.topo.DeviceHighlight; import org.onosproject.ui.topo.Highlights; +import org.onosproject.ui.topo.NodeBadge; +import org.onosproject.ui.topo.NodeBadge.Status; import org.onosproject.ui.topo.TopoJson; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -224,11 +227,26 @@ public class AppUiTopovMessageHandler extends UiMessageHandler { if (elementOfNote != null && elementOfNote instanceof Device) { DeviceId devId = (DeviceId) elementOfNote.id(); Set<Link> links = linkService.getDeviceEgressLinks(devId); - sendHighlights(fromLinks(links, devId)); + Highlights highlights = fromLinks(links, devId); + addDeviceBadge(highlights, devId, links.size()); + sendHighlights(highlights); } // Note: could also process Host, if available } + private void addDeviceBadge(Highlights h, DeviceId devId, int n) { + DeviceHighlight dh = new DeviceHighlight(devId.toString()); + dh.setBadge(createBadge(n)); + h.add(dh); + } + + private NodeBadge createBadge(int n) { + Status status = n > 3 ? Status.ERROR : Status.WARN; + String noun = n > 3 ? "(critical)" : "(problematic)"; + String msg = "Egress links: " + n + " " + noun; + return NodeBadge.number(status, n, msg); + } + private Highlights fromLinks(Set<Link> links, DeviceId devId) { DemoLinkMap linkMap = new DemoLinkMap(); if (links != null) { diff --git a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovOverlay.java b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovOverlay.java index 98999825..48e75a5a 100644 --- a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovOverlay.java +++ b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/src/main/java/AppUiTopovOverlay.java @@ -18,13 +18,20 @@ */ package ${package}; +import org.onosproject.net.DeviceId; import org.onosproject.ui.UiTopoOverlay; import org.onosproject.ui.topo.ButtonId; import org.onosproject.ui.topo.PropertyPanel; import org.onosproject.ui.topo.TopoConstants.CoreButtons; import org.onosproject.ui.topo.TopoConstants.Glyphs; -import static org.onosproject.ui.topo.TopoConstants.Properties.*; +import static org.onosproject.ui.topo.TopoConstants.Properties.FLOWS; +import static org.onosproject.ui.topo.TopoConstants.Properties.INTENTS; +import static org.onosproject.ui.topo.TopoConstants.Properties.LATITUDE; +import static org.onosproject.ui.topo.TopoConstants.Properties.LONGITUDE; +import static org.onosproject.ui.topo.TopoConstants.Properties.TOPOLOGY_SSCS; +import static org.onosproject.ui.topo.TopoConstants.Properties.TUNNELS; +import static org.onosproject.ui.topo.TopoConstants.Properties.VERSION; /** * Our topology overlay. @@ -61,7 +68,7 @@ public class AppUiTopovOverlay extends UiTopoOverlay { } @Override - public void modifyDeviceDetails(PropertyPanel pp) { + public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) { pp.title(MY_DEVICE_TITLE); pp.removeProps(LATITUDE, LONGITUDE); |