show list of nodes without report for x hours in overview

- the amount of hours is defined as `UNRESPONSIVE_HOURS` in default_settings.py
- small status layout improvement in nodes list
- latest report button in nodes list
- nedap/pypuppetdb repo as requirement ( new api was merged nedap/pypuppetdb#17 )
This commit is contained in:
Julius Härtl
2013-10-28 11:36:37 +01:00
parent c7bae2efa3
commit 5ca758dd39
6 changed files with 57 additions and 32 deletions

View File

@@ -5,6 +5,7 @@ import os
import logging
import collections
import urllib
from datetime import datetime, timedelta
from flask import (
Flask, render_template, abort, url_for,
@@ -101,7 +102,15 @@ def index():
latest_events = puppetdb._query('event-counts', query='["=", "latest-report?", true]', summarize_by='certname')
return render_template('index.html', metrics=metrics, latest_event_count=latest_event_count, latest_events=latest_events)
unreported = []
for node in puppetdb.nodes():
node_last_seen = node.report_timestamp.replace(tzinfo=None)
if node_last_seen < (datetime.utcnow()-timedelta(hours=app.config['UNRESPONSIVE_HOURS'])):
delta = (datetime.utcnow()-node_last_seen)
node.noresponse = str(delta.days) + "d " + str(int(delta.seconds/3600)) +"h " + str(int((delta.seconds%3600)/60))+ "m"
unreported.append(node)
return render_template('index.html', metrics=metrics, latest_event_count=latest_event_count, latest_events=latest_events, unreported=unreported, unreported_time=app.config['UNRESPONSIVE_HOURS'])
@app.route('/nodes')
def nodes():