summaryrefslogtreecommitdiffstats
path: root/reports/brpt/reports/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'reports/brpt/reports/views.py')
-rw-r--r--reports/brpt/reports/views.py121
1 files changed, 121 insertions, 0 deletions
diff --git a/reports/brpt/reports/views.py b/reports/brpt/reports/views.py
new file mode 100644
index 000000000..2edf43e1c
--- /dev/null
+++ b/reports/brpt/reports/views.py
@@ -0,0 +1,121 @@
+# Create your views here.
+#from django.shortcuts import get_object_or_404, render_to_response
+from django.template import Context, loader
+from django.http import HttpResponseRedirect, HttpResponse
+from django.shortcuts import render_to_response, get_object_or_404
+from brpt.reports.models import Client, Interaction, Bad, Modified, Extra
+from datetime import datetime
+
+
+def index(request):
+ return render_to_response('index.html')
+
+def client_index(request):
+ client_list = Client.objects.all().order_by('name')
+ return render_to_response('clients/index.html',{'client_list': client_list})
+
+def client_detail(request, hostname = -1, pk = -1):
+ #SETUP error pages for when you specify a client or interaction that doesn't exist
+ client = get_object_or_404(Client, name=hostname)
+ if(pk == -1):
+ interaction = client.interactions.order_by('-timestamp')[0]
+ else:
+ interaction = client.interactions.get(pk=pk)
+
+ return render_to_response('clients/detail.html',{'client': client, 'interaction': interaction})
+
+def display_sys_view(request):
+ client_lists = prepare_client_lists(request)
+ return render_to_response('displays/sys_view.html', client_lists)
+
+def display_summary(request):
+ client_lists = prepare_client_lists(request)
+ return render_to_response('displays/summary.html', client_lists)
+
+def display_timing(request):
+ #We're going to send a list of dictionaries. Each dictionary will be a row in the table
+ #+------+-------+----------------+-----------+---------+----------------+-------+
+ #| name | parse | probe download | inventory | install | cfg dl & parse | total |
+ #+------+-------+----------------+-----------+---------+----------------+-------+
+ client_list = Client.objects.all().order_by('-name')
+ stats_list = []
+ #if we have stats for a client, go ahead and add it to the list(wrap in TRY)
+ for client in client_list:#Go explicitly to an interaction ID! (new item in dictionary)
+ performance_items = client.interactions.order_by('-timestamp')[0].performance_items#allow this to be selectable(hist)
+ dict_unit = {}
+ try:
+ dict_unit["name"] = client.name #node name
+ except:
+ dict_unit["name"] = "n/a"
+ try:
+ dict_unit["parse"] = performance_items.get(metric="config_parse").value - performance_items.get(metric="config_download").value #parse
+ except:
+ dict_unit["parse"] = "n/a"
+ try:
+ dict_unit["probe"] = performance_items.get(metric="probe_upload").value - performance_items.get(metric="start").value #probe
+ except:
+ dict_unit["probe"] = "n/a"
+ try:
+ dict_unit["inventory"] = performance_items.get(metric="inventory").value - performance_items.get(metric="initialization").value #inventory
+ except:
+ dict_unit["inventory"] = "n/a"
+ try:
+ dict_unit["install"] = performance_items.get(metric="install").value - performance_items.get(metric="inventory").value #install
+ except:
+ dict_unit["install"] = "n/a"
+ try:
+ dict_unit["config"] = performance_items.get(metric="config_parse").value - performance_items.get(metric="probe_upload").value#config download & parse
+ except:
+ dict_unit["config"] = "n/a"
+ try:
+ dict_unit["total"] = performance_items.get(metric="finished").value - performance_items.get(metric="start").value #total
+ except:
+ dict_unit["total"] = "n/a"
+
+ #make sure all is formatted as such: #.##
+ stats_list.append(dict_unit)
+
+
+ return render_to_response('displays/timing.html',{'client_list': client_list, 'stats_list': stats_list})
+
+def display_index(request):
+ return render_to_response('displays/index.html')
+
+def prepare_client_lists(request):
+ client_list = Client.objects.all().order_by('name')#change this to order by interaction's state
+ clean_client_list = []
+ bad_client_list = []
+ extra_client_list = []
+ modified_client_list = []
+ stale_up_client_list = []
+ stale_all_client_list = []
+ down_client_list = []
+ for client in client_list:#but we need clientlist for more than just this loop
+ i = client.interactions.order_by('-timestamp')[0]
+# if i.state == 'good':
+ if i.isclean():
+ clean_client_list.append(client)
+ else:
+ bad_client_list.append(client)
+ if i.isstale():
+ if i.pingable:
+ stale_up_client_list.append(client)
+ stale_all_client_list.append(client)
+ else:
+ stale_all_client_list.append(client)
+ if not i.pingable:
+ down_client_list.append(client)
+ if len(i.modified_items.all()) > 0:
+ modified_client_list.append(client)
+ if len(i.extra_items.all()) > 0:
+ extra_client_list.append(client)
+
+ #if the list is empty set it to None?
+ return {'client_list': client_list,
+ 'clean_client_list': clean_client_list,
+ 'bad_client_list': bad_client_list,
+ 'extra_client_list': extra_client_list,
+ 'modified_client_list': modified_client_list,
+ 'stale_up_client_list': stale_up_client_list,
+ 'stale_all_client_list': stale_all_client_list,
+ 'down_client_list': down_client_list}