diff options
Diffstat (limited to 'src/lib/Server/Reports/reports/templates')
12 files changed, 466 insertions, 0 deletions
diff --git a/src/lib/Server/Reports/reports/templates/base.html b/src/lib/Server/Reports/reports/templates/base.html new file mode 100644 index 000000000..1bee97206 --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/base.html @@ -0,0 +1,45 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>{% block title %}Bcfg2 Reporting System{% endblock %}</title> + <link rel="stylesheet" type="text/css" href="/site_media/boxypastel.css" /> + <link rel="stylesheet" type="text/css" href="/site_media/base.css" /> + <script type="text/javascript" src="/site_media/main.js"> + </script> + {% block extra_header_info %}{% endblock %} +</head> + +<body> + <div id="header"> + <div id="branding"> + <h1>Bcfg2 Reporting System</h1> + </div> + <div id="user-tools">...Change is Coming...</div> + </div> + <div id="sidebar"> + {% block sidebar %} + <ul class="sidebar"> + <li><a href="/" class="sidebar">Home</a></li> + <li><a href="/clients/" class="sidebar">Clients</a></li> + <li> + <a href="/displays/" class="sidebar">Displays</a> + <ul class="sidebar-level2"> + <li><a href="/displays/sys-view/" class="sidebar">System</a></li> + <li><a href="/displays/summary/" class="sidebar">Summary</a></li> + <li><a href="/displays/timing/" class="sidebar">Timing</a></li> + </ul> + </li> + </ul> + {% endblock %} + </div> + + <div id="content-main"> + <div id="container"> + {% block pagebanner %}{% endblock %} + {% block content %}{% endblock %} + + </div> + </div> +</body> +</html>
\ No newline at end of file diff --git a/src/lib/Server/Reports/reports/templates/clients/client-nodebox.html b/src/lib/Server/Reports/reports/templates/clients/client-nodebox.html new file mode 100644 index 000000000..dade598cf --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/clients/client-nodebox.html @@ -0,0 +1,63 @@ +{% load django_templating_sigh %} +{% if client %} + <a name="{{client.name}}"></a> + <div class="nodebox" name="{{client.name}}"> + <span class="notebox">Time Ran: {{interaction.timestamp}}</span> + <!--<span class="configbox">(-Insert Profile Name Here-)</span>--> + + <table class="invisitable"> + <tr><td width="43%"><h2>Node: <span class="nodename"> + <a href="/clients/{{client.name}}/{{interaction.id}}">{{client.name}}</a></span></h2></td> + <td width="23%"> + {% if interaction.repo_revision %}Revision: {{interaction.repo_revision}}{% endif %} + </td> + <td width="33%"><div class="statusborder"> + <div class="greenbar" style="width: {{interaction.percentgood}}%;"> </div> + <div class="redbar" style="width: {{interaction.percentbad}}%;"> </div> + </div> + </td></tr> + </table> + {% if interaction.isclean %} + <div class="clean"> + <span class="nodelisttitle">Node is clean; Everything has been satisfactorily configured.</span> + </div> + {% endif %} + {% if interaction.isstale %} + <div class="warning"> + <span class="nodelisttitle">This node did not run within the last 24 hours-- it may be out of date.</span> + </div> + {% endif %} + {% if interaction.bad_items.all %} + <div class="bad"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('{{client.name}}-bad');" title="Click to expand" class="commentLink">{{interaction.bad_items.count}}</a> items did not verify and are considered Dirty.<br /></span> + <div class="items" id="{{client.name}}-bad"><ul class="plain"> + {% for bad in interaction.bad_items.all|sortwell %} + <li><strong>{{bad.kind}}: </strong><tt><a href="/elements/bad/{{bad.id}}">{{bad.name}}</a></tt></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + {% if interaction.modified_items.all %} + <div class="modified"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('{{client.name}}-modified');" title="Click to expand" class="commentLink">{{interaction.modified_items.count}}</a> items were modified in the last run.<br /></span> + <div class="items" id="{{client.name}}-modified"><ul class="plain"> + {% for modified in interaction.modified_items.all|sortwell %} + <li><strong>{{modified.kind}}: </strong><tt><a href="/elements/modified/{{modified.id}}">{{modified.name}}</a></tt></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + {% if interaction.extra_items.all %} + <div class="extra"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('{{client.name}}-extra');" title="Click to expand" class="commentLink">{{interaction.extra_items.count}}</a> extra configuration elements on the node.<br /></span> + <div class="items" id="{{client.name}}-extra"><ul class="plain"> + {% for extra in interaction.extra_items.all|sortwell %} + <li><strong>{{extra.kind}}: </strong><tt>{{extra.name}}</tt></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + </div> +{% else %} + <p>No record could be found for this client.</p> +{% endif %} diff --git a/src/lib/Server/Reports/reports/templates/clients/detail.html b/src/lib/Server/Reports/reports/templates/clients/detail.html new file mode 100644 index 000000000..4ac2123c1 --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/clients/detail.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} + +{% block title %}Info for: {{client.name}}{% endblock %} + +{% block content %} +<b>Select time: </b> +<select name=quick onChange="MM_jumpMenu('parent',this,0)"> + {% for i in client.interactions.all %} + <option {% ifequal i.id interaction.id %}selected {% endifequal %} value="/clients/{{client.name}}/{{i.id}}/"> {{i.timestamp}} + {% endfor %} +</select> + +{% include "clients/client-nodebox.html" %} +{% endblock %} diff --git a/src/lib/Server/Reports/reports/templates/clients/index.html b/src/lib/Server/Reports/reports/templates/clients/index.html new file mode 100644 index 000000000..9870e2942 --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/clients/index.html @@ -0,0 +1,36 @@ +{% extends "base.html" %} + +{% block title %}Client Index Listing{% endblock %} + +{% block pagebanner %} + <div class="header"> + <h1>Clients List</h1> + </div> + <br/> +{% endblock %} + +{% block content %} +{% if client_list_a %} +<table><tr><td align="top"> + <ul style="list-style-type:none;"> + {% for client in client_list_a %} + <li><div class="{{client.current_interaction.state}}-lineitem"> + <a href="{{client.name}}/">{{ client.name }}</a> + </div></li> + {% endfor %} + </ul> +</td><td align="top"> + <ul style="list-style-type:none;"> + {% if client_list_b %} + {% for client in client_list_b %} + <li><div class="{{client.current_interaction.state}}-lineitem"> + <a href="{{client.name}}/">{{ client.name }}</a> + </div></li> + {% endfor %} + {% endif %} + </ul> +</tr></tab.e> +{% else %} + <p>No client records are available.</p> +{% endif %} +{% endblock %} diff --git a/src/lib/Server/Reports/reports/templates/config_items/index.html b/src/lib/Server/Reports/reports/templates/config_items/index.html new file mode 100644 index 000000000..952172715 --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/config_items/index.html @@ -0,0 +1,77 @@ +{% extends "base.html" %} + +{% block extra_header_info %} +<script type="text/javascript" src="/site_media/CalendarPopup.js"></script> +<script language="JavaScript">var cal = new CalendarPopup();</script> +{% endblock%} +{% block title %}Configuration Element Details{% endblock %} + +{% block pagebanner %} + <div class="header"> + <h1>Configuration Element Details</h1> + </div> + <br/> +{% endblock %} + +{% block content %} +{% ifequal mod_or_bad "bad" %} +<div class="bad"> +<h2>Bad {{item.kind}}: {{item.name}}</h2> +</div> +{% else %} +<div class="modified"> +<h2>Modified {{item.kind}}: {{item.name}}</h2> +</div> +{% endifequal %} +<center> +<table border=1 padding=0 > +<tr><th>Reason</th><th>Current Status</th><th>Specified in BCFG</th></tr> +{% if item.reason.current_owner %} +<tr><td align="right"><b>Owner: </b></td><td>{{item.reason.owner}}</td><td>{{item.reason.current_owner}}</td></tr> +{% endif %}{% if item.reason.current_group %} +<tr><td align="right"><b>Group: </b></td><td>{{item.reason.group}}</td><td>{{item.reason.current_group}}</td></tr> +{% endif %}{% if item.reason.current_perms %} +<tr><td align="right"><b>Permissions: </b></td><td>{{item.reason.perms}}</td><td>{{item.reason.current_perms}}</td></tr> +{% endif %}{% if item.reason.current_status %} +<tr><td align="right"><b>Status: </b></td><td>{{item.reason.status}}</td><td>{{item.reason.current_status}}</td></tr> +{% endif %}{% if item.reason.current_to %} +<tr><td align="right"><b>Link Destination: </b></td><td>{{item.reason.to}}</td><td>{{item.reason.current_to}}</td></tr> +{% endif %}{% if item.reason.current_version %} +<tr><td align="right"><b>Version: </b></td><td>{{item.reason.version}}</td><td>{{item.reason.current_version}}</td></tr> +{% endif %}{% if not item.reason.current_exists %} +<tr><td align="right"><b>Existance: </b></td><td colspan=2>This item does not currently exist on the host but is specified to exist in the configuration.</td></tr> +{% endif %}{% if item.reason.current_diff %} +<tr><td align="right"><b>Unified Diff: </b></td><td colspan=2><pre>{{item.reason.current_diff}}</pre></td></tr> +{% endif %} +</table></center> +<hr/> +<div> +<span class="mini-date"> +<b>Enter date or use calendar popup: </b> +<form name="timestamp-select"> +<input type="text" name="date1" value="{{timestamp_date}}" size=10>@ +<input type="text" name="time" value="{{timestamp_time}}" size=8> +<a href="" onClick="cal.select(document.forms['timestamp-select'].date1,'anchor1','yyyy-MM-dd'); return false;" + name="anchor1" ID="anchor1">Calendar</A> +<input type="button" name="go" value="Go" onClick="location.href='/elements/{{mod_or_bad}}/{{item.id}}/'+document.forms['timestamp-select'].date1.value+'@'+document.forms['timestamp-select'].time.value;" /> + | <input type="button" name="now" value="Now" onClick="location.href='/elements/{{mod_or_bad}}/{{item.id}}';"/> +</form> +</span><br/><br/><br/></div> +{% if associated_client_list %} + <p>The following clients had this problem as of {{timestamp_date}}@{{timestamp_time}}:</p> + {% for client in associated_client_list %} + <a href="/clients/{{client.name}}">{{client.name}}</a><br/> + {% endfor %} + <br /> + <br /> +{% else %} + <p>No Clients had this problem at {{timestamp}}</p> +{% endif %} + + + + + + + +{% endblock %} diff --git a/src/lib/Server/Reports/reports/templates/displays/index.html b/src/lib/Server/Reports/reports/templates/displays/index.html new file mode 100644 index 000000000..5d1d3bf76 --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/displays/index.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} + +{% block title %}Display Index Listing{% endblock %} +{% block pagebanner %} + <div class="header"> + <h1>BCFG Display Index</h1> + {% comment %} <span class="notebox">Report Run @ {% now "F j, Y P"%}</span>{% endcomment %} + </div> + <br/> +{% endblock %} + +{% block content %} +<ul> +<li><a href="/displays/sys-view/">System View</a></li> +<li><a href="/displays/summary/">Summary Only</a></li> +<li><a href="/displays/timing/">Timing</a></li> +</ul> +{% endblock %} diff --git a/src/lib/Server/Reports/reports/templates/displays/summary-block-direct-links.html b/src/lib/Server/Reports/reports/templates/displays/summary-block-direct-links.html new file mode 100644 index 000000000..a218e12b6 --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/displays/summary-block-direct-links.html @@ -0,0 +1,7 @@ +{% extends "displays/summary-block.html" %} +{% block linkprefix1 %}/clients/{% endblock %} +{% block linkprefix2 %}/clients/{% endblock %} +{% block linkprefix3 %}/clients/{% endblock %} +{% block linkprefix4 %}/clients/{% endblock %} +{% block linkprefix5 %}/clients/{% endblock %} +{% block linkprefix6 %}/clients/{% endblock %}
\ No newline at end of file diff --git a/src/lib/Server/Reports/reports/templates/displays/summary-block.html b/src/lib/Server/Reports/reports/templates/displays/summary-block.html new file mode 100644 index 000000000..a42176183 --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/displays/summary-block.html @@ -0,0 +1,90 @@ +{% load django_templating_sigh %} + + <div class="nodebox"> + <h2>Summary:</h2> + <p class="indented">{{client_list|length }} Nodes were included in your report.</p> + {% if clean_client_list %} + <div class="clean"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('goodsummary');" title="Click to Expand" class="commentLink">{{clean_client_list|length}}</a> nodes are clean.<br /></span> + <div class="items" id="goodsummary"><ul class="plain"> + {% for client in clean_client_list|sortname %} + {% set_interaction "foo" %} + <li><b>Node: </b></tt> + <tt><a href="{% block linkprefix1 %}#{% endblock %}{{client.name}}">{{client.name}}</a></tt><span class="mini-date">{{interaction.timestamp}}</span></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + {% if bad_client_list %} + <div class="bad"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('badsummary');" title="Click to Expand" class="commentLink">{{bad_client_list|length}}</a> nodes are bad.<br /></span> + <div class="items" id="badsummary"><ul class="plain"> + {% for client in bad_client_list|sortname %} + {% set_interaction "foo" %} + <li><b>Node: </b></tt> + <tt><a href="{% block linkprefix2 %}#{% endblock %}{{client.name}}">{{client.name}}</a></tt><span class="mini-date">{{interaction.timestamp}}</span></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + {% if modified_client_list %} + <div class="modified"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('modifiedsummary');" title="Click to Expand" class="commentLink">{{modified_client_list|length}}</a> nodes were modified in the previous run.<br /></span> + <div class="items" id="modifiedsummary"><ul class="plain"> + {% for client in modified_client_list|sortname %} + {% set_interaction "foo" %} + <li><b>Node: </b></tt> + <tt><a href="{% block linkprefix3 %}#{% endblock %}{{client.name}}">{{client.name}}</a></tt><span class="mini-date">{{interaction.timestamp}}</span></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + {% if extra_client_list %} + <div class="extra"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('extrasummary');" title="Click to Expand" class="commentLink">{{extra_client_list|length}}</a> nodes have extra configuration. (includes both good and bad nodes)<br /></span> + <div class="items" id="extrasummary"><ul class="plain"> + {% for client in extra_client_list|sortname %} + {% set_interaction "foo" %} + <li><b>Node: </b></tt> + <tt><a href="{% block linkprefix4 %}#{% endblock %}{{client.name}}">{{client.name}}</a></tt><span class="mini-date">{{interaction.timestamp}}</span></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + {% if stale_up_client_list %} + <div class="warning"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('vstalesummary');" title="Click to Expand" class="commentLink">{{stale_up_client_list|length}}</a> nodes did not run within the last 24 hours but were pingable.<br /></span> + <div class="items" id="vstalesummary"><ul class="plain"> + {% for client in stale_up_client_list|sortname %} + {% set_interaction "foo" %} + <li><b>Node: </b></tt> + <tt><a href="{% block linkprefix5 %}#{% endblock %}{{client.name}}">{{client.name}}</a></tt><span class="mini-date">{{interaction.timestamp}}</span></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + {% if stale_all_client_list %} + <div class="all-warning"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('stalesummary');" title="Click to Expand" class="commentLink">{{stale_all_client_list|length}}</a> nodes did not run within the last 24 hours. (includes nodes up and down)<br /></span> + <div class="items" id="stalesummary"><ul class="plain"> + {% for client in stale_all_client_list|sortname %} + {% set_interaction "foo" %} + <li><b>Node: </b></tt> + <tt><a href="{% block linkprefix6 %}#{% endblock %}{{client.name}}">{{client.name}}</a></tt><span class="mini-date">{{interaction.timestamp}}</span></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + {% if down_client_list %} + <div class="down"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('unpingablesummary');" title="Click to Expand" class="commentLink">{{down_client_list|length}}</a> nodes were down.<br /></span> + <div class="items" id="unpingablesummary"><ul class="plain"> + {% for client in down_client_list|sortname %} + {% set_interaction "foo" %} + <li><b>Node: </b></tt> + <tt><a href="#{{client.name}}">{{client.name}}</a></tt><span class="mini-date">{{interaction.timestamp}}</span></li> + {% endfor %} + </ul></div> + </div> + {% endif %} + </div>
\ No newline at end of file diff --git a/src/lib/Server/Reports/reports/templates/displays/summary.html b/src/lib/Server/Reports/reports/templates/displays/summary.html new file mode 100644 index 000000000..cf253c25c --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/displays/summary.html @@ -0,0 +1,29 @@ +{% extends "base.html" %} +{% block extra_header_info %} +<script type="text/javascript" src="/site_media/CalendarPopup.js"></script> +<script language="JavaScript">var cal = new CalendarPopup();</script> +{% endblock%} +{% block title %}Display Index Listing{% endblock %} +{% block pagebanner %} + <div class="header"> + <h1>BCFG Clients Summary</h1> + <span class="notebox">Report Run @ {% now "F j, Y P"%}</span> + </div> + <br/> +{% endblock %} + +{% block content %} +<div> +<span class="mini-date"> +<b>Enter date or use calendar popup: </b> +<form name="timestamp-select"> +<input type="text" name="date1" value="{{timestamp_date}}" size=10>@ +<input type="text" name="time" value="{{timestamp_time}}" size=8> +<a href="" onClick="cal.select(document.forms['timestamp-select'].date1,'anchor1','yyyy-MM-dd'); return false;" + name="anchor1" ID="anchor1">Calendar</A> +<input type="button" name="go" value="Go" onClick="location.href='/displays/summary/'+document.forms['timestamp-select'].date1.value+'@'+document.forms['timestamp-select'].time.value;" /> + | <input type="button" name="now" value="Now" onClick="location.href='/displays/summary/';"/> +</form> +</span><br/><br/><br/></div> + {% include "displays/summary-block-direct-links.html" %} +{% endblock %} diff --git a/src/lib/Server/Reports/reports/templates/displays/sys_view.html b/src/lib/Server/Reports/reports/templates/displays/sys_view.html new file mode 100644 index 000000000..1298059bf --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/displays/sys_view.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} +{% load django_templating_sigh %} + +{% block title %}System-View Display{% endblock %} +{% block pagebanner %} + <div class="header"> + <h1>Grand System View</h1> + <span class="notebox">Report Run @ {% now "F j, Y P"%}</span> + </div> + <br/> +{% endblock %} +{% block content %} +<center><h2>This view is deprecated and will be removed soon.</h2><br/>Please use the "Summary" view and drill down instead.</center> + + {% include "displays/summary-block.html" %} + {% for client in client_list %} + {% set_interaction "foo" %} + {% include "clients/client-nodebox.html" %} + {% endfor %} +{% endblock %} diff --git a/src/lib/Server/Reports/reports/templates/displays/timing.html b/src/lib/Server/Reports/reports/templates/displays/timing.html new file mode 100644 index 000000000..e9020b8ef --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/displays/timing.html @@ -0,0 +1,52 @@ +{% extends "base.html" %} + +{% block extra_header_info %} +<script type="text/javascript" src="/site_media/sorttable.js"></script> +<script type="text/javascript" src="/site_media/CalendarPopup.js"></script> +<script language="JavaScript">var cal = new CalendarPopup();</script> +{% endblock%} +{% block title %}Display Index Listing{% endblock %} + +{% block content %} + <div class="header"> + <h1>BCFG Performance Timings</h1> + <span class="notebox">Report Run @ {% now "F j, Y P"%}</span> + </div> + <br/> +<div> +<span class="mini-date"> +<b>Enter date or use calendar popup: </b> +<form name="timestamp-select"> +<input type="text" name="date1" value="{{timestamp_date}}" size=10>@ +<input type="text" name="time" value="{{timestamp_time}}" size=8> +<a href="" onClick="cal.select(document.forms['timestamp-select'].date1,'anchor1','yyyy-MM-dd'); return false;" + name="anchor1" ID="anchor1">Calendar</A> +<input type="button" name="go" value="Go" onClick="location.href='/displays/timing/'+document.forms['timestamp-select'].date1.value+'@'+document.forms['timestamp-select'].time.value;" /> + | <input type="button" name="now" value="Now" onClick="location.href='/displays/timing/';"/> +</form> +</span><br/><br/><br/></div> + <center> + <table id="t1" class="sortable"> + <tr> + <th class="sortable">Hostname</th> + <th class="sortable">Parse</th> + <th class="sortable">Probe</th> + <th class="sortable">Inventory</th> + <th class="sortable">Install</th> + <th class="sortable">Config</th> + <th class="sortable">Total</th> + </tr> + {% for dict_unit in stats_list %} + <tr> + <td class="sortable"><a href="/clients/{{dict_unit.name}}/">{{dict_unit.name}}</a></td> + <td class="sortable">{{dict_unit.parse}}</td> + <td class="sortable">{{dict_unit.probe}}</td> + <td class="sortable">{{dict_unit.inventory}}</td> + <td class="sortable">{{dict_unit.install}}</td> + <td class="sortable">{{dict_unit.config}}</td> + <td class="sortable">{{dict_unit.total}}</td> + </tr> + {% endfor %} + </table> + </center> +{% endblock %}
\ No newline at end of file diff --git a/src/lib/Server/Reports/reports/templates/index.html b/src/lib/Server/Reports/reports/templates/index.html new file mode 100644 index 000000000..002a3f770 --- /dev/null +++ b/src/lib/Server/Reports/reports/templates/index.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} + +{% block pagebanner %} + <div class="header"> + <h1>BCFG Reports</h1> + {% comment %} <span class="notebox">Report Run @ {% now "F j, Y P"%}</span>{% endcomment %} + </div> + <br/> +{% endblock %} +{% block content %} +<h1>Welcome to the Bcfg2 Reporting System</h1> +<p> +Please use the links at the left to navigate. +</p> +{% endblock %} |