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

Diff of /misc/xenconsole/ajaxdata.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1885 by torben, Fri Nov 30 17:56:07 2012 UTC revision 2101 by torben, Thu Jan 30 10:16:09 2014 UTC
# Line 23  function format_storage($size) { Line 23  function format_storage($size) {
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');  include('xenapi.php');
45    
46  /* Establish session with Xenserver */  /* Establish session with Xenserver */
47  $xenserver = new XenApi($url, $login, $password);  $xenserver = new XenApi($url, $login, $password);
 $vms_array = $xenserver->VM__get_all_records();  
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");  header("Content-Type: text/xml");
79  echo "<xen>";  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  // List all machines
90  foreach($vms_array as $vm) {  foreach($vms_array as $vmref => $vm) {
91          if ($vm["is_a_template"] != 0 || $vm["is_control_domain"] != 0) {          if ($vm["is_a_template"] != 0 || $vm["is_control_domain"] != 0) {
92                  continue;                  continue;
93          }          }
# Line 43  foreach($vms_array as $vm) { Line 96  foreach($vms_array as $vm) {
96          $name = $vm["name_label"];          $name = $vm["name_label"];
97          $uuid = $vm["uuid"];          $uuid = $vm["uuid"];
98          $state = $vm["power_state"] ;          $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 = "";          $network = "";
108          $url = "";          $url = "";
109          $session = "";          $session = "";
110          if ( $vm["power_state"] == "Running" ) {          $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                  if ($vm["guest_metrics"] != "OpaqueRef:NULL") {//guest tools installed
119                          $guest_metrics = $xenserver->VM_guest_metrics__get_record( $vm["guest_metrics"] );                          //$guest_metrics = $xenserver->VM_guest_metrics__get_record( $vm["guest_metrics"] );
120                          $network = implode( ",",  $guest_metrics["networks"])  ;                          $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) {                  foreach($vm["consoles"] as $conref) {
140                          $con = $xenserver->console__get_record( $conref );                          //$con = $xenserver->console__get_record( $conref );
141                                            $con = $consolemap[$conref];
142    
143                          if ($con["protocol"] == "rfb") {                          if ($con["protocol"] == "rfb") {
144                                                            $session = $xenserver->get_id();
145                                  $url = urlencode( $con["location"] );                                  $url = urlencode( $con["location"] );
                                 $session = $xenserver->get_id();  
146                          }                          }
147                  }                  }
148    
149          }      } else {
150                    $maxmem = $vm["memory_static_max"] / (1024*1024);
151            }
152    
153    
154    
# Line 73  foreach($vms_array as $vm) { Line 158  foreach($vms_array as $vm) {
158          echo "<network>{$network}</network>";          echo "<network>{$network}</network>";
159          echo "<conurl>{$url}</conurl>";          echo "<conurl>{$url}</conurl>";
160          echo "<session>{$session}</session>";          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>";            echo "</vm>";  
169  }  }

Legend:
Removed from v.1885  
changed lines
  Added in v.2101

  ViewVC Help
Powered by ViewVC 1.1.20