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)
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)
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)
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)
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)
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)
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 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))
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)
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)
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)
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)
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)
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)
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)
def jinja_fast_count(query): return fast_count(query)