OSDN Git Service

modify ti2.py for LinuxNetAgent
[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 from optparse import OptionParser, OptionGroup
14 from linkpair.collect.collector import Collector
15 from linkpair.formatter.grapheasy import GraphEasyFormatter
16 from linkpair.formatter.springy import SpringyFormatter
17 from linkpair.formatter.springy_raphael import SpringyRaphaelFormatter
18 from linkpair.formatter.graphviz_tb import GraphvizTBFormatter
19 from linkpair.utils.common import CommonUtils
20 from linkpair.exporter.json import JsonExporter
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     #dbu = DBUtils()
94     #if opts.database is not None and opts.database != "":
95     #    dbu.db_enable = True
96         # sql_conn = dbu.open_db(opts.database)
97         # dbu.create_tables()
98
99     if opts.format == "g" or opts.format == "graph-easy":
100         formatter = GraphEasyFormatter(util)
101     elif opts.format == "s" or opts.format == "springy":
102         formatter = SpringyFormatter(util)
103     elif opts.format == "r" or opts.format == "springy-raphael":
104         formatter = SpringyRaphaelFormatter(util)
105     elif opts.format == "t" or opts.format == "graphviz-tb":
106         formatter = GraphvizTBFormatter(util)
107     else:
108         formatter = GraphvizTBFormatter()
109     util.debug_out("formatter: " + str(formatter))
110
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
117     col.run()
118     linkpairs = col.get_linkpairs()
119     #if dbu.db_enable:
120     #    dbu.store_to_db(opts.database, linkpairs)
121
122     if opts.export_stdout:
123         exporter = JsonExporter(util, linkpairs)
124         print(exporter.export())
125         sys.exit(0)
126
127     print_linkpair_records(linkpairs)
128
129 #    if dbu.enable_db:
130 #        dbu.close_db()