From: t.moriyama Date: Sun, 9 Jun 2013 16:21:24 +0000 (+0900) Subject: add LinuxVlanAgent X-Git-Url: http://git.osdn.net/view?p=ti2%2Fti2.git;a=commitdiff_plain;h=f7845583f6eedcf6f73fcbdc8dba1860578dc5cb add LinuxVlanAgent --- diff --git a/linkpair/collect/agent/linuxvlan_agent.py b/linkpair/collect/agent/linuxvlan_agent.py new file mode 100755 index 0000000..34555d7 --- /dev/null +++ b/linkpair/collect/agent/linuxvlan_agent.py @@ -0,0 +1,42 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# -*- coding: utf-8 -*- +# + +__version__ = '1.1' + +import re +import os +from linkpair.device import Device +from linkpair.port import Port +from linkpair.collect.agent.base_agent import BaseAgent + + +class LinuxVlanAgent(BaseAgent): + ''' + Linux VLAN Collector Agent + ''' + + def run(self): + self.pick_vlan_configuration() + + def pick_vlan_configuration(self): + if_name = "" + vlan_config_file = "/proc/net/vlan/config" + if os.path.exists(vlan_config_file): + vlan_configs = [] + result = open(vlan_config_file, "r") + for vlan_config in result: + vlan_configs.append(vlan_config) + else: + return + + for if_line in vlan_configs[2:]: + if_line = if_line.rstrip() + if self._u.d_push(re.match(r'^(\S+)\s*\|\s*(\S+)\s*\|\s*(\S+)', if_line)) is not None: + match = self._u.d_pop() + vlan_if_name = match.group(1) + vlan_vid = match.group(2) + vlan_master_if = match.group(3) + port_meta = {"vlan_vid": vlan_vid, "vlan_master_if": vlan_master_if} + self._cu.add_port(Port( + vlan_if_name, Port.DEFAULT_TYPE, port_meta)) diff --git a/linkpair/collect/collector.py b/linkpair/collect/collector.py index ebd6953..ec8b6ff 100755 --- a/linkpair/collect/collector.py +++ b/linkpair/collect/collector.py @@ -21,6 +21,7 @@ from linkpair.collect.agent.namespace_agent import NamespaceAgent from linkpair.collect.agent.veth_agent import VethAgent from linkpair.collect.agent.ovs_agent import OVSAgent from linkpair.collect.agent.linuxbridge_agent import LinuxBridgeAgent +from linkpair.collect.agent.linuxvlan_agent import LinuxVlanAgent from linkpair.collect.agent.libvirt_agent import LibvirtAgent @@ -74,6 +75,9 @@ class Collector(object): veth_agent = VethAgent( self._runner, cu, self._remote_desc, cd, self._formatter) veth_agent.run() + vlan_agent = LinuxVlanAgent( + self._runner, cu, self._remote_desc, cd, self._formatter) + vlan_agent.run() ovs_agent = OVSAgent( self._runner, cu, self._remote_desc, cd, self._formatter) ovs_agent.run()