OSDN Git Service

910af73fb2b973e110be276e533efd8dba61f9db
[ti2/ti2.git] / linkpair / collect / collector.py
1 # vim: tabstop=4 shiftwidth=4 softtabstop=4
2 # -*- coding: utf-8 -*-
3 #
4
5 __version__ = '1.1'
6
7 import sys
8 import os
9 import re
10 from linkpair.device import Device
11 from linkpair.port import Port
12 from linkpair.linkpair import LinkPair
13 from linkpair.formatter.graphviz_tb import GraphvizTBFormatter
14 from linkpair.utils.common import CommonUtils
15 from linkpair.collect.utils import CollectUtils
16 from linkpair.collect.collector_dataset import CollectorDataset
17 from linkpair.collect.agent.commandrunner import CommandRunner
18 from linkpair.collect.agent.linux_agent import LinuxAgent
19 from linkpair.collect.agent.linuxnet_agent import LinuxNetAgent
20 from linkpair.collect.agent.namespace_agent import NamespaceAgent
21 from linkpair.collect.agent.veth_agent import VethAgent
22 from linkpair.collect.agent.ovs_agent import OVSAgent
23 from linkpair.collect.agent.linuxbridge_agent import LinuxBridgeAgent
24 from linkpair.collect.agent.linuxvlan_agent import LinuxVlanAgent
25 from linkpair.collect.agent.sspvxlan_agent import SSPVxlanAgent
26 from linkpair.collect.agent.libvirt_agent import LibvirtAgent
27
28
29 class Collector(object):
30     '''LinkpPair collector
31
32     This class gets the LinkPair information from LinuxBridge and Open vSwitch and libvirt
33     '''
34
35     PEER_FOUND = 1
36
37     def __init__(self, opts, util, formatter=GraphvizTBFormatter()):
38         self._devices = {}
39         self._ports = {}
40         self._os_info = {}
41         self._linuxnet = {}
42         self._linkpairs = []
43         self._port_to_br = {}
44         self._iface_to_nss = {}
45         self._veth_peer = {}
46         self._opts = opts
47         self._u = util
48         self._remote_desc = opts.remote_desc
49         self._ssh_username = ""
50         self._ssh_hostname = ""
51         self._ssh_hostport = 22
52         self._remote_password = ""
53         self._remote_sshkey = ""
54         self._ssh_keyauth = False
55         self._ssh_passauth = False
56
57         [self._ssh_username, self._ssh_hostname,
58             self._ssh_hostport] = self._u.parse_remote_desc(self._remote_desc)
59         self._formatter = formatter
60         self._runner = CommandRunner(self._remote_desc)
61         self._u.debug_out("Collector initialized")
62
63     def run(self):
64         cd = CollectorDataset(
65             self._devices, self._ports, self._os_info, self._linuxnet, self._linkpairs,
66             self._port_to_br, self._iface_to_nss, self._veth_peer)
67         cu = CollectUtils(
68             cd, self._u, self._formatter)
69         if self._opts.disable_linux_agent == False:
70             os_agent = LinuxAgent(
71                 self._runner, cu, self._remote_desc, cd, self._formatter)
72             self._u.debug_out("OSAgent running...")
73             os_agent.run()
74         if self._opts.disable_linuxnet_agent == False:
75             linuxnet_agent = LinuxNetAgent(
76                 self._runner, cu, self._remote_desc, cd, self._formatter)
77             self._u.debug_out("LinuxNetAgent running...")
78             linuxnet_agent.run()
79         if self._opts.disable_namespace_agent == False:
80             namespace_agent = NamespaceAgent(
81                 self._runner, cu, self._remote_desc, cd, self._formatter)
82             self._u.debug_out("NameSpaceAgent running...")
83             namespace_agent.run()
84         if self._opts.disable_veth_agent == False:
85             veth_agent = VethAgent(
86                 self._runner, cu, self._remote_desc, cd, self._formatter)
87             self._u.debug_out("VethAgent running...")
88             veth_agent.run()
89         if self._opts.disable_linuxvlan_agent == False:
90             vlan_agent = LinuxVlanAgent(
91                 self._runner, cu, self._remote_desc, cd, self._formatter)
92             self._u.debug_out("LinuxVlanAgent running...")
93             vlan_agent.run()
94         if self._opts.disable_sspvxlan_agent == False:
95             vxlan_agent = SSPVxlanAgent(
96                 self._runner, cu, self._remote_desc, cd, self._formatter)
97             self._u.debug_out("SSPVxlanAgent running...")
98             vxlan_agent.run()
99         if self._opts.disable_ovs_agent == False:
100             ovs_agent = OVSAgent(
101                 self._runner, cu, self._remote_desc, cd, self._formatter)
102             self._u.debug_out("OVSAgent running...")
103             ovs_agent.run()
104         if self._opts.disable_linuxbridge_agent == False:
105             bridge_agent = LinuxBridgeAgent(
106                 self._runner, cu, self._remote_desc, cd, self._formatter)
107             self._u.debug_out("LinuxBridgeAgent running...")
108             bridge_agent.run()
109         if self._opts.disable_libvirt_agent == False:
110             libvirt_agent = LibvirtAgent(
111                 self._runner, cu, self._remote_desc, cd, self._formatter)
112             self._u.debug_out("LibvirtAgent running...")
113             libvirt_agent.run()
114
115     def get_linkpairs(self):
116         return self._linkpairs
117     
118     def connect_ssh(self):
119         self._runner.connect_ssh()
120
121     def set_remote_sshkey(self, remote_sshkey):
122         self._runner.set_remote_sshkey(remote_sshkey)
123
124     def set_remote_password(self, remote_password):
125         self._runner.set_remote_password(remote_password)