OSDN Git Service

add JsonImporter
authort.moriyama <t.moriyama@users.sourceforge.jp>
Sun, 1 Sep 2013 17:24:48 +0000 (02:24 +0900)
committert.moriyama <t.moriyama@users.sourceforge.jp>
Sun, 1 Sep 2013 17:24:48 +0000 (02:24 +0900)
linkpair/collect/collector.py
linkpair/importer/JSON.py [new file with mode: 0755]
ti2.py

index 8e46891..463996c 100755 (executable)
@@ -54,7 +54,6 @@ class Collector(object):
         self._ssh_keyauth = False
         self._ssh_passauth = False
 
-        ''' set parameters '''
         [self._ssh_username, self._ssh_hostname,
             self._ssh_hostport] = self._u.parse_remote_desc(self._remote_desc)
         self._formatter = formatter
diff --git a/linkpair/importer/JSON.py b/linkpair/importer/JSON.py
new file mode 100755 (executable)
index 0000000..be32213
--- /dev/null
@@ -0,0 +1,75 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+# -*- coding: utf-8 -*-
+#
+
+import re
+import json
+from linkpair.device import Device
+from linkpair.port import Port
+from linkpair.linkpair import LinkPair
+from linkpair.collect.utils import CollectUtils
+from linkpair.collect.collector_dataset import CollectorDataset
+from linkpair.formatter.graphviz_tb import GraphvizTBFormatter
+
+
+class JsonImporter(object):
+
+    def __init__(self, util, import_file, formatter=GraphvizTBFormatter()):
+        self._import_file = import_file
+        self._devices = {}
+        self._ports = {}
+        self._os_info = {}
+        self._linuxnet = {}
+        self._linkpairs = []
+        self._port_to_br = {}
+        self._iface_to_nss = {}
+        self._veth_peer = {}
+#        self._opts = opts
+        self._u = util
+        self._remote_desc = ""
+        self._ssh_username = ""
+        self._ssh_hostname = ""
+        self._ssh_hostport = 22
+        self._remote_password = ""
+        self._remote_sshkey = ""
+        self._ssh_keyauth = False
+        self._ssh_passauth = False
+        self._formatter = formatter
+        self._u.debug_out("JsonImporter initialized: " + self._import_file)
+
+    def run(self):
+        cd = CollectorDataset(
+            self._devices, self._ports, self._os_info, self._linuxnet, self._linkpairs,
+            self._port_to_br, self._iface_to_nss, self._veth_peer)
+        cu = CollectUtils(
+            cd, self._u, self._formatter)
+
+        f_import = open(self._import_file)
+        json_data = json.load(f_import)
+        f_import.close()
+
+        for linkpair in json_data["linkpairs"]:
+            self._u.debug_out(linkpair["linkid"])
+            device1 = Device(linkpair["linkpair"]["device1"]["label"],
+                    int(linkpair["linkpair"]["device1"]["device_type"]),
+                    linkpair["linkpair"]["device1"]["meta"])
+            device2 = Device(linkpair["linkpair"]["device2"]["label"],
+                    int(linkpair["linkpair"]["device2"]["device_type"]),
+                    linkpair["linkpair"]["device2"]["meta"])
+            port1 = Port(linkpair["linkpair"]["port1"]["label"],
+                    int(linkpair["linkpair"]["port1"]["port_type"]),
+                    linkpair["linkpair"]["port1"]["meta"])
+            port2 = Port(linkpair["linkpair"]["port2"]["label"],
+                    int(linkpair["linkpair"]["port2"]["port_type"]),
+                    linkpair["linkpair"]["port2"]["meta"])
+            format = int(linkpair["linkpair"]["format"])
+            
+            cu.add_linkpair(
+                device1,
+                device2,
+                port1,
+                port2,
+                format)
+
+    def get_linkpairs(self):
+        return self._linkpairs
diff --git a/ti2.py b/ti2.py
index 9ce0ed6..1659045 100755 (executable)
--- a/ti2.py
+++ b/ti2.py
@@ -2,11 +2,10 @@
 # vim: tabstop=4 shiftwidth=4 softtabstop=4
 # -*- coding: utf-8 -*-
 #
-#   ti2.py : List TAP device info for running VMs
+#   ti2.py : List informations of the TAP devices for running VMs
 #
-#   2013/02/01 ver1.0
-#    basecode "tapinfo.py" : List TAP device info for running VMs
 #
+
 __version__ = '1.1'
 
 import sys
@@ -17,7 +16,8 @@ from linkpair.formatter.springy import SpringyFormatter
 from linkpair.formatter.springy_raphael import SpringyRaphaelFormatter
 from linkpair.formatter.graphviz_tb import GraphvizTBFormatter
 from linkpair.utils.common import CommonUtils
-from linkpair.exporter.json import JsonExporter
+from linkpair.exporter.JSON import JsonExporter
+from linkpair.importer.JSON import JsonImporter
 
 
 def print_linkpair_records(lps):
@@ -90,11 +90,6 @@ if __name__ == "__main__":
     util = CommonUtils()
     util.set_opts(opts)
     util.debug_out("init program options")
-    #dbu = DBUtils()
-    #if opts.database is not None and opts.database != "":
-    #    dbu.db_enable = True
-        # sql_conn = dbu.open_db(opts.database)
-        # dbu.create_tables()
 
     if opts.format == "g" or opts.format == "graph-easy":
         formatter = GraphEasyFormatter(util)
@@ -108,20 +103,22 @@ if __name__ == "__main__":
         formatter = GraphvizTBFormatter()
     util.debug_out("formatter: " + str(formatter))
 
-    col = Collector(opts, util, formatter)
-    if opts.remote_sshkey is not None:
-        col.set_remote_sshkey(opts.remote_sshkey)
-    if opts.remote_password is not None:
-        col.set_remote_password(opts.remote_password)
-
-    col.run()
-    linkpairs = col.get_linkpairs()
-    #if dbu.db_enable:
-    #    dbu.store_to_db(opts.database, linkpairs)
+    if opts.import_file is not None:
+        importer = JsonImporter(util, opts.import_file, formatter)
+        importer.run()
+        linkpairs = importer.get_linkpairs()
+    else:
+        col = Collector(opts, util, formatter)
+        if opts.remote_sshkey is not None:
+            col.set_remote_sshkey(opts.remote_sshkey)
+        if opts.remote_password is not None:
+            col.set_remote_password(opts.remote_password)
+        col.run()
+        linkpairs = col.get_linkpairs()
 
     if opts.export_stdout:
         exporter = JsonExporter(util, linkpairs)
-        print(exporter.export())
+        print(exporter.run())
         sys.exit(0)
 
     print_linkpair_records(linkpairs)