2 # vim: tabstop=4 shiftwidth=4 softtabstop=4
3 # -*- coding: utf-8 -*-
5 # ti2.py : List TAP device info for running VMs
8 # basecode "tapinfo.py" : List TAP device info for running VMs
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
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():
28 util.debug_out("end print_linkpair_records()")
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]",
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")
59 '--disable_ovs_agent', dest='disable_ovs_agent', action="store_true", default=False,
60 help="disable Open vSwitch collector agent")
62 '--disable_linux_agent', dest='disable_linux_agent', action="store_true", default=False,
63 help="disable linux OS collector agent")
65 '--disable_linuxbridge_agent', dest='disable_linuxbridge_agent', action="store_true", default=False,
66 help="disable linux bridge collector agent")
68 '--disable_linuxvlan_agent', dest='disable_linuxvlan_agent', action="store_true", default=False,
69 help="disable linux vlan collector agent")
71 '--disable_libvirt_agent', dest='disable_libvirt_agent', action="store_true", default=False,
72 help="disable libvirt collector agent")
74 '--disable_namespace_agent', dest='disable_namespace_agent', action="store_true", default=False,
75 help="disable network namespace collector agent")
77 '--disable_sspvxlan_agent', dest='disable_sspvxlan_agent', action="store_true", default=False,
78 help="disable SSP VXLAN collector agent")
80 '--disable_veth_agent', dest='disable_veth_agent', action="store_true", default=False,
81 help="disable veth collector agent")
82 p.add_option_group(g2)
84 '-v', '--verbose', dest='verbose', action="store_true", default=False,
85 help="verbose output.")
86 (opts, args) = p.parse_args()
89 util.debug_out("init program options")
91 #if opts.database is not None and opts.database != "":
92 # dbu.db_enable = True
93 # sql_conn = dbu.open_db(opts.database)
96 if opts.format == "g" or opts.format == "graph-easy":
97 formatter = GraphEasyFormatter(util)
98 elif opts.format == "s" or opts.format == "springy":
99 formatter = SpringyFormatter(util)
100 elif opts.format == "r" or opts.format == "springy-raphael":
101 formatter = SpringyRaphaelFormatter(util)
102 elif opts.format == "t" or opts.format == "graphviz-tb":
103 formatter = GraphvizTBFormatter(util)
105 formatter = GraphvizTBFormatter()
106 util.debug_out("formatter: " + str(formatter))
108 col = Collector(opts, util, formatter)
109 if opts.remote_sshkey is not None:
110 col.set_remote_sshkey(opts.remote_sshkey)
111 if opts.remote_password is not None:
112 col.set_remote_password(opts.remote_password)
115 linkpairs = col.get_linkpairs()
117 # dbu.store_to_db(opts.database, linkpairs)
119 if opts.export_stdout:
120 exporter = JsonExporter(util, linkpairs)
121 print(exporter.export())
124 print_linkpair_records(linkpairs)