Ejemplo n.º 1
0
def initialize(app):
    # Initialize the sources
    for source_name, source_details in app.config.get('REVERE_SOURCES', {}).items():
        if source_details.get('enabled') is False:
            continue
        app.sources[source_name] = get_klass(source_details['type'])(description=source_details.get('description'),
                                                                 config=source_details['config'])

    # Initialize the alerts
    for alert_name, alert_details in app.config.get('REVERE_ALERTS', {}).items():
        app.alerts[alert_name] = get_klass(alert_details['type'])(description=alert_details.get('description'),
                                                                  config=alert_details['config'],
                                                                  enabled_in_config=alert_details.get('enabled', True))
        alert = Alert.query.filter_by(key=alert_name).first()
        if not alert:
            alert = Alert(key=alert_name)
            db.session.add(alert)

    Alert.query.filter(not_(Alert.key.in_(app.alerts.keys()))).delete(synchronize_session='fetch')
    db.session.commit()

    # Run the maintenance routine hourly
    scheduler.add_cron_job(monitor_maintenance, year="*", month="*", day="*", hour="*", minute="0")

    for monitor in Monitor.query.filter_by(active=True):
        update_monitor_scheduler(monitor)

    scheduler.start()
Ejemplo n.º 2
0
def create():
    form = MonitorForm(request.form)
    if request.method == 'POST' and form.validate():
        new_monitor = Monitor(state='INACTIVE')
        form.populate_obj(new_monitor)
        db.session.add(new_monitor)
        db.session.commit()
        update_monitor_scheduler(new_monitor)
        return redirect(url_for('monitor_detail', monitor_id=new_monitor.id))
    return render_template('monitor_edit.html', form=form, sources=app.sources, create=True)
Ejemplo n.º 3
0
def monitor_edit(monitor_id):
    monitor = Monitor.query.get_or_404(monitor_id)

    form = MonitorForm(request.form, monitor)
    if form.validate_on_submit():
        form.populate_obj(monitor)
        db.session.add(monitor)
        db.session.commit()
        if not monitor.active:
            monitor.record_run('INACTIVE', 'Monitor edited', None)
        update_monitor_scheduler(monitor)
        return redirect(url_for('monitor_detail', monitor_id=monitor.id))
    return render_template('monitor_edit.html', form=form, sources=app.sources, monitor=monitor, create=False)
Ejemplo n.º 4
0
def initialize(app):
    # Initialize the sources
    for source_name, source_details in app.config.get('REVERE_SOURCES',
                                                      {}).items():
        if source_details.get('enabled') is False:
            continue
        app.sources[source_name] = get_klass(source_details['type'])(
            description=source_details.get('description'),
            config=source_details['config'])

    # Initialize the alerts
    for alert_name, alert_details in app.config.get('REVERE_ALERTS',
                                                    {}).items():
        app.alerts[alert_name] = get_klass(alert_details['type'])(
            description=alert_details.get('description'),
            config=alert_details['config'],
            enabled_in_config=alert_details.get('enabled', True))
        alert = Alert.query.filter_by(key=alert_name).first()
        if not alert:
            alert = Alert(key=alert_name)
            db.session.add(alert)

    Alert.query.filter(not_(Alert.key.in_(
        app.alerts.keys()))).delete(synchronize_session='fetch')
    db.session.commit()

    # Run the maintenance routine hourly
    scheduler.add_cron_job(monitor_maintenance,
                           year="*",
                           month="*",
                           day="*",
                           hour="*",
                           minute="0")

    for monitor in Monitor.query.filter_by(active=True):
        update_monitor_scheduler(monitor)

    scheduler.start()