/[projects]/misc/xenconsole/ajaxdata.php
ViewVC logotype

Contents of /misc/xenconsole/ajaxdata.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2101 - (show annotations) (download)
Thu Jan 30 10:16:09 2014 UTC (10 years, 3 months ago) by torben
File size: 4420 byte(s)
fix bug regarding current_operation name
1 <?php
2 include("config.php");
3
4 function format_memory($size) {
5 if (1024 > $size) {
6 return "$size B";
7 } else if (pow(1024,2) > $size) {
8 return round(($size / 1024),2) . " kB";
9 } else {
10 return round(($size / pow(1024,2)), 2) . " MB";
11 }
12 }
13
14 function format_storage($size) {
15 if (1024 > $size) {
16 return "$size B";
17 } else if (pow(1024,2) > $size) {
18 return round(($size / 1024),2) . " kB";
19 } else if (pow(1024,3) > $size) {
20 return round(($size / pow(1024,2)), 2) . " MB";
21 } else if (pow(1024,4) > $size) {
22 return round(($size / pow(1024,3)), 2). " GB";
23 }
24 }
25
26 function get_network_string($networks) {
27 global $hideipv6;
28
29 $ret = "";
30 foreach($networks as $net) {
31 if ($hideipv6 == true) {
32 if ( strpos($net, ":") !== false)
33 continue;
34 }
35
36 if ($ret != "")
37 $ret .= ",";
38
39 $ret .= $net;
40 }
41 return $ret;
42 }
43
44 include('xenapi.php');
45
46 /* Establish session with Xenserver */
47 $xenserver = new XenApi($url, $login, $password);
48
49 //Opbyg cache arrays
50 $consolemap = array();
51 $consoles = $xenserver->console__get_all_records();
52 foreach($consoles as $key => $val) {
53 $consolemap[$key] = $val;
54 }
55
56 $guestmetricmap = array();
57 $guestmetrics = $xenserver->VM_guest_metrics__get_all_records();
58 foreach($guestmetrics as $key => $val) {
59 $guestmetricmap[$key] = $val;
60 }
61
62 //find data
63
64 $hosts_array = $xenserver->host__get_all();
65 $host = $xenserver->host__get_record($hosts_array[0]);
66 $host_metrics = $xenserver->host_metrics__get_record($host["metrics"]);
67
68 $mem_total = $host_metrics["memory_total"];
69 $mem_free = $host_metrics["memory_free"];
70
71 $cpus = $host["cpu_info"]["cpu_count"];
72 $cpusum = 0.0;
73 for ($i=0; $i<$cpus; $i++) {
74 $cpusum += $xenserver->host__query_data_source($hosts_array[0], "cpu" . $i);
75 }
76 $cpuavg = round ( ($cpusum/$cpus) * 100);
77
78 header("Content-Type: text/xml");
79 echo "<xen>";
80 echo "<host>";
81 echo "<memtotal>{$mem_total}</memtotal>";
82 echo "<memfree>{$mem_free}</memfree>";
83 echo "<cpuavg>{$cpuavg}</cpuavg>";
84 echo "</host>";
85
86
87
88 $vms_array = $xenserver->VM__get_all_records();
89 // List all machines
90 foreach($vms_array as $vmref => $vm) {
91 if ($vm["is_a_template"] != 0 || $vm["is_control_domain"] != 0) {
92 continue;
93 }
94
95
96 $name = $vm["name_label"];
97 $uuid = $vm["uuid"];
98 $state = $vm["power_state"] ;
99 $cpus = $vm["VCPUs_max"];
100
101 $operations = $vm["current_operations"];
102 if (sizeof($operations) > 0) {
103 $state = reset($operations);
104 }
105
106
107 $network = "";
108 $url = "";
109 $session = "";
110 $os = "";
111 $cpuavg = 0.0;
112 $curmem = 0;
113 $maxmem = 0;
114 $guestversion = "";
115
116
117 if ( $vm["power_state"] == "Running" ) {
118 if ($vm["guest_metrics"] != "OpaqueRef:NULL") {//guest tools installed
119 //$guest_metrics = $xenserver->VM_guest_metrics__get_record( $vm["guest_metrics"] );
120 $guest_metrics = $guestmetricmap[ $vm["guest_metrics"] ];
121 $network = get_network_string($guest_metrics["networks"]) ;
122 $tmpos = explode('|', $guest_metrics["os_version"]["name"]);
123 $os = $tmpos[0];
124 $guestversion = $guest_metrics["PV_drivers_version"]["major"] . "." . $guest_metrics["PV_drivers_version"]["minor"] . "." . $guest_metrics["PV_drivers_version"]["micro"];
125
126 $maxmem = round($xenserver->VM__query_data_source($vmref, "memory") / (1024*1024) );
127 $free = round( $xenserver->VM__query_data_source($vmref, "memory_internal_free") / 1024 );
128 $curmem = $maxmem - $free;
129 } else {
130 $maxmem = $vm["memory_static_max"] / (1024*1024);
131 }
132
133 $cpusum = 0.0;
134 for ($i=0; $i<$cpus; $i++) {
135 $cpusum += $xenserver->VM__query_data_source($vmref, "cpu" . $i);
136 }
137 $cpuavg = round ( ($cpusum/$cpus) * 100);
138
139 foreach($vm["consoles"] as $conref) {
140 //$con = $xenserver->console__get_record( $conref );
141 $con = $consolemap[$conref];
142
143 if ($con["protocol"] == "rfb") {
144 $session = $xenserver->get_id();
145 $url = urlencode( $con["location"] );
146 }
147 }
148
149 } else {
150 $maxmem = $vm["memory_static_max"] / (1024*1024);
151 }
152
153
154
155 echo "<vm>";
156 echo "<name>{$name}</name>";
157 echo "<state>{$state}</state>";
158 echo "<network>{$network}</network>";
159 echo "<conurl>{$url}</conurl>";
160 echo "<session>{$session}</session>";
161 echo "<os>{$os}</os>";
162 echo "<guestversion>{$guestversion}</guestversion>";
163 echo "<cpuavg>{$cpuavg}</cpuavg>";
164 echo "<curmem>{$curmem}</curmem>";
165 echo "<maxmem>{$maxmem}</maxmem>";
166 echo "<cpus>{$cpus}</cpus>";
167
168 echo "</vm>";
169 }
170 echo "</xen>";
171 ?>

  ViewVC Help
Powered by ViewVC 1.1.20