OSDN Git Service

support springy 1.2 or later format
authort.moriyama <t.moriyama@users.sourceforge.jp>
Sun, 9 Jun 2013 14:51:58 +0000 (23:51 +0900)
committert.moriyama <t.moriyama@users.sourceforge.jp>
Sun, 9 Jun 2013 14:51:58 +0000 (23:51 +0900)
linkpair/collect/agent/ovs_agent.py
linkpair/formatter/baseformatter.py
linkpair/formatter/grapheasy.py
linkpair/formatter/graphviz_tb.py
linkpair/formatter/springy.py
linkpair/formatter/springy_raphael.py

index f59e359..7f70f15 100755 (executable)
@@ -199,7 +199,8 @@ class OVSAgent(BaseAgent):
                                 Device(br_src, Device.BR_TYPE, br_src_meta),
                                 Device("OS Routing", Device.OS_ROUTE_TYPE),
                                 Port(port_name, Port.DEFAULT_TYPE, port_meta),
-                                Port(""))
+                                Port(""),
+                                self._formatter.OS_ROUTING_FORMAT)
 
                         else:
                             ## Other OVSPort
index de24430..8198211 100755 (executable)
@@ -22,9 +22,10 @@ class BaseFormatter(object):
     NOT_CONNECTED_STYLE = ''
 
     DEFAULT_FORMAT = '[ %s ] %s -- { label: "%s   %s"; } [ %s ] %s'
+    OS_ROUTING_FORMAT = '[ %s ] %s -- { label: "%s %s"; } [ %s ] %s'
     NAMESPACE_FORMAT = '[ %s ] %s --> { label: %s   %s; } [ %s ] %'
-    PATCH_FORMAT = '[ %s ] %s <==> { label: %s : %s; } [ %s ] %s'
-    VETH_FORMAT = '[ %s ] %s <--> { label: %s \| %s; } [ %s ] %s'
+    PATCH_FORMAT = '[ %s ] %s <==> { label: %s  :  %s; } [ %s ] %s'
+    VETH_FORMAT = '[ %s ] %s <--> { label: %s  \|  %s; } [ %s ] %s'
 
     HEADER_FORMAT = ""
     FOOTER_FORMAT = ""
@@ -39,12 +40,26 @@ class BaseFormatter(object):
     def format_linkpair(cls, linkpair):
         formatted_lp = ""
 
+        device1_label = linkpair.device1
+        device2_label = linkpair.device2        
+        port1_label = linkpair.port1
+        port2_label = linkpair.port2
+        
+        if linkpair.port1.metadata.has_key("remote_ip"):
+            port1_label = port1_label + " remote=" + linkpair.port1.metadata["remote_ip"]
+        if linkpair.port1.metadata.has_key("tag"):
+            port1_label = port1_label + " vlan=" + linkpair.port1.metadata["tag"]
+        if linkpair.port2.metadata.has_key("remote_ip"):
+            port2_label = port2_label + " remote=" + linkpair.port2.metadata["remote_ip"]
+        if linkpair.port2.metadata.has_key("tag"):
+            port2_label = port2_label + " vlan=" + linkpair.port2.metadata["tag"]
+        
         formatted_lp = linkpair.format % (
-            linkpair.device1,
+            device1_label,
             cls.get_device_style(linkpair.device1.type),
-            linkpair.port1,
-            linkpair.port2,
-            linkpair.device2,
+            port1_label,
+            port2_label,
+            device2_label,
             cls.get_device_style(linkpair.device2.type))
         return formatted_lp
 
index 1386654..bbf3847 100755 (executable)
@@ -28,6 +28,7 @@ class GraphEasyFormatter(BaseFormatter):
 #    VETH_FORMAT = '[ %s ] %s <--> { label: "%s \| %s"; } [ %s ] %s'
 
     DEFAULT_FORMAT = '[ %s ] %s -- { label: "%s   %s"; labelcolor: #663333; } [ %s ] %s'
+    OS_ROUTING_FORMAT = '[ %s ] %s -- { label: "%s   %s"; labelcolor: #663333; } [ %s ] %s'
     NAMESPACE_FORMAT = '[ %s ] %s --> { label: "%s   %s"; labelcolor: #663333; } [ %s ] %s'
     PATCH_FORMAT = '[ %s ] %s <==> { label: "%s : %s"; labelcolor: #333366; } [ %s ] %s'
     VETH_FORMAT = '[ %s ] %s <--> { label: "%s \| %s"; labelcolor: #336633; } [ %s ] %s'
index 88a7963..0abd574 100755 (executable)
@@ -24,9 +24,10 @@ class GraphvizTBFormatter(BaseFormatter):
     NOT_CONNECTED_STYLE = 'fillcolor="#ffdddd", style="filled,dotted"'
 
     DEFAULT_FORMAT = '"%s" -> "%s" [ color="#000000", fontcolor="#663333", label = "%s     %s" ]'
+    OS_ROUTING_FORMAT = '"%s" -> "%s" [ color="#000000", fontcolor="#663333", label = "%s     %s", style="dotted" ]'
     NAMESPACE_FORMAT = '"%s" -> "%s" [ color="#000000", fontcolor="#663333", label = "%s     %s" ]'
-    PATCH_FORMAT = '"%s" -> "%s" [ dir=both, arrowhead=box, arrowtail=box, color="#000000:#000000", fontcolor="#333366", label = "%s  :  %s" ]'
-    VETH_FORMAT = '"%s" -> "%s" [ color="#000000", fontcolor="#336633", label="%s  \|  %s" ]'
+    PATCH_FORMAT = '"%s" -> "%s" [ dir=both, arrowhead=box, arrowtail=box, color="#000000:#000000", fontcolor="#333366", label = "%s : %s" ]'
+    VETH_FORMAT = '"%s" -> "%s" [ dir=both, arrowhead=box, arrowtail=box, color="#000000", fontcolor="#336633", label="%s \| %s" ]'
 
     # ADDNODE_STYLE = '"%s" [ fillcolor="#ffffff", style="filled,dotted" ]'
     ADDNODE_STYLE = '"%s" [ %s ]'
@@ -122,9 +123,23 @@ node [
     @classmethod
     def format_linkpair(cls, linkpair):
         formatted_lp = ""
+        device1_label = linkpair.device1
+        device2_label = linkpair.device2        
+        port1_label = linkpair.port1
+        port2_label = linkpair.port2
+        
+        if linkpair.port1.metadata.has_key("remote_ip"):
+            port1_label = port1_label + " remote=" + linkpair.port1.metadata["remote_ip"].replace("\"", "\\\"")
+        if linkpair.port1.metadata.has_key("tag"):
+            port1_label = port1_label + " vlan=" + linkpair.port1.metadata["tag"]
+        if linkpair.port2.metadata.has_key("remote_ip"):
+            port2_label = port2_label + " remote=" + linkpair.port2.metadata["remote_ip"]
+        if linkpair.port2.metadata.has_key("tag"):
+            port2_label = port2_label + " vlan=" + linkpair.port2.metadata["tag"]
+
         formatted_lp = linkpair.format % (
-            linkpair.device1,
-            linkpair.device2,
-            linkpair.port1,
-            linkpair.port2)
+            device1_label,
+            device2_label,
+            port1_label,
+            port2_label)
         return formatted_lp
index a033a19..d8d5350 100755 (executable)
@@ -23,6 +23,7 @@ class SpringyFormatter(BaseFormatter):
     NOT_CONNECTED_STYLE = "color: '#FFDDDD', directional: true"
 
     DEFAULT_FORMAT = "['%s', '%s', {%s, label: '%s %s'}]"
+    OS_ROUTING_FORMAT = "['%s', '%s', {%s, label: '%s %s'}]"
     NAMESPACE_FORMAT = "['%s', '%s', {%s, label: '%s %s'}]"
     PATCH_FORMAT = "['%s', '%s', {%s, label: '%s : %s'}]"
     VETH_FORMAT = "['%s', '%s', {%s, label: '%s \| %s'}]"
@@ -42,7 +43,7 @@ class SpringyFormatter(BaseFormatter):
 <script src="springy.js"></script>
 <script src="springyui.js"></script>
 <script>
-var graph = new Graph();
+var graph = new Springy.Graph();
     '''
 
     FOOTER_FORMAT = '''
@@ -77,10 +78,24 @@ jQuery(function(){
     @classmethod
     def format_linkpair(cls, linkpair):
         formatted_lp = ""
+        device1_label = linkpair.device1
+        device2_label = linkpair.device2        
+        port1_label = linkpair.port1
+        port2_label = linkpair.port2
+        
+        if linkpair.port1.metadata.has_key("remote_ip"):
+            port1_label = port1_label + " remote=" + linkpair.port1.metadata["remote_ip"].replace("\"", "\\\"")
+        if linkpair.port1.metadata.has_key("tag"):
+            port1_label = port1_label + " vlan=" + linkpair.port1.metadata["tag"]
+        if linkpair.port2.metadata.has_key("remote_ip"):
+            port2_label = port2_label + " remote=" + linkpair.port2.metadata["remote_ip"]
+        if linkpair.port2.metadata.has_key("tag"):
+            port2_label = port2_label + " vlan=" + linkpair.port2.metadata["tag"]
+            
         formatted_lp = linkpair.format % (
-            linkpair.device1,
-            linkpair.device2,
+            device1_label,
+            device2_label,
             cls.get_device_style(linkpair.device1.type),
-            linkpair.port1,
-            linkpair.port2)
+            port1_label,
+            port2_label)
         return formatted_lp
index b7242f6..1f3a4e3 100755 (executable)
@@ -23,6 +23,7 @@ class SpringyRaphaelFormatter(BaseFormatter):
     NAMESPACE_STYLE = "color: '#FFDDDD', directional: true"
 
     DEFAULT_FORMAT = "graph.newEdge(%s, %s, {color: '#00A0B0'});"
+    OS_ROUTING_FORMAT = "graph.newEdge(%s, %s, {color: '#00A0B0'});"
     NAMESPACE_FORMAT = "graph.newEdge(%s, %s, {color: '#00A0B0'});"
     PATCH_FORMAT = "graph.newEdge(%s, %s, {color: '#00A0B0'});"
     VETH_FORMAT = "graph.newEdge(%s, %s, {color: '#00A0B0'});"
@@ -149,7 +150,7 @@ Raphael.fn.connection = function (obj1, obj2, style) {
 };
 </script>
 <script>
-var graph = new Graph();
+var graph = new Springy.Graph();
     '''
 
     FOOTER_FORMAT = '''
@@ -184,16 +185,16 @@ function moveSet(set, x, y) {
 }
 
 function doit() {
-    var layout = new Layout.ForceDirected(graph, 1024, 800.0, 0.5);
+    var layout = new Springy.Layout.ForceDirected(graph, 1024, 800.0, 0.5);
 
     var r = Raphael("holder", 1024, 800);
 
     // calculate bounding box of graph layout.. with ease-in
     var currentBB = layout.getBoundingBox();
-    var targetBB = {bottomleft: new Vector(-2, -2), topright: new Vector(2, 2)};
+    var targetBB = {bottomleft: new Springy.Vector(-2, -2), topright: new Springy.Vector(2, 2)};
 
     // auto adjusting bounding box
-    Layout.requestAnimationFrame(function adjust() {
+    Springy.requestAnimationFrame(function adjust() {
         targetBB = layout.getBoundingBox();
         // current gets 20% closer to target every iteration
         currentBB = {
@@ -211,11 +212,11 @@ function doit() {
         var size = currentBB.topright.subtract(currentBB.bottomleft);
         var sx = p.subtract(currentBB.bottomleft).divide(size.x).x * r.width;
         var sy = p.subtract(currentBB.bottomleft).divide(size.y).y * r.height;
-        return new Vector(sx, sy);
+        return new Springy.Vector(sx, sy);
     };
 
 
-    var renderer = new Renderer(layout,
+    var renderer = new Springy.Renderer(layout,
         function clear() {
             // code to clear screen
         },