From 08ee6ed4397bdd2c8d1539b5300cd12b3c750246 Mon Sep 17 00:00:00 2001 From: Tim Laszlo Date: Thu, 14 Jun 2012 12:04:31 -0500 Subject: web_reports: Add entry view --- .../templates/config_items/entry_status.html | 30 ++++++++++++++++++++++ src/lib/Bcfg2/Server/Reports/reports/urls.py | 1 + src/lib/Bcfg2/Server/Reports/reports/views.py | 26 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 src/lib/Bcfg2/Server/Reports/reports/templates/config_items/entry_status.html (limited to 'src/lib/Bcfg2/Server') diff --git a/src/lib/Bcfg2/Server/Reports/reports/templates/config_items/entry_status.html b/src/lib/Bcfg2/Server/Reports/reports/templates/config_items/entry_status.html new file mode 100644 index 000000000..e828ff645 --- /dev/null +++ b/src/lib/Bcfg2/Server/Reports/reports/templates/config_items/entry_status.html @@ -0,0 +1,30 @@ +{% extends "base-timeview.html" %} +{% load bcfg2_tags %} + +{% block title %}Bcfg2 - Entry Status{% endblock %} + +{% block extra_header_info %} +{% endblock%} + +{% block pagebanner %}{{ entry.kind }} entry {{ entry.name }} status{% endblock %} + +{% block content %} +{% filter_navigator %} +{% if item_data %} +
+ + + {% for ei, inter, reason in item_data %} + + + + + + + {% endfor %} +
NameTimestampStateReason
{{ inter.client.name }}{{ inter.timestamp|date:"Y-m-d\&\n\b\s\p\;H:i"|safe }}{{ ei.get_type_display }}{{ reason.short_list|join:"," }}
+
+{% else %} +

There are currently no hosts with this configuration entry.

+{% endif %} +{% endblock %} diff --git a/src/lib/Bcfg2/Server/Reports/reports/urls.py b/src/lib/Bcfg2/Server/Reports/reports/urls.py index 865ee6208..1cfe725c2 100644 --- a/src/lib/Bcfg2/Server/Reports/reports/urls.py +++ b/src/lib/Bcfg2/Server/Reports/reports/urls.py @@ -17,6 +17,7 @@ urlpatterns = patterns('Bcfg2.Server.Reports.reports', url(r'^client/(?P[^/]+)/(?P\d+)/?$', 'views.client_detail', name='reports_client_detail_pk'), url(r'^client/(?P[^/]+)/?$', 'views.client_detail', name='reports_client_detail'), url(r'^elements/(?P\w+)/(?P\d+)/?$', 'views.config_item', name='reports_item'), + url(r'^entry/(?P\w+)/?$', 'views.entry_status', name='reports_entry'), ) urlpatterns += patterns('Bcfg2.Server.Reports.reports', diff --git a/src/lib/Bcfg2/Server/Reports/reports/views.py b/src/lib/Bcfg2/Server/Reports/reports/views.py index 439d01c7c..e4c38363f 100644 --- a/src/lib/Bcfg2/Server/Reports/reports/views.py +++ b/src/lib/Bcfg2/Server/Reports/reports/views.py @@ -210,6 +210,32 @@ def config_item_list(request, type, timestamp=None, **kwargs): context_instance=RequestContext(request)) +@timeview +def entry_status(request, eid, timestamp=None, **kwargs): + """Render a listing of affected elements""" + entry = get_object_or_404(Entries, pk=eid) + + current_clients = Interaction.objects.interaction_per_client(timestamp) + inters = {} + [inters.__setitem__(i.id, i) \ + for i in _handle_filters(current_clients, **kwargs).select_related('client')] + + eis = Entries_interactions.objects.filter( + interaction__in=inters.keys(), entry=entry) + + reasons = _in_bulk(Reason, set([x.reason_id for x in eis])) + + item_data = [] + for ei in eis: + item_data.append((ei, inters[ei.interaction_id], reasons[ei.reason_id])) + + return render_to_response('config_items/entry_status.html', + {'entry': entry, + 'item_data': item_data, + 'timestamp': timestamp}, + context_instance=RequestContext(request)) + + @timeview def common_problems(request, timestamp=None, threshold=None): """Mine config entries""" -- cgit v1.2.3-1-g7c22