Revision 7acbe201 ui/static/synnefo.js
b/ui/static/synnefo.js | ||
---|---|---|
340 | 340 |
|
341 | 341 |
if (jqXHR.status == 200 || jqXHR.status == 203) { |
342 | 342 |
try { |
343 |
servers = data.servers.values; |
|
343 |
//servers = data.servers.values; |
|
344 |
update_servers_data(data.servers.values, data); |
|
344 | 345 |
jQuery.parseJSON(data); |
345 | 346 |
update_machines_view(data); |
346 | 347 |
} catch(err) { ajax_error('400', undefined, 'Update VMs', jqXHR.responseText);} |
... | ... | |
359 | 360 |
return false; |
360 | 361 |
} |
361 | 362 |
|
363 |
function update_servers_data(servers_update, data) { |
|
364 |
$(window).trigger("vm:update", servers_update, data); |
|
365 |
|
|
366 |
// first call |
|
367 |
if (!window.servers || window.servers.length == 0) { |
|
368 |
window.servers = servers_update; |
|
369 |
return; |
|
370 |
} |
|
371 |
|
|
372 |
// server exists helper |
|
373 |
server_exists = function(server) { |
|
374 |
var id = server.id; |
|
375 |
var found = false; |
|
376 |
var index = 0; |
|
377 |
$.each(servers, function(i, s) { |
|
378 |
console.log(index); |
|
379 |
if (s.id == id) { found = true, index = i }; |
|
380 |
}); |
|
381 |
if (found) |
|
382 |
return [found, index]; |
|
383 |
|
|
384 |
return false; |
|
385 |
} |
|
386 |
|
|
387 |
// merge object properties |
|
388 |
merge = function() { |
|
389 |
var initial = arguments[0]; |
|
390 |
$.each(arguments, function(index, el) { |
|
391 |
$.each(el, function(key,v) { |
|
392 |
// new attribute added |
|
393 |
if (initial[key] == undefined) { |
|
394 |
$(window).trigger("vm:attr:add", initial, key, v); |
|
395 |
} else { |
|
396 |
// value changed |
|
397 |
if (initial[key] != v) { |
|
398 |
$(window).trigger("vm:attr:change", {'initial': initial, 'attr': key, 'newvalue': v}); |
|
399 |
} |
|
400 |
} |
|
401 |
initial[key] = v; |
|
402 |
}); |
|
403 |
}); |
|
404 |
return initial; |
|
405 |
} |
|
406 |
|
|
407 |
// server removed |
|
408 |
var remove = []; |
|
409 |
$.each(servers_update, function(index, server) { |
|
410 |
if (server.status == "DELETED") { |
|
411 |
remove.push(server.id); |
|
412 |
} |
|
413 |
}); |
|
414 |
|
|
415 |
// check server, if exists merge it with new values else add it |
|
416 |
$.each(servers_update, function(index, server) { |
|
417 |
var exists = server_exists(server); |
|
418 |
if (exists !== false) { |
|
419 |
servers[exists[1]] = merge(servers[exists[1]], server); |
|
420 |
} else { |
|
421 |
servers.push(server); |
|
422 |
$(window).trigger("vm:add", server); |
|
423 |
} |
|
424 |
if (remove.indexOf(server.id) > -1) { |
|
425 |
var remove_exists = server_exists(server); |
|
426 |
servers.splice(remove_exists[1], 1); |
|
427 |
$(window).trigger("vm:remove", server); |
|
428 |
} |
|
429 |
}); |
|
430 |
} |
|
431 |
|
|
362 | 432 |
// get a list of running and terminated machines, used in network view |
363 | 433 |
function update_networks(interval) { |
364 | 434 |
try{ console.info('updating networks'); } catch(err){} |
... | ... | |
402 | 472 |
|
403 | 473 |
if (jqXHR.status == 200 || jqXHR.status == 203) { |
404 | 474 |
try { |
405 |
servers = data.servers.values; |
|
475 |
//servers = data.servers.values; |
|
476 |
update_servers_data(data.servers.values, data); |
|
406 | 477 |
jQuery.parseJSON(data); |
407 | 478 |
update_network_names(data); |
408 | 479 |
} catch(err) { ajax_error('400', undefined, 'Update networks', jqXHR.responseText);} |
... | ... | |
1092 | 1163 |
|
1093 | 1164 |
var params_url = '?ip_address=' + serverIP + '&os=' + os; |
1094 | 1165 |
|
1166 |
//console.log(serverIP); |
|
1167 |
//console.log(machine.addresses); |
|
1168 |
//console.log(machine.addresses.values[0].values[0].addr); |
|
1169 |
|
|
1095 | 1170 |
window.open('machines/connect' + params_url); |
1096 | 1171 |
|
1097 | 1172 |
// Restore os icon in list view |
Also available in: Unified diff