$size) { return "$size B"; } else if (pow(1024,2) > $size) { return round(($size / 1024),2) . " kB"; } else { return round(($size / pow(1024,2)), 2) . " MB"; } } function format_storage($size) { if (1024 > $size) { return "$size B"; } else if (pow(1024,2) > $size) { return round(($size / 1024),2) . " kB"; } else if (pow(1024,3) > $size) { return round(($size / pow(1024,2)), 2) . " MB"; } else if (pow(1024,4) > $size) { return round(($size / pow(1024,3)), 2). " GB"; } } include('xenapi.php'); /* Establish session with Xenserver */ $xenserver = new XenApi($url, $login, $password); $hosts_array = $xenserver->host__get_all(); $host = $xenserver->host__get_record($hosts_array[0]); $host_metrics = $xenserver->host_metrics__get_record($host["metrics"]); $mem_total = $host_metrics["memory_total"]; $mem_free = $host_metrics["memory_free"]; $cpus = $host["cpu_info"]["cpu_count"]; $cpusum = 0.0; for ($i=0; $i<$cpus; $i++) { $cpusum += $xenserver->host__query_data_source($hosts_array[0], "cpu" . $i); } $cpuavg = round ( ($cpusum/$cpus) * 100); header("Content-Type: text/xml"); echo ""; echo ""; echo "{$mem_total}"; echo "{$mem_free}"; echo "{$cpuavg}"; echo ""; $vms_array = $xenserver->VM__get_all_records(); // List all machines foreach($vms_array as $vmref => $vm) { if ($vm["is_a_template"] != 0 || $vm["is_control_domain"] != 0) { continue; } $name = $vm["name_label"]; $uuid = $vm["uuid"]; $state = $vm["power_state"] ; $cpus = $vm["VCPUs_max"]; $network = ""; $url = ""; $session = ""; $os = ""; $cpuavg = 0.0; $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"]) ; $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 ); } $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 ); if ($con["protocol"] == "rfb") { $url = urlencode( $con["location"] ); $session = $xenserver->get_id(); } } } echo ""; echo "{$name}"; echo "{$state}"; echo "{$network}"; echo "{$url}"; echo "{$session}"; echo "{$os}"; echo "{$guestversion}"; echo "{$cpuavg}"; echo "{$curmem}"; echo "{$maxmem}"; echo ""; } echo ""; ?>