OSDN Git Service

add LinuxVlanAgent
authort.moriyama <t.moriyama@users.sourceforge.jp>
Sun, 9 Jun 2013 16:21:24 +0000 (01:21 +0900)
committert.moriyama <t.moriyama@users.sourceforge.jp>
Sun, 9 Jun 2013 16:21:24 +0000 (01:21 +0900)
linkpair/collect/agent/linuxvlan_agent.py [new file with mode: 0755]
linkpair/collect/collector.py

diff --git a/linkpair/collect/agent/linuxvlan_agent.py b/linkpair/collect/agent/linuxvlan_agent.py
new file mode 100755 (executable)
index 0000000..34555d7
--- /dev/null
@@ -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))
index ebd6953..ec8b6ff 100755 (executable)
@@ -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()