summaryrefslogtreecommitdiffstats
path: root/reports/xsl-transforms
diff options
context:
space:
mode:
authorJoey Hagedorn <hagedorn@mcs.anl.gov>2005-08-01 14:57:24 +0000
committerJoey Hagedorn <hagedorn@mcs.anl.gov>2005-08-01 14:57:24 +0000
commit058635947a024e68112b7721174c7bc40248aaee (patch)
treea177d52716088c64ac004b8f0ab253df63135726 /reports/xsl-transforms
parent7fb840f2b981c8c75158b76d2dd4b0af7635d681 (diff)
downloadbcfg2-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/xsl-transforms')
-rw-r--r--reports/xsl-transforms/nodes-digest-email.xsl37
-rw-r--r--reports/xsl-transforms/nodes-digest-html.xsl75
-rw-r--r--reports/xsl-transforms/nodes-digest-rss.xsl43
-rw-r--r--reports/xsl-transforms/nodes-individual-email.xsl22
-rw-r--r--reports/xsl-transforms/overview-stats-email.xsl84
-rw-r--r--reports/xsl-transforms/overview-stats-html.xsl110
-rw-r--r--reports/xsl-transforms/overview-stats-rss.xsl91
-rw-r--r--reports/xsl-transforms/xsl-transform-includes/html-templates.xsl104
-rw-r--r--reports/xsl-transforms/xsl-transform-includes/text-templates.xsl85
9 files changed, 651 insertions, 0 deletions
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>&lt;pre&gt;
+<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>
+&lt;/pre&gt;</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>&lt;pre&gt;
+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>
+
+&lt;/pre&gt;</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