Beispiel #1
0
def work(uuid):
    """The buoys request work and post work results to this method."""
    buoy_id = models.apik_of_uuid(uuid)
    if request.method == 'GET':
        action = models.get_action_buoy(buoy_id)
        time = -1
        if action and action['action'] == const.BUOY_AC_LAUNCH:
            if action['time'] == '':
                time = 0
                models.set_action_buoy(buoy_id, const.BUOY_AC_LAUNCH)
            else:
                # If more than 7 minutes have passed from the last action
                # the buoy will perform the action, else continue waiting
                date_obj = datetime.datetime.strptime(
                    action['time'], const.STRTIME_KEY_GENERATED)
                now = datetime.datetime.now()
                if (now-date_obj).total_seconds() / 60 >= const.SCAN_INTERVAL:
                    time = 0
                    # Update when the last action mas made (now)
                    models.set_action_buoy(buoy_id, const.BUOY_AC_LAUNCH)
            return jsonify({'status': 200, 'order': action['action'],
                            'time': time})
        elif action and action['action'] == const.BUOY_AC_STOP:
            return jsonify({'status': 200, 'order': action['action']})
        else:
            return jsonify({'status': 404})
    elif request.method == 'POST':
        djson = request.get_json()
        decodedjson = base64.b64decode(djson['content'])
        data_scan = ast.literal_eval(decodedjson)
        wbenforcer.generate_alerts(buoy_id, data_scan)
        return jsonify({'status': 200, 'message': 'Got it!'})
Beispiel #2
0
def _set_launch(buoy_id, now):
    """Orders a buoy to start scanning."""
    models.change_status(buoy_id, const.BUOY_ACTIVE)
    models.set_action_buoy(buoy_id, const.BUOY_AC_LAUNCH, now)
Beispiel #3
0
def _set_stop(buoy_id):
    """Orders a buoy to stop scanning."""
    models.change_status(buoy_id, const.BUOY_STOPPED)
    models.set_action_buoy(buoy_id, const.BUOY_AC_STOP)