Adding packaging script.
Added display of raw DPID and IPs or MACs for hosts.
diff --git a/apps/tvue/src/main/java/org/onlab/onos/tvue/TopologyResource.java b/apps/tvue/src/main/java/org/onlab/onos/tvue/TopologyResource.java
index 992bbb3..145e94a 100644
--- a/apps/tvue/src/main/java/org/onlab/onos/tvue/TopologyResource.java
+++ b/apps/tvue/src/main/java/org/onlab/onos/tvue/TopologyResource.java
@@ -15,6 +15,7 @@
 import org.onlab.onos.net.topology.TopologyGraph;
 import org.onlab.onos.net.topology.TopologyService;
 import org.onlab.onos.net.topology.TopologyVertex;
+import org.onlab.packet.IPAddress;
 import org.onlab.rest.BaseResource;
 
 import javax.ws.rs.GET;
@@ -54,6 +55,7 @@
         ArrayNode vertexesNode = mapper.createArrayNode();
         for (TopologyVertex vertex : graph.getVertexes()) {
             vertexesNode.add(json(mapper, vertex.deviceId(), 2,
+                                  vertex.deviceId().uri().getSchemeSpecificPart(),
                                   deviceService.isAvailable(vertex.deviceId())));
         }
 
@@ -70,14 +72,17 @@
         // Merge the exterior and interior vertexes and inject host links as
         // the exterior edges.
         for (Host host : hostService.getHosts()) {
-            vertexesNode.add(json(mapper, host.id(), 3, true));
+            Set<IPAddress> ipAddresses = host.ipAddresses();
+            IPAddress ipAddress = ipAddresses.isEmpty() ? null : ipAddresses.iterator().next();
+            String label = ipAddress != null ? ipAddress.toString() : host.mac().toString();
+            vertexesNode.add(json(mapper, host.id(), 3, label, true));
             edgesNode.add(json(mapper, 1, host.location(), new ConnectPoint(host.id(), portNumber(-1))));
         }
 
         // Now put the vertexes and edges into a root node and ship them off
         ObjectNode rootNode = mapper.createObjectNode();
-        rootNode.put("vertexes", vertexesNode);
-        rootNode.put("edges", edgesNode);
+        rootNode.set("vertexes", vertexesNode);
+        rootNode.set("edges", edgesNode);
         return Response.ok(rootNode.toString()).build();
     }
 
@@ -126,12 +131,12 @@
         return aggLinks;
     }
 
-
     // Produces JSON for a graph vertex.
     private ObjectNode json(ObjectMapper mapper, ElementId id, int group,
-                            boolean isOnline) {
+                            String label, boolean isOnline) {
         return mapper.createObjectNode()
                 .put("name", id.uri().toString())
+                .put("label", label)
                 .put("group", group)
                 .put("online", isOnline);
     }
diff --git a/apps/tvue/src/main/webapp/index.html b/apps/tvue/src/main/webapp/index.html
index 04abfa4..cf39019 100644
--- a/apps/tvue/src/main/webapp/index.html
+++ b/apps/tvue/src/main/webapp/index.html
@@ -147,8 +147,8 @@
                     }
                     return false;
                 }
-                node = {"id": vertex.name, "group": vertex.group,
-                    "online": vertex.online, "stamp": stamp};
+                node = {"id": vertex.name, "label": vertex.label,
+                    "group": vertex.group, "online": vertex.online, "stamp": stamp};
                 nodes.push(node);
                 topo.vertexes[vertex.name] = node;
                 update();
@@ -288,7 +288,7 @@
                         .attr("class", "textClass")
                         .attr("x", 20)
                         .attr("y", ".31em")
-                        .text(function (d) { return d.id; });
+                        .text(function (d) { return d.label; });
 
                 node.exit().remove();