Beispiel #1
0
def inserter_control(network):
    """
    POST control route for inserter forms
    """
    inserter_form = ProcessControlForm(request.form)
    task = None

    # On form submit controls the processor
    if request.method == 'POST' and inserter_form.validate():
        command = request.form['control'].lower()

        task_args = {
            'process': 'insert',
            'project': g.project,
            'network': network
        }

        if command == 'start':
            task = start_daemon.apply_async(kwargs=task_args,
                                            queue='stack-start')
        elif command == 'stop':
            task = stop_daemon.apply_async(kwargs=task_args,
                                           queue='stack-stop')
        elif command == 'restart':
            task = restart_daemon.apply_async(kwargs=task_args,
                                              queue='stack-start')

    return redirect(
        url_for('network_home',
                project_name=g.project['project_name'],
                network=network,
                inserter_task_id=task.task_id))
Beispiel #2
0
def inserter_control(network):
    """
    POST control route for inserter forms
    """
    inserter_form = ProcessControlForm(request.form)
    task = None

    # On form submit controls the processor
    if request.method == 'POST' and inserter_form.validate():
        command = request.form['control'].lower()

        task_args = {
            'process': 'insert',
            'project': g.project,
            'network': network
        }

        if command == 'start':
            task = start_daemon.apply_async(kwargs=task_args, queue='stack-start')
        elif command == 'stop':
            task = stop_daemon.apply_async(kwargs=task_args, queue='stack-stop')
        elif command == 'restart':
            task = restart_daemon.apply_async(kwargs=task_args, queue='stack-start')

    return redirect(url_for('network_home',
                            project_name=g.project['project_name'],
                            network=network,
                            inserter_task_id=task.task_id))
Beispiel #3
0
def collector_control(collector_id):
    """
    POST control route for collector forms
    """
    collector_form = ProcessControlForm(request.form)
    task = None

    # On form submit controls the processor
    if request.method == 'POST' and collector_form.validate():
        command = request.form['control'].lower()

        task_args = {
            'process': 'collect',
            'project': g.project,
            'collector_id': collector_id
        }

        db = DB()
        collector = db.get_collector_detail(g.project['project_id'], collector_id)
        network = collector['collector']['network']

        if command == 'start':
            task = start_daemon.apply_async(kwargs=task_args, queue='stack-start')
        elif command == 'stop':
            task = stop_daemon.apply_async(kwargs=task_args, queue='stack-stop')
        elif command == 'restart':
            task = restart_daemon.apply_async(kwargs=task_args, queue='stack-start')

        return redirect(url_for('collector',
                                project_name=g.project['project_name'],
                                network=network,
                                collector_id=collector_id,
                                task_id=task.task_id))
Beispiel #4
0
def collector_control(collector_id):
    """
    POST control route for collector forms
    """
    collector_form = ProcessControlForm(request.form)
    task = None

    # On form submit controls the processor
    if request.method == 'POST' and collector_form.validate():
        command = request.form['control'].lower()

        task_args = {
            'process': 'collect',
            'project': g.project,
            'collector_id': collector_id
        }

        db = DB()
        collector = db.get_collector_detail(g.project['project_id'],
                                            collector_id)
        network = collector['collector']['network']

        if command == 'start':
            task = start_daemon.apply_async(kwargs=task_args,
                                            queue='stack-start')
        elif command == 'stop':
            task = stop_daemon.apply_async(kwargs=task_args,
                                           queue='stack-stop')
        elif command == 'restart':
            task = restart_daemon.apply_async(kwargs=task_args,
                                              queue='stack-start')

        return redirect(
            url_for('collector',
                    project_name=g.project['project_name'],
                    network=network,
                    collector_id=collector_id,
                    task_id=task.task_id))
Beispiel #5
0
def collector(project_name, network, collector_id, task_id=None):
    """
    Loads the detail / control page for a collector
    """
    # Redirects an admin back to the homepage b/c nothing is loaded into the session yet
    if g.project is None:
        flash(
            u'Please navigate to the New Collector page from your homepage panel.'
        )
        return redirect(url_for('index'))

    form = ProcessControlForm(request.form)

    # Loads collector info for the page
    db = DB()
    resp = db.get_collector_detail(g.project['project_id'], collector_id,
                                   project_name)
    collector = resp['collector']
    # Loads active status
    resp = db.check_process_status(g.project['project_id'],
                                   'collect',
                                   collector_id=collector_id)
    active_status = resp['message']

    # If a start/stop/restart is in progress, display the status
    task_status = None
    if task_id:
        resp = celery.AsyncResult(task_id)
        if resp.state == 'PENDING':
            task_status = 'Collector start/shutdown still in progress...'
            db.set_active_collectors('stop', collector_id, 'config')
        else:
            task_status = 'Collector start/shutdown completed.'
            db.set_active_collectors(session['command'], collector_id,
                                     'config')
    return render_template('collector.html',
                           collector=collector,
                           active_status=active_status,
                           form=form,
                           task_status=task_status,
                           project_name=project_name,
                           network=network,
                           projectid=g.project['project_id'])
Beispiel #6
0
def network_home(project_name, network, task_id=None):
    """
    Renders a project account's homepage
    """
    # Loads project details if an admin
    if g.admin is not None:
        _aload_project(project_name)

    # Grabs collectors for the given network
    if not g.project['collectors']:
        collectors = None
    else:
        collectors = [
            c for c in g.project['collectors'] if c['network'] == network
        ]
        for collector in collectors:
            collector['num_terms'] = 0

            if collector['terms_list'] is not None:
                collector['num_terms'] = len(collector['terms_list'])

        g.project['num_collectors'] = len(collectors)

    processor_form = ProcessControlForm(request.form)
    inserter_form = ProcessControlForm(request.form)

    # Loads processor active status
    db = DB()
    resp = db.check_process_status(g.project['project_id'],
                                   'process',
                                   module=network)
    processor_active_status = resp['message']

    # Loads inserter active status
    resp = db.check_process_status(g.project['project_id'],
                                   'insert',
                                   module=network)
    inserter_active_status = resp['message']

    # Loads count of tweets in the storage DB
    count = db.get_storage_counts(g.project['project_id'], network)

    # If a start/stop/restart is in progress, display the status
    task_status = None
    if task_id:
        resp = celery.AsyncResult(task_id)
        if resp.state == 'PENDING':
            processor_task_status = 'Processor/Inserter start/shutdown still in progress...'
        else:
            processor_task_status = 'Processor/Inserter start/shutdown completed.'

    return render_template('network_home.html',
                           network=network,
                           collectors=collectors,
                           project_detail=g.project,
                           processor_active_status=processor_active_status,
                           inserter_active_status=inserter_active_status,
                           task_status=task_status,
                           count=count,
                           processor_form=processor_form,
                           inserter_form=inserter_form)