diff --git a/flowspec/tasks.py b/flowspec/tasks.py index 6be982e0a89e50cc6cd7f9849ba3312dad18e285..295bef7a95e1e50f024be5fed1c7f985ee7e2472 100644 --- a/flowspec/tasks.py +++ b/flowspec/tasks.py @@ -125,38 +125,32 @@ def delete(routepk, **kwargs): route = Route.objects.get(pk=routepk) initial_status = route.status try: - #username = request.user.username - #user_is_admin = request.user.is_superuser() - #logger.info("tasks::delete(): username="+str(username)+" route="+str(route)+" initial_status="+str(initial_status)) applier = PR.Applier(route_object=route) commit, response = applier.apply(operation="delete") reason_text = '' logger.info("tasks::delete(): initial_status="+str(initial_status)) - fully_deleted=False - if commit and initial_status == "PENDING_TODELETE": # special new case for fully deleting a rule via REST API - fully_deleted=True - route.status="INACTIVE" - route.delete() - msg1 = "[%s] Fully deleted route : %s%s- Result %s" % (route.applier, route.name, reason_text, response) - logger.info("tasks::delete(): DELETED msg="+msg1) - announce(msg1, route.applier, route) if commit: - status = "INACTIVE" - if "reason" in kwargs and kwargs['reason'] == 'EXPIRED': - status = 'EXPIRED' - reason_text = " Reason: %s " % status + route.status="INACTIVE" + msg1 = "[%s] Fully deleted route : %s%s- Result %s" % (route.applier, route.name, reason_text, response) + logger.info("tasks::delete(): DELETED msg="+msg1) + announce(msg1, route.applier, route) try: - #snmp_add_initial_zero_value.delay(str(route.id), False) - snmp_add_initial_zero_value(str(route.id), False) + snmp_add_initial_zero_value(str(route.id), False) except Exception as e: - logger.error("edit(): route="+str(route)+", INACTIVE, add_null_value failed: "+str(e)) + logger.error("edit(): route="+str(route)+", INACTIVE, add_null_value failed: "+str(e)) + route.delete() + return else: - status = "ERROR" - if not fully_deleted: - route.status = status - route.response = response - route.save() - announce("[%s] Suspending rule : %s%s- Result %s" % (route.applier_username_nice, route.name, reason_text, response), route.applier, route) + # NETCONF "delete" operation failed, keep the object in DB + 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_username_nice, route.name, reason_text, response), route.applier, route) except TimeLimitExceeded: route.status = "ERROR" route.response = "Task timeout"