OSDN Git Service

ec3f07f1c701d7910ef2522d1a49592b5ba6bbc0
[ti2/ti2.git] / ti2.py
1 #!/usr/bin/env python
2 # vim: tabstop=4 shiftwidth=4 softtabstop=4
3 # -*- coding: utf-8 -*-
4 #
5 #   ti2.py : List TAP device info for running VMs
6 #
7 #   2013/02/01 ver1.0
8 #    basecode "tapinfo.py" : List TAP device info for running VMs
9 #
10 __version__ = '1.1'
11
12 import sys
13 import os
14 import re
15 from optparse import OptionParser, OptionGroup
16 from linkpair.collect.collector import Collector
17 from linkpair.linkpair import LinkPair
18 from linkpair.formatter.grapheasy import GraphEasyFormatter
19 from linkpair.formatter.springy import SpringyFormatter
20 from linkpair.formatter.springy_raphael import SpringyRaphaelFormatter
21 from linkpair.formatter.graphviz_tb import GraphvizTBFormatter
22 from linkpair.dbutils import DBUtils
23
24
25 def print_linkpair_records(lps):
26     format.set_linkpairs(lps)
27     for lp in format.format_linkpairs():
28         print lp
29
30 if __name__ == "__main__":
31     # init program options
32     p = OptionParser(version="ver:%s" % __version__)
33     g1 = OptionGroup(p, "Remote connection",
34                      "connect to a remote system via SSH")
35     g1.add_option('-r', '--remote', dest='remote_desc',
36                   help="specify user's name and hostname, port number (ex. -r user@hostname:22)", metavar="REMOTE_DESC")
37     g1.add_option('-p', '--password', dest='remote_password',
38                   help="specify user's SSH password", metavar="PASSWORD")
39     g1.add_option('-k', '--sshkey', dest='remote_sshkey',
40                   help="specify user's SSH private-key file", metavar="FILE")
41     p.add_option_group(g1)
42     p.add_option('-f', '--format', dest='format',
43                  choices=['g', 'graph-easy', 's', 'springy',
44                           'r', 'springy-raphael', 't', 'graphviz-tb'],
45                  default="graph-easy",
46                  help="specify output format [FORMAT: g/graph-easy, s/springy, r/springy-raphael, t/graphviz-tb]",
47                  metavar="FORMAT")
48     p.add_option('-d', '--database', dest='database', default="",
49                  help="store record to database", metavar="FILE")
50     p.add_option('-t', '--datatype', dest='datatype', default="json",
51                  help="specify database type(default: json)", metavar="TYPE")
52     p.add_option(
53         '-v', '--verbose', dest='verbose', action="store_true", default=False,
54         help="verbose output.")
55     (opts, args) = p.parse_args()
56     dbu = DBUtils()
57     if opts.database is not None and opts.database != "":
58         dbu.db_enable = True
59         # sql_conn = dbu.open_db(opts.database)
60         # dbu.create_tables()
61
62     if opts.format == "g" or opts.format == "graph-easy":
63         format = GraphEasyFormatter()
64     elif opts.format == "s" or opts.format == "springy":
65         format = SpringyFormatter()
66     elif opts.format == "r" or opts.format == "springy-raphael":
67         format = SpringyRaphaelFormatter()
68     elif opts.format == "t" or opts.format == "graphviz-tb":
69         format = GraphvizTBFormatter()
70     else:
71         format = GraphEasyFormatter()
72
73     col = Collector(opts.remote_desc, dbu, format)
74     if opts.remote_sshkey is not None:
75         col.set_remote_sshkey(opts.remote_sshkey)
76     if opts.remote_password is not None:
77         col.set_remote_password(opts.remote_password)
78
79     col.run()
80     linkpairs = col.get_linkpairs()
81     if dbu.db_enable:
82         dbu.store_to_db(opts.database, linkpairs)
83
84     print_linkpair_records(linkpairs)
85
86 #    if dbu.enable_db:
87 #        dbu.close_db()