<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://vwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=VI-DB_capman.php_v2.1</id>
	<title>VI-DB capman.php v2.1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://vwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=VI-DB_capman.php_v2.1"/>
	<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=VI-DB_capman.php_v2.1&amp;action=history"/>
	<updated>2026-04-19T05:24:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://vwiki.co.uk/index.php?title=VI-DB_capman.php_v2.1&amp;diff=1588&amp;oldid=prev</id>
		<title>Sstrutt: Initial creation</title>
		<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=VI-DB_capman.php_v2.1&amp;diff=1588&amp;oldid=prev"/>
		<updated>2011-12-19T10:16:41Z</updated>

		<summary type="html">&lt;p&gt;Initial creation&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html xmlns=&amp;#039;http://www.w3.org/TR/REC-html40&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Version 2.1 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;vi-db (cap-man)&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;#039;SHORTCUT ICON&amp;#039; href=&amp;#039;favicon.ico&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;#039;stylesheet&amp;#039; type=&amp;#039;text/css&amp;#039; href=&amp;#039;alpha.css&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;Author&amp;#039; content=&amp;#039;Simon Strutt&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;#039;Description&amp;#039; content=&amp;#039;VI Info&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;image/jpeg&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;#039;Pragma&amp;#039; content=&amp;#039;no-cache&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;#039;Expires&amp;#039; content=&amp;#039;900&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$time_start = microtime(true);&lt;br /&gt;
&lt;br /&gt;
//Local variables etc&lt;br /&gt;
require &amp;#039;config.php&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Thresholds (get from config.php where available)&lt;br /&gt;
$cpu_pc = $cpu_pc_alert;&lt;br /&gt;
$vcpu_pcpu = 4;				// To be derived from config.php&lt;br /&gt;
$mem_pc = $mem_pc_alert;&lt;br /&gt;
$clust_n = 1;				// To be derived from config.php&lt;br /&gt;
$disk_pc = $disk_pc_alert;&lt;br /&gt;
$disk_unit = 40;				// To be derived from config.php&lt;br /&gt;
&lt;br /&gt;
// open connection and select database&lt;br /&gt;
$connection = mysql_connect($host, $user, $pass) or die (&amp;quot;Unable to connect to database!&amp;quot;);&lt;br /&gt;
mysql_select_db($db) or die (&amp;quot;Unable to select database!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Set debug on if required&lt;br /&gt;
if (array_key_exists(&amp;#039;debug&amp;#039;, $_REQUEST) and ($_REQUEST[&amp;quot;debug&amp;quot;] == 1)) {&lt;br /&gt;
	$debug = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// show parameters and errors&lt;br /&gt;
if ($debug) {&lt;br /&gt;
	error_reporting(-1);&lt;br /&gt;
	print_r($_REQUEST);&lt;br /&gt;
	print &amp;quot;&amp;lt;br&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Update thresholds if defined...&lt;br /&gt;
if (array_key_exists(&amp;#039;thres_vcpu&amp;#039;, $_REQUEST)) {&lt;br /&gt;
	$vcpu_pcpu = $_REQUEST[&amp;#039;thres_vcpu&amp;#039;];&lt;br /&gt;
}&lt;br /&gt;
if (array_key_exists(&amp;#039;thres_mem&amp;#039;, $_REQUEST)) {&lt;br /&gt;
	$mem_pc = $_REQUEST[&amp;#039;thres_mem&amp;#039;];&lt;br /&gt;
}&lt;br /&gt;
if (array_key_exists(&amp;#039;thres_n&amp;#039;, $_REQUEST)) {&lt;br /&gt;
	$clust_n = $_REQUEST[&amp;#039;thres_n&amp;#039;];&lt;br /&gt;
}	&lt;br /&gt;
if (array_key_exists(&amp;#039;thres_disk&amp;#039;, $_REQUEST)) {&lt;br /&gt;
	$disk_pc = $_REQUEST[&amp;#039;thres_disk&amp;#039;];&lt;br /&gt;
}	&lt;br /&gt;
if (array_key_exists(&amp;#039;thres_dunit&amp;#039;, $_REQUEST)) {&lt;br /&gt;
	$disk_unit = $_REQUEST[&amp;#039;thres_dunit&amp;#039;];&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
//print &amp;quot;&amp;lt;div title=&amp;#039;body&amp;#039;&amp;gt;&amp;lt;div title=&amp;#039;disclaimer&amp;#039;&amp;gt;&amp;quot;;&lt;br /&gt;
print &amp;quot;DISCLAIMER: Please use all information gained from here with caution - I haven&amp;#039;t performed exhaustive validation and testing of any of the information that may be presented. &amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;If you&amp;#039;re making changes or decisions, please double check with the reality of what is displayed by the vCentre servers.  You retain full responsibility for your actions...!\n &amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;!--[if IE]&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;span style=&amp;#039;color:red;&amp;#039;&amp;gt;&amp;lt;b&amp;gt;Internet Explorer is not supported - the HTML form may not work properly due to a long standing IE bug, use any other browser&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;![endif]--&amp;gt;\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ------------------- Layout table cell ----------------------&lt;br /&gt;
print &amp;quot;&amp;lt;table align=&amp;#039;center&amp;#039; cellspacing=10&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;#039;top&amp;#039; colspan=2&amp;gt;\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;div title=&amp;#039;cluster overview&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;&amp;lt;h1&amp;gt;Cluster Capacity&amp;lt;/h1&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$query = &amp;quot;SELECT vc.vcid, vc.name AS vc, cluster.clid, cluster.name AS cluster, COUNT(esxid) AS esxs, SUM(cpu_core) AS cpu_core, SUM(cpu_pc) AS cpu_pc_sum, SUM(mem)/1024 AS mem, &amp;quot;;&lt;br /&gt;
$query .= &amp;quot;SUM(mem_pc) AS mem_pc_sum FROM esx JOIN esx_state USING (esxid) JOIN vc USING (vcid) JOIN cluster USING (clid) WHERE esx.exist=1 GROUP BY clid ORDER BY vc, cluster.name;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$result = mysql_query($query);&lt;br /&gt;
if (mysql_num_rows($result) == 0) {&lt;br /&gt;
	die (&amp;quot;No clusters found in db!!! Unexpected error!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;&amp;lt;table class=&amp;#039;BasicTable&amp;#039; align=&amp;#039;center&amp;#039; valign=&amp;#039;top&amp;#039;&amp;gt;&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th rowspan=2&amp;gt;vCentre&amp;lt;th rowspan=2&amp;gt;Cluster&amp;lt;th rowspan=2&amp;gt;ESXs&amp;lt;th colspan=3 class=&amp;#039;section&amp;#039;&amp;gt;CPU&amp;lt;th colspan=2&amp;gt;Memory&amp;lt;th colspan=3&amp;gt;Disk&amp;lt;th colspan=4&amp;gt;Free Capacity&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;(using redundancy)&amp;lt;/small&amp;gt;&amp;lt;th colspan=4 class=&amp;#039;black_text&amp;#039;&amp;gt;Spare Capacity&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;(retaining failover capacity)&amp;lt;/small&amp;gt;\n&amp;quot;;&lt;br /&gt;
// CPU&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Total&amp;lt;br&amp;gt;Cores&amp;lt;th&amp;gt;&amp;lt;small&amp;gt;vCPU/&amp;lt;br&amp;gt;pCPU&amp;lt;/small&amp;gt;&amp;lt;th&amp;gt;%&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;load&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
// Memory&lt;br /&gt;
print &amp;quot;&amp;lt;th&amp;gt;Total&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;GB&amp;lt;/small&amp;gt;&amp;lt;th&amp;gt;%&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;load&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
// Disk&lt;br /&gt;
print &amp;quot;&amp;lt;th&amp;gt;&amp;lt;small&amp;gt;No of&amp;lt;small&amp;gt;&amp;lt;br&amp;gt;LUNs&amp;lt;th&amp;gt;Total&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;TB&amp;lt;/small&amp;gt;&amp;lt;th&amp;gt;%&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;used&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
// Free Capacity&lt;br /&gt;
print &amp;quot;&amp;lt;th&amp;gt;CPU&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;cores&amp;lt;/small&amp;gt;&amp;lt;th&amp;gt;Mem&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;GB&amp;lt;/small&amp;gt;&amp;lt;th&amp;gt;Disk&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;GB&amp;lt;/small&amp;gt;&amp;lt;th&amp;gt;Disk&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;+VM off&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
// Spare Capacity&lt;br /&gt;
print &amp;quot;&amp;lt;th class=&amp;#039;black_text&amp;#039;&amp;gt;CPU&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;cores&amp;lt;/small&amp;gt;&amp;lt;th class=&amp;#039;black_text&amp;#039;&amp;gt;Mem&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;GB&amp;lt;/small&amp;gt;&amp;lt;th class=&amp;#039;black_text&amp;#039;&amp;gt;Disk&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;GB&amp;lt;/small&amp;gt;&amp;lt;th class=&amp;#039;black_text&amp;#039;&amp;gt;Disk&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;+VM off&amp;lt;/small&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$odd_row = true;&lt;br /&gt;
$cl_list = array();&lt;br /&gt;
while ($cluster = mysql_fetch_assoc($result)) {&lt;br /&gt;
	$cl_list[$cluster[&amp;#039;clid&amp;#039;]]=$cluster[&amp;#039;cluster&amp;#039;];&lt;br /&gt;
	$odd_row = !$odd_row;&lt;br /&gt;
	if ($odd_row) {&lt;br /&gt;
		print &amp;quot;&amp;lt;tr class=&amp;#039;odd&amp;#039;&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		print &amp;quot;&amp;lt;tr&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	$vm = mysql_fetch_assoc(mysql_query(&amp;quot;SELECT COUNT(vmid) AS vms, SUM(cpu) AS cpus, SUM(mem)/1024 AS mem FROM vm JOIN vm_ext USING (vmid) WHERE clid=&amp;quot;.$cluster[&amp;#039;clid&amp;#039;].&amp;quot; AND is_on=1 AND exist=1;&amp;quot;));&lt;br /&gt;
	$esx_core = mysql_result(mysql_query(&amp;quot;SELECT MAX(cpu_core) FROM esx WHERE clid=&amp;quot;. $cluster[&amp;#039;clid&amp;#039;] .&amp;quot;;&amp;quot;), 0);&lt;br /&gt;
	$esx_mem = mysql_result(mysql_query(&amp;quot;SELECT MAX(mem)/1024 FROM esx WHERE clid=&amp;quot;. $cluster[&amp;#039;clid&amp;#039;] .&amp;quot;;&amp;quot;), 0);&lt;br /&gt;
	$ds_space_vm_off = mysql_result(mysql_query(&amp;quot;SELECT SUM(vmdk.size)/1024 AS size FROM vm JOIN vc USING (vcid) JOIN cluster USING (clid) JOIN vmdk USING (vmid) WHERE vm.exist=1 AND is_on=0 AND clid=&amp;quot;. $cluster[&amp;#039;clid&amp;#039;] .&amp;quot;;&amp;quot;), 0);&lt;br /&gt;
	$ds = mysql_fetch_assoc(mysql_query(&amp;quot;SELECT COUNT(lun) AS luns, SUM(size)/1024 AS size, SUM(used)/1024 AS used FROM (SELECT DISTINCT lun AS lun, size AS size, used AS used FROM ds JOIN esx2ds USING (dsid) JOIN esx USING (esxid) WHERE ds.exist=1 AND esx.exist=1 AND clid=&amp;quot;.$cluster[&amp;#039;clid&amp;#039;].&amp;quot; AND ds.name NOT LIKE(&amp;#039;%Local%&amp;#039;) AND ds.name NOT LIKE(&amp;#039;%iSCSI%&amp;#039;)) AS ds;&amp;quot;));&lt;br /&gt;
	print &amp;quot;&amp;lt;td&amp;gt;&amp;lt;a href=&amp;#039;vc-detail.php?vcid=&amp;quot;.$cluster[&amp;#039;vcid&amp;#039;].&amp;quot;&amp;amp;clid=&amp;quot;.$cluster[&amp;#039;clid&amp;#039;].&amp;quot;&amp;#039;&amp;gt;&amp;quot;.$cluster[&amp;#039;vc&amp;#039;].&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;td&amp;gt;&amp;lt;a href=&amp;#039;cluster-detail.php?clid=&amp;quot;.$cluster[&amp;#039;clid&amp;#039;].&amp;quot;&amp;#039;&amp;gt;&amp;lt;b&amp;gt;&amp;quot;.$cluster[&amp;#039;cluster&amp;#039;].&amp;quot;&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;lt;a href=&amp;#039;esxs.php?clid=&amp;quot;.$cluster[&amp;#039;clid&amp;#039;].&amp;quot;&amp;#039;&amp;gt;&amp;quot;.$cluster[&amp;#039;esxs&amp;#039;].&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
	// CPU&lt;br /&gt;
	print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.$cluster[&amp;#039;cpu_core&amp;#039;].&amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.round(($vm[&amp;#039;cpus&amp;#039;]/$cluster[&amp;#039;cpu_core&amp;#039;]),1).&amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.round($cluster[&amp;#039;cpu_pc_sum&amp;#039;]/$cluster[&amp;#039;esxs&amp;#039;]);&lt;br /&gt;
	// Memory&lt;br /&gt;
	print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.number_format(round($cluster[&amp;#039;mem&amp;#039;])).&amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.round($cluster[&amp;#039;mem_pc_sum&amp;#039;]/$cluster[&amp;#039;esxs&amp;#039;]);&lt;br /&gt;
	// Disk&lt;br /&gt;
	print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.$ds[&amp;#039;luns&amp;#039;].&amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.number_format(round($ds[&amp;#039;size&amp;#039;]/1024),1).&amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.round($ds[&amp;#039;used&amp;#039;]/$ds[&amp;#039;size&amp;#039;]*100);&lt;br /&gt;
	// Free Capacity (CPU + Mem)&lt;br /&gt;
	print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.($cluster[&amp;#039;cpu_core&amp;#039;]*$vcpu_pcpu-$vm[&amp;#039;cpus&amp;#039;]).&amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.number_format(round(($cluster[&amp;#039;mem&amp;#039;]-$vm[&amp;#039;mem&amp;#039;])));&lt;br /&gt;
	// Free Capacity (Disk)&lt;br /&gt;
	print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.number_format((round($ds[&amp;#039;size&amp;#039;]-$ds[&amp;#039;used&amp;#039;]))).&amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;quot;.number_format((round($ds[&amp;#039;size&amp;#039;]-$ds[&amp;#039;used&amp;#039;]+$ds_space_vm_off)));&lt;br /&gt;
	// Spare Capacity (CPU + Mem)&lt;br /&gt;
	$cpu_spare = ($cluster[&amp;#039;cpu_core&amp;#039;]-$esx_core*$clust_n)*$vcpu_pcpu-$vm[&amp;#039;cpus&amp;#039;];&lt;br /&gt;
	if ($cpu_spare &amp;lt; 1) {&lt;br /&gt;
		print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;#039;warn&amp;#039;&amp;gt;$cpu_spare&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;lt;b&amp;gt;$cpu_spare&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	$mem_spare = ($cluster[&amp;#039;mem&amp;#039;]-$esx_mem*$clust_n)-$vm[&amp;#039;mem&amp;#039;];&lt;br /&gt;
	if ($mem_spare &amp;lt; 1) {&lt;br /&gt;
		print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;#039;warn&amp;#039;&amp;gt;&amp;quot;.number_format(round($mem_spare)).&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;lt;b&amp;gt;&amp;quot;.number_format(round($mem_spare)).&amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	//Calculate useable storage space free&lt;br /&gt;
	$luns_result = mysql_query(&amp;quot;SELECT lun, size/1024 AS size, used/1024 AS used FROM ds JOIN esx2ds USING (dsid) JOIN esx USING (esxid) WHERE ds.exist=1 AND esx.exist=1 AND clid=&amp;quot;.$cluster[&amp;#039;clid&amp;#039;].&amp;quot; AND ds.name NOT LIKE(&amp;#039;%Local%&amp;#039;) AND ds.name NOT LIKE(&amp;#039;%iSCSI%&amp;#039;) GROUP BY lun;&amp;quot;);&lt;br /&gt;
	$ds_space = 0;&lt;br /&gt;
	$title = &amp;quot;&amp;quot;;&lt;br /&gt;
	while ($ds = mysql_fetch_assoc($luns_result)) {&lt;br /&gt;
		$space = $ds[&amp;#039;size&amp;#039;]*($disk_pc/100)-$ds[&amp;#039;used&amp;#039;];&lt;br /&gt;
		$ds_space += floor($space/$disk_unit)*$disk_unit;&lt;br /&gt;
		$title .= &amp;quot;LUN &amp;quot;.$ds[&amp;#039;lun&amp;#039;].&amp;quot;: $space ($ds_space) | &amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if ($ds_space &amp;lt; 1) {&lt;br /&gt;
		print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039; title=&amp;#039;$title&amp;#039;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;#039;warn&amp;#039;&amp;gt;&amp;quot;.number_format($ds_space).&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039; title=&amp;#039;$title&amp;#039;&amp;gt;&amp;lt;b&amp;gt;&amp;quot;.number_format($ds_space).&amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if (($ds_space+$ds_space_vm_off) &amp;lt; 1) {&lt;br /&gt;
		print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span class=&amp;#039;warn&amp;#039;&amp;gt;&amp;quot;.number_format(round($ds_space+$ds_space_vm_off,-1)).&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;\n&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		print &amp;quot;&amp;lt;td class=&amp;#039;num&amp;#039;&amp;gt;&amp;lt;b&amp;gt;&amp;quot;.number_format(round($ds_space+$ds_space_vm_off,-1)).&amp;quot;&amp;lt;/b&amp;gt;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (array_key_exists(&amp;#039;req&amp;#039;, $_REQUEST) and $_REQUEST[&amp;quot;req&amp;quot;]==&amp;quot;do&amp;quot; and $_REQUEST[&amp;quot;req_clust&amp;quot;]==$cluster[&amp;#039;clid&amp;#039;]) {&lt;br /&gt;
		$cl_test = array();&lt;br /&gt;
		$cl_test[&amp;#039;vcpu&amp;#039;] = $cpu_spare;&lt;br /&gt;
		$cl_test[&amp;#039;mem&amp;#039;] = $mem_spare;&lt;br /&gt;
		$cl_test[&amp;#039;disk&amp;#039;] = $ds_space;&lt;br /&gt;
		$cl_test[&amp;#039;disk_off&amp;#039;] = $ds_space+$ds_space_vm_off;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//print &amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;;&lt;br /&gt;
// ------------------- Layout table cell ----------------------&lt;br /&gt;
print &amp;quot;\n&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;#039;top&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;div title=&amp;#039;thresh&amp;#039; style=&amp;#039;float:left;&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;&amp;lt;h2&amp;gt;Thresholds&amp;lt;/h2&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;&amp;lt;table class=&amp;#039;BasicTable&amp;#039; align=&amp;#039;left&amp;#039; valign=&amp;#039;top&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Mertic&amp;lt;th&amp;gt;Value&amp;lt;th&amp;gt;Description\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;CPU %&amp;lt;td&amp;gt;&amp;quot;.$cpu_pc.&amp;quot;&amp;lt;td&amp;gt;Maximum CPU usage for an ESX in a cluster (suggested - $cpu_pc_alert %)\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;form&amp;gt;&amp;lt;th&amp;gt;vCPU/pCPU&amp;lt;td&amp;gt;&amp;lt;input type=&amp;#039;text&amp;#039; name=&amp;#039;thres_vcpu&amp;#039; size=2 maxlength=2 style=&amp;#039;text-align: right&amp;#039; value=$vcpu_pcpu&amp;gt;&amp;lt;td&amp;gt;Maximum no of VM CPUs per ESX CPU core (suggested - 4)\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Mem %&amp;lt;td&amp;gt;&amp;lt;input type=&amp;#039;text&amp;#039; name=&amp;#039;thres_mem&amp;#039; size=2 maxlength=3 style=&amp;#039;text-align: right&amp;#039; value=$mem_pc&amp;gt;&amp;lt;td&amp;gt;Maximum memory usage for an ESX in a cluster (suggested - $mem_pc_alert %)\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;N +&amp;lt;td&amp;gt;&amp;lt;input type=&amp;#039;text&amp;#039; name=&amp;#039;thres_n&amp;#039; size=2 maxlength=1 style=&amp;#039;text-align: right&amp;#039; value=$clust_n&amp;gt;&amp;lt;td&amp;gt;Minimum ESX redundancy for a cluster (suggested - 1)\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Disk %&amp;lt;td&amp;gt;&amp;lt;input type=&amp;#039;text&amp;#039; name=&amp;#039;thres_disk&amp;#039; size=2 maxlength=3 style=&amp;#039;text-align: right&amp;#039; value=$disk_pc&amp;gt;&amp;lt;td&amp;gt;Maximum space usage for a datastore (suggested - $disk_pc_alert %)\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Disk Unit&amp;lt;td&amp;gt;&amp;lt;input type=&amp;#039;text&amp;#039; name=&amp;#039;thres_dunit&amp;#039; size=2 maxlength=3 style=&amp;#039;text-align: right&amp;#039; value=$disk_unit&amp;gt;&amp;lt;td&amp;gt;Unit size for a VM&amp;#039;s disk free space calculation (suggested - 40)\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td colspan=3 align=&amp;#039;center&amp;#039;&amp;gt;&amp;lt;button type=&amp;#039;submit&amp;#039; name=&amp;#039;thres&amp;#039; value=&amp;#039;update&amp;#039;&amp;gt;Update&amp;lt;/button&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ------------------- Layout table cell ----------------------&lt;br /&gt;
print &amp;quot;\n&amp;lt;td align=&amp;#039;left&amp;#039; valign=&amp;#039;top&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;div style=&amp;#039;width:1200px;&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;div title=&amp;#039;reqs&amp;#039; style=&amp;#039;float:right; width:600px&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;&amp;lt;h2&amp;gt;Requirements&amp;lt;/h2&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;table align=&amp;#039;left&amp;#039; valign=&amp;#039;top&amp;#039;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;table class=&amp;#039;ReqTable&amp;#039; align=&amp;#039;left&amp;#039; valign=&amp;#039;top&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;vCPUs&amp;lt;td&amp;gt;Mem (GB)&amp;lt;td&amp;gt;Disk (GB)\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;input type=&amp;#039;text&amp;#039; name=&amp;#039;req_vcpu&amp;#039; size=3 maxlength=3 style=&amp;#039;text-align: right&amp;#039;&amp;quot;;&lt;br /&gt;
if (array_key_exists(&amp;#039;req_vcpu&amp;#039;, $_REQUEST)) {&lt;br /&gt;
	print &amp;quot; value=&amp;#039;&amp;quot;.$_REQUEST[&amp;quot;req_vcpu&amp;quot;].&amp;quot;&amp;#039;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;&amp;gt;\n&amp;lt;td&amp;gt;&amp;lt;input type=&amp;#039;text&amp;#039; name=&amp;#039;req_mem&amp;#039; size=3 maxlength=4 style=&amp;#039;text-align: right&amp;#039;&amp;quot;;&lt;br /&gt;
if (array_key_exists(&amp;#039;req_mem&amp;#039;, $_REQUEST)) {&lt;br /&gt;
	print &amp;quot; value=&amp;#039;&amp;quot;.$_REQUEST[&amp;quot;req_mem&amp;quot;].&amp;quot;&amp;#039;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;&amp;gt;\n&amp;lt;td&amp;gt;&amp;lt;input type=&amp;#039;text&amp;#039; name=&amp;#039;req_disk&amp;#039; size=3 maxlength=4 style=&amp;#039;text-align: right&amp;#039;&amp;quot;;&lt;br /&gt;
if (array_key_exists(&amp;#039;req_disk&amp;#039;, $_REQUEST)) {&lt;br /&gt;
	print &amp;quot; value=&amp;#039;&amp;quot;.$_REQUEST[&amp;quot;req_disk&amp;quot;].&amp;quot;&amp;#039;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;&amp;gt;\n&amp;lt;tr&amp;gt;&amp;lt;td colspan=3&amp;gt;Destination Cluster&amp;lt;tr&amp;gt;&amp;lt;td colspan=3&amp;gt;&amp;lt;select name=&amp;#039;req_clust&amp;#039;&amp;gt;&amp;quot;;&lt;br /&gt;
foreach ($cl_list as $clid =&amp;gt; $cl_name) {&lt;br /&gt;
	print &amp;quot;&amp;lt;option value=$clid&amp;quot;;&lt;br /&gt;
	if (array_key_exists(&amp;#039;req_clust&amp;#039;, $_REQUEST) and $_REQUEST[&amp;quot;req_clust&amp;quot;]==$clid) {&lt;br /&gt;
		print &amp;quot; selected=&amp;#039;selected&amp;#039;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	print &amp;quot;&amp;gt;$cl_name&amp;lt;/option&amp;gt;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;&amp;lt;/select&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td colspan=3 align=&amp;#039;center&amp;#039;&amp;gt;&amp;lt;button type=&amp;#039;submit&amp;#039; name=&amp;#039;req&amp;#039; value=&amp;#039;do&amp;#039;&amp;gt;Calculate&amp;lt;/button&amp;gt;&amp;lt;/form&amp;gt;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if (array_key_exists(&amp;#039;req&amp;#039;, $_REQUEST) and $_REQUEST[&amp;quot;req&amp;quot;]==&amp;quot;do&amp;quot;) {&lt;br /&gt;
	print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot;;&lt;br /&gt;
	// Sanity check params&lt;br /&gt;
	if (!is_numeric($_REQUEST[&amp;quot;req_vcpu&amp;quot;])) {&lt;br /&gt;
		print &amp;quot;&amp;lt;p&amp;gt;&amp;lt;span class=&amp;#039;req_alert&amp;#039;&amp;gt;vCPUs requirement is not an integer?&amp;lt;/p&amp;gt;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
	} elseif (!is_numeric($_REQUEST[&amp;quot;req_mem&amp;quot;])) {&lt;br /&gt;
		print &amp;quot;&amp;lt;p&amp;gt;&amp;lt;span class=&amp;#039;req_alert&amp;#039;&amp;gt;Memory requirement is not an integer?&amp;lt;/p&amp;gt;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
	} elseif (!is_numeric($_REQUEST[&amp;quot;req_disk&amp;quot;])) {&lt;br /&gt;
		print &amp;quot;&amp;lt;&amp;lt;p&amp;gt;&amp;lt;span class=&amp;#039;req_alert&amp;#039;&amp;gt;Disk Space requirement is not an integer?&amp;lt;/p&amp;gt;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
	&lt;br /&gt;
		// Sanity check passed - do the biz...&lt;br /&gt;
		if ($_REQUEST[&amp;quot;req_vcpu&amp;quot;] &amp;gt; $cl_test[&amp;#039;vcpu&amp;#039;] or $_REQUEST[&amp;quot;req_mem&amp;quot;] &amp;gt; $cl_test[&amp;#039;mem&amp;#039;]) {&lt;br /&gt;
			// Don&amp;#039;t fit&lt;br /&gt;
			print &amp;quot;&amp;lt;p&amp;gt;&amp;lt;span class=&amp;#039;req_alert&amp;#039;&amp;gt;&amp;amp;nbsp; Insufficient CPU/Memory capacity !! &amp;amp;nbsp;&amp;lt;/p&amp;gt;\n&amp;quot;;&lt;br /&gt;
		} elseif ($_REQUEST[&amp;quot;req_disk&amp;quot;] &amp;gt; $cl_test[&amp;#039;disk&amp;#039;]) {&lt;br /&gt;
			if ($_REQUEST[&amp;quot;req_disk&amp;quot;] &amp;lt; $cl_test[&amp;#039;disk_off&amp;#039;]) {&lt;br /&gt;
				// Only fits if powered off VM;s deleted&lt;br /&gt;
				print &amp;quot;&amp;lt;p&amp;gt;&amp;lt;span class=&amp;#039;req_warn&amp;#039;&amp;gt;&amp;amp;nbsp; Disk capacity short - powered off VM&amp;#039;s need to be deleted ! &amp;amp;nbsp;&amp;lt;/p&amp;gt;\n&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				// Just don&amp;#039;t fit&lt;br /&gt;
				print &amp;quot;&amp;lt;p&amp;gt;&amp;lt;span class=&amp;#039;req_alert&amp;#039;&amp;gt;&amp;amp;nbsp; No disk capacity !! &amp;amp;nbsp;&amp;lt;/p&amp;gt;\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			// Fits&lt;br /&gt;
			print &amp;quot;&amp;lt;p&amp;gt;&amp;lt;span class=&amp;#039;req_good&amp;#039;&amp;gt;&amp;amp;nbsp; Sufficient capacity! &amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;\n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		print &amp;quot;&amp;lt;p&amp;gt;Residual capacity post-deployment...&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;\n&amp;quot;;&lt;br /&gt;
		print &amp;quot;&amp;lt;li&amp;gt;&amp;quot;.($cl_test[&amp;#039;vcpu&amp;#039;]-$_REQUEST[&amp;#039;req_vcpu&amp;#039;]).&amp;quot; vCPUs&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
		print &amp;quot;&amp;lt;li&amp;gt;&amp;quot;.(number_format(round($cl_test[&amp;#039;mem&amp;#039;]-$_REQUEST[&amp;#039;req_mem&amp;#039;]))).&amp;quot; GB Memory&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
		print &amp;quot;&amp;lt;li&amp;gt;&amp;quot;.($cl_test[&amp;#039;disk&amp;#039;]-$_REQUEST[&amp;#039;req_disk&amp;#039;]).&amp;quot; GB Disk Space (&amp;quot;.number_format(round(($cl_test[&amp;#039;disk_off&amp;#039;]-$_REQUEST[&amp;#039;req_disk&amp;#039;]),-1)).&amp;quot; GB if &amp;lt;a href=&amp;#039;ds-waste.php?clid=&amp;quot;.$_REQUEST[&amp;#039;req_clust&amp;#039;].&amp;quot;&amp;#039;&amp;gt;powered off VM&amp;#039;s&amp;lt;/a&amp;gt; deleted)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
} else {&lt;br /&gt;
	print &amp;quot;&amp;lt;/table&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//print &amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ------------------- Layout table cell ----------------------&lt;br /&gt;
print &amp;quot;\n&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;#039;top&amp;#039; colspan=2&amp;gt;\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;div id=&amp;#039;centered&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;div title=&amp;#039;notes&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;&amp;lt;h2&amp;gt;Notes&amp;lt;/h2&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Where clusters have heterogeneous ESX&amp;#039;s, the worst case is assumed for &amp;lt;i&amp;gt;N+&amp;lt;/i&amp;gt; calculations.&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;li&amp;gt;Negative values are shown where clusters do not have a spare ESX’s worth of capacity, or storage with less than $disk_pc% free space.&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;li&amp;gt;Spare disk is calculated in $disk_unit GB blocks so that small, unusable bits of space don’t contribute to the end disk capacity value.&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;li&amp;gt;iSCSI and local disk datastores are excluded.&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;li&amp;gt;No account is made for datastores that are attached to multiple clusters - the capacity will appear in all clusters!&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;li&amp;gt;For a list of powered off VM&amp;#039;s that could be deleted see &amp;lt;a href=&amp;#039;ds-waste.php&amp;#039;&amp;gt;here&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;/ul&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//print &amp;quot;&amp;lt;/div&amp;gt;\n&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
// ------------------- Layout table cell ----------------------&lt;br /&gt;
print &amp;quot;\n&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ------------------- Footer---------------------------------&lt;br /&gt;
//print &amp;quot;&amp;lt;div title=&amp;#039;footer&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;&amp;lt;br&amp;gt;&amp;lt;table class=&amp;#039;NavTable&amp;#039; align=&amp;#039;center&amp;#039; valign=&amp;#039;top&amp;#039;&amp;gt;&amp;lt;th&amp;gt;Main Pages:&amp;lt;td&amp;gt;&amp;lt;a href=&amp;#039;index.php&amp;#039;&amp;gt;Search page&amp;lt;/a&amp;gt;&amp;lt;td&amp;gt;&amp;lt;a href=&amp;#039;status.php&amp;#039;&amp;gt;Status page&amp;lt;/a&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
$time = round((microtime(true) - $time_start)*1000);&lt;br /&gt;
print &amp;quot;Page took $time msecs to execute on server\n&amp;quot;;&lt;br /&gt;
//print &amp;quot;&amp;lt;/div&amp;gt;\n&amp;lt;/div&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;&amp;lt;/body&amp;gt;&amp;lt;html&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:PHP Script]]&lt;/div&gt;</summary>
		<author><name>Sstrutt</name></author>
	</entry>
</feed>