Пример #1
0
    def get_by_filter(self, transform_to_abstract_flow=False):
        with db_session() as db:
            flows = db.query(OvsFlow) \
                .filter(OvsFlow.id == self.id if self.id != None else True) \
                .filter(OvsFlow.nw_src == self.nw_src if self.nw_src != None else True) \
                .filter(OvsFlow.nw_dst == self.nw_dst if self.nw_dst != None else True) \
                .filter(OvsFlow.cookie == self.cookie if self.cookie != None else True) \
                .filter(OvsFlow.priority == self.priority if self.priority != None else True) \
                .filter(OvsFlow.table == self.table if self.table != None else True) \
                .filter(OvsFlow.protocol == self.protocol if self.protocol != None else True) \
                .filter(OvsFlow.tcp_src == self.tcp_src if self.tcp_src != None else True) \
                .filter(OvsFlow.tcp_dst == self.tcp_dst if self.tcp_dst != None else True) \
                .filter(OvsFlow.udp_src == self.udp_src if self.udp_src != None else True) \
                .filter(OvsFlow.udp_dst == self.udp_dst if self.udp_dst != None else True) \
                .all()

            #TODO: Needed if @property is removed - TO investigate why
            flows_json = []
            if transform_to_abstract_flow is False:
                for flow in flows:
                    # print(flow)
                    flow_json = flow.serialize
                    flows_json.append(flow_json)
            else:
                for flow in flows:
                    flow_json = flow.serialize_as_abstract
                    print(flow_json)
                    flows_json.append(flow_json)


            db.commit()

        return flows_json
Пример #2
0
    def get_by_filter(self):
        with db_session() as db:
            flows = db.query(Flow) \
                .filter(Flow.id == self.id if self.id != None else True) \
                .filter(Flow.nw_src == self.nw_src if self.nw_src != None else True) \
                .filter(Flow.nw_dst == self.nw_dst if self.nw_dst != None else True) \
                .filter(Flow.cookie == self.cookie if self.cookie != None else True) \
                .filter(Flow.priority == self.priority if self.priority != None else True) \
                .filter(Flow.table == self.table if self.table != None else True) \
                .filter(Flow.protocol == self.protocol if self.protocol != None else True) \
                .filter(Flow.tcp_src == self.tcp_src if self.tcp_src != None else True) \
                .filter(Flow.tcp_dst == self.tcp_dst if self.tcp_dst != None else True) \
                .filter(Flow.udp_src == self.udp_src if self.udp_src != None else True) \
                .filter(Flow.udp_dst == self.udp_dst if self.udp_dst != None else True) \
                .all()

            ## Needed if @property is removed - TO investigate why
            flows_json = []
            for flow in flows:
                print(flow)
                flow_json = flow.serialize
                flows_json.append(flow_json)

            db.commit()

        return flows_json
Пример #3
0
    def set_flows_performance(self):
        with db_session() as db:

            for abstract_flow in self.abstract_flows:
                abstract_flow.ovs_flow.apply()

            db.execute(OvsFlow.OvsFlow.__table__.insert(),
                       [{
                           "nw_src": abstract_flow.ovs_flow.nw_src,
                           "nw_dst": abstract_flow.ovs_flow.nw_dst,
                           "n_packets": abstract_flow.ovs_flow.n_packets,
                           "n_bytes": abstract_flow.ovs_flow.n_bytes,
                           "cookie": abstract_flow.ovs_flow.cookie,
                           "idle_age": abstract_flow.ovs_flow.idle_age,
                           "duration": abstract_flow.ovs_flow.duration,
                           "priority": abstract_flow.ovs_flow.priority,
                           "table": abstract_flow.ovs_flow.table,
                           "protocol": abstract_flow.ovs_flow.protocol,
                           "tcp_src": abstract_flow.ovs_flow.tcp_src,
                           "tcp_dst": abstract_flow.ovs_flow.tcp_dst,
                           "udp_src": abstract_flow.ovs_flow.udp_src,
                           "udp_dst": abstract_flow.ovs_flow.udp_dst,
                           "actions": abstract_flow.ovs_flow.actions
                       } for abstract_flow in self.abstract_flows])

            db.commit()
        return "Flows added!"
Пример #4
0
 def deleteOvsFlow(self, json_content):
     with db_session() as db:
         # Delete from DB
         ovs_flow = db.query(OvsFlow.OvsFlow).get(json_content["id"])
         ovs_flow.delete()
         ovs_flow.delete_db(db)
         db.commit()
     return {"response": "delete_done"}
Пример #5
0
 def deleteFlow(self, json_content):
     flow = Flow.Flow()
     flow.id = json_content["id"]
     with db_session() as db:
         # flow.delete()
         # Delete from DB
         flow.delete_db(db)
         db.commit()
     return {"response": "delete_done"}
Пример #6
0
 def set_flows(self):
     print(self.flows)
     with db_session() as db:
         for flow in self.flows:
             flow.apply()
             new_id = flow.create_db(db)
             print(new_id)
         db.commit()
     return "True"
Пример #7
0
 def deleteAllOvsFlows(self):
     with db_session() as db:
         ovs_flow = OvsFlow.OvsFlow()
         flows = ovs_flow.get_by_filter_obj(db)
         for ovs_flow in flows:
             # Delete from DB
             ovs_flow.delete()
         num_rows_deleted = db.query(OvsFlow.OvsFlow).delete()
         db.commit()
     return {"num_rows_deleted": num_rows_deleted}
Пример #8
0
 def deleteFlow(self, json_content):
     with db_session() as db:
         # Delete from DB
         abstract_flow = db.query(AbstractFlow.AbstractFlow).get(
             json_content["id"])
         if abstract_flow.actions == "drop":
             abstract_flow.ovs_flow.delete()
         elif abstract_flow.actions == "accept":
             abstract_flow.traffic_control_flow.delete()
         abstract_flow.delete_db(db)
         db.commit()
     return {"response": "delete_done"}
Пример #9
0
 def deleteAllFlows(self):
     with db_session() as db:
         abstract_flow = AbstractFlow.AbstractFlow()
         flows = abstract_flow.get_by_filter_obj(db)
         for abstract_flow in flows:
             # Delete from DB
             if abstract_flow.actions == "drop":
                 abstract_flow.ovs_flow.delete()
             elif abstract_flow.actions == "accept":
                 abstract_flow.traffic_control_flow.delete()
             abstract_flow.delete_db(db)
         db.commit()
     return {"response": "delete_done"}
Пример #10
0
 def set_flows(self):
     print(self.abstract_flows)
     new_ids = []
     with db_session() as db:
         for abstract_flow in self.abstract_flows:
             new_id = abstract_flow.create_db(db)
             if abstract_flow.actions == "drop":
                 abstract_flow.ovs_flow.apply()
             elif abstract_flow.actions == "accept":
                 abstract_flow.traffic_control_flow.apply()
             print(new_id)
             new_ids.append({"id": new_id})
         db.commit()
     return new_ids
Пример #11
0
    def get_by_filter(self):
        with db_session() as db:
            traffic_control_flows = db.query(TrafficControlFlow) \
                .filter(TrafficControlFlow.id == self.id if self.id != None else True) \
                .filter(TrafficControlFlow.ip_src == self.ip_src if self.ip_src != None else True) \
                .filter(TrafficControlFlow.ip_dst == self.ip_dst if self.ip_dst != None else True) \
                .filter(TrafficControlFlow.protocol == self.protocol if self.protocol != None else True) \
                .filter(TrafficControlFlow.port_src == self.port_src if self.port_src != None else True) \
                .filter(TrafficControlFlow.port_dst == self.port_dst if self.port_dst != None else True) \
                .filter(TrafficControlFlow.rate_limit == self.rate_limit if self.rate_limit != None else True) \
                .filter(TrafficControlFlow.actions == self.actions if self.actions != None else True) \
                .all()

            ## Needed if @property is removed - TO investigate why
            traffic_control_flows_dict = []
            for traffic_control_flow in traffic_control_flows:
                print(traffic_control_flow)
                traffic_control_flow_dict = traffic_control_flow.serialize
                traffic_control_flows_dict.append(traffic_control_flow_dict)

            db.commit()

        return traffic_control_flows_dict
Пример #12
0
    def get_by_filter(self):
        with db_session() as db:
            flows = db.query(AbstractFlow) \
                .filter(AbstractFlow.id == self.id if self.id != None else True) \
                .filter(AbstractFlow.ip_src == self.ip_src if self.ip_src != None else True) \
                .filter(AbstractFlow.ip_dst == self.ip_dst if self.ip_dst != None else True) \
                .filter(AbstractFlow.priority == self.priority if self.priority != None else True) \
                .filter(AbstractFlow.protocol == self.protocol if self.protocol != None else True) \
                .filter(AbstractFlow.port_src == self.port_src if self.port_src != None else True) \
                .filter(AbstractFlow.port_dst == self.port_dst if self.port_dst != None else True) \
                .filter(AbstractFlow.rate_limit == self.rate_limit if self.rate_limit != None else True) \
                .filter(AbstractFlow.actions == self.actions if self.actions != None else True) \
                .all()

            ## Needed if @property is removed - TO investigate why
            flows_dict = []
            for flow in flows:
                print(flow)
                flow_dict = flow.serialize
                flows_dict.append(flow_dict)

            db.commit()

        return flows_dict