$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; 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"]; } $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 ); 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 "{$cpuavg}"; echo ""; } echo ""; ?>