<?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_status.php_v1</id>
	<title>VI-DB status.php v1 - 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_status.php_v1"/>
	<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=VI-DB_status.php_v1&amp;action=history"/>
	<updated>2026-04-19T05:23:19Z</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_status.php_v1&amp;diff=1222&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_status.php_v1&amp;diff=1222&amp;oldid=prev"/>
		<updated>2011-03-14T10:06:56Z</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;
&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;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;vi-status&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;#039;Pragma&amp;#039; content=&amp;#039;no-cache&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Refresh&amp;quot; content=&amp;quot;150&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
?&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;
// 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;
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;
&lt;br /&gt;
print &amp;quot;&amp;lt;h1&amp;gt;Virtual Infrastructure Status Summary&amp;lt;/h1&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ----------------- Layout table --------------------------------&lt;br /&gt;
print &amp;quot;&amp;lt;table align=&amp;#039;center&amp;#039; cellspacing=10&amp;gt;&amp;lt;tr&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ----------------- vCentre table -------------------------------&lt;br /&gt;
&lt;br /&gt;
$vcs = mysql_query(&amp;quot;SELECT vcid, name, site, last_esx_check FROM vc ORDER BY site;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
if (mysql_num_rows($vcs) == 0) {&lt;br /&gt;
	die (&amp;quot;vCentre info not found....!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
$vcsite = &amp;quot;&amp;quot;;&lt;br /&gt;
while ($vc = mysql_fetch_assoc($vcs)) {&lt;br /&gt;
	//Layout table handling&lt;br /&gt;
	if ($vcsite &amp;lt;&amp;gt; $vc[&amp;#039;site&amp;#039;]) {&lt;br /&gt;
		print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;#039;top&amp;#039;&amp;gt;&amp;quot;;&lt;br /&gt;
		$vcsite = $vc[&amp;#039;site&amp;#039;];&lt;br /&gt;
	} else {&lt;br /&gt;
		print &amp;quot;&amp;lt;td valign=&amp;#039;top&amp;#039;&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Virtual Centre&lt;br /&gt;
	print &amp;quot;&amp;lt;table class=&amp;#039;BasicTable&amp;#039; align=&amp;#039;center&amp;#039;&amp;gt;\n&amp;lt;tr&amp;gt;&amp;lt;th width=35&amp;gt;&amp;quot;.$vc[&amp;#039;site&amp;#039;].&amp;quot;&amp;lt;th colspan=3&amp;gt;&amp;quot;. strtoupper($vc[&amp;#039;name&amp;#039;]);&lt;br /&gt;
	$clusters = mysql_query(&amp;quot;SELECT clid, name FROM cluster WHERE vcid=&amp;quot;.$vc[&amp;#039;vcid&amp;#039;].&amp;quot;;&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Cluster&lt;br /&gt;
	while ($cluster = mysql_fetch_assoc($clusters)) {&lt;br /&gt;
		$query = &amp;quot;SELECT COUNT(*) AS num_esx, SUM(cpu_pc) AS sum_cpu, SUM(mem_pc) AS sum_mem FROM esx JOIN esx_state USING (esxid) WHERE clid=&amp;quot;.$cluster[&amp;#039;clid&amp;#039;].&amp;quot; AND exist=1 AND esx_state.state=&amp;#039;Connected&amp;#039;;&amp;quot;;&lt;br /&gt;
		$capacity = mysql_fetch_assoc(mysql_query($query));&lt;br /&gt;
		$spare_esx_cpu = floor( ($capacity[&amp;#039;num_esx&amp;#039;] * $cpu_pc_alert - $capacity[&amp;#039;sum_cpu&amp;#039;]) / $cpu_pc_alert);&lt;br /&gt;
		$spare_esx_mem = floor( ($capacity[&amp;#039;num_esx&amp;#039;] * $mem_pc_alert - $capacity[&amp;#039;sum_mem&amp;#039;]) / $mem_pc_alert);&lt;br /&gt;
		if ($spare_esx_cpu &amp;gt; $spare_esx_mem) {&lt;br /&gt;
			$n = $spare_esx_mem;&lt;br /&gt;
		} else {&lt;br /&gt;
			$n = $spare_esx_cpu;&lt;br /&gt;
		}&lt;br /&gt;
		print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td colspan=2 width=225&amp;gt;&amp;lt;b&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;quot;.$cluster[&amp;#039;name&amp;#039;].&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
		if ($n &amp;gt;= 2) {&lt;br /&gt;
			print &amp;quot;&amp;lt;td colspan=2&amp;gt;&amp;lt;b&amp;gt;n + &amp;quot;. $n.&amp;quot;&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
		} elseif ($n == 1) {&lt;br /&gt;
			print &amp;quot;&amp;lt;td colspan=2&amp;gt;&amp;lt;span class=&amp;#039;status_warn&amp;#039;&amp;gt;&amp;lt;b&amp;gt;n + &amp;quot;. $n.&amp;quot;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
		} else {&lt;br /&gt;
			print &amp;quot;&amp;lt;td colspan=2&amp;gt;&amp;lt;span class=&amp;#039;status_alert&amp;#039;&amp;gt;&amp;lt;b&amp;gt;n + &amp;quot;. $n.&amp;quot;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		$esxs = mysql_query(&amp;quot;SELECT name, esx_state.state, esx_state.status, cpu_pc, mem_pc FROM esx JOIN esx_state USING (esxid) WHERE clid=&amp;quot;.$cluster[&amp;#039;clid&amp;#039;].&amp;quot; AND exist=1 ORDER BY name;&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		while ($esx = mysql_fetch_assoc($esxs)) {&lt;br /&gt;
			if ($esx[&amp;#039;state&amp;#039;] == &amp;quot;Connected&amp;quot;) {&lt;br /&gt;
				print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Live&amp;quot;;&lt;br /&gt;
			} elseif ($esx[&amp;#039;state&amp;#039;] == &amp;quot;NotResponding&amp;quot;) {&lt;br /&gt;
				print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;#039;alert&amp;#039;&amp;gt;Down&amp;quot;;&lt;br /&gt;
			} elseif ($esx[&amp;#039;state&amp;#039;] == &amp;quot;Maintenance&amp;quot;) {&lt;br /&gt;
				print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;#039;warn&amp;#039;&amp;gt;Maint&amp;quot;;&lt;br /&gt;
			} elseif ($esx[&amp;#039;state&amp;#039;] == &amp;quot;Disconnected&amp;quot;) {&lt;br /&gt;
				print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td class=&amp;#039;alert&amp;#039;&amp;gt;discon.&amp;quot;;&lt;br /&gt;
			} else {&lt;br /&gt;
				print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;UNEX&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			print &amp;quot;&amp;lt;td&amp;gt;&amp;quot;.$esx[&amp;#039;name&amp;#039;];&lt;br /&gt;
			if ($esx[&amp;#039;status&amp;#039;] == &amp;quot;yellow&amp;quot;) {&lt;br /&gt;
				print &amp;quot; &amp;lt;span class=&amp;#039;status_warn&amp;#039;&amp;gt; has warning&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
			} elseif ($esx[&amp;#039;status&amp;#039;] == &amp;quot;red&amp;quot;) {&lt;br /&gt;
				print &amp;quot; &amp;lt;span class=&amp;#039;status_alert&amp;#039;&amp;gt; has alert&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			bar_graph (&amp;quot;CPU&amp;quot;, $esx[&amp;#039;cpu_pc&amp;#039;], $cpu_pc_warn, $cpu_pc_alert);&lt;br /&gt;
			bar_graph (&amp;quot;Memory&amp;quot;, $esx[&amp;#039;mem_pc&amp;#039;], $mem_pc_warn, $mem_pc_alert);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (is_null($vc[&amp;#039;last_esx_check&amp;#039;]) or (strtotime($vc[&amp;#039;last_esx_check&amp;#039;]) &amp;lt; (time() - 900))) {&lt;br /&gt;
		print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td colspan=4 class=&amp;#039;time_warn&amp;#039;&amp;gt;Updated: &amp;quot; .$vc[&amp;#039;last_esx_check&amp;#039;].&amp;quot; hrs&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td colspan=4&amp;gt;&amp;lt;span class=&amp;#039;time_good&amp;#039;&amp;gt;Updated: &amp;quot; .$vc[&amp;#039;last_esx_check&amp;#039;].&amp;quot; hrs&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	print &amp;quot;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ----------------- End of layout table ------------------------------&lt;br /&gt;
print &amp;quot;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ------------------- Layout table end ------------------------------&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;br&amp;gt;&amp;lt;a href=&amp;#039;index.php&amp;#039;&amp;gt;VM Search page&amp;lt;/a&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&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ------------------- End of HTML ---------------------------------&lt;br /&gt;
print &amp;quot;&amp;lt;/body&amp;gt;&amp;lt;html&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// ================ FUNCTIONS ============================&lt;br /&gt;
&lt;br /&gt;
function search_char ($text) {&lt;br /&gt;
	&lt;br /&gt;
	return (str_replace(array(&amp;quot;*&amp;quot;, &amp;quot;?&amp;quot;), array(&amp;quot;%&amp;quot;, &amp;quot;_&amp;quot;), trim($text)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function bar_graph ($name, $data_percent, $warn_threshold, $alert_threshold) {&lt;br /&gt;
	print &amp;quot;&amp;lt;td class=&amp;#039;bar_small&amp;#039; title=&amp;#039;&amp;quot;.$name.&amp;quot;&amp;#039;&amp;gt;&amp;lt;div style=&amp;#039;width: &amp;quot;.$data_percent.&amp;quot;%&amp;#039; &amp;quot;;&lt;br /&gt;
	if ($data_percent &amp;gt;= $alert_threshold) {&lt;br /&gt;
		print &amp;quot;class=&amp;#039;bar_alert&amp;#039;&amp;quot;;&lt;br /&gt;
	} elseif ($data_percent &amp;gt;= $warn_threshold) {&lt;br /&gt;
		print &amp;quot;class=&amp;#039;bar_warn&amp;#039;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		print &amp;quot;class=&amp;#039;bar_good&amp;#039;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	print &amp;quot;&amp;gt;&amp;quot;.$data_percent.&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:PHP]]&lt;/div&gt;</summary>
		<author><name>Sstrutt</name></author>
	</entry>
</feed>