1 # vim: tabstop=4 shiftwidth=4 softtabstop=4
2 # -*- coding: utf-8 -*-
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
29 class Collector(object):
30 '''LinkpPair collector
32 This class gets the LinkPair information from LinuxBridge and Open vSwitch and libvirt
37 def __init__(self, opts, util, formatter=GraphvizTBFormatter()):
44 self._iface_to_nss = {}
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
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")
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)
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...")
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...")
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...")
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...")
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...")
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...")
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...")
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...")
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...")
115 def get_linkpairs(self):
116 return self._linkpairs
118 def connect_ssh(self):
119 self._runner.connect_ssh()
121 def set_remote_sshkey(self, remote_sshkey):
122 self._runner.set_remote_sshkey(remote_sshkey)
124 def set_remote_password(self, remote_password):
125 self._runner.set_remote_password(remote_password)