Commit 1da44d64 authored by Mohammad Ismaeel's avatar Mohammad Ismaeel
Browse files

Opticalcontroller bugs fixed

parent 58c83e1e
Loading
Loading
Loading
Loading
+54 −61
Original line number Diff line number Diff line
@@ -102,20 +102,13 @@ class DelFLightpath(Resource):
            flow = None
            match1=False
            ob_id=None
            print(f"delete_lightpath {delete_band} and ob_id {ob_id} and flow_id {flow_id}")
            if flow_id is not None:
     
                if flow_id in rsa.db_flows.keys():
                   flow = rsa.db_flows[flow_id]
                   match1 = flow["src"] == src and flow["dst"] == dst and flow["bitrate"] == bitrate
                   ob_id = flow["parent_opt_band"]
            else :
                if o_band_id in  rsa.db_flows.keys():
                   flow=rsa.db_flows[o_band_id]
                   match1 = flow["src"] == src and flow["dst"] == dst and flow["bitrate"] == bitrate
                   ob_id=o_band_id 
            print(f"delete_lightpath {delete_band} and ob_id {ob_id}")
            print(f"and flow {flow}")            
                   flow['is_active']=False
            if flow is not None:
                
            
@@ -141,13 +134,13 @@ class DelFLightpath(Resource):
                else:
                    if match1:
                      
                        if delete_band !=0 and ob_id is not None:
                            print(f"delete_lightpath {delete_band} and ob_id {ob_id}")
                            if len( rsa.optical_bands[ob_id]["served_lightpaths"]) != 0:
                                return "DELETE_NOT_ALLOWED" ,400
                        # if delete_band !=0 and ob_id is not None:
                        #     print(f"delete_lightpath {delete_band} and ob_id {ob_id}")
                        #     if len( rsa.optical_bands[ob_id]["served_lightpaths"]) != 0:
                        #         return "DELETE_NOT_ALLOWED" ,400
                            

                        rsa.del_handler(flow,flow_id,ob_id,delete_band)
                        rsa.del_flow(flow,flow_id,ob_id)
                        
                    
                    
@@ -164,46 +157,44 @@ class DelFLightpath(Resource):
         


@optical.route('/DelOpticalBand/<string:src>/<string:dst>/<int:o_band_id>/<int:delete_band>')
@optical.route('/DelOpticalBand/<string:src>/<string:dst>/<int:o_band_id>/<int:delete_band>',methods=['DELETE'])
@optical.response(200, 'Success')
@optical.response(404, 'Error, not found')
class DelOpticalBand(Resource):
    @staticmethod
    def delete( src, dst, bitrate, o_band_id,delete_band,flow_id=None):
    def delete( src, dst, o_band_id,delete_band):
            flow = None
            match1=False
            match1=True
            ob_id=None
            print(f"delete_lightpath {delete_band} and ob_id {ob_id} and flow_id {flow_id}")
           
            if o_band_id is not None :            
            
                if o_band_id in  rsa.optical_bands.keys():
                    flow=rsa.optical_bands[o_band_id]
                   match1 = flow["src"] == src and flow["dst"] == dst 
                    #match1 = flow["src"] == src and flow["dst"] == dst 
                    ob_id=o_band_id 
            print(f"delete_lightpath {delete_band} and ob_id {ob_id}")
            print(f"and flow {flow}")            
              
                if flow is not None:
                
            
                    bidir = flow["bidir"]
                
                    if bidir:
                    match2 = flow["src"] == dst and flow["dst"] == src and flow["bitrate"] == bitrate
                        match2 = flow["src"] == dst and flow["dst"] == src and flow["bitrate"] 
                        if match1 or match2:
                            ob_id = flow["parent_opt_band"]
                        rsa.del_flow(flow, ob_id)
                        rsa.db_flows[flow_id]["is_active"] = False
                        if flow_id in rsa.optical_bands[ob_id]["served_lightpaths"].remove:
                           rsa.optical_bands[ob_id]["served_lightpaths"].remove(flow_id)
                            #rsa.del_flow(flow, ob_id)
                            rsa.optical_bands[ob_id]["is_active"] = False
                            # if flow_id in rsa.optical_bands[ob_id]["served_lightpaths"].remove:
                            #    rsa.optical_bands[ob_id]["served_lightpaths"].remove(flow_id)
                            #if rsa.optical_bands[ob_id]["reverse_optical_band_id"] != 0:
                            #    rev_ob_id = rsa.optical_bands[ob_id]["reverse_optical_band_id"]
                            #    rsa.optical_bands[rev_ob_id]["served_lightpaths"].remove(flow_id)

                            if debug:
                                print(rsa.links_dict)
                        return "flow {} deleted".format(flow_id), 200
                            return "ob_id {} deleted".format(ob_id), 200
                        else:
                        return "flow {} not matching".format(flow_id), 404
                            return "ob_id {} not matching".format(ob_id), 404
                    else:
                        if match1:
                        
@@ -212,18 +203,20 @@ class DelOpticalBand(Resource):
                                if len( rsa.optical_bands[ob_id]["served_lightpaths"]) != 0:
                                    return "DELETE_NOT_ALLOWED" ,400

                        rsa.del_band(flow,ob_id,delete_band)
                            rsa.del_band(flow,ob_id)
                            
                        
                        
                            if debug:
                                print(f"vor ob_id {ob_id} rsa.optical_bands  {rsa.optical_bands[ob_id]}")
                                print(f"rsa.links_dict {rsa.links_dict}")
                        return "flow {} deleted".format(flow_id), 200
                            return "ob_id {} deleted".format(ob_id), 200
                        else:
                        return "flow {} not matching".format(flow_id), 404
                            return "ob_id {} not matching".format(ob_id), 404
                else :
                return "flow id {} does not exist".format(flow_id), 404
                    return "flow for ob_id {} not found".format(ob_id),400        
            else:
                return "ob_id  {} does not exist".format(ob_id), 404
   
            
         
+3 −15
Original line number Diff line number Diff line
@@ -338,23 +338,12 @@ class RSA():
            #f = fiber_f[l]
            #fib = link['fibers'][f]
            fib = self.get_link_by_name(l)["optical_details"]
            print(f"del_flow_fib {fib } and band {band}")
            print(f"del_flow { str_list_to_int(fib[band].keys())}")
            '''
            if list_in_list(slots, str_list_to_int(fib[band].keys())):
                #self.restore_link(fib, slots, band)
                print("invoking restore_link_2 from del_flow")
                self.restore_link_2(fib, slots, band,link=l)
                if debug:
                    print(fib[band])
            '''
            print(f"invoking restore_link_2 fib: {fib} , slots {slots} , band {band} ")
         
            self.restore_link(fib, slots, band)
            if debug:
                print(fib[band])
                
        if flow_id in self.optical_bands[o_b_id]["served_lightpaths"]:
                       self.optical_bands[o_b_id]["served_lightpaths"].remove(flow_id)        
    
            
        if o_b_id is not None:
            
@@ -405,8 +394,7 @@ class RSA():
        
        print(f"delete band {flow} ")
        
        if len(self.optical_bands[o_b_id]["served_lightpaths"])>0:
            return False

        flows = flow["flows"]
        band = None
        #slots = flow["slots"]