2 # vim: tabstop=4 shiftwidth=4 softtabstop=4
3 # -*- coding: utf-8 -*-
5 # ti2.py : List informations of the TAP devices for running VMs
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
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_linuxnet_agent', dest='disable_linuxnet_agent', action="store_true", default=False,
66 help="disable linux Network collector agent")
68 '--disable_linuxbridge_agent', dest='disable_linuxbridge_agent', action="store_true", default=False,
69 help="disable linux bridge collector agent")
71 '--disable_linuxvlan_agent', dest='disable_linuxvlan_agent', action="store_true", default=False,
72 help="disable linux vlan collector agent")
74 '--disable_libvirt_agent', dest='disable_libvirt_agent', action="store_true", default=False,
75 help="disable libvirt collector agent")
77 '--disable_namespace_agent', dest='disable_namespace_agent', action="store_true", default=False,
78 help="disable network namespace collector agent")
80 '--disable_sspvxlan_agent', dest='disable_sspvxlan_agent', action="store_true", default=False,
81 help="disable SSP VXLAN collector agent")
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)
87 '-v', '--verbose', dest='verbose', action="store_true", default=False,
88 help="verbose output.")
89 (opts, args) = p.parse_args()
92 util.debug_out("init program options")
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)
103 formatter = GraphvizTBFormatter()
104 util.debug_out("formatter: " + str(formatter))
106 if opts.import_file is not None:
107 importer = JsonImporter(util, opts.import_file, formatter)
109 linkpairs = importer.get_linkpairs()
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)
117 linkpairs = col.get_linkpairs()
119 if opts.export_stdout:
120 exporter = JsonExporter(util, linkpairs)
121 print(exporter.run())
124 print_linkpair_records(linkpairs)