def manage_flows(self, tgt_box_name): filepath = "./templates/" + tgt_box_name + ".json" tgt_tmpl_json = Parser.json_load_file(filepath) tgt_box_dict = Parser.json_parse_by_key(tgt_tmpl_json, "box") tgt_bridge_list = Parser.json_parse_by_key(tgt_tmpl_json, "bridge") tgt_flow_list = Parser.json_parse_by_key(tgt_tmpl_json, "flows") tgt_box_ip = tgt_box_dict["ipaddr"] tgt_ovsdb_pt = tgt_box_dict["ovsdb_port"] for tgt_flow_dict in tgt_flow_list: tgt_br_name = tgt_flow_dict["bridge"] tgt_bridge_dict = None for br in tgt_bridge_list: if br["name"] == tgt_br_name: tgt_bridge_dict = br break if tgt_bridge_dict is None: print "Failed: The bridge " + tgt_br_name + " is not exist." print "Failed: Therefore the flow " + tgt_flow_dict["name"] + " can't be created" continue tgt_ctrl = tgt_bridge_dict ["Controller"] if self.is_flow_exists(tgt_flow_dict, tgt_ctrl): pass self.manage_flow(tgt_flow_dict) return
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