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

Annotation of /misc/xenconsole/index.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1955 - (hide annotations) (download)
Mon Mar 25 20:27:58 2013 UTC (11 years, 2 months ago) by torben
File size: 11249 byte(s)
use jquery UI
1 torben 1876 <?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     include('xenapi.php');
27    
28     /* Establish session with Xenserver */
29     $xenserver = new XenApi($url, $login, $password);
30    
31 torben 1888 $hosts_array = $xenserver->host__get_all();
32     $host = $xenserver->host__get_record($hosts_array[0]);
33     $host_metrics = $xenserver->host_metrics__get_record($host["metrics"]);
34    
35     $xenversion = $host["software_version"]["product_brand"] . " " . $host["software_version"]["product_version"];
36     $xenversion .= " / Linux:" . $host["software_version"]["linux"] . " / xen: " . $host["software_version"]["xen"] . " / xapi: " . $host["software_version"]["xapi"] ;
37    
38     $expire = split('T', $host["license_params"]["expiry"]);
39     $license = "License: " . $host["license_params"]["sku_type"] . ", expires " . $expire[0] ;
40    
41 torben 1876 $vms_array = $xenserver->VM__get_all_records();
42    
43 torben 1895 $namelabel = $host["name_label"];
44 torben 1876
45     ?>
46     <html>
47     <head>
48 torben 1895 <title>XenServer::<?php echo $namelabel;?></title>
49 torben 1955
50     <link rel="stylesheet" type="text/css" href="jquery/theme/jquery-ui.css">
51    
52 torben 1953 <script type='text/javascript' src="jquery/jquery-1.9.1.min.js"></script>
53 torben 1955 <script type='text/javascript' src="jquery/jquery-ui-1.10.2.min.js"></script>
54 torben 1876
55     <script type='text/javascript'>
56     $(document).ready( function() {
57 torben 1884 setInterval(refreshData, 60000);
58     refreshData();
59 torben 1885 $('.console').click( function() {
60     var session = $(this).data('session');
61     var conurl = $(this).data('conurl');
62 torben 1920 var name = $(this).data('name');
63     console(conurl,session,name);
64 torben 1885 });
65 torben 1887
66     $('#logo').click( function() {
67     refreshData();
68     });
69 torben 1876 });
70    
71 torben 1884 function refreshData() {
72 torben 1894 $("#logo").hide();
73 torben 1884 $.get('ajaxdata.php', function(xml) {
74 torben 1889 $(xml).find('host').each(function() {
75     var memtotal = $(this).find('memtotal').text();
76     var memfree = $(this).find('memfree').text();
77 torben 1892 var cpuavg = $(this).find('cpuavg').text();
78    
79 torben 1889 memtotal = Math.round ( memtotal / (1024*1024) );
80     memfree = Math.round ( memfree / (1024*1024) );
81     var memused = memtotal - memfree;
82     var mem_percentage = Math.round( (memused/memtotal) * 100);
83    
84     //alert(memused + ' ' + mem_percentage);
85    
86     $('#server_memory_usage').attr('src', 'usagebar.php?usage=' + mem_percentage);
87 torben 1890 $('#server_memory_usage').attr('alt', mem_percentage + '%');
88     $('#server_memory_usage').attr('title', mem_percentage + '%');
89 torben 1889 $('#server_memory_usage_txt').text( memused + '/' + memtotal + 'MB');
90 torben 1892
91    
92     $('#server_cpu_usage').attr('src', 'usagebar.php?usage=' + cpuavg);
93     $('#server_cpu_usage').attr('alt', cpuavg + '%');
94     $('#server_cpu_usage').attr('title', cpuavg + '%');
95     $('#server_cpu_usage_txt').text( cpuavg+ '%');
96 torben 1889 });
97 torben 1884 $(xml).find('vm').each(function() {
98     var name = $(this).find('name').text();
99     var state = $(this).find('state').text();
100 torben 1885 var network = $(this).find('network').text();
101     var state = $(this).find('state').text();
102     var conurl = $(this).find('conurl').text();
103     var session = $(this).find('session').text();
104 torben 1888 var os = $(this).find('os').text();
105 torben 1897 var guestversion = $(this).find('guestversion').text();
106 torben 1892 var cpuavg = $(this).find('cpuavg').text();
107 torben 1896 var curmem = $(this).find('curmem').text();
108     var maxmem = $(this).find('maxmem').text();
109 torben 1884
110 torben 1896 var mempercent = Math.round( (curmem*100) / maxmem );
111    
112 torben 1884 name = name.replace(" ", "_");
113     name = name.replace(".", "_");
114    
115 torben 1885 var id = "#vm_" + name;
116 torben 1884
117 torben 1885 var vm = $(id);
118    
119 torben 1897 if (guestversion != '') {
120     os += ' Guest Tools: ' + guestversion;
121     }
122    
123 torben 1952 vm.find('.vps_memory_usage_txt_UID').text( maxmem + " MB");
124    
125 torben 1884 if (state == "Running") {
126 torben 1885 vm.find('.state').css("background-image", "url('gfx/vps_topgreen.png')");
127     vm.find('.network').show();
128     vm.find('.network').text( '(IP: ' + network + ')' );
129     vm.find('.console').show();
130     vm.find('.console').data('conurl', conurl);
131     vm.find('.console').data('session', session);
132 torben 1920 vm.find('.console').data('name', name);
133 torben 1885 vm.find('.actionstop').show();
134     vm.find('.actionstart').hide();
135 torben 1888 vm.find('.os').text(' - ' + os);
136 torben 1892
137    
138     vm.find('.cpu_graph').show();
139     vm.find('.cpu_graph').attr('src', 'usagebar.php?usage=' + cpuavg);
140     vm.find('.cpu_graph').attr('title', cpuavg + '%');
141 torben 1896
142 torben 1893 vm.find('.mem_graph').show();
143 torben 1896 vm.find('.mem_graph').attr('src', 'usagebar.php?usage=' + mempercent);
144     vm.find('.mem_graph').attr('title', curmem + ' / ' + maxmem + ' MB' );
145 torben 1884 } else {
146 torben 1885 if (state == "Halted") {
147     vm.find('.state').css("background-image", "url('gfx/vps_topred.png')");
148     } else {
149     vm.find('.state').css("background-image", "url('gfx/vps_topyellow.png')");
150     }
151 torben 1899 vm.find('.os').text('');
152    
153 torben 1885 vm.find('.network').hide();
154     vm.find('.console').hide();
155     vm.find('.actionstop').hide();
156     vm.find('.actionstart').show();
157 torben 1892 vm.find('.cpu_graph').hide();
158     vm.find('.mem_graph').hide();
159 torben 1884 }
160    
161 torben 1894 });
162     $('#logo').show();
163 torben 1884 });
164     }
165    
166 torben 1886 function doAction(action, uuid, vm) {
167 torben 1952 var val="";
168    
169 torben 1876 var key = prompt("Key");
170     if (key == "" || key == null) {
171     return;
172     }
173     document.body.style.cursor = 'wait';
174 torben 1886 $('#vm_' + vm).find('.state').css("background-image", "url('gfx/vps_topyellow.png')");
175 torben 1876
176 torben 1952 if (action == "setMemory") {
177     val = prompt("Set memory target");
178     if (val == "" || val == null) {
179     alert("" + val);
180     return;
181     }
182     }
183    
184     var url = "action.php?action=" + action + "&uuid=" + uuid + "&key=" + key + "&val=" + val;;
185 torben 1876 var response = $.get(url, function(data) {
186 torben 1886 if (data != 'OK') {
187     alert(data);
188     }
189 torben 1876 document.body.style.cursor = 'default'
190 torben 1884
191     refreshData();
192 torben 1876 });
193     }
194    
195 torben 1920 function console(url, session, name) {
196 torben 1878 if (url == '')
197     return;
198    
199 torben 1876 var key = prompt("Key");
200     if (key == "" || key == null) {
201     return;
202     }
203 torben 1920 var url = "console.php?url=" + url + "&session=" + session + "&key=" + key + "&name=" + name;
204 torben 1876
205     //window.location = url;
206 torben 1878 //$('#mainwindow').load(url);
207     window.open(url);
208 torben 1876 }
209    
210    
211    
212     </script>
213    
214     <style>
215     body {
216     background: #eee;
217     margin-top: 5px;
218     font-family:verdana,helvetica,arial,sans-serif;
219     font-size: 14px;
220    
221     }
222    
223     .maintable {
224     background: #fff;
225     margin-left:auto; // Smart center
226     margin-right:auto;
227     padding: 0;
228     border: 3px solid #999;
229     }
230    
231     .small {
232     font-family:verdana,helvetica,arial,sans-serif;
233     font-size: 11px;
234     }
235    
236     .toptable {
237     border-bottom: 3px solid #999;
238     }
239    
240     .vps {
241     margin: 4;
242     border: 1px solid #222;
243     }
244     </style>
245     </head>
246     <body>
247    
248     <table class='maintable' width='800' align='center' cellpadding='0' cellspacing='0'><tr><td>
249    
250     <table width='100%' background='gfx/topbg.png' cellpadding='3' cellspacing='0' border='0' class='toptable'>
251     <tr>
252 torben 1887 <td rowspan='2' width='160'><img src='gfx/citrix-logo.png' id='logo'></td>
253 torben 1895 <td colspan='4' class='small' align='right'><?php echo $namelabel . " / " . $xenversion;?><br><?php echo $license;?></td>
254 torben 1876 </tr>
255     <tr>
256 torben 1903 <td width='150'></td>
257     <td width='150'></td>
258 torben 1876 <td width='150' align='right' class='small'><img src='gfx/icon-cpu.png'>
259 torben 1890 <img id='server_cpu_usage' src='usagebar.php?usage=12' width='102' height='16' title='static dummy data'><div id='server_cpu_usage_txt'>12%</div></td>
260 torben 1889
261 torben 1876 <td width='150' align='right' class='small'><img src='gfx/icon-memory.png'>
262 torben 1890 <img id='server_memory_usage' src='usagebar.php?usage=1' width='102' height='16' title='static dummy data'><div id='server_memory_usage_txt'>0/4 MB</div></td>
263 torben 1903 <!--
264 torben 1876 <td width='150' align='right' class='small'><img src='gfx/icon-network.png'>
265 torben 1890 <img id='server_net_usage' src='usagebar.php?usage=41' width='102' height='16' title='static dummy data'><div id='server_net_usage_txt'>1%</div></td>
266 torben 1876 <td width='150' align='right' class='small'><img src='gfx/icon-disk.png'>
267 torben 1890 <img id='server_disk_usage' src='usagebar.php?usage=41' width='102' height='16' title='static dummy data'><div id='server_memory_usage_txt'>89.3/405.5 GB</div></td>
268 torben 1876 </td>
269 torben 1903 -->
270 torben 1876 </tr></table>
271    
272    
273    
274     <?php
275     // List all machines
276     foreach($vms_array as $vm) {
277     if ($vm["is_a_template"] != 0 || $vm["is_control_domain"] != 0) {
278     continue;
279     }
280    
281     $name = $vm["name_label"];
282 torben 1900 $description = $vm["name_description"];
283 torben 1876 $uuid = $vm["uuid"];
284     $state = $vm["power_state"] ;
285     $memory = $vm['memory_target'];
286     $harddrive_size = 0;
287     $cpu_count = $vm["VCPUs_max"];
288    
289 torben 1884 $clean_name = str_replace(" ", "_", $name);
290     $clean_name = str_replace(".", "_", $clean_name);
291    
292    
293 torben 1876 foreach ($vm["VBDs"] as $vbds) {
294     $vbd = $xenserver->VBD__get_record($vbds);
295     if ($vbd["type"] == 'Disk') {
296     $vdi = $xenserver->VDI__get_record( $vbd["VDI"] );
297     $harddrive_size += $vdi["virtual_size"];
298     }
299     }
300    
301    
302 torben 1882
303 torben 1876 ?>
304     <!-- MACHINE -->
305 torben 1885 <table width='99%' cellpadding='3' cellspacing='0' border='0' class='vps' id='vm_<?php echo $clean_name;?>'>
306     <tr background='gfx/vps_topbg.png' >
307     <td width='10' class='small state'>&nbsp;</td>
308 torben 1952 <td colspan='2' class='small' title='<?php echo $description;?>'><b><?php echo $name; ?></b><span class='os'></span></td>
309     <td colspan='2' class='small' align='right'>
310 torben 1885 <span class='network'></span>
311     <a href='#' style='display:none;' class='console'>
312     <img src='gfx/icon-terminal.png' style='vertical-align: middle;'>
313     </a>
314 torben 1878 </td>
315 torben 1876 </tr>
316    
317     <tr bgcolor='#eee'>
318     <td></td>
319    
320 torben 1879 <td width='150' class='small'>
321 torben 1885 <span class="actionstop" style='display:none'>
322     start |
323 torben 1886 <a href='#' onclick="doAction('shutdown','<?php echo $uuid;?>','<?php echo $clean_name;?>')" >stop</a> |
324 torben 1952 <a href='#' onclick="doAction('hardshutdown','<?php echo $uuid;?>','<?php echo $clean_name;?>')" >force shutdown</a> |
325     set memory
326 torben 1885 </span>
327    
328     <span class="actionstart">
329 torben 1886 <a href='#' onclick="doAction('start','<?php echo $uuid;?>','<?php echo $clean_name;?>')" >start</a> |
330 torben 1885 stop |
331 torben 1952 force shutdown |
332    
333     <a href='#' onclick="doAction('setMemory','<?php echo $uuid;?>','<?php echo $clean_name;?>')" >set memory</a>
334 torben 1885 </span>
335 torben 1876
336 torben 1879 </td>
337    
338 torben 1892 <td width='100' align='right' class='small' valign='top'>
339     <img src='usagebar.php?usage=1' width='102' height='16' title='static dummy data' class='cpu_graph'><br>
340 torben 1876 <img src='gfx/icon-cpu.png' style='vertical-align: middle;'>
341     <span id='vps_cpu_usage_txt_UID'><?php echo $cpu_count; ?> VCPU</span>
342     </td>
343     <td width='100' align='right' class='small'>
344 torben 1892 <img src='usagebar.php?usage=1' width='102' height='16' title='static dummy data' class='mem_graph'><br>
345 torben 1876 <img src='gfx/icon-memory.png' style='vertical-align: middle;'>
346 torben 1952 <span class='vps_memory_usage_txt_UID'><?php echo format_memory($memory); ?></span>
347 torben 1876 </td>
348     <!--
349     <td width='100' align='right' class='small'>
350     <img src='gfx/icon-network.png' style='vertical-align: middle;'>
351     <span id='vps_net_usage_txt_UID'>na</span>
352     </td>
353     -->
354 torben 1898 <td width='100' align='right' class='small' valign='bottom'>
355 torben 1876 <img src='gfx/icon-disk.png' style='vertical-align: middle;'>
356     <span id='vps_disk_usage_txt_UID'><?php echo format_storage($harddrive_size); ?></span>
357     </td>
358     </tr>
359 torben 1892
360 torben 1876
361     </table>
362     <!-- MACHINE END -->
363    
364     <?PHP } ?>
365     </td></tr></table>
366     </body></html>

  ViewVC Help
Powered by ViewVC 1.1.20