def manage_bridges(self, tgt_box_name): filepath = "./templates/" + tgt_box_name + ".json" tgt_tmpl_json = Parser.json_load_file(filepath) tgt_box_dicts = Parser.json_parse_by_key(tgt_tmpl_json, "box") tgt_br_list = Parser.json_parse_by_key(tgt_tmpl_json, "bridges") tgt_box_ip = tgt_box_dicts["ipaddr"] tgt_ovsdb_pt = tgt_box_dicts["ovsdb_port"] ex_all_br_ovsdb_list = Parser.divide_str_to_list_by_keyword(iface.ovs_vsctl_show(tgt_box_ip, tgt_ovsdb_pt), "Bridge") # Remove Unrequired field in the "ovs-vsctl show" result # (e.g ovs_version: "2.0.2") unreq_key = ["ovs_version"] for i in ex_all_br_ovsdb_list: for j in i: if j.split()[0] in unreq_key: idx = i.index(j) del i[idx] ex_all_br_dicts = Parser.convert_ovsshow_to_json_dicts(ex_all_br_ovsdb_list) # Manage each bridge in the bridge list defined in box's template for tgt_br_dict in tgt_br_list: print "Bridge !!" print tgt_br_dict self.manage_bridge(tgt_box_ip, tgt_ovsdb_pt, tgt_br_dict, ex_all_br_dicts) return
def manage_tunnel_pair(self, tnl_pair_list): # self.prepare_tunnel_manager(tgtname) tnl_end1_dict = tnl_pair_list[0] tnl_end2_dict = tnl_pair_list[1] try: end1_filepath = "./templates/" + tnl_end1_dict["boxname"] + ".json" end2_filepath = "./templates/" + tnl_end2_dict["boxname"] + ".json" # end1_json = parser.json_load_file(end1_filepath) # end2_json = parser.json_load_file(end2_filepath) end1_box_dict = (Parser.json_load_file(end1_filepath))["box"] end2_box_dict = (Parser.json_load_file(end2_filepath))["box"] end1_box_ip = end1_box_dict["ipaddr"] end2_box_ip = end2_box_dict["ipaddr"] end1_box_pt = end1_box_dict["ovsdb_port"] end2_box_pt = end2_box_dict["ovsdb_port"] end1_all_br_ovsdb_list = Parser.divide_str_to_list_by_keyword( iface.ovs_vsctl_show(end1_box_ip, end1_box_pt), "bridge") end2_all_br_ovsdb_list = Parser.divide_str_to_list_by_keyword( iface.ovs_vsctl_show(end2_box_ip, end2_box_pt), "bridge") end1_all_br_dicts = Parser.convert_ovsshow_to_json_dicts(end1_all_br_ovsdb_list) end2_all_br_dicts = Parser.convert_ovsshow_to_json_dicts(end2_all_br_ovsdb_list) self.manage_tunnel(tnl_end1_dict, end1_all_br_dicts) self.manage_tunnel(tnl_end2_dict, end2_all_br_dicts) check1 = PingChecker.is_pingable_tunnel(end1_box_ip, tnl_end1_dict["bridge"], tnl_end1_dict["options"]["remote_ip"], end1_box_dict["user"]) check2 = PingChecker.is_pingable_tunnel(end2_box_ip, tnl_end2_dict["bridge"], tnl_end2_dict["options"]["remote_ip"], end2_box_dict["user"]) except IOError as e: print e return except ValueError as e: print e return return