diff options
author | Joey Hagedorn <hagedorn@mcs.anl.gov> | 2005-08-01 14:57:24 +0000 |
---|---|---|
committer | Joey Hagedorn <hagedorn@mcs.anl.gov> | 2005-08-01 14:57:24 +0000 |
commit | 058635947a024e68112b7721174c7bc40248aaee (patch) | |
tree | a177d52716088c64ac004b8f0ab253df63135726 /reports | |
parent | 7fb840f2b981c8c75158b76d2dd4b0af7635d681 (diff) | |
download | bcfg2-058635947a024e68112b7721174c7bc40248aaee.tar.gz bcfg2-058635947a024e68112b7721174c7bc40248aaee.tar.bz2 bcfg2-058635947a024e68112b7721174c7bc40248aaee.zip |
(Logical change 1.272)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1105 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'reports')
-rw-r--r-- | reports/web-rprt-srcs/boxypastel.css | 113 | ||||
-rw-r--r-- | reports/web-rprt-srcs/main.js | 21 | ||||
-rw-r--r-- | reports/xsl-transforms/nodes-digest-email.xsl | 37 | ||||
-rw-r--r-- | reports/xsl-transforms/nodes-digest-html.xsl | 75 | ||||
-rw-r--r-- | reports/xsl-transforms/nodes-digest-rss.xsl | 43 | ||||
-rw-r--r-- | reports/xsl-transforms/nodes-individual-email.xsl | 22 | ||||
-rw-r--r-- | reports/xsl-transforms/overview-stats-email.xsl | 84 | ||||
-rw-r--r-- | reports/xsl-transforms/overview-stats-html.xsl | 110 | ||||
-rw-r--r-- | reports/xsl-transforms/overview-stats-rss.xsl | 91 | ||||
-rw-r--r-- | reports/xsl-transforms/xsl-transform-includes/html-templates.xsl | 104 | ||||
-rw-r--r-- | reports/xsl-transforms/xsl-transform-includes/text-templates.xsl | 85 |
11 files changed, 785 insertions, 0 deletions
diff --git a/reports/web-rprt-srcs/boxypastel.css b/reports/web-rprt-srcs/boxypastel.css index e69de29bb..bbb2566c9 100644 --- a/reports/web-rprt-srcs/boxypastel.css +++ b/reports/web-rprt-srcs/boxypastel.css @@ -0,0 +1,113 @@ +/* body */ +body { + background-color: #fff; + color: #000; + font: 12px 'Lucida Grande', Arial, Helvetica, sans-serif; + margin-left:25px; + margin-right:100px; + } +/* links */ +a:link { + color: #00f; + text-decoration: none; + } +a:visited { + color: #00a; + text-decoration: none; + } +a:hover { + color: #00a; + text-decoration: underline; + } +a:active { + color: #00a; + text-decoration: underline; + } +/* divs*/ +div.bad { + border: 1px solid #660000; + background: #FF6A6A; + margin: 10px 0; + padding: 8px; + text-align: left; + margin-left:50px; + margin-right:50px; + } +div.modified { + border: 1px solid #CC9900; + background: #FFEC8B; + margin: 10px 0; + padding: 8px; + text-align: left; + margin-left:50px; + margin-right:50px; + } +div.clean { + border: 1px solid #006600; + background: #9AFF9A; + margin: 10px 0; + padding: 8px; + text-align: left; + margin-left:50px; + margin-right:50px; + } +div.warning { + border: 1px solid #CC3300; + background: #FF9933; + margin: 10px 0; + padding: 8px; + text-align: left; + margin-left:50px; + margin-right:50px; + } +div.items { + display: none; + } +div.nodebox { + border: 1px solid #c7cfd5; + background: #f1f5f9; + margin: 20px 0; + padding: 8px; + text-align: left; + position:relative; + } +div.header { + background-color: #DDD; + padding: 8px; + text-indent:50px; + position:relative; + + } + +/*Spans*/ +.nodename { + font-style: italic; + } +.nodelisttitle { + font-size: 14px; + } + +h2 { + font-size: 16px; + color: #000; + } + +ul.plain { + list-style-type:none; + text-align: left; + } + +.notebox { + position: absolute; + top: 0px; + right: 0px; + padding: 1px; + text-indent:0px; + border: 1px solid #FFF; + background: #999; + color: #FFF; + } + +p.indented{ + text-indent: 50px + } diff --git a/reports/web-rprt-srcs/main.js b/reports/web-rprt-srcs/main.js index e69de29bb..e9bbc89f4 100644 --- a/reports/web-rprt-srcs/main.js +++ b/reports/web-rprt-srcs/main.js @@ -0,0 +1,21 @@ +function toggleLayer(whichLayer) + { + if (document.getElementById) + { + // this is the way the standards work + var style2 = document.getElementById(whichLayer).style; + style2.display = style2.display? "":"block"; + } + else if (document.all) + { + // this is the way old msie versions work + var style2 = document.all[whichLayer].style; + style2.display = style2.display? "":"block"; + } + else if (document.layers) + { + // this is the way nn4 works + var style2 = document.layers[whichLayer].style; + style2.display = style2.display? "":"block"; + } + } diff --git a/reports/xsl-transforms/nodes-digest-email.xsl b/reports/xsl-transforms/nodes-digest-email.xsl index e69de29bb..7575b58d4 100644 --- a/reports/xsl-transforms/nodes-digest-email.xsl +++ b/reports/xsl-transforms/nodes-digest-email.xsl @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml"> +<xsl:include href="xsl-transform-includes/text-templates.xsl" /> +<xsl:output method="text" indent="no" media-type="text/plain" /> +<xsl:template match="Report"> +<xsl:choose> +<xsl:when test="count(/Report/Node/Statistics/Bad) > 0">Subject: BCFG Nightly Errors (<xsl:value-of select="@name" />) +</xsl:when> +<xsl:otherwise>Subject: BCFG Nightly Good (<xsl:value-of select="@name" />) +</xsl:otherwise> +</xsl:choose> +<xsl:text> +</xsl:text>Report Run @ <xsl:value-of select="@time" /> + +SUMMARY: +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node)" /> nodes were included in your report.<xsl:if test="count(/Report/Node/Statistics/Good) = 0"> +<xsl:text> + </xsl:text>All machines are configured to specification. +</xsl:if><xsl:if test="count(/Report/Node/Statistics/Good) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Good)" /> nodes are clean. +</xsl:if> +<xsl:if test="count(/Report/Node/Statistics/Bad) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Bad)" /> nodes are bad. +</xsl:if> +<xsl:if test="count(/Report/Node/Statistics/Modified) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Modified)" /> nodes were modified in the last run. (includes both good and bad nodes) +</xsl:if> +<xsl:if test="count(/Report/Node/Statistics/Stale) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Stale)" /> nodes did not run this calendar day. +</xsl:if> +DETAILS: +<xsl:apply-templates select="Node"> +<xsl:sort select="Statistics/@state" order="descending"/> +<xsl:sort select="@name"/> +</xsl:apply-templates> +</xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/reports/xsl-transforms/nodes-digest-html.xsl b/reports/xsl-transforms/nodes-digest-html.xsl index e69de29bb..3031a7a0d 100644 --- a/reports/xsl-transforms/nodes-digest-html.xsl +++ b/reports/xsl-transforms/nodes-digest-html.xsl @@ -0,0 +1,75 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns="http://www.w3.org/1999/xhtml"> + <xsl:include href="xsl-transform-includes/html-templates.xsl" /> + <xsl:output method="xml" media-type="text/html" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> + <xsl:template match="Report"> + <html> + <head> + <title> + <xsl:choose> + <xsl:when test="count(/Report/Node/Statistics/Bad) > 0">BCFG Nightly Errors (<xsl:value-of select="@name" />)</xsl:when> + <xsl:otherwise>BCFG Nightly Errors (<xsl:value-of select="@name" />)</xsl:otherwise> + </xsl:choose> + </title> + + <link rel="stylesheet" type="text/css" href="web-rprt-srcs/boxypastel.css" /> + <script type="text/javascript" src="web-rprt-srcs/main.js" /> + </head> + <body bgcolor="#ffffff"> + <div class="header"> + <h1> + <xsl:choose> + <xsl:when test="count(/Report/Node/Statistics/Bad) > 0"> + BCFG Nightly Errors (<xsl:value-of select="@name" />) + </xsl:when> + <xsl:otherwise> + BCFG Nightly Errors (<xsl:value-of select="@name" />) + </xsl:otherwise> + </xsl:choose> + </h1><span class="notebox">Report Run @ <xsl:value-of select="@time" /></span> + </div> + <div class="nodebox"> + <h2>Summary:</h2> + + <p class="indented"><xsl:value-of select="count(/Report/Node)" /> Nodes were included in your report.</p> + <xsl:if test="count(/Report/Node/Statistics/Good) > 0"> + <div class="clean"> + <span class="nodelisttitle"><xsl:value-of select="count(/Report/Node/Statistics/Good)" /> nodes are clean.<br /></span> + </div> + </xsl:if> + + <xsl:if test="count(/Report/Node/Statistics/Bad) > 0"> + <div class="bad"> + <span class="nodelisttitle"><xsl:value-of select="count(/Report/Node/Statistics/Bad)" /> nodes are bad.<br /></span> + </div> + </xsl:if> + + <xsl:if test="count(/Report/Node/Statistics/Modified) > 0"> + <div class="modified"> + <span class="nodelisttitle"><xsl:value-of select="count(/Report/Node/Statistics/Modified)" /> nodes were modified in the last run. (includes both good and bad nodes)<br /></span> + </div> + </xsl:if> + + <xsl:if test="count(/Report/Node/Statistics/Stale) > 0"> + <div class="warning"> + <span class="nodelisttitle"><xsl:value-of select="count(/Report/Node/Statistics/Stale)" /> nodes did not run this calendar day.<br /></span> + </div> + </xsl:if> + </div> + + <xsl:apply-templates select="Node"> + <xsl:sort select="Statistics/@state" order="descending"/> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <br/> + <br/> + <p> + <a href="http://validator.w3.org/check?uri=referer"><img + src="http://www.w3.org/Icons/valid-xhtml10" + alt="Valid XHTML 1.0!" height="31" width="88" /></a> + </p> + </body> + </html> + </xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/reports/xsl-transforms/nodes-digest-rss.xsl b/reports/xsl-transforms/nodes-digest-rss.xsl index e69de29bb..df6ac33a2 100644 --- a/reports/xsl-transforms/nodes-digest-rss.xsl +++ b/reports/xsl-transforms/nodes-digest-rss.xsl @@ -0,0 +1,43 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > +<xsl:include href="xsl-transform-includes/text-templates.xsl" /> +<xsl:output method="xml" indent="no" media-type="text/xml" omit-xml-declaration="yes"/> +<xsl:template match="Report"> +<item> +<pubDate><xsl:value-of select="@time" /></pubDate> +<xsl:choose> +<xsl:when test="count(/Report/Node/Statistics/Bad) > 0"><title>Subject: BCFG Nightly Errors (<xsl:value-of select="@name" />)</title> +</xsl:when> +<xsl:otherwise><title>Subject: BCFG Nightly Good (<xsl:value-of select="@name" />)</title> +</xsl:otherwise> +</xsl:choose> +<description><pre> +<xsl:text> +</xsl:text>Report Run @ <xsl:value-of select="@time" /> + +SUMMARY: +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node)" /> nodes were included in your report.<xsl:if test="count(/Report/Node/Statistics/Good) = 0"> +<xsl:text> + </xsl:text>All machines are configured to specification. +</xsl:if><xsl:if test="count(/Report/Node/Statistics/Good) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Good)" /> nodes are clean. +</xsl:if> +<xsl:if test="count(/Report/Node/Statistics/Bad) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Bad)" /> nodes are bad. +</xsl:if> +<xsl:if test="count(/Report/Node/Statistics/Modified) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Modified)" /> nodes were modified in the last run. (includes both good and bad nodes) +</xsl:if> +<xsl:if test="count(/Report/Node/Statistics/Stale) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Stale)" /> nodes did not run this calendar day. +</xsl:if> +DETAILS: +<xsl:apply-templates select="Node"> +<xsl:sort select="Statistics/@state" order="descending"/> +<xsl:sort select="@name"/> +</xsl:apply-templates> +</pre></description> +<link>http://www-unix.mcs.anl.gov/cobalt/bcfg2/index.html</link> +</item> +</xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/reports/xsl-transforms/nodes-individual-email.xsl b/reports/xsl-transforms/nodes-individual-email.xsl index e69de29bb..12f0e5ada 100644 --- a/reports/xsl-transforms/nodes-individual-email.xsl +++ b/reports/xsl-transforms/nodes-individual-email.xsl @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml"> +<xsl:include href="xsl-transform-includes/text-templates.xsl" /> +<xsl:output method="text" indent="no" media-type="text/plain" /> +<xsl:template match="Report"> +<xsl:choose> +<xsl:when test="count(/Report/Node/Statistics/Bad) > 0">Subject: <xsl:value-of select="/Report/Node/@name" /> Nightly Errors +</xsl:when> +<xsl:otherwise>Subject: <xsl:value-of select="/Report/Node/@name" /> Nightly Good</xsl:otherwise> +</xsl:choose> +<xsl:text> +</xsl:text>Report Run @ <xsl:value-of select="@time" /> + +<xsl:if test="count(/Report/Node/Statistics/Bad) = 0"> +This node configured properly. +</xsl:if> +<xsl:apply-templates select="Node"> +<xsl:sort select="Statistics/@state" order="descending"/> +<xsl:sort select="@name"/> +</xsl:apply-templates> +</xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/reports/xsl-transforms/overview-stats-email.xsl b/reports/xsl-transforms/overview-stats-email.xsl index e69de29bb..6a80bfe95 100644 --- a/reports/xsl-transforms/overview-stats-email.xsl +++ b/reports/xsl-transforms/overview-stats-email.xsl @@ -0,0 +1,84 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml"> +<xsl:include href="xsl-transform-includes/text-templates.xsl" /> +<xsl:output method="text" indent="no" media-type="text/plain" /> +<xsl:template match="Report">Subject: BCFG Nightly Statistics<xsl:text> +</xsl:text>Report Run @ <xsl:value-of select="@time" /> + +Summary: +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Good)" /> nodes are clean. +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Bad)" /> nodes are dirty. +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Modified)" /> nodes were modified in the last run. (includes both good and bad nodes) +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Stale)" /> nodes did not run this calendar day. +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/HostInfo[@pingable='N'])" /> nodes were not pingable. +<xsl:text> </xsl:text>---------------------------- +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node)" /> Total<xsl:text> + +</xsl:text> + + +<xsl:if test="count(/Report/Node/Statistics/Good) > 0"> +CLEAN: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(Statistics/Good) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> +</xsl:if> + +<xsl:if test="count(/Report/Node/Statistics/Bad) > 0"> +DIRTY: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(Statistics/Bad) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> +</xsl:if> + +<xsl:if test="count(/Report/Node/Statistics/Modified) > 0"> +MODIFIED: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(Statistics/Modified) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> + +</xsl:if> + +<xsl:if test="count(/Report/Node/Statistics/Stale) > 0"> +STALE: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(Statistics/Stale) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> + +</xsl:if> + +<xsl:if test="count(/Report/Node/HostInfo[@pingable='N']) > 0"> +UNPINGABLE: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(HostInfo[@pingable='N']) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> + +</xsl:if> + +</xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/reports/xsl-transforms/overview-stats-html.xsl b/reports/xsl-transforms/overview-stats-html.xsl index e69de29bb..69087ea82 100644 --- a/reports/xsl-transforms/overview-stats-html.xsl +++ b/reports/xsl-transforms/overview-stats-html.xsl @@ -0,0 +1,110 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns="http://www.w3.org/1999/xhtml"> + <xsl:output method="xml" media-type="text/html" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> + <xsl:template match="Report"> + <html> + <head> + <title><xsl:value-of select="@name" /></title> + + <link rel="stylesheet" type="text/css" href="web-rprt-srcs/boxypastel.css" /> + <script type="text/javascript" src="web-rprt-srcs/main.js" /> + </head> + <body bgcolor="#ffffff"> + <div class="header"> + <h1><xsl:value-of select="@name" /></h1><span class="notebox">Report Run @ <xsl:value-of select="@time" /></span> + </div> + <div class="nodebox"> + <h2>Summary:</h2> + + <p class="indented"><xsl:value-of select="count(/Report/Node)" /> Nodes were included in your report.</p> + <xsl:if test="count(/Report/Node/Statistics/Good) > 0"> + <div class="clean"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('goodsummary');" title="Click to Expand" class="commentLink"><xsl:value-of select="count(/Report/Node/Statistics/Good)" /></a> nodes are clean.<br /></span> + <div class="items" id="goodsummary"><ul class="plain"> + + <xsl:for-each select="Node"> + <xsl:sort select="HostInfo/@fqdn"/> + <xsl:if test="count(Statistics/Good) > 0"> + <tt><xsl:value-of select="HostInfo/@fqdn" /></tt><br/> + </xsl:if> + </xsl:for-each> + </ul></div> + </div> + </xsl:if> + + <xsl:if test="count(/Report/Node/Statistics/Bad) > 0"> + <div class="bad"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('badsummary');" title="Click to Expand" class="commentLink"><xsl:value-of select="count(/Report/Node/Statistics/Bad)" /></a> nodes are bad.<br /></span> + + <div class="items" id="badsummary"><ul class="plain"> + <xsl:for-each select="Node"> + <xsl:sort select="HostInfo/@fqdn"/> + <xsl:if test="count(Statistics/Bad) > 0"> + <tt><xsl:value-of select="HostInfo/@fqdn" /></tt><br/> + </xsl:if> + </xsl:for-each> + </ul></div> + </div> + </xsl:if> + + <xsl:if test="count(/Report/Node/Statistics/Modified) > 0"> + <div class="modified"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('modifiedsummary');" title="Click to Expand" class="commentLink"><xsl:value-of select="count(/Report/Node/Statistics/Modified)" /></a> nodes were modified in the last run. (includes both good and bad nodes)<br /></span> + + <div class="items" id="modifiedsummary"><ul class="plain"> + <xsl:for-each select="Node"> + <xsl:sort select="HostInfo/@fqdn"/> + <xsl:if test="count(Statistics/Modified) > 0"> + <tt><xsl:value-of select="HostInfo/@fqdn" /></tt><br/> + </xsl:if> + </xsl:for-each> + </ul></div> + </div> + </xsl:if> + + <xsl:if test="count(/Report/Node/Statistics/Stale) > 0"> + <div class="warning"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('stalesummary');" title="Click to Expand" class="commentLink"><xsl:value-of select="count(/Report/Node/Statistics/Stale)" /></a> nodes did not run this calendar day.<br /></span> + + <div class="items" id="stalesummary"><ul class="plain"> + <xsl:for-each select="Node"> + <xsl:sort select="HostInfo/@fqdn"/> + <xsl:if test="count(Statistics/Stale) > 0"> + <tt><xsl:value-of select="HostInfo/@fqdn" /></tt><br/> + </xsl:if> + </xsl:for-each> + </ul></div> + </div> + </xsl:if> + + + + <xsl:if test="count(/Report/Node/HostInfo[@pingable='N']) > 0"> + <div class="warning"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('unpingablesummary');" title="Click to Expand" class="commentLink"><xsl:value-of select="count(/Report/Node/HostInfo[@pingable='N'])" /></a> nodes were not pingable.<br /></span> + + <div class="items" id="unpingablesummary"><ul class="plain"> + <xsl:for-each select="Node"> + <xsl:sort select="HostInfo/@fqdn"/> + <xsl:if test="count(HostInfo[@pingable='N']) > 0"> + <tt><xsl:value-of select="HostInfo/@fqdn" /></tt><br/> + </xsl:if> + </xsl:for-each> + </ul></div> + </div> + </xsl:if> + + + + </div> + <br/> + <br/> + <p> + <a href="http://validator.w3.org/check?uri=referer"><img + src="http://www.w3.org/Icons/valid-xhtml10" + alt="Valid XHTML 1.0!" height="31" width="88" /></a> + </p> + </body> + </html> + </xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/reports/xsl-transforms/overview-stats-rss.xsl b/reports/xsl-transforms/overview-stats-rss.xsl index e69de29bb..d9aba6a0d 100644 --- a/reports/xsl-transforms/overview-stats-rss.xsl +++ b/reports/xsl-transforms/overview-stats-rss.xsl @@ -0,0 +1,91 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > +<xsl:include href="xsl-transform-includes/text-templates.xsl" /> +<xsl:output method="xml" indent="no" media-type="text/xml" omit-xml-declaration="yes"/> +<xsl:template match="Report"> +<item> +<pubDate><xsl:value-of select="@time" /></pubDate> +<title>BCFG Nightly Statistics</title> +<description><pre> +Report Run @ <xsl:value-of select="@time" /> + +Summary: +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Good)" /> nodes are clean. +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Bad)" /> nodes are dirty. +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Modified)" /> nodes were modified in the last run. (includes both good and bad nodes) +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/Statistics/Stale)" /> nodes did not run this calendar day. +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node/HostInfo[@pingable='N'])" /> nodes were not pingable. +<xsl:text> </xsl:text>---------------------------- +<xsl:text> </xsl:text><xsl:value-of select="count(/Report/Node)" /> Total<xsl:text> + +</xsl:text> + + +<xsl:if test="count(/Report/Node/Statistics/Good) > 0"> +CLEAN: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(Statistics/Good) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> +</xsl:if> + +<xsl:if test="count(/Report/Node/Statistics/Bad) > 0"> +DIRTY: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(Statistics/Bad) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> +</xsl:if> + +<xsl:if test="count(/Report/Node/Statistics/Modified) > 0"> +MODIFIED: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(Statistics/Modified) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> + +</xsl:if> + +<xsl:if test="count(/Report/Node/Statistics/Stale) > 0"> +STALE: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(Statistics/Stale) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> + +</xsl:if> + +<xsl:if test="count(/Report/Node/HostInfo[@pingable='N']) > 0"> +UNPINGABLE: +<xsl:for-each select="Node"> +<xsl:sort select="HostInfo/@fqdn"/> +<xsl:if test="count(HostInfo[@pingable='N']) > 0"> +<xsl:text> </xsl:text><xsl:value-of select="HostInfo/@fqdn" /><xsl:text> +</xsl:text> +</xsl:if> +</xsl:for-each><xsl:text> +</xsl:text> + +</xsl:if> + +</pre></description> +<link>http://www-unix.mcs.anl.gov/cobalt/bcfg2/index.html</link> +</item> +</xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/reports/xsl-transforms/xsl-transform-includes/html-templates.xsl b/reports/xsl-transforms/xsl-transform-includes/html-templates.xsl index e69de29bb..c0defab29 100644 --- a/reports/xsl-transforms/xsl-transform-includes/html-templates.xsl +++ b/reports/xsl-transforms/xsl-transform-includes/html-templates.xsl @@ -0,0 +1,104 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml"> + <xsl:template match="Node"> + <div class="nodebox"> + <span class="notebox">Time Ran: <xsl:value-of select="Statistics/@time" /></span> + <h2>Node: <span class="nodename"><xsl:value-of select="HostInfo/@fqdn" /></span></h2> + <xsl:apply-templates select="Statistics" /> + </div> + </xsl:template> + + <xsl:template match="Statistics"> + + <xsl:apply-templates select="Stale" /> + <xsl:apply-templates select="Good" /> + <xsl:apply-templates select="Bad" /> + <xsl:apply-templates select="Modified" /> + </xsl:template> + + + <xsl:template match="Good"> + <div class="clean"> + <span class="nodelisttitle">Node is clean; Everything has been satisfactorily configured.</span> + </div> + </xsl:template> + + <xsl:template match="Stale"> + <div class="warning"> + <span class="nodelisttitle">This node did not run on today's calendar date-- it may be out of date.</span> + </div> + </xsl:template> + + <xsl:template match="Bad"> + <div class="bad"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('{generate-id(.)}');" title="Click to expand" class="commentLink"><xsl:value-of select="count(./*)" /></a> items did not verify and are considered Dirty.<br /></span> + + <div class="items" id="{generate-id(.)}"><ul class="plain"> + <xsl:apply-templates select="ConfigFile"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Directory"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Package"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Service"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="SymLink"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + </ul></div> + </div> + </xsl:template> + + <xsl:template match="Modified"> + <div class="modified"> + <span class="nodelisttitle"><a href="javascript:toggleLayer('{generate-id(.)}');" title="Click to Expand" class="commentLink"><xsl:value-of select="count(./*)" /></a> items were modified in the last run.<br /></span> + + <div class="items" id="{generate-id(.)}"><ul class="plain"> + <xsl:apply-templates select="ConfigFile"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Directory"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Package"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Service"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="SymLink"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + </ul></div> + </div> + </xsl:template> + + <xsl:template match="ConfigFile"> + <li><b>Config File: </b> + <tt><xsl:value-of select="@name"/></tt></li> + </xsl:template> + + <xsl:template match="Package"> + <li><b>Package: </b> + <tt><xsl:value-of select="@name"/></tt></li> + </xsl:template> + + <xsl:template match="Directory"> + <li><b>Directory: </b> + <tt><xsl:value-of select="@name"/></tt></li> + </xsl:template> + + <xsl:template match="Service"> + <li><b>Service: </b> + <tt><xsl:value-of select="@name"/></tt></li> + </xsl:template> + + <xsl:template match="SymLink"> + <li><b>SymLink: </b> + <tt><xsl:value-of select="@name"/></tt></li> + </xsl:template> +</xsl:stylesheet>
\ No newline at end of file diff --git a/reports/xsl-transforms/xsl-transform-includes/text-templates.xsl b/reports/xsl-transforms/xsl-transform-includes/text-templates.xsl index e69de29bb..c186b1b79 100644 --- a/reports/xsl-transforms/xsl-transform-includes/text-templates.xsl +++ b/reports/xsl-transforms/xsl-transform-includes/text-templates.xsl @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml"> +<xsl:template match="Node"> +<xsl:text> + + </xsl:text>Node:<xsl:value-of select="HostInfo/@fqdn" /><xsl:text> + </xsl:text>Time Ran: <xsl:value-of select="Statistics/@time" />. +<xsl:apply-templates select="Statistics" /> +</xsl:template> + +<xsl:template match="Statistics"> + <xsl:apply-templates select="Stale" /> + <xsl:apply-templates select="Good" /> + <xsl:apply-templates select="Bad" /> + <xsl:apply-templates select="Modified" /> +</xsl:template> +<xsl:template match="Good"> +<xsl:text> </xsl:text>Node is clean; Everything has been satisfactorily configured. +</xsl:template> +<xsl:template match="Stale"> +<xsl:text> </xsl:text>This node did not run today-- it may be out of date. +</xsl:template> +<xsl:template match="Bad"> +<xsl:text> </xsl:text><xsl:value-of select="count(./*)" /> items did not verify and are considered Dirty: + <xsl:apply-templates select="ConfigFile"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Directory"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Package"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Service"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="SymLink"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + </xsl:template> + +<xsl:template match="Modified"> +<xsl:text> </xsl:text><xsl:value-of select="count(./*)" /> items were modified in the last run. + <xsl:apply-templates select="ConfigFile"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Directory"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Package"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="Service"> + <xsl:sort select="@name"/> + </xsl:apply-templates> + <xsl:apply-templates select="SymLink"> + <xsl:sort select="@name"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="ConfigFile"> +<xsl:text> + </xsl:text>Config File: <xsl:value-of select="@name"/> +</xsl:template> + +<xsl:template match="Package"> +<xsl:text> + </xsl:text>Package: <xsl:value-of select="@name"/> +</xsl:template> + +<xsl:template match="Directory"> +<xsl:text> + </xsl:text>Directory: <xsl:value-of select="@name"/> +</xsl:template> + +<xsl:template match="Service"> +<xsl:text> + </xsl:text>Service: <xsl:value-of select="@name"/> +</xsl:template> + +<xsl:template match="SymLink"> +<xsl:text> + </xsl:text>SymLink: <xsl:value-of select="@name"/> +</xsl:template> +</xsl:stylesheet>
\ No newline at end of file |