X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Femuvim%2Fdcemulator%2Fnet.py;h=9e8c9be78ccd50072d2fd029ff292e77dace8282;hb=aa8823c85d94a4fa72de058076195296334cdb91;hp=625854337f4d5808cf8e1508410e1478585afabf;hpb=dad988484dc1f95193f49ef9b456bf84254d0e92;p=osm%2Fvim-emu.git diff --git a/src/emuvim/dcemulator/net.py b/src/emuvim/dcemulator/net.py index 6258543..9e8c9be 100755 --- a/src/emuvim/dcemulator/net.py +++ b/src/emuvim/dcemulator/net.py @@ -117,7 +117,7 @@ class DCNetwork(Containernet): self.DCNetwork_graph = nx.MultiDiGraph() # initialize pool of vlan tags to setup the SDN paths - self.vlans = range(1, 4095)[::-1] + self.vlans = list(range(1, 4095))[::-1] # link to Ryu REST_API ryu_ip = 'localhost' @@ -159,13 +159,13 @@ class DCNetwork(Containernet): assert node2 is not None # ensure type of node1 - if isinstance(node1, basestring): + if isinstance(node1, str): if node1 in self.dcs: node1 = self.dcs[node1].switch if isinstance(node1, Datacenter): node1 = node1.switch # ensure type of node2 - if isinstance(node2, basestring): + if isinstance(node2, str): if node2 in self.dcs: node2 = self.dcs[node2].switch if isinstance(node2, Datacenter): @@ -226,7 +226,7 @@ class DCNetwork(Containernet): 'dst_port_name': node2_port_name} attr_dict2.update(attr_dict) self.DCNetwork_graph.add_edge( - node1.name, node2.name, attr_dict=attr_dict2) + node1.name, node2.name, **attr_dict2) attr_dict2 = {'src_port_id': node2_port_id, 'src_port_nr': node2.ports[link.intf2], 'src_port_name': node2_port_name, @@ -234,7 +234,7 @@ class DCNetwork(Containernet): 'dst_port_name': node1_port_name} attr_dict2.update(attr_dict) self.DCNetwork_graph.add_edge( - node2.name, node1.name, attr_dict=attr_dict2) + node2.name, node1.name, **attr_dict2) LOG.debug("addLink: n1={0} intf1={1} -- n2={2} intf2={3}".format( str(node1), node1_port_name, str(node2), node2_port_name)) @@ -320,13 +320,13 @@ class DCNetwork(Containernet): Returns a list with all containers within all data centers. """ all_containers = [] - for dc in self.dcs.itervalues(): + for dc in self.dcs.values(): all_containers += dc.listCompute() return all_containers def start(self): # start - for dc in self.dcs.itervalues(): + for dc in self.dcs.values(): dc.start() Containernet.start(self) @@ -385,6 +385,18 @@ class DCNetwork(Containernet): switch_node = self.getNodeByName(src_sw) self._set_vlan_tag(switch_node, src_sw_inport_name, vlan) + def getNodeByName(self, name): + """ + Wraps Containernet's getNodeByName method to avoid + key not found exceptions. + """ + try: + return super(DCNetwork, self).getNodeByName(name) + except BaseException as ex: + LOG.warning("Node not found: {}".format(name)) + LOG.debug("Node not found: {}".format(ex)) + return None + def _addMonitorFlow(self, vnf_src_name, vnf_dst_name, vnf_src_interface=None, vnf_dst_interface=None, tag=None, **kwargs): """ @@ -617,7 +629,7 @@ class DCNetwork(Containernet): # check if port is specified (vnf:port) if vnf_src_interface is None: # take first interface by default - connected_sw = self.DCNetwork_graph.neighbors(vnf_src_name)[0] + connected_sw = list(self.DCNetwork_graph.neighbors(vnf_src_name))[0] link_dict = self.DCNetwork_graph[vnf_src_name][connected_sw] vnf_src_interface = link_dict[0]['src_port_id'] @@ -634,7 +646,7 @@ class DCNetwork(Containernet): if vnf_dst_interface is None: # take first interface by default - connected_sw = self.DCNetwork_graph.neighbors(vnf_dst_name)[0] + connected_sw = list(self.DCNetwork_graph.neighbors(vnf_dst_name))[0] link_dict = self.DCNetwork_graph[connected_sw][vnf_dst_name] vnf_dst_interface = link_dict[0]['dst_port_id']