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