def exec_cmd(self, cmdline, enable_cache=True):
if enable_cache:
- if self._command_result_cache.has_key(cmdline):
+ if cmdline in self._command_result_cache:
return self._command_result_cache[cmdline]
args = shlex.split(cmdline)
result = Popen(args, stdout=PIPE, stderr=PIPE).stdout.readlines()
self._command_result_cache[cmdline] = result
return result
-
+
def _exec_cmd_on_ssh(self, cmdline):
sshc = ssh.SSHClient()
sshc.load_system_host_keys()
if self._cu.get_port_vlan_master_if(port_meta) != self._cu.PORT_VLAN_UNSPECIFIED:
master_if = self._cu.get_port_vlan_master_if(
port_meta)
- if self._cu._port_to_br.has_key(master_if):
+ if master_if in self._cu._port_to_br:
self._cu._port_to_br[port_name] = br_src
port_src = port_name
port_dst = master_if
if peer_dst in self._port_to_br:
self._cu.add_linkpair(
Device(br_name, Device.BR_TYPE),
- Device(self._port_to_br[peer_dst], Device.BR_TYPE),
+ Device(self._port_to_br[
+ peer_dst], Device.BR_TYPE),
Port(peer_src),
Port(peer_dst),
self._formatter.VETH_FORMAT)
patch_src = port_name
patch_dst = self._cu.get_port_peer(port_meta)
patch_peers[patch_src + ":" + patch_dst] = self.PEER_FOUND
-
+
if patch_dst + ":" + patch_src in patch_peers:
continue
if self._cu.get_port_vlan_master_if(port_meta) != self._cu.PORT_VLAN_UNSPECIFIED:
master_if = self._cu.get_port_vlan_master_if(
port_meta)
- if self._cu._port_to_br.has_key(master_if):
+ if master_if in self._cu._port_to_br:
self._cu._port_to_br[port_name] = br_src
port_src = port_name
port_src_meta = port_meta
br_dst = self._cu._port_to_br[master_if]
br_dst_obj = self._cu.get_device(br_dst)
self._cu.add_linkpair(
- Device(br_src, Device.BR_TYPE, br_src_meta),
+ Device(
+ br_src, Device.BR_TYPE, br_src_meta),
br_dst_obj,
- Port(port_src, Port.DEFAULT_TYPE, port_src_meta),
+ Port(
+ port_src, Port.DEFAULT_TYPE, port_src_meta),
port_dst_obj,
self._formatter.VLAN_DIST_FORMAT)
-
+
elif self._u.d_push(re.match(r'^eth\d+$', master_if)) \
or self._u.d_push(re.match(r'^em\d+$', master_if)) \
or self._u.d_push(re.match(r'^igb\d+$', master_if)) \
if self._u.d_push(re.match(r'^(vxlan\d+)', vxlan_if_dir)) is not None:
match = self._u.d_pop()
vxlan_if_name = match.group(1)
- vxlan_remote = self._runner.exec_cmd("cat " + vxlan_base_dir + vxlan_if_name + "/" + "remote")
- vxlan_ifconfigs = self._runner.exec_cmd("ifconfig " + vxlan_if_name)
+ vxlan_remote = self._runner.exec_cmd(
+ "cat " + vxlan_base_dir + vxlan_if_name + "/" + "remote")
+ vxlan_ifconfigs = self._runner.exec_cmd(
+ "ifconfig " + vxlan_if_name)
for vxlan_ifconfig in vxlan_ifconfigs:
vxlan_ifconfig = vxlan_ifconfig.strip()
if self._u.d_push(re.match(r'VXLAN VNI\s+:\s+(\d+)', vxlan_ifconfig)) is not None:
vxlan_vnid = self._u.d_pop().group(1)
port_meta = {
- "vxlan_vnid": vxlan_vnid, "remote_ip": "\\\"" +vxlan_remote[0] + "\\\""}
+ "vxlan_vnid": vxlan_vnid, "remote_ip": "\\\"" + vxlan_remote[0] + "\\\""}
self._cu.add_port(Port(
vxlan_if_name, Port.DEFAULT_TYPE, port_meta))
break
return self._devices[device_name]
else:
return self.DEVICE_NOT_FOUND
-
+
def get_linkpair_by_device_port(self, dev1_name, port1_name):
for linkpair in self._linkpairs:
if linkpair.device1 == dev1_name:
if linkpair.port1 == port1_name:
return True
return False
-
+
def exist_port(self, device_name):
if device_name in self._devices:
return True
# else:
# return self.PORT_TYPE_UNSPECIFIED
-
def get_port_vlan_master_if(self, port_meta):
if "vlan_master_if" in port_meta:
return port_meta["vlan_master_if"]
self._groupid = 1
self._u.debug_out(self.formatter_name + " formatter initialized")
-
@classmethod
def format_linkpair(cls, linkpair):
formatted_lp = ""
def set(self, title):
self._title = title
- def __repr__(self):
- return self.formatter_name
+ def to_json(self):
+ return "[ formatter_name: " + self.formatter_name + ", " + "title: " + self._title + " ]"
linkpair.port1.metadata["tag"]
if "vlan_vid" in linkpair.port1.metadata:
port1_label = port1_label + " vid=" + \
- linkpair.port1.metadata["vlan_vid"]
+ linkpair.port1.metadata["vlan_vid"]
if "vxlan_vnid" in linkpair.port1.metadata:
port1_label = port1_label + " vnid=" + \
- linkpair.port1.metadata["vxlan_vnid"]
+ linkpair.port1.metadata["vxlan_vnid"]
if "remote_ip" in linkpair.port2.metadata:
port2_label = port2_label + " remote=" + \
linkpair.port2.metadata["remote_ip"]
linkpair.port2.metadata["tag"]
if "vlan_vid" in linkpair.port2.metadata:
port2_label = port2_label + " vid=" + \
- linkpair.port2.metadata["vlan_vid"]
+ linkpair.port2.metadata["vlan_vid"]
if "vxlan_vnid" in linkpair.port2.metadata:
port2_label = port2_label + " vnid=" + \
- linkpair.port2.metadata["vxlan_vnid"]
+ linkpair.port2.metadata["vxlan_vnid"]
formatted_lp = linkpair.format % (
device1_label,
PATCH_FORMAT = "['%s', '%s', {%s, label: '%s : %s'}]"
VETH_FORMAT = "['%s', '%s', {%s, label: '%s \| %s'}]"
VLAN_DIST_FORMAT = "['%s', '%s', {%s, label: '%s\(%s\)'}]"
-
+
ADDNODE_STYLE = "graph.addNodes('%s');"
ADDEDGE_START = "graph.addEdges("
ADDEDGE_END = ");"
linkpair.port1.metadata["tag"]
if "vlan_vid" in linkpair.port1.metadata:
port1_label = port1_label + " vid=" + \
- linkpair.port1.metadata["vlan_vid"]
+ linkpair.port1.metadata["vlan_vid"]
if "vxlan_vnid" in linkpair.port1.metadata:
port1_label = port1_label + " vnid=" + \
- linkpair.port1.metadata["vxlan_vnid"]
+ linkpair.port1.metadata["vxlan_vnid"]
if "remote_ip" in linkpair.port2.metadata:
port2_label = port2_label + " remote=" + \
linkpair.port2.metadata["remote_ip"]
linkpair.port2.metadata["tag"]
if "vlan_vid" in linkpair.port2.metadata:
port2_label = port2_label + " vid=" + \
- linkpair.port2.metadata["vlan_vid"]
+ linkpair.port2.metadata["vlan_vid"]
if "vxlan_vnid" in linkpair.port2.metadata:
port2_label = port2_label + " vnid=" + \
- linkpair.port2.metadata["vxlan_vnid"]
+ linkpair.port2.metadata["vxlan_vnid"]
formatted_lp = linkpair.format % (
device1_label,
return self.label
def __repr__(self):
- return "[\"" + self.label + "\", \"" + repr(self.type) + "\", \"" + repr(self.metadata) + "\" ]"
+ return "[\"" + self.label + "\", \"" + repr(self.type) + "\", [" + repr(self.metadata) + "]]"
def __add__(self, label):
return self.label + label
class LinkPair(object):
- def __init__(self, device1, device2, port1, port2, format):
+ def __init__(self, device1, device2, port1, port2, format, format_name=""):
self.device1 = device1
self.device2 = device2
self.port1 = port1
self.port2 = port2
self.format = format
+ self.format_name = format_name
@apply
def device1():
" -- " + str(self.port2) + ":[" + str(self.device2) + "]"
def to_json(self):
- return "{ \"device1\": " + repr(self.device1) + ", " + \
+ return "[ \"device1\": " + repr(self.device1) + ", " + \
" \"device2\": " + repr(self.device2) + ", " + \
" \"port1\": " + repr(self.port1) + ", " + \
" \"port2\": " + repr(self.port2) + ", " + \
- " \"format\": \"" + \
- base64.urlsafe_b64encode(self.format) + "\" }"
+ " \"format\": \"" + repr(self.format_name) + "\" ]"
import re
import sys
+
class CommonUtils(object):
def __init__(self):
self._tmp_stack = []
-
+
def set_opts(self, opts):
self._opts = opts