OSDN Git Service

move linkpair.collectagent package to linkpair.collect.agent.
authort.moriyama <t.moriyama@users.sourceforge.jp>
Mon, 8 Apr 2013 16:31:15 +0000 (01:31 +0900)
committert.moriyama <t.moriyama@users.sourceforge.jp>
Mon, 8 Apr 2013 16:31:15 +0000 (01:31 +0900)
linkpair/collectagent/__init__.py [deleted file]
linkpair/collectagent/__init__.pyc [deleted file]
linkpair/collectagent/commandrunner.py [deleted file]
linkpair/collectagent/commandrunner.pyc [deleted file]
linkpair/collectagent/ovs.py [deleted file]
linkpair/collector.py [deleted file]
linkpair/collector.pyc [deleted file]

diff --git a/linkpair/collectagent/__init__.py b/linkpair/collectagent/__init__.py
deleted file mode 100755 (executable)
index e69de29..0000000
diff --git a/linkpair/collectagent/__init__.pyc b/linkpair/collectagent/__init__.pyc
deleted file mode 100644 (file)
index f0000e2..0000000
Binary files a/linkpair/collectagent/__init__.pyc and /dev/null differ
diff --git a/linkpair/collectagent/commandrunner.py b/linkpair/collectagent/commandrunner.py
deleted file mode 100755 (executable)
index 2a76309..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-
-__version__ = '1.1'
-
-import sys
-import os
-import re
-from subprocess import Popen, PIPE
-from socket import gethostname
-import shlex
-# import paramiko as ssh
-import ssh
-from linkpair.commonutils import CommonUtils
-
-
-class CommandRunner(object):
-    '''
-    Command runner
-    '''
-
-    PEER_FOUND = 1
-
-    def __init__(self, remote_desc):
-        self._u = CommonUtils()
-        self._remote_desc = remote_desc
-        self._ssh_username = ""
-        self._ssh_hostname = ""
-        self._ssh_hostport = 22
-        self._remote_password = ""
-        self._remote_sshkey = ""
-        self._ssh_keyauth = False
-        self._ssh_passauth = False
-
-        ''' set parameters '''
-        [self._ssh_username, self._ssh_hostname, self._ssh_hostport] = self._u.parse_remote_desc(remote_desc)
-
-    def exec_cmd(self, cmdline):
-        args = shlex.split(cmdline)
-        if self._remote_desc is not None:
-            result = self._exec_cmd_on_ssh(cmdline)
-        else:
-            result = Popen(args, stdout=PIPE, stderr=PIPE).stdout.readlines()
-        return result
-
-    def _exec_cmd_on_ssh(self, cmdline):
-        sshc = ssh.SSHClient()
-        sshc.load_system_host_keys()
-
-        if self._ssh_keyauth == True:
-            sshc.connect(self._ssh_hostname, username=self._ssh_username,
-                         port=self._ssh_hostport, key_filename=self._remote_sshkey)
-        elif self._ssh_passauth == True:
-            sshc.connect(self._ssh_hostname, username=self._ssh_username,
-                         port=self._ssh_hostport, password=self._remote_password)
-        else:
-            print "SSH connections failed"
-            sys.exit(1)
-
-        stdin, stdout, stderr = sshc.exec_command(cmdline)
-        result = stdout.read().splitlines()
-        return result
-    
-    def set_remote_sshkey(self, remote_sshkey):
-        self._remote_sshkey = remote_sshkey
-        self._ssh_keyauth = True
-
-    def set_remote_password(self, remote_password):
-        self._remote_password = remote_password
-        self._ssh_passauth = True
-        
-    
\ No newline at end of file
diff --git a/linkpair/collectagent/commandrunner.pyc b/linkpair/collectagent/commandrunner.pyc
deleted file mode 100644 (file)
index 885ab3a..0000000
Binary files a/linkpair/collectagent/commandrunner.pyc and /dev/null differ
diff --git a/linkpair/collectagent/ovs.py b/linkpair/collectagent/ovs.py
deleted file mode 100755 (executable)
index 604ce7c..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-
-__version__ = '1.1'
-
-import sys
-import os
-import re
-from xml.dom import minidom
-from subprocess import Popen, PIPE
-from socket import gethostname
-from device import Device
-from port import Port
-from linkpair import LinkPair
-from formatter.grapheasy import GraphEasyFormatter
-from commonutils import CommonUtils
-
-
-class OvsAgent(object):
-    '''
-    Open vSwitch Collector Agent
-    '''
-
-    PEER_FOUND = 1
-
-    def __init__(self, linkpairs, runner, formatter=GraphEasyFormatter()):
-        self._linkpairs = linkpairs
-        self._port_to_br = {}
-        self._iface_to_nss = {}
-        self._u = CommonUtils()
-        self._runner = runner
-
-        ''' set parameters '''
-        self._dbu = dbu
-        self._formatter = formatter
-
-    def get_configuration(self):
-        patch_peers = {}
-
-        result = self._exec_cmd("ovs-vsctl list-br")
-        for br_src in result:
-            br_src = br_src.rstrip()
-            result2 = self._exec_cmd("ovs-dpctl show " + br_src)
-            for port_desc in result2:
-                port_desc = port_desc.rstrip()
-                if self._u.d_push(
-                    re.search(r'port \d+: (.*?) \(patch: peer=(.*?)\)',
-                              port_desc)) is not None:
-                    match = self._u.d_pop()
-                    patch_src = match.group(1)
-                    patch_dst = match.group(2)
-                    patch_peers[patch_src + ":" + patch_dst] = self.PEER_FOUND
-
-                    if patch_dst + ":" + patch_src in patch_peers:
-                        continue
-
-                    result3 = self._exec_cmd(
-                        "ovs-vsctl port-to-br " + patch_dst)
-                    if result3 is not None and len(result3) > 0:
-                        br_dst = result3[0].rstrip()
-                        self.add_linkpair(
-                            Device(br_src, Device.BR_TYPE),
-                            Device(br_dst, Device.BR_TYPE),
-                            Port(patch_src),
-                            Port(patch_dst),
-                            self._formatter.PATCH_FORMAT)
-                    else:
-                        self.add_linkpair(
-                            Device(br_src, Device.BR_TYPE),
-                            Device("NOT CONNECTED", Device.BR_TYPE),
-                            Port(patch_src),
-                            Port(patch_dst),
-                            self._formatter.PATCH_FORMAT)
-
-                else:
-                    # Internal OVSPort.
-                    if self._u.d_push(
-                        re.search(
-                            r'port \d+: ' + br_src + ' \(internal\)',
-                            port_desc)) is None:
-                        if self._u.d_push(re.search(r'port \d+: (.*)', port_desc)) is not None:
-                            port = self._u.d_pop().group(1).rstrip()
-                            if self._u.d_push(re.match(r'^eth\d+$', port)) \
-                                or self._u.d_push(re.match(r'^em\d+$', port)) \
-                                    or self._u.d_push(re.match(r'^igb\d+$', port)):
-                                self._port_to_br[port] = br_src
-                                self.add_linkpair(
-                                    Device(br_src, Device.BR_TYPE),
-                                    Device("Physical NW", Device.PHYNET_TYPE),
-                                    Port(port),
-                                    Port(""))
-                            elif self._u.d_push(re.match(r'(vxlan\d+)', port)) \
-                                or self._u.d_push(re.match(r'(gre\d+)', port)) \
-                                    or self._u.d_push(re.match(r'(gre-\d+)', port)):
-                                port2 = self._u.d_pop().group(1)
-                                self._port_to_br[port2] = br_src
-                                self.add_linkpair(
-                                    Device(br_src, Device.BR_TYPE),
-                                    Device("OS Routing", Device.OS_ROUTE_TYPE),
-                                    Port(port),
-                                    Port(""))
-                            elif re.search(r' \(internal\)', port):
-                                port = re.sub(r' \(internal\)', '', port)
-                                if port in self._iface_to_nss:
-                                    self.add_linkpair(
-                                        Device(br_src, Device.BR_TYPE),
-                                        Device(self._iface_to_nss[
-                                               port], Device.NAMESPACE_TYPE),
-                                        Port(port),
-                                        Port(""),
-                                        self._formatter.NAMESPACE_FORMAT)
-                                else:
-                                    self.add_linkpair(
-                                        Device(br_src, Device.BR_TYPE),
-                                        Device(
-                                            "INTERNAL", Device.OS_ROUTE_TYPE),
-                                        Port(port),
-                                        Port(""))
-                            else:
-                                ## Other OVSPort
-                                self._port_to_br[port] = br_src
-                        else:
-                            continue
diff --git a/linkpair/collector.py b/linkpair/collector.py
deleted file mode 100755 (executable)
index 01e6229..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-
-__version__ = '1.1'
-
-import sys
-import os
-import re
-from xml.dom import minidom
-from subprocess import Popen, PIPE
-from socket import gethostname
-import shlex
-import libvirt
-from device import Device
-from port import Port
-from linkpair import LinkPair
-from formatter.grapheasy import GraphEasyFormatter
-from commonutils import CommonUtils
-from dbutils import DBUtils
-from collect.agent.commandrunner import CommandRunner
-
-class Collector(object):
-    '''LinkpPair collector
-
-    This class gets the LinkPair information from LinuxBridge and Open vSwitch and libvirt
-    '''
-
-    PEER_FOUND = 1
-
-    def __init__(self, remote_desc, dbu, formatter=GraphEasyFormatter()):
-        self._linkpairs = []
-        self._port_to_br = {}
-        self._iface_to_nss = {}
-        self._u = CommonUtils()
-        self._db_enable = False
-        self._sql_conn = None
-        self._remote_desc = remote_desc
-        self._ssh_username = ""
-        self._ssh_hostname = ""
-        self._ssh_hostport = 22
-        self._remote_password = ""
-        self._remote_sshkey = ""
-        self._ssh_keyauth = False
-        self._ssh_passauth = False
-
-        ''' set parameters '''
-        [self._ssh_username, self._ssh_hostname, self._ssh_hostport] = self._u.parse_remote_desc(remote_desc)
-        self._dbu = dbu
-        self._formatter = formatter
-        self._runner = CommandRunner(self._remote_desc)
-        
-    def run(self):
-        self.map_port_to_namespace()
-        self.pick_ovs_configuration()
-        self.pick_bridge_configuration()
-        self.pick_libvirt_configuration()
-    
-    def add_linkpair(self, dev1, dev2, port1, port2, format=""):
-        if format == "":
-            format = self._formatter.DEFAULT_FORMAT
-        self._linkpairs.append(
-            LinkPair(dev1, dev2, port1, port2, format))
-#        if self._dbu.enable_db:
-#            insert_record(fmt, src, src_style, label, dst, dst_style)
-
-    def get_linkpairs(self):
-        return self._linkpairs
-
-    def drop_linkpairs(self):
-        self._linkpairs = []
-
-    def pick_libvirt_configuration(self):
-        virt_conn = self.get_libvirt_conn()
-        for id in virt_conn.listDomainsID():
-            vm = virt_conn.lookupByID(id)
-            vmXMLDesc = minidom.parseString(vm.XMLDesc(0))
-            for iface in vmXMLDesc.getElementsByTagName("interface"):
-                [device, bridge] = self.pick_libvirt_iface_configuration(iface)
-                mac = iface.getElementsByTagName(
-                    "mac")[0].getAttribute("address")
-                device = iface.getElementsByTagName(
-                    "target")[0].getAttribute("dev")
-                bridge = self.regist_to_port2br(device, bridge)
-                self.add_linkpair(
-                    Device(str(vm.name()), Device.VM_TYPE),
-                    Device(bridge, Device.BR_TYPE),
-                    Port(device),
-                    Port(""))
-
-    def pick_libvirt_iface_configuration(self, iface):
-        ifaceType = iface.getAttribute("type")
-        bridge = ""
-        device = ""
-        if ifaceType == "network":
-            network = iface.getElementsByTagName(
-                "source")[0].getAttribute("network")
-            netXMLDesc = minidom.parseString(
-                virt_conn.networkLookupByName(network).XMLDesc(0))
-            bridge = netXMLDesc.getElementsByTagName(
-                "bridge")[0].getAttribute("name")
-        elif ifaceType == "bridge":
-            bridge = iface.getElementsByTagName(
-                "source")[0].getAttribute("bridge")
-        return [device, bridge]
-
-    def regist_to_port2br(self, device, bridge):
-        if device in self._port_to_br:
-            if bridge == "":
-                return self._port_to_br[device]
-            else:
-                return bridge
-        else:
-            self._port_to_br[device] = bridge
-            return bridge
-
-    def map_port_to_namespace(self):
-        result = self._runner.exec_cmd("ip netns")
-    # if result....
-        for ns in result:
-            ns = ns.rstrip()
-            result2 = self._runner.exec_cmd("ip netns exec " + ns + " ip link show")
-            for linkpair_out in result2:
-                linkpair_out = linkpair_out.rstrip()
-                match = re.match(r'\d+: (.*?): ', linkpair_out)
-                if match is not None and match.group(1) != 'lo':
-                    self._iface_to_nss[match.group(1).rstrip()] = ns
-
-    def pick_bridge_configuration(self):
-        br_name = ""
-        result = self._runner.exec_cmd("brctl show")
-        for br_line in result:
-            br_line = br_line.rstrip()
-            if self._u.d_push(re.match(r'^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$', br_line)) is not None:
-                match = self._u.d_pop()
-                br_name = match.group(1)
-                port = match.group(4)
-                if port not in self._port_to_br and br_name != "":
-                    self._port_to_br[port] = br_name
-                    ## for OpenStack quntum...
-                    if self._u.d_push(re.match(r'^qvb(.+)', port)):
-                        quantum_idprefix = self._u.d_pop().group(1)
-                        if "qvo" + quantum_idprefix in self._port_to_br:
-                            self.add_linkpair(
-                                Device(br_name, Device.BR_TYPE),
-                                Device(self._port_to_br[
-                                       "qvo" + quantum_idprefix], Device.BR_TYPE),
-                                Port(port),
-                                Port("qvo" + quantum_idprefix),
-                                self._formatter.VETH_FORMAT)
-                    else:
-                        self.add_linkpair(
-                            Device(br_name),
-                            Device("INTERNAL", Device.OS_ROUTE_TYPE),
-                            Port(port),
-                            Port(""))
-    #            else:
-    #                print self._port_to_br.keys()
-    #                if self._u.d_push(re.match(r'^qvo(.+)', port)):
-    #                    continue
-    #                add_linkpair(self.DEFAULT_FORMAT, br_name, self.DEFAULT_TYPE, port, \
-    #                  "INTERNAL", self.OS_ROUTE_TYPE )
-
-            elif self._u.d_push(re.match(r'^\s+(\S+)$', br_line)) is not None:
-                port = self._u.d_pop().group(1)
-                if port not in self._port_to_br and br_name != "":
-                    self._port_to_br[port] = br_name
-                    ## for OpenStack quntum...
-                    if self._u.d_push(re.match(r'^qvb(.+)', port)):
-                        quantum_idprefix = self._u.d_pop().group(1)
-                        if "qvo" + quantum_idprefix in self._port_to_br:
-                            self.add_linkpair(
-                                Device(br_name, Device.BR_TYPE),
-                                Device(self._port_to_br[
-                                       "qvo" + quantum_idprefix], Device.BR_TYPE),
-                                Port(port),
-                                Port("qvo" + quantum_idprefix),
-                                self._formatter.VETH_FORMAT)
-                    else:
-                        if self._u.d_push(re.match(r'^qvo(.+)', port)):
-                            continue
-                        self.add_linkpair(
-                            Device(br_name),
-                            Device("INTERNAL", Device.OS_ROUTE_TYPE),
-                            Port(port),
-                            Port(""))
-
-    def pick_ovs_configuration(self):
-        patch_peers = {}
-
-        result = self._runner.exec_cmd("ovs-vsctl list-br")
-        for br_src in result:
-            br_src = br_src.rstrip()
-            result2 = self._runner.exec_cmd("ovs-dpctl show " + br_src)
-            for port_desc in result2:
-                port_desc = port_desc.rstrip()
-                if self._u.d_push(
-                    re.search(r'port \d+: (.*?) \(patch: peer=(.*?)\)',
-                              port_desc)) is not None:
-                    match = self._u.d_pop()
-                    patch_src = match.group(1)
-                    patch_dst = match.group(2)
-                    patch_peers[patch_src + ":" + patch_dst] = self.PEER_FOUND
-
-                    if patch_dst + ":" + patch_src in patch_peers:
-                        continue
-
-                    result3 = self._runner.exec_cmd(
-                        "ovs-vsctl port-to-br " + patch_dst)
-                    if result3 is not None and len(result3) > 0:
-                        br_dst = result3[0].rstrip()
-                        self.add_linkpair(
-                            Device(br_src, Device.BR_TYPE),
-                            Device(br_dst, Device.BR_TYPE),
-                            Port(patch_src),
-                            Port(patch_dst),
-                            self._formatter.PATCH_FORMAT)
-                    else:
-                        self.add_linkpair(
-                            Device(br_src, Device.BR_TYPE),
-                            Device("NOT CONNECTED", Device.NOT_CONNECTED_TYPE),
-                            Port(patch_src),
-                            Port(patch_dst),
-                            self._formatter.PATCH_FORMAT)
-
-                else:
-                    # Internal OVSPort.
-                    if self._u.d_push(
-                        re.search(
-                            r'port \d+: ' + br_src + ' \(internal\)',
-                            port_desc)) is None:
-                        if self._u.d_push(re.search(r'port \d+: (.*)', port_desc)) is not None:
-                            port = self._u.d_pop().group(1).rstrip()
-                            if self._u.d_push(re.match(r'^eth\d+$', port)) \
-                                or self._u.d_push(re.match(r'^em\d+$', port)) \
-                                    or self._u.d_push(re.match(r'^igb\d+$', port)):
-                                self._port_to_br[port] = br_src
-                                self.add_linkpair(
-                                    Device(br_src, Device.BR_TYPE),
-                                    Device("Physical NW", Device.PHYNET_TYPE),
-                                    Port(port),
-                                    Port(""))
-                            elif self._u.d_push(re.match(r'(vxlan\d+)', port)) \
-                                or self._u.d_push(re.match(r'(gre\d+)', port)) \
-                                    or self._u.d_push(re.match(r'(gre-\d+)', port)):
-                                port2 = self._u.d_pop().group(1)
-                                self._port_to_br[port2] = br_src
-                                self.add_linkpair(
-                                    Device(br_src, Device.BR_TYPE),
-                                    Device("OS Routing", Device.OS_ROUTE_TYPE),
-                                    Port(port),
-                                    Port(""))
-                            elif re.search(r' \(internal\)', port):
-                                port = re.sub(r' \(internal\)', '', port)
-                                if port in self._iface_to_nss:
-                                    self.add_linkpair(
-                                        Device(br_src, Device.BR_TYPE),
-                                        Device(self._iface_to_nss[
-                                               port], Device.NAMESPACE_TYPE),
-                                        Port(port),
-                                        Port(""),
-                                        self._formatter.NAMESPACE_FORMAT)
-                                else:
-                                    self.add_linkpair(
-                                        Device(br_src, Device.BR_TYPE),
-                                        Device(
-                                            "INTERNAL", Device.OS_ROUTE_TYPE),
-                                        Port(port),
-                                        Port(""))
-                            else:
-                                ## Other OVSPort
-                                self._port_to_br[port] = br_src
-                        else:
-                            continue
-
-    def get_libvirt_conn(self):
-        if self._remote_desc is not None:
-            conn = libvirt.open("qemu+ssh://" + self._remote_desc + "/system")
-        else:
-            conn = libvirt.open("qemu:///system")
-        return conn
-
-    def set_remote_sshkey(self, remote_sshkey):
-        self._runner.set_remote_sshkey(remote_sshkey)
-
-    def set_remote_password(self, remote_password):
-        self._runner.set_remote_password(remote_password)
-
diff --git a/linkpair/collector.pyc b/linkpair/collector.pyc
deleted file mode 100644 (file)
index f913635..0000000
Binary files a/linkpair/collector.pyc and /dev/null differ