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

Annotation of /misc/xenconsole/ajaxdata.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2101 - (hide annotations) (download)
Thu Jan 30 10:16:09 2014 UTC (10 years, 4 months ago) by torben
File size: 4420 byte(s)
fix bug regarding current_operation name
1 torben 1884 <?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 torben 2022 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 torben 1884 include('xenapi.php');
45    
46     /* Establish session with Xenserver */
47     $xenserver = new XenApi($url, $login, $password);
48 torben 1889
49 torben 2019 //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 torben 1889 $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 torben 1892 $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 torben 1884
78     header("Content-Type: text/xml");
79     echo "<xen>";
80 torben 1889 echo "<host>";
81     echo "<memtotal>{$mem_total}</memtotal>";
82     echo "<memfree>{$mem_free}</memfree>";
83 torben 1892 echo "<cpuavg>{$cpuavg}</cpuavg>";
84 torben 1889 echo "</host>";
85 torben 1884
86 torben 1892
87    
88     $vms_array = $xenserver->VM__get_all_records();
89 torben 1884 // List all machines
90 torben 1891 foreach($vms_array as $vmref => $vm) {
91 torben 1884 if ($vm["is_a_template"] != 0 || $vm["is_control_domain"] != 0) {
92     continue;
93     }
94    
95 torben 1885
96 torben 1884 $name = $vm["name_label"];
97     $uuid = $vm["uuid"];
98     $state = $vm["power_state"] ;
99 torben 1891 $cpus = $vm["VCPUs_max"];
100 torben 2099
101     $operations = $vm["current_operations"];
102     if (sizeof($operations) > 0) {
103 torben 2101 $state = reset($operations);
104 torben 2099 }
105 torben 1884
106 torben 1885
107     $network = "";
108     $url = "";
109     $session = "";
110 torben 1888 $os = "";
111 torben 1891 $cpuavg = 0.0;
112 torben 1896 $curmem = 0;
113     $maxmem = 0;
114 torben 1897 $guestversion = "";
115 torben 1896
116 torben 2099
117 torben 2029 if ( $vm["power_state"] == "Running" ) {
118 torben 1885 if ($vm["guest_metrics"] != "OpaqueRef:NULL") {//guest tools installed
119 torben 2029 //$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 torben 1893 $tmpos = explode('|', $guest_metrics["os_version"]["name"]);
123     $os = $tmpos[0];
124 torben 1897 $guestversion = $guest_metrics["PV_drivers_version"]["major"] . "." . $guest_metrics["PV_drivers_version"]["minor"] . "." . $guest_metrics["PV_drivers_version"]["micro"];
125 torben 1901
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 torben 1902 $curmem = $maxmem - $free;
129 torben 2029 } else {
130     $maxmem = $vm["memory_static_max"] / (1024*1024);
131 torben 1885 }
132 torben 2029
133 torben 1891 $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 torben 1885
139     foreach($vm["consoles"] as $conref) {
140 torben 2019 //$con = $xenserver->console__get_record( $conref );
141     $con = $consolemap[$conref];
142 torben 1885
143     if ($con["protocol"] == "rfb") {
144 torben 2030 $session = $xenserver->get_id();
145 torben 1885 $url = urlencode( $con["location"] );
146     }
147     }
148    
149 torben 2029 } else {
150 torben 1952 $maxmem = $vm["memory_static_max"] / (1024*1024);
151     }
152 torben 1885
153    
154    
155 torben 1884 echo "<vm>";
156     echo "<name>{$name}</name>";
157     echo "<state>{$state}</state>";
158 torben 1885 echo "<network>{$network}</network>";
159     echo "<conurl>{$url}</conurl>";
160     echo "<session>{$session}</session>";
161 torben 1888 echo "<os>{$os}</os>";
162 torben 1897 echo "<guestversion>{$guestversion}</guestversion>";
163 torben 1891 echo "<cpuavg>{$cpuavg}</cpuavg>";
164 torben 1896 echo "<curmem>{$curmem}</curmem>";
165     echo "<maxmem>{$maxmem}</maxmem>";
166 torben 1958 echo "<cpus>{$cpus}</cpus>";
167 torben 1885
168 torben 1884 echo "</vm>";
169     }
170     echo "</xen>";
171     ?>

  ViewVC Help
Powered by ViewVC 1.1.20