Exemple #1
0
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)
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
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)
Exemple #6
0
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)