def edit(route, callback=None): try: applier = PR.Applier(route_object=route) commit, response = applier.apply(operation="replace") if commit: status = "ACTIVE" else: status = "ERROR" route.status = status route.response = response route.save() announce("[%s] Rule edit: %s - Result: %s" % (route.applier, route.name, response), route.applier, route) except TimeLimitExceeded: route.status = "ERROR" route.response = "Task timeout" route.save() announce("[%s] Rule edit: %s - Result: %s" % (route.applier, route.name, route.response), route.applier, route) except SoftTimeLimitExceeded: route.status = "ERROR" route.response = "Task timeout" route.save() announce("[%s] Rule edit: %s - Result: %s" % (route.applier, route.name, route.response), route.applier, route) except Exception: route.status = "ERROR" route.response = "Error" route.save() announce("[%s] Rule edit: %s - Result: %s" % (route.applier, route.name, route.response), route.applier, route)
def batch_delete(routes, **kwargs): if routes: for route in routes: route.status = 'PENDING';route.save() applier = PR.Applier(route_objects=routes) conf = applier.delete_routes() commit, response = applier.apply(configuration=conf) reason_text = '' if commit: status = "INACTIVE" if "reason" in kwargs and kwargs['reason'] == 'EXPIRED': status = 'EXPIRED' reason_text = " Reason: %s " % status elif "reason" in kwargs and kwargs['reason'] != 'EXPIRED': status = kwargs['reason'] reason_text = " Reason: %s " % status else: status = "ERROR" for route in routes: route.status = status route.response = response route.expires = datetime.date.today() route.save() announce("[%s] Rule removal: %s%s- Result %s" % (route.applier, route.name, reason_text, response), route.applier, route) else: return False
def delete(route, **kwargs): try: applier = PR.Applier(route_object=route) commit, response = applier.apply(operation="delete") reason_text = '' if commit: status = "INACTIVE" if "reason" in kwargs and kwargs['reason'] == 'EXPIRED': status = 'EXPIRED' reason_text = " Reason: %s " % status else: status = "ERROR" route.status = status route.response = response route.save() announce("[%s] Suspending rule : %s%s- Result %s" % (route.applier, route.name, reason_text, response), route.applier, route) except TimeLimitExceeded: route.status = "ERROR" route.response = "Task timeout" route.save() announce("[%s] Suspending rule : %s - Result: %s" % (route.applier, route.name, route.response), route.applier, route) except SoftTimeLimitExceeded: route.status = "ERROR" route.response = "Task timeout" route.save() announce("[%s] Suspending rule : %s - Result: %s" % (route.applier, route.name, route.response), route.applier, route) except Exception: route.status = "ERROR" route.response = "Error" route.save() announce("[%s] Suspending rule : %s - Result: %s" % (route.applier, route.name, route.response), route.applier, route)
def delete(route, **kwargs): """ Asynchronous rule `delete` task implementation :param route: The `Route` object to delete from the flowspec device :type route: `flowspec.models.Route` """ reason_text = '' try: applier = PR.Applier(route_object=route) commit, response = applier.apply(operation="delete") if commit: status = "INACTIVE" if "reason" in kwargs and kwargs['reason'] == 'EXPIRED': status = 'EXPIRED' reason_text = " Reason: %s " % status else: status = "ERROR" route.status = status route.response = response except (TimeLimitExceeded, SoftTimeLimitExceeded, Exception) as exc: route.status = "ERROR" route.response = "Task timeout" if issubclass( exc, (TimeLimitExceeded, SoftTimeLimitExceeded)) else 'Error' finally: route.save() announce( "[%s] Suspending rule : %s%s- Result %s" % (route.applier, route.name, reason_text, response), route.applier, route)
def edit(route, callback=None): applier = PR.Applier(route_object=route) commit, response = applier.apply(operation="replace") if commit: status = "ACTIVE" else: status = "ERROR" route.status = status route.response = response route.save() announce( "[%s] Rule edit: %s - Result: %s" % (route.applier, route.name, response), route.applier)
def edit(route): """ Asynchronous rule `edit` task implementation :param route: The `Route` object to sync with the flowspec device :type route: `flowspec.models.Route` """ try: applier = PR.Applier(route_object=route) commit, response = applier.apply(operation="replace") route.status = 'ACTIVE' if commit else 'ERROR' route.response = response except (TimeLimitExceeded, SoftTimeLimitExceeded, Exception) as exc: route.status = "ERROR" route.response = "Task timeout" if issubclass( exc, (TimeLimitExceeded, SoftTimeLimitExceeded)) else 'Error' finally: route.save() announce( "[%s] Rule edit: %s - Result: %s" % (route.applier, route.name, route.response), route.applier, route)