OSDN Git Service

add JsonImporter
[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 informations of the TAP devices for running VMs
6 #
7 #
8
9 __version__ = '1.1'
10
11 import sys
12 from optparse import OptionParser, OptionGroup
13 from linkpair.collect.collector import Collector
14 from linkpair.formatter.grapheasy import GraphEasyFormatter
15 from linkpair.formatter.springy import SpringyFormatter
16 from linkpair.formatter.springy_raphael import SpringyRaphaelFormatter
17 from linkpair.formatter.graphviz_tb import GraphvizTBFormatter
18 from linkpair.utils.common import CommonUtils
19 from linkpair.exporter.JSON import JsonExporter
20 from linkpair.importer.JSON import JsonImporter
21
22
23 def print_linkpair_records(lps):
24     util.debug_out("start print_linkpair_records()")
25     formatter.set_linkpairs(lps)
26     for lp in formatter.format_linkpairs():
27         util.message_out(lp)
28     util.debug_out("end print_linkpair_records()")
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="graphviz-tb",
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', '--debug', dest='debug', action="store_true", default=False,
49                  help="enable debug output")
50     p.add_option('-e', '--export_file', dest='export_file', 
51                  help="export linkpairs to json file", metavar="FILE")
52     p.add_option('-x', '--export_stdout', dest='export_stdout', action="store_true", default=False,
53                  help="export linkpairs to stdout")
54     p.add_option('-i', '--import_file', dest='import_file', 
55                  help="import json file as linkpairs", metavar="FILE")
56     g2 = OptionGroup(p, "Collector Agent flags",
57                      "disable Collector Agents")
58     g2.add_option(
59         '--disable_ovs_agent', dest='disable_ovs_agent', action="store_true", default=False,
60         help="disable Open vSwitch collector agent")
61     g2.add_option(
62         '--disable_linux_agent', dest='disable_linux_agent', action="store_true", default=False,
63         help="disable linux OS collector agent")
64     g2.add_option(
65         '--disable_linuxnet_agent', dest='disable_linuxnet_agent', action="store_true", default=False,
66         help="disable linux Network collector agent")
67     g2.add_option(
68         '--disable_linuxbridge_agent', dest='disable_linuxbridge_agent', action="store_true", default=False,
69         help="disable linux bridge collector agent")
70     g2.add_option(
71         '--disable_linuxvlan_agent', dest='disable_linuxvlan_agent', action="store_true", default=False,
72         help="disable linux vlan collector agent")
73     g2.add_option(
74         '--disable_libvirt_agent', dest='disable_libvirt_agent', action="store_true", default=False,
75         help="disable libvirt collector agent")
76     g2.add_option(
77         '--disable_namespace_agent', dest='disable_namespace_agent', action="store_true", default=False,
78         help="disable network namespace collector agent")
79     g2.add_option(
80         '--disable_sspvxlan_agent', dest='disable_sspvxlan_agent', action="store_true", default=False,
81         help="disable SSP VXLAN collector agent")
82     g2.add_option(
83         '--disable_veth_agent', dest='disable_veth_agent', action="store_true", default=False,
84         help="disable veth collector agent")
85     p.add_option_group(g2)
86     p.add_option(
87         '-v', '--verbose', dest='verbose', action="store_true", default=False,
88         help="verbose output.")
89     (opts, args) = p.parse_args()
90     util = CommonUtils()
91     util.set_opts(opts)
92     util.debug_out("init program options")
93
94     if opts.format == "g" or opts.format == "graph-easy":
95         formatter = GraphEasyFormatter(util)
96     elif opts.format == "s" or opts.format == "springy":
97         formatter = SpringyFormatter(util)
98     elif opts.format == "r" or opts.format == "springy-raphael":
99         formatter = SpringyRaphaelFormatter(util)
100     elif opts.format == "t" or opts.format == "graphviz-tb":
101         formatter = GraphvizTBFormatter(util)
102     else:
103         formatter = GraphvizTBFormatter()
104     util.debug_out("formatter: " + str(formatter))
105
106     if opts.import_file is not None:
107         importer = JsonImporter(util, opts.import_file, formatter)
108         importer.run()
109         linkpairs = importer.get_linkpairs()
110     else:
111         col = Collector(opts, util, formatter)
112         if opts.remote_sshkey is not None:
113             col.set_remote_sshkey(opts.remote_sshkey)
114         if opts.remote_password is not None:
115             col.set_remote_password(opts.remote_password)
116         col.run()
117         linkpairs = col.get_linkpairs()
118
119     if opts.export_stdout:
120         exporter = JsonExporter(util, linkpairs)
121         print(exporter.run())
122         sys.exit(0)
123
124     print_linkpair_records(linkpairs)
125
126 #    if dbu.enable_db:
127 #        dbu.close_db()