def ajax_stats(playbook):
    stats = (models.Stats.query.filter(models.Stats.playbook_id == playbook))
    if not utils.fast_count(stats):
        abort(404)

    jinja = current_app.jinja_env
    host_link = jinja.get_template('ajax/stats.html')

    results = dict()
    results['data'] = list()

    log.debug('Loading host statistics and facts')
    for stat in stats:
        host = host_link.render(host=stat.host)
        ok = stat.ok if stat.ok >= 1 else 0
        changed = stat.changed if stat.changed >= 1 else 0
        failed = stat.failed if stat.failed >= 1 else 0
        skipped = stat.skipped if stat.skipped >= 1 else 0
        unreachable = stat.unreachable if stat.unreachable >= 1 else 0

        data = [host, ok, changed, failed, skipped, unreachable]
        results['data'].append(data)

    log.debug('%s host stats and facts loaded' % len(results['data']))
    return jsonify(results)
Exemple #2
0
def ajax_stats(playbook):
    stats = (models.Stats.query
             .filter(models.Stats.playbook_id == playbook))
    if not utils.fast_count(stats):
        abort(404)

    jinja = current_app.jinja_env
    host_link = jinja.get_template('ajax/stats.html')

    results = dict()
    results['data'] = list()

    log.debug('Loading host statistics and facts')
    for stat in stats:
        host = host_link.render(host=stat.host)
        ok = stat.ok if stat.ok >= 1 else 0
        changed = stat.changed if stat.changed >= 1 else 0
        failed = stat.failed if stat.failed >= 1 else 0
        skipped = stat.skipped if stat.skipped >= 1 else 0
        unreachable = stat.unreachable if stat.unreachable >= 1 else 0

        data = [host, ok, changed, failed, skipped, unreachable]
        results['data'].append(data)

    log.debug('%s host stats and facts loaded' % len(results['data']))
    return jsonify(results)
Exemple #3
0
def report_list(page=1):
    if current_app.config['ARA_PLAYBOOK_OVERRIDE'] is not None:
        override = current_app.config['ARA_PLAYBOOK_OVERRIDE']
        playbooks = (models.Playbook.query
                     .filter(models.Playbook.id.in_(override))
                     .order_by(models.Playbook.time_start.desc()))
    else:
        playbooks = (models.Playbook.query
                     .order_by(models.Playbook.time_start.desc()))

    if not utils.fast_count(playbooks):
        return redirect(url_for('about.main'))

    playbook_per_page = current_app.config['ARA_PLAYBOOK_PER_PAGE']
    # Paginate unless playbook_per_page is set to 0
    if playbook_per_page >= 1:
        playbooks = playbooks.paginate(page, playbook_per_page, False)
    else:
        playbooks = playbooks.paginate(page, None, False)

    stats = utils.get_summary_stats(playbooks.items, 'playbook_id')

    result_per_page = current_app.config['ARA_RESULT_PER_PAGE']

    return render_template('report_list.html',
                           active='reports',
                           result_per_page=result_per_page,
                           playbooks=playbooks,
                           stats=stats)
Exemple #4
0
def ajax_results(playbook):
    task_results = (models.TaskResult.query.join(
        models.Task).filter(models.Task.playbook_id == playbook))
    if not utils.fast_count(task_results):
        abort(404)

    jinja = current_app.jinja_env
    time = jinja.from_string('{{ time | timefmt }}')
    action_link = jinja.get_template('ajax/action.html')
    name_cell = jinja.get_template('ajax/task_name.html')
    task_status_link = jinja.get_template('ajax/task_status.html')

    results = dict()
    results['data'] = list()

    log.debug('Loading results')
    log.debug('* If this part eats your RAM, please help us fix this :)')
    for result in task_results.yield_per(YIELD_PER):
        name = name_cell.render(tags=result.task.tags, name=result.task.name)
        host = result.host.name
        action = action_link.render(file=result.task.file,
                                    lineno=result.task.lineno,
                                    action=result.task.action)
        elapsed = time.render(time=result.task.offset_from_playbook)
        duration = time.render(time=result.duration)
        status = task_status_link.render(id=result.id,
                                         derived_status=result.derived_status)

        results['data'].append([name, host, action, elapsed, duration, status])

    log.debug('%s results loaded' % len(results['data']))
    return jsonify(results)
Exemple #5
0
def report_list(page=1):
    if current_app.config['ARA_PLAYBOOK_OVERRIDE'] is not None:
        override = current_app.config['ARA_PLAYBOOK_OVERRIDE']
        playbooks = (models.Playbook.query.filter(
            models.Playbook.id.in_(override)).order_by(
                models.Playbook.time_start.desc()))
    else:
        playbooks = (models.Playbook.query.order_by(
            models.Playbook.time_start.desc()))

    if not utils.fast_count(playbooks):
        return redirect(url_for('about.main'))

    playbook_per_page = current_app.config['ARA_PLAYBOOK_PER_PAGE']
    # Paginate unless playbook_per_page is set to 0
    if playbook_per_page >= 1:
        playbooks = playbooks.paginate(page, playbook_per_page, False)
    else:
        playbooks = playbooks.paginate(page, None, False)

    stats = utils.get_summary_stats(playbooks.items, 'playbook_id')

    result_per_page = current_app.config['ARA_RESULT_PER_PAGE']

    return render_template('report_list.html',
                           active='reports',
                           result_per_page=result_per_page,
                           playbooks=playbooks,
                           stats=stats)
Exemple #6
0
def ajax_results(playbook):
    task_results = (models.TaskResult.query.join(models.Task).filter(
        models.Task.playbook_id.in_([playbook])))
    if not utils.fast_count(task_results):
        abort(404)

    jinja = current_app.jinja_env
    time = jinja.from_string('{{ time | timefmt }}')
    action_link = jinja.get_template('ajax/action.html')
    name_cell = jinja.get_template('ajax/task_name.html')
    task_status_link = jinja.get_template('ajax/task_status.html')

    results = dict()
    results['data'] = list()

    for result in task_results:
        name = name_cell.render(result=result)
        host = result.host.name
        action = action_link.render(result=result)
        elapsed = time.render(time=result.task.offset_from_playbook)
        duration = time.render(time=result.duration)
        status = task_status_link.render(result=result)

        results['data'].append([name, host, action, elapsed, duration, status])
    return jsonify(results)
Exemple #7
0
    def test_fast_count(self):
        ansible_run()
        query = m.Task.query

        normal_count = query.count()
        fast_count = u.fast_count(query)

        self.assertEqual(normal_count, fast_count)
    def test_fast_count(self):
        ansible_run()
        query = m.Task.query

        normal_count = query.count()
        fast_count = u.fast_count(query)

        self.assertEqual(normal_count, fast_count)
Exemple #9
0
def main():
    """ Returns the about page """
    files = models.File.query
    hosts = models.Host.query
    facts = models.HostFacts.query
    playbooks = models.Playbook.query
    records = models.Data.query
    tasks = models.Task.query
    results = models.TaskResult.query

    if current_app.config['ARA_PLAYBOOK_OVERRIDE'] is not None:
        override = current_app.config['ARA_PLAYBOOK_OVERRIDE']
        files = files.filter(models.File.playbook_id.in_(override))
        facts = (facts
                 .join(models.Host)
                 .filter(models.Host.playbook_id.in_(override)))
        hosts = hosts.filter(models.Host.playbook_id.in_(override))
        playbooks = playbooks.filter(models.Playbook.id.in_(override))
        records = records.filter(models.Data.playbook_id.in_(override))
        tasks = tasks.filter(models.Task.playbook_id.in_(override))
        results = (results
                   .join(models.Task)
                   .filter(models.Task.playbook_id.in_(override)))

    return render_template(
        'about.html',
        active='about',
        files=fast_count(files),
        hosts=fast_count(hosts),
        facts=fast_count(facts),
        playbooks=fast_count(playbooks),
        records=fast_count(records),
        tasks=fast_count(tasks),
        results=fast_count(results)
    )
def main():
    """ Returns the about page """
    files = models.File.query
    hosts = models.Host.query
    facts = models.HostFacts.query
    playbooks = models.Playbook.query
    records = models.Data.query
    tasks = models.Task.query
    results = models.TaskResult.query

    if current_app.config['ARA_PLAYBOOK_OVERRIDE'] is not None:
        override = current_app.config['ARA_PLAYBOOK_OVERRIDE']
        files = files.filter(models.File.playbook_id.in_(override))
        facts = (facts.join(models.Host).filter(
            models.Host.playbook_id.in_(override)))
        hosts = hosts.filter(models.Host.playbook_id.in_(override))
        playbooks = playbooks.filter(models.Playbook.id.in_(override))
        records = records.filter(models.Data.playbook_id.in_(override))
        tasks = tasks.filter(models.Task.playbook_id.in_(override))
        results = (results.join(models.Task).filter(
            models.Task.playbook_id.in_(override)))

    return render_template('about.html',
                           active='about',
                           files=fast_count(files),
                           hosts=fast_count(hosts),
                           facts=fast_count(facts),
                           playbooks=fast_count(playbooks),
                           records=fast_count(records),
                           tasks=fast_count(tasks),
                           results=fast_count(results))
Exemple #11
0
def ajax_plays(playbook):
    plays = (models.Play.query.filter(models.Play.playbook_id.in_([playbook])))
    if not utils.fast_count(plays):
        abort(404)

    jinja = current_app.jinja_env
    date = jinja.from_string('{{ date | datefmt }}')
    time = jinja.from_string('{{ time | timefmt }}')

    results = dict()
    results['data'] = list()

    for play in plays:
        name = u"<span class='pull-left'>{0}</span>".format(play.name)
        start = date.render(date=play.time_start)
        end = date.render(date=play.time_end)
        duration = time.render(time=play.duration)
        results['data'].append([name, start, end, duration])

    return jsonify(results)
Exemple #12
0
def ajax_records(playbook):
    records = (models.Data.query.filter(models.Data.playbook_id.in_([playbook
                                                                     ])))
    if not utils.fast_count(records):
        abort(404)

    jinja = current_app.jinja_env
    record_key = jinja.get_template('ajax/record_key.html')
    record_value = jinja.get_template('ajax/record_value.html')

    results = dict()
    results['data'] = list()

    for record in records:
        key = record_key.render(record=record)
        value = record_value.render(record=record)

        results['data'].append([key, value])

    return jsonify(results)
Exemple #13
0
def ajax_records(playbook):
    records = (models.Data.query.filter(models.Data.playbook_id == playbook))
    if not utils.fast_count(records):
        abort(404)

    jinja = current_app.jinja_env
    record_key = jinja.get_template('ajax/record_key.html')
    record_value = jinja.get_template('ajax/record_value.html')

    results = dict()
    results['data'] = list()

    log.debug('Loading records')
    for record in records.yield_per(YIELD_PER):
        key = record_key.render(record=record)
        value = record_value.render(record=record)

        results['data'].append([key, value])

    log.debug('%s records loaded' % len(results['data']))
    return jsonify(results)
Exemple #14
0
def ajax_records(playbook):
    records = (models.Data.query
               .filter(models.Data.playbook_id == playbook))
    if not utils.fast_count(records):
        abort(404)

    jinja = current_app.jinja_env
    record_key = jinja.get_template('ajax/record_key.html')
    record_value = jinja.get_template('ajax/record_value.html')

    results = dict()
    results['data'] = list()

    log.debug('Loading records')
    for record in records:
        key = record_key.render(record=record)
        value = record_value.render(record=record)

        results['data'].append([key, value])

    log.debug('%s records loaded' % len(results['data']))
    return jsonify(results)
Exemple #15
0
def ajax_plays(playbook):
    plays = (models.Play.query
             .filter(models.Play.playbook_id == playbook))
    if not utils.fast_count(plays):
        abort(404)

    jinja = current_app.jinja_env
    date = jinja.from_string('{{ date | datefmt }}')
    time = jinja.from_string('{{ time | timefmt }}')

    results = dict()
    results['data'] = list()

    log.debug('Loading plays')
    for play in plays:
        name = u"<span class='pull-left'>{0}</span>".format(play.name)
        start = date.render(date=play.time_start)
        end = date.render(date=play.time_end)
        duration = time.render(time=play.duration)
        results['data'].append([name, start, end, duration])

    log.debug('%s plays loaded' % len(results['data']))
    return jsonify(results)
def ajax_results(playbook):
    tasks_in_playbook = models.Task.query.filter(
        models.Task.playbook_id == playbook)
    if not utils.fast_count(tasks_in_playbook):
        abort(404)

    jinja = current_app.jinja_env
    time = jinja.from_string('{{ time | timefmt }}')
    action_link = jinja.get_template('ajax/action.html')
    name_cell = jinja.get_template('ajax/task_name.html')
    task_status_link = jinja.get_template('ajax/task_status.html')

    results = dict()
    results['data'] = list()

    log.debug('Loading results')
    for task in tasks_in_playbook:
        task_results = task.task_results
        for result in task_results:
            name = name_cell.render(tags=result.task.tags,
                                    name=result.task.name)
            host = result.host.name
            action = action_link.render(file=result.task.file,
                                        lineno=result.task.lineno,
                                        action=result.task.action)
            elapsed = time.render(time=result.task.offset_from_playbook)
            duration = time.render(time=result.duration)
            status = task_status_link.render(
                id=result.id, derived_status=result.derived_status)
            results['data'].append(
                [name, host, action, elapsed, duration, status])
        del task_results
        del task

    log.debug('%s results loaded' % len(results['data']))
    return jsonify(results)
Exemple #17
0
def ajax_results(playbook):
    tasks_in_playbook = models.Task.query.filter(
        models.Task.playbook_id == playbook)
    if not utils.fast_count(tasks_in_playbook):
        abort(404)

    jinja = current_app.jinja_env
    time = jinja.from_string('{{ time | timefmt }}')
    action_link = jinja.get_template('ajax/action.html')
    name_cell = jinja.get_template('ajax/task_name.html')
    task_status_link = jinja.get_template('ajax/task_status.html')

    results = dict()
    results['data'] = list()

    log.debug('Loading results')
    for task in tasks_in_playbook:
        task_results = task.task_results
        for result in task_results:
            name = name_cell.render(tags=result.task.tags,
                                    name=result.task.name)
            host = result.host.name
            action = action_link.render(file=result.task.file,
                                        lineno=result.task.lineno,
                                        action=result.task.action)
            elapsed = time.render(time=result.task.offset_from_playbook)
            duration = time.render(time=result.duration)
            status = task_status_link.render(
                id=result.id, derived_status=result.derived_status)
            results['data'].append([name, host, action,
                                    elapsed, duration, status])
        del task_results
        del task

    log.debug('%s results loaded' % len(results['data']))
    return jsonify(results)
Exemple #18
0
def ajax_stats(playbook):
    stats = (models.Stats.query.filter(models.Stats.playbook_id.in_([playbook
                                                                     ])))
    if not utils.fast_count(stats):
        abort(404)

    jinja = current_app.jinja_env
    host_link = jinja.get_template('ajax/stats.html')

    results = dict()
    results['data'] = list()

    for stat in stats:
        host = host_link.render(stat=stat)
        ok = stat.ok if stat.ok >= 1 else 0
        changed = stat.changed if stat.changed >= 1 else 0
        failed = stat.failed if stat.failed >= 1 else 0
        skipped = stat.skipped if stat.skipped >= 1 else 0
        unreachable = stat.unreachable if stat.unreachable >= 1 else 0

        data = [host, ok, changed, failed, skipped, unreachable]
        results['data'].append(data)

    return jsonify(results)
Exemple #19
0
 def jinja_fast_count(query):
     return fast_count(query)
Exemple #20
0
 def jinja_fast_count(query):
     return fast_count(query)