--- /dev/null
+# 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))
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
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()