def _generate_path(self, topo, src_mac, dst_mac, src_port, dst_port, src_dpid, dst_dpid): """Generate path method.""" net = nx.DiGraph(data=topo) net.add_node(src_mac) net.add_node(dst_mac) net.add_edge(int(src_dpid), src_mac, {'port': int(src_port)}) net.add_edge(src_mac, int(src_dpid)) net.add_edge(int(dst_dpid), dst_mac, {'port': int(dst_port)}) net.add_edge(dst_mac, int(dst_dpid)) target_path = None try: path = nx.shortest_path(net, src_mac, dst_mac) path2 = nx.shortest_path(net, src_mac, dst_mac) path2.pop() path2.pop(0) list_load = check_switch_load(path2, data_collection.switch_stat, constant.load_limitation) if len(list_load) > 0: # print 'lui', list_load all_paths = nx.all_simple_paths(net, src_mac, dst_mac) path_list = list(all_paths) target_path_index, target_path_cost = calculate_least_cost_path(path_list, data_collection.switch_stat, net) target_path = path_list[target_path_index] else: target_path = path print 'tarrr', target_path except Exception: target_path = None return target_path
def _generate_path(self, topo, src_mac, dst_mac, src_port, dst_port, src_dpid, dst_dpid): """Generate path method.""" net = nx.DiGraph(data=topo) net.add_node(src_mac) net.add_node(dst_mac) net.add_edge(int(src_dpid), src_mac, {'port': int(src_port)}) net.add_edge(src_mac, int(src_dpid)) net.add_edge(int(dst_dpid), dst_mac, {'port': int(dst_port)}) net.add_edge(dst_mac, int(dst_dpid)) target_path = None try: path = nx.shortest_path(net, src_mac, dst_mac) path2 = nx.shortest_path(net, src_mac, dst_mac) path2.pop() path2.pop(0) list_load = check_switch_load(path2, data_collection.switch_stat, constant.load_limitation) if len(list_load) > 0: # print 'lui', list_load all_paths = nx.all_simple_paths(net, src_mac, dst_mac) path_list = list(all_paths) target_path_index, target_path_cost = calculate_least_cost_path( path_list, data_collection.switch_stat, net) target_path = path_list[target_path_index] else: target_path = path print 'tarrr', target_path except Exception: target_path = None return target_path
def _monitor(self): while True: switch_list = get_switch(self.topology_api_app, None) switch_id_list = [] for datapath in switch_list: self._update_sw_stas(datapath) self._request_stats(datapath.dp) switch_id_list.append(datapath.dp.id) target_list = check_switch_load(switch_id_list, switch_stat, constant.load_limitation) print'target_list', target_list, len(target_list) if len(target_list) > 0: ev = Routing_UpdateEvent(target_list, constant.load_limitation) # print 'evevevevevev', ev, ev.msg self.send_event_to_observers(ev) hub.sleep(1)