Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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