--- misc/xenconsole/ajaxdata.php 2012/12/02 16:30:24 1892 +++ misc/xenconsole/ajaxdata.php 2013/07/23 21:03:32 2030 @@ -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"]); @@ -71,29 +104,45 @@ $session = ""; $os = ""; $cpuavg = 0.0; - if ( $vm["power_state"] == "Running" ) { + $curmem = 0; + $maxmem = 0; + $guestversion = ""; + + 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"]) ; - $os = $guest_metrics["os_version"]["name"]; + //$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; + } else { + $maxmem = $vm["memory_static_max"] / (1024*1024); } + $cpusum = 0.0; for ($i=0; $i<$cpus; $i++) { $cpusum += $xenserver->VM__query_data_source($vmref, "cpu" . $i); } $cpuavg = round ( ($cpusum/$cpus) * 100); - foreach($vm["consoles"] as $conref) { - $con = $xenserver->console__get_record( $conref ); + //$con = $xenserver->console__get_record( $conref ); + $con = $consolemap[$conref]; if ($con["protocol"] == "rfb") { + $session = $xenserver->get_id(); $url = urlencode( $con["location"] ); - $session = $xenserver->get_id(); } } - } + } else { + $maxmem = $vm["memory_static_max"] / (1024*1024); + } @@ -104,7 +153,11 @@ echo "{$url}"; echo "{$session}"; echo "{$os}"; + echo "{$guestversion}"; echo "{$cpuavg}"; + echo "{$curmem}"; + echo "{$maxmem}"; + echo "{$cpus}"; echo ""; }