--- misc/xenconsole/ajaxdata.php 2012/12/10 15:40:55 1901
+++ misc/xenconsole/ajaxdata.php 2013/07/19 12:11:36 2022
@@ -23,11 +23,44 @@
}
}
+function get_network_string($networks) {
+ global $hideipv6;
+
+ $ret = "";
+ foreach($networks as $net) {
+ if ($hideipv6 == true) {
+ if ( strpos($net, ":") !== false)
+ continue;
+ }
+
+ if ($ret != "")
+ $ret .= ",";
+
+ $ret .= $net;
+ }
+ return $ret;
+}
+
include('xenapi.php');
/* Establish session with Xenserver */
$xenserver = new XenApi($url, $login, $password);
+//Opbyg cache arrays
+$consolemap = array();
+$consoles = $xenserver->console__get_all_records();
+foreach($consoles as $key => $val) {
+ $consolemap[$key] = $val;
+}
+
+$guestmetricmap = array();
+$guestmetrics = $xenserver->VM_guest_metrics__get_all_records();
+foreach($guestmetrics as $key => $val) {
+ $guestmetricmap[$key] = $val;
+}
+
+//find data
+
$hosts_array = $xenserver->host__get_all();
$host = $xenserver->host__get_record($hosts_array[0]);
$host_metrics = $xenserver->host_metrics__get_record($host["metrics"]);
@@ -77,24 +110,26 @@
if ( $vm["power_state"] == "Running" ) {
if ($vm["guest_metrics"] != "OpaqueRef:NULL") {//guest tools installed
- $guest_metrics = $xenserver->VM_guest_metrics__get_record( $vm["guest_metrics"] );
- $network = implode( ",", $guest_metrics["networks"]) ;
+ //$guest_metrics = $xenserver->VM_guest_metrics__get_record( $vm["guest_metrics"] );
+ $guest_metrics = $guestmetricmap[ $vm["guest_metrics"] ];
+ $network = get_network_string($guest_metrics["networks"]) ;
$tmpos = explode('|', $guest_metrics["os_version"]["name"]);
$os = $tmpos[0];
$guestversion = $guest_metrics["PV_drivers_version"]["major"] . "." . $guest_metrics["PV_drivers_version"]["minor"] . "." . $guest_metrics["PV_drivers_version"]["micro"];
$maxmem = round($xenserver->VM__query_data_source($vmref, "memory") / (1024*1024) );
$free = round( $xenserver->VM__query_data_source($vmref, "memory_internal_free") / 1024 );
+ $curmem = $maxmem - $free;
}
$cpusum = 0.0;
for ($i=0; $i<$cpus; $i++) {
$cpusum += $xenserver->VM__query_data_source($vmref, "cpu" . $i);
}
$cpuavg = round ( ($cpusum/$cpus) * 100);
- $curmem = $maxmem - $free;
foreach($vm["consoles"] as $conref) {
- $con = $xenserver->console__get_record( $conref );
+ //$con = $xenserver->console__get_record( $conref );
+ $con = $consolemap[$conref];
if ($con["protocol"] == "rfb") {
$url = urlencode( $con["location"] );
@@ -102,7 +137,9 @@
}
}
- }
+ } else {
+ $maxmem = $vm["memory_static_max"] / (1024*1024);
+ }
@@ -117,6 +154,7 @@
echo "{$cpuavg}";
echo "{$curmem}";
echo "{$maxmem}";
+ echo "{$cpus}";
echo "";
}