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:
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}
+ 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))
Open vSwitch Collector Agent
'''
- PORT_TYPE_UNSPECIFIED = "UNSPECIFIED"
- PORT_PEER_UNSPECIFIED = "UNSPECIFIED"
-
def run(self):
self.get_configuration()
return br_meta
- def get_port_metadata(self, port):
+ def get_port_metadata(self, port_name):
port_meta = {}
+ exist_port = self._cu.get_port(port_name)
+ if exist_port != self._cu.PORT_NOT_FOUND:
+ port_meta = exist_port.metadata
+
res_ovsport = self._runner.exec_cmd("ovs-vsctl show")
for i in range(0, len(res_ovsport)):
port_start = res_ovsport[i].strip()
- if self._u.d_push(re.search(r'Port "?%s"?' % port, port_start)) is not None:
+ if self._u.d_push(re.search(r'Port "?%s"?' % port_name, port_start)) is not None:
for j in range(i + 1, len(res_ovsport)):
port_spec = res_ovsport[j].strip()
if self._u.d_push(re.search(r'tag: (.*)', port_spec)) is not None:
return port_meta
- def get_port_type(self, port_meta):
- if "type" in port_meta:
- return port_meta["type"]
- else:
- return self.PORT_TYPE_UNSPECIFIED
-
- def get_port_peer(self, port_meta):
- if self.get_port_type(port_meta) == "patch":
- return port_meta["peer"]
- else:
- return self.PORT_TYPE_UNSPECIFIED
-
- def get_port_veth_peer(self, port_name):
- port = self._cu.get_port(port_name)
- if port != self._cu.PORT_NOT_FOUND:
- port_meta = port.metadata
- if "veth_peer" in port_meta:
- return port_meta["veth_peer"]
- else:
- return self.PORT_PEER_UNSPECIFIED
- else:
- return self.PORT_PEER_UNSPECIFIED
-
def get_configuration(self):
patch_peers = {}
veth_peers = {}
port_meta = self.get_port_metadata(port_name)
# patch port
- if self.get_port_type(port_meta) == "patch":
+ if self._cu.get_port_type(port_meta) == "patch":
patch_src = port_name
- patch_dst = self.get_port_peer(port_meta)
+ 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:
self._formatter.PATCH_FORMAT)
# veth port
- elif self.get_port_veth_peer(port_name) != self.PORT_PEER_UNSPECIFIED:
+ elif self._cu.get_port_veth_peer(port_name) != self._cu.PORT_PEER_UNSPECIFIED:
peer_src = port_name
- peer_dst = self.get_port_veth_peer(port_name)
+ peer_dst = self._cu.get_port_veth_peer(port_name)
veth_peers[peer_src + ":" + peer_dst] = self.PEER_FOUND
if peer_dst + ":" + peer_src in veth_peers:
# none patch port
else:
# NOT Internal Bridge Port.
- if self.get_port_type(port_meta) != "internal":
+ if self._cu.get_port_type(port_meta) != "internal":
# physical interface
if self._u.d_push(re.match(r'^eth\d+$', port_name)) \
else:
## Other OVSPort
- self._cu._port_to_br[port_name] = br_src
+ #### VLAN interface
+ 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._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)) \
+ or self._u.d_push(re.match(r'^bond\d+$', master_if)):
+ self._cu._port_to_br[port_name] = br_src
+ self._cu.add_linkpair(
+ Device(
+ br_src, Device.BR_TYPE, br_src_meta),
+ Device(
+ "Physical NW", Device.PHYNET_TYPE),
+ Port(
+ port_name, Port.DEFAULT_TYPE, port_meta),
+ Port(""))
+ else:
+ self._cu._port_to_br[port_name] = br_src
+ self._cu.add_linkpair(
+ Device(
+ br_src, Device.BR_TYPE, br_src_meta),
+ Device(
+ "NOT CONNECTED", Device.NOT_CONNECTED_TYPE),
+ Port(
+ port_name, Port.DEFAULT_TYPE, port_meta),
+ Port(""))
# internal
- elif self.get_port_type(port_meta) == "internal":
+ elif self._cu.get_port_type(port_meta) == "internal":
if port_name in self._iface_to_nss:
self._cu.add_linkpair(
Device(br_src, Device.BR_TYPE, br_src_meta),
PEER_FOUND = 1
DEVICE_NOT_FOUND = -1
PORT_NOT_FOUND = -1
+ PORT_TYPE_UNSPECIFIED = "UNSPECIFIED"
+ PORT_PEER_UNSPECIFIED = "UNSPECIFIED"
+ PORT_VLAN_UNSPECIFIED = "UNSPECIFIED"
def __init__(self, cd, dbu, formatter=GraphEasyFormatter()):
self._devices = cd.devices
else:
self._port_to_br[device] = bridge
return bridge
+
+ def get_port_type(self, port_meta):
+ if "type" in port_meta:
+ return port_meta["type"]
+ else:
+ return self.PORT_TYPE_UNSPECIFIED
+
+ def get_port_peer(self, port_meta):
+ if self.get_port_type(port_meta) == "patch":
+ return port_meta["peer"]
+ 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"]
+ else:
+ return self.PORT_VLAN_UNSPECIFIED
+
+ def get_port_veth_peer(self, port_name):
+ port = self.get_port(port_name)
+ if port != self.PORT_NOT_FOUND:
+ port_meta = port.metadata
+ if "veth_peer" in port_meta:
+ return port_meta["veth_peer"]
+ else:
+ return self.PORT_PEER_UNSPECIFIED
+ else:
+ return self.PORT_PEER_UNSPECIFIED
formatted_lp = ""
device1_label = linkpair.device1
- device2_label = linkpair.device2
+ device2_label = linkpair.device2
port1_label = linkpair.port1
port2_label = linkpair.port2
-
- if linkpair.port1.metadata.has_key("remote_ip"):
- port1_label = port1_label + " remote=" + linkpair.port1.metadata["remote_ip"]
- if linkpair.port1.metadata.has_key("tag"):
- port1_label = port1_label + " vlan=" + linkpair.port1.metadata["tag"]
- if linkpair.port2.metadata.has_key("remote_ip"):
- port2_label = port2_label + " remote=" + linkpair.port2.metadata["remote_ip"]
- if linkpair.port2.metadata.has_key("tag"):
- port2_label = port2_label + " vlan=" + linkpair.port2.metadata["tag"]
-
+
+ if "remote_ip" in linkpair.port1.metadata:
+ port1_label = port1_label + " remote=" + \
+ linkpair.port1.metadata["remote_ip"]
+ if "tag" in linkpair.port1.metadata:
+ port1_label = port1_label + " vlan=" + \
+ linkpair.port1.metadata["tag"]
+ if "remote_ip" in linkpair.port2.metadata:
+ port2_label = port2_label + " remote=" + \
+ linkpair.port2.metadata["remote_ip"]
+ if "tag" in linkpair.port2.metadata:
+ port2_label = port2_label + " vlan=" + \
+ linkpair.port2.metadata["tag"]
+
formatted_lp = linkpair.format % (
device1_label,
cls.get_device_style(linkpair.device1.type),
def format_linkpair(cls, linkpair):
formatted_lp = ""
device1_label = linkpair.device1
- device2_label = linkpair.device2
+ device2_label = linkpair.device2
port1_label = linkpair.port1
port2_label = linkpair.port2
-
- if linkpair.port1.metadata.has_key("remote_ip"):
- port1_label = port1_label + " remote=" + linkpair.port1.metadata["remote_ip"].replace("\"", "\\\"")
- if linkpair.port1.metadata.has_key("tag"):
- port1_label = port1_label + " vlan=" + linkpair.port1.metadata["tag"]
- if linkpair.port2.metadata.has_key("remote_ip"):
- port2_label = port2_label + " remote=" + linkpair.port2.metadata["remote_ip"]
- if linkpair.port2.metadata.has_key("tag"):
- port2_label = port2_label + " vlan=" + linkpair.port2.metadata["tag"]
+
+ if "remote_ip" in linkpair.port1.metadata:
+ port1_label = port1_label + " remote=" + \
+ linkpair.port1.metadata["remote_ip"].replace("\"", "\\\"")
+ if "tag" in linkpair.port1.metadata:
+ port1_label = port1_label + " vlan=" + \
+ linkpair.port1.metadata["tag"]
+ if "remote_ip" in linkpair.port2.metadata:
+ port2_label = port2_label + " remote=" + \
+ linkpair.port2.metadata["remote_ip"]
+ if "tag" in linkpair.port2.metadata:
+ port2_label = port2_label + " vlan=" + \
+ linkpair.port2.metadata["tag"]
formatted_lp = linkpair.format % (
device1_label,
def format_linkpair(cls, linkpair):
formatted_lp = ""
device1_label = linkpair.device1
- device2_label = linkpair.device2
+ device2_label = linkpair.device2
port1_label = linkpair.port1
port2_label = linkpair.port2
-
- if linkpair.port1.metadata.has_key("remote_ip"):
- port1_label = port1_label + " remote=" + linkpair.port1.metadata["remote_ip"].replace("\"", "\\\"")
- if linkpair.port1.metadata.has_key("tag"):
- port1_label = port1_label + " vlan=" + linkpair.port1.metadata["tag"]
- if linkpair.port2.metadata.has_key("remote_ip"):
- port2_label = port2_label + " remote=" + linkpair.port2.metadata["remote_ip"]
- if linkpair.port2.metadata.has_key("tag"):
- port2_label = port2_label + " vlan=" + linkpair.port2.metadata["tag"]
-
+
+ if "remote_ip" in linkpair.port1.metadata:
+ port1_label = port1_label + " remote=" + \
+ linkpair.port1.metadata["remote_ip"].replace("\"", "\\\"")
+ if "tag" in linkpair.port1.metadata:
+ port1_label = port1_label + " vlan=" + \
+ linkpair.port1.metadata["tag"]
+ if "remote_ip" in linkpair.port2.metadata:
+ port2_label = port2_label + " remote=" + \
+ linkpair.port2.metadata["remote_ip"]
+ if "tag" in linkpair.port2.metadata:
+ port2_label = port2_label + " vlan=" + \
+ linkpair.port2.metadata["tag"]
+
formatted_lp = linkpair.format % (
device1_label,
device2_label,