root / ui / static / synnefo.js @ deb9d144
History | View | Annotate | Download (43.8 kB)
1 | 22afb635 | Vangelis Koukis | var API_URL = "/api/v1.1"; |
---|---|---|---|
2 | f533f224 | Vangelis Koukis | var changes_since = 0, deferred = 0, update_request = false, load_request = false, pending_actions = []; |
3 | f533f224 | Vangelis Koukis | var flavors = [], images = [], servers = [], disks = [], cpus = [], ram = [];
|
4 | f533f224 | Vangelis Koukis | var networks = [], networks_changes_since = 0; |
5 | f533f224 | Vangelis Koukis | |
6 | 146b6003 | Dimitris Moraitis | |
7 | f533f224 | Vangelis Koukis | //FIXME: authentication
|
8 | be066a83 | Markos Gogoulos | //if cookie with value X-Auth-Token exists, set the value on the headers.
|
9 | d994d118 | Markos Gogoulos | $.ajaxSetup({
|
10 | 8b17cf6e | Markos Gogoulos | 'beforeSend': function(xhr) { |
11 | 89b6b240 | Georgios Gousios | //if ($.cookie("X-Auth-Token") != null) {
|
12 | be066a83 | Markos Gogoulos | xhr.setRequestHeader("X-Auth-Token", $.cookie("X-Auth-Token")); |
13 | 89b6b240 | Georgios Gousios | //} else {
|
14 | 89b6b240 | Georgios Gousios | // $.cookie("X-Auth-Token", "46e427d657b20defe352804f0eb6f8a2"); // set X-Auth-Token cookie
|
15 | 89b6b240 | Georgios Gousios | //}
|
16 | 8b17cf6e | Markos Gogoulos | } |
17 | d994d118 | Markos Gogoulos | }); |
18 | d994d118 | Markos Gogoulos | |
19 | c5a032c4 | Markos Gogoulos | function ISODateString(d){ |
20 | b02144c8 | Vangelis Koukis | //return a date in an ISO 8601 format using UTC.
|
21 | c5a032c4 | Markos Gogoulos | //do not include time zone info (Z) at the end
|
22 | b02144c8 | Vangelis Koukis | //taken from the Mozilla Developer Center
|
23 | 267403ca | Dimitris Moraitis | function pad(n){ return n<10 ? '0'+n : n } |
24 | 267403ca | Dimitris Moraitis | return d.getUTCFullYear()+ '-' + |
25 | f533f224 | Vangelis Koukis | pad(d.getUTCMonth()+1) + '-' + |
26 | f533f224 | Vangelis Koukis | pad(d.getUTCDate()) + 'T' +
|
27 | f533f224 | Vangelis Koukis | pad(d.getUTCHours()) + ':' +
|
28 | f533f224 | Vangelis Koukis | pad(d.getUTCMinutes()) + ':' +
|
29 | f533f224 | Vangelis Koukis | pad(d.getUTCSeconds()) +'Z'
|
30 | 038383b1 | Dimitris Moraitis | } |
31 | 038383b1 | Dimitris Moraitis | |
32 | f533f224 | Vangelis Koukis | function parse_error(responseText, errorCode){ |
33 | f533f224 | Vangelis Koukis | var errors = [];
|
34 | f533f224 | Vangelis Koukis | try {
|
35 | f533f224 | Vangelis Koukis | responseObj = JSON.parse(responseText); |
36 | f533f224 | Vangelis Koukis | } |
37 | f533f224 | Vangelis Koukis | catch(err) {
|
38 | f533f224 | Vangelis Koukis | errors[0] = {'code': errorCode}; |
39 | f533f224 | Vangelis Koukis | return errors;
|
40 | f533f224 | Vangelis Koukis | } |
41 | f533f224 | Vangelis Koukis | for (var err in responseObj){ |
42 | f533f224 | Vangelis Koukis | errors[errors.length] = responseObj[err]; |
43 | f533f224 | Vangelis Koukis | } |
44 | f533f224 | Vangelis Koukis | return errors;
|
45 | 267403ca | Dimitris Moraitis | } |
46 | c5a032c4 | Markos Gogoulos | |
47 | 41cad45d | Dimitris Moraitis | // indexOf prototype for IE
|
48 | 41cad45d | Dimitris Moraitis | if (!Array.prototype.indexOf) {
|
49 | 41cad45d | Dimitris Moraitis | Array.prototype.indexOf = function(elt /*, from*/) { |
50 | 41cad45d | Dimitris Moraitis | var len = this.length; |
51 | 41cad45d | Dimitris Moraitis | var from = Number(arguments[1]) || 0; |
52 | 41cad45d | Dimitris Moraitis | from = (from < 0)
|
53 | 41cad45d | Dimitris Moraitis | ? Math.ceil(from) |
54 | 41cad45d | Dimitris Moraitis | : Math.floor(from); |
55 | 41cad45d | Dimitris Moraitis | if (from < 0) |
56 | 41cad45d | Dimitris Moraitis | from += len; |
57 | 41cad45d | Dimitris Moraitis | |
58 | 41cad45d | Dimitris Moraitis | for (; from < len; from++) {
|
59 | 41cad45d | Dimitris Moraitis | if (from in this && |
60 | 41cad45d | Dimitris Moraitis | this[from] === elt)
|
61 | 41cad45d | Dimitris Moraitis | return from;
|
62 | 41cad45d | Dimitris Moraitis | } |
63 | 41cad45d | Dimitris Moraitis | return -1; |
64 | 41cad45d | Dimitris Moraitis | }; |
65 | 41cad45d | Dimitris Moraitis | } |
66 | 41cad45d | Dimitris Moraitis | |
67 | 3d286f84 | Dimitris Moraitis | function update_confirmations(){ |
68 | dcf153ce | Christodoulos Psaltis | // hide all confirm boxes to begin with
|
69 | f533f224 | Vangelis Koukis | $('#machines-pane div.confirm_single').hide(); |
70 | f533f224 | Vangelis Koukis | $('#machines-pane div.confirm_multiple').hide(); |
71 | f533f224 | Vangelis Koukis | // standard view only
|
72 | f533f224 | Vangelis Koukis | if ($.cookie("view") == '0') { |
73 | f533f224 | Vangelis Koukis | for (var i=0;i<pending_actions.length;i++){ |
74 | dcf153ce | Christodoulos Psaltis | // show single confirms
|
75 | f533f224 | Vangelis Koukis | $("#machines-pane div.machine-container#"+pending_actions[i][1]+' .confirm_single').show(); |
76 | f533f224 | Vangelis Koukis | } |
77 | f533f224 | Vangelis Koukis | } |
78 | f533f224 | Vangelis Koukis | |
79 | f533f224 | Vangelis Koukis | // if more than one pending action show multiple confirm box
|
80 | f533f224 | Vangelis Koukis | if (pending_actions.length>1 || $.cookie("view") == '1' && pending_actions.length == 1){ |
81 | f533f224 | Vangelis Koukis | $('#machines-pane div.confirm_multiple span.actionLen').text(pending_actions.length); |
82 | f533f224 | Vangelis Koukis | $('#machines-pane div.confirm_multiple').show(); |
83 | f533f224 | Vangelis Koukis | } |
84 | f533f224 | Vangelis Koukis | } |
85 | dcf153ce | Christodoulos Psaltis | |
86 | f533f224 | Vangelis Koukis | function update_network_confirmations(){ |
87 | f533f224 | Vangelis Koukis | // hide all confirm boxes to begin with
|
88 | f533f224 | Vangelis Koukis | $('#networks-pane div.confirm_multiple').hide(); |
89 | f533f224 | Vangelis Koukis | |
90 | f533f224 | Vangelis Koukis | for (var i=0;i<pending_actions.length;i++){ |
91 | f533f224 | Vangelis Koukis | // show single confirms depending on the action
|
92 | f533f224 | Vangelis Koukis | if (pending_actions[i][0] == delete_network) { |
93 | f533f224 | Vangelis Koukis | $("#networks-pane div.network#net-"+pending_actions[i][1]).children('.confirm_single').show(); |
94 | f533f224 | Vangelis Koukis | } else if (pending_actions[i][0] == remove_server_from_network) { |
95 | f533f224 | Vangelis Koukis | $("#networks-pane div.network #net-"+pending_actions[i][1]+"-server-"+pending_actions[i][2]).children('.confirm_single').show(); |
96 | f533f224 | Vangelis Koukis | } // else {}
|
97 | f533f224 | Vangelis Koukis | } |
98 | f533f224 | Vangelis Koukis | |
99 | f533f224 | Vangelis Koukis | // if more than one pending action show multiple confirm box
|
100 | f533f224 | Vangelis Koukis | if (pending_actions.length > 1){ |
101 | f533f224 | Vangelis Koukis | $('#networks-pane div.confirm_multiple span.actionLen').text(pending_actions.length); |
102 | f533f224 | Vangelis Koukis | $('#networks-pane div.confirm_multiple').show(); |
103 | f533f224 | Vangelis Koukis | } |
104 | 3d286f84 | Dimitris Moraitis | } |
105 | 3d286f84 | Dimitris Moraitis | |
106 | 42f67a2a | Dimitris Moraitis | function list_view() { |
107 | f533f224 | Vangelis Koukis | changes_since = 0; // to reload full list |
108 | f533f224 | Vangelis Koukis | pending_actions = []; // clear pending actions
|
109 | f533f224 | Vangelis Koukis | update_confirmations(); |
110 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
111 | f533f224 | Vangelis Koukis | try {
|
112 | f533f224 | Vangelis Koukis | update_request.abort(); // cancel pending ajax updates
|
113 | f533f224 | Vangelis Koukis | load_request.abort(); |
114 | f533f224 | Vangelis Koukis | }catch(err){}
|
115 | f533f224 | Vangelis Koukis | $.cookie("view", '1'); // set list cookie |
116 | f533f224 | Vangelis Koukis | uri = $("a#list").attr("href"); |
117 | 267403ca | Dimitris Moraitis | load_request = $.ajax({
|
118 | 267403ca | Dimitris Moraitis | url: uri,
|
119 | 267403ca | Dimitris Moraitis | type: "GET", |
120 | 267403ca | Dimitris Moraitis | timeout: TIMEOUT,
|
121 | 267403ca | Dimitris Moraitis | dataType: "html", |
122 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
123 | f533f224 | Vangelis Koukis | return false; |
124 | f533f224 | Vangelis Koukis | }, |
125 | 267403ca | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
126 | f533f224 | Vangelis Koukis | $("a#list")[0].className += ' activelink'; |
127 | f533f224 | Vangelis Koukis | $("a#standard")[0].className = ''; |
128 | f533f224 | Vangelis Koukis | $("a#single")[0].className = ''; |
129 | f533f224 | Vangelis Koukis | $("div#machinesview").html(data); |
130 | f533f224 | Vangelis Koukis | } |
131 | f533f224 | Vangelis Koukis | }); |
132 | f533f224 | Vangelis Koukis | return false; |
133 | f533f224 | Vangelis Koukis | } |
134 | b02144c8 | Vangelis Koukis | |
135 | f533f224 | Vangelis Koukis | function single_view() { |
136 | f533f224 | Vangelis Koukis | changes_since = 0; // to reload full list |
137 | f533f224 | Vangelis Koukis | pending_actions = []; // clear pending actions
|
138 | f533f224 | Vangelis Koukis | update_confirmations(); |
139 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
140 | f533f224 | Vangelis Koukis | try {
|
141 | f533f224 | Vangelis Koukis | update_request.abort(); // cancel pending ajax updates
|
142 | f533f224 | Vangelis Koukis | load_request.abort(); |
143 | f533f224 | Vangelis Koukis | }catch(err){}
|
144 | f533f224 | Vangelis Koukis | $.cookie("view", '2'); // set list cookie |
145 | f533f224 | Vangelis Koukis | uri = $("a#single").attr("href"); |
146 | f533f224 | Vangelis Koukis | load_request = $.ajax({
|
147 | f533f224 | Vangelis Koukis | url: uri,
|
148 | f533f224 | Vangelis Koukis | type: "GET", |
149 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
150 | f533f224 | Vangelis Koukis | dataType: "html", |
151 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
152 | f533f224 | Vangelis Koukis | return false; |
153 | f533f224 | Vangelis Koukis | }, |
154 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
155 | f533f224 | Vangelis Koukis | $("a#single")[0].className += ' activelink'; |
156 | f533f224 | Vangelis Koukis | $("a#standard")[0].className = ''; |
157 | f533f224 | Vangelis Koukis | $("a#list")[0].className = ''; |
158 | f533f224 | Vangelis Koukis | $("div#machinesview").html(data); |
159 | f533f224 | Vangelis Koukis | } |
160 | f533f224 | Vangelis Koukis | }); |
161 | 42f67a2a | Dimitris Moraitis | return false; |
162 | 42f67a2a | Dimitris Moraitis | } |
163 | 42f67a2a | Dimitris Moraitis | |
164 | 42f67a2a | Dimitris Moraitis | function standard_view() { |
165 | f533f224 | Vangelis Koukis | changes_since = 0; // to reload full list |
166 | f533f224 | Vangelis Koukis | pending_actions = []; // clear pending actions
|
167 | f533f224 | Vangelis Koukis | update_confirmations(); |
168 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
169 | f533f224 | Vangelis Koukis | try {
|
170 | f533f224 | Vangelis Koukis | update_request.abort() // cancel pending ajax updates
|
171 | f533f224 | Vangelis Koukis | load_request.abort(); |
172 | f533f224 | Vangelis Koukis | }catch(err){}
|
173 | f533f224 | Vangelis Koukis | $.cookie("view", '0'); |
174 | 267403ca | Dimitris Moraitis | uri = $("a#standard").attr("href"); |
175 | 267403ca | Dimitris Moraitis | load_request = $.ajax({
|
176 | 267403ca | Dimitris Moraitis | url: uri,
|
177 | 267403ca | Dimitris Moraitis | type: "GET", |
178 | 267403ca | Dimitris Moraitis | timeout: TIMEOUT,
|
179 | 267403ca | Dimitris Moraitis | dataType: "html", |
180 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
181 | f533f224 | Vangelis Koukis | return false; |
182 | f533f224 | Vangelis Koukis | }, |
183 | 267403ca | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
184 | f533f224 | Vangelis Koukis | $("a#standard")[0].className += ' activelink'; |
185 | f533f224 | Vangelis Koukis | $("a#list")[0].className = ''; |
186 | f533f224 | Vangelis Koukis | $("a#single")[0].className = ''; |
187 | f533f224 | Vangelis Koukis | $("div#machinesview").html(data); |
188 | f533f224 | Vangelis Koukis | } |
189 | f533f224 | Vangelis Koukis | }); |
190 | 42f67a2a | Dimitris Moraitis | return false; |
191 | 42f67a2a | Dimitris Moraitis | } |
192 | 42f67a2a | Dimitris Moraitis | |
193 | 42f67a2a | Dimitris Moraitis | function choose_view() { |
194 | f533f224 | Vangelis Koukis | if ($.cookie("view")=='1') { |
195 | 42f67a2a | Dimitris Moraitis | list_view(); |
196 | f533f224 | Vangelis Koukis | } else if ($.cookie("view")=='2'){ |
197 | f533f224 | Vangelis Koukis | single_view(); |
198 | 42f67a2a | Dimitris Moraitis | } else {
|
199 | 42f67a2a | Dimitris Moraitis | standard_view(); |
200 | 42f67a2a | Dimitris Moraitis | } |
201 | 42f67a2a | Dimitris Moraitis | } |
202 | 42f67a2a | Dimitris Moraitis | |
203 | f533f224 | Vangelis Koukis | // get and show a list of running and terminated machines
|
204 | f533f224 | Vangelis Koukis | function update_vms(interval) { |
205 | f533f224 | Vangelis Koukis | try{ console.info('updating machines'); } catch(err){} |
206 | f533f224 | Vangelis Koukis | var uri= API_URL + '/servers/detail'; |
207 | b02144c8 | Vangelis Koukis | |
208 | f533f224 | Vangelis Koukis | if (changes_since != 0) |
209 | f533f224 | Vangelis Koukis | uri+='?changes-since='+changes_since
|
210 | b02144c8 | Vangelis Koukis | |
211 | f533f224 | Vangelis Koukis | update_request = $.ajax({
|
212 | f533f224 | Vangelis Koukis | cache: false, |
213 | f533f224 | Vangelis Koukis | url: uri,
|
214 | f533f224 | Vangelis Koukis | type: "GET", |
215 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
216 | f533f224 | Vangelis Koukis | dataType: "json", |
217 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
218 | f533f224 | Vangelis Koukis | // don't forget to try again later
|
219 | f533f224 | Vangelis Koukis | if (interval) {
|
220 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
221 | f533f224 | Vangelis Koukis | deferred = setTimeout(function() {update_vms(interval);},interval,interval);
|
222 | f533f224 | Vangelis Koukis | } |
223 | f533f224 | Vangelis Koukis | // as for now, just show an error message
|
224 | f533f224 | Vangelis Koukis | try { console.info('update_vms errback:' + jqXHR.status ) } catch(err) {} |
225 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Update VMs', jqXHR.responseText); |
226 | f533f224 | Vangelis Koukis | return false; |
227 | f533f224 | Vangelis Koukis | }, |
228 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
229 | f533f224 | Vangelis Koukis | // create changes_since string if necessary
|
230 | f533f224 | Vangelis Koukis | if (jqXHR.getResponseHeader('Date') != null){ |
231 | f533f224 | Vangelis Koukis | changes_since_date = new Date(jqXHR.getResponseHeader('Date')); |
232 | f533f224 | Vangelis Koukis | changes_since = ISODateString(changes_since_date); |
233 | f533f224 | Vangelis Koukis | } |
234 | b02144c8 | Vangelis Koukis | |
235 | f533f224 | Vangelis Koukis | if (interval) {
|
236 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
237 | f533f224 | Vangelis Koukis | deferred = setTimeout(function() {update_vms(interval);},interval,interval);
|
238 | f533f224 | Vangelis Koukis | } |
239 | 42f67a2a | Dimitris Moraitis | |
240 | f533f224 | Vangelis Koukis | if (jqXHR.status == 200 || jqXHR.status == 203) { |
241 | f533f224 | Vangelis Koukis | try {
|
242 | f533f224 | Vangelis Koukis | servers = data.servers.values; |
243 | f533f224 | Vangelis Koukis | } catch(err) { ajax_error('400', undefined, 'Update VMs', jqXHR.responseText);} |
244 | f533f224 | Vangelis Koukis | update_machines_view(data); |
245 | f533f224 | Vangelis Koukis | } else if (jqXHR.status != 304){ |
246 | f533f224 | Vangelis Koukis | try { console.info('update_vms callback:' + jqXHR.status ) } catch(err) {} |
247 | f533f224 | Vangelis Koukis | /*
|
248 | f533f224 | Vangelis Koukis | FIXME: Here it should return the error, however Opera does not support 304.
|
249 | f533f224 | Vangelis Koukis | Instead 304 it returns 0. To dealt with this we treat 0 as an
|
250 | f533f224 | Vangelis Koukis | 304, which should be corrected (Bug #317).
|
251 | f533f224 | Vangelis Koukis | */
|
252 | f533f224 | Vangelis Koukis | //ajax_error(jqXHR.status, undefined, 'Update VMs', jqXHR.responseText);
|
253 | f533f224 | Vangelis Koukis | } |
254 | f533f224 | Vangelis Koukis | return false; |
255 | f533f224 | Vangelis Koukis | } |
256 | 42f67a2a | Dimitris Moraitis | }); |
257 | f533f224 | Vangelis Koukis | return false; |
258 | f533f224 | Vangelis Koukis | } |
259 | f533f224 | Vangelis Koukis | |
260 | f533f224 | Vangelis Koukis | // get a list of running and terminated machines, used in network view
|
261 | f533f224 | Vangelis Koukis | function update_networks(interval) { |
262 | f533f224 | Vangelis Koukis | try{ console.info('updating networks'); } catch(err){} |
263 | f533f224 | Vangelis Koukis | var uri= API_URL + '/servers/detail'; |
264 | f533f224 | Vangelis Koukis | |
265 | f533f224 | Vangelis Koukis | if (changes_since != 0) |
266 | f533f224 | Vangelis Koukis | uri+='?changes-since='+changes_since
|
267 | f533f224 | Vangelis Koukis | |
268 | f533f224 | Vangelis Koukis | update_request = $.ajax({
|
269 | f533f224 | Vangelis Koukis | cache: false, |
270 | f533f224 | Vangelis Koukis | url: uri,
|
271 | f533f224 | Vangelis Koukis | type: "GET", |
272 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
273 | f533f224 | Vangelis Koukis | dataType: "json", |
274 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
275 | f533f224 | Vangelis Koukis | // don't forget to try again later
|
276 | f533f224 | Vangelis Koukis | if (interval) {
|
277 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
278 | f533f224 | Vangelis Koukis | deferred = setTimeout(function() {update_networks(interval);},interval,interval);
|
279 | f533f224 | Vangelis Koukis | } |
280 | f533f224 | Vangelis Koukis | // as for now, just show an error message
|
281 | f533f224 | Vangelis Koukis | try { console.info('update_networks errback:' + jqXHR.status ) } catch(err) {} |
282 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Update networks', jqXHR.responseText); |
283 | f533f224 | Vangelis Koukis | return false; |
284 | f533f224 | Vangelis Koukis | }, |
285 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
286 | f533f224 | Vangelis Koukis | // create changes_since string if necessary
|
287 | f533f224 | Vangelis Koukis | if (jqXHR.getResponseHeader('Date') != null){ |
288 | f533f224 | Vangelis Koukis | changes_since_date = new Date(jqXHR.getResponseHeader('Date')); |
289 | f533f224 | Vangelis Koukis | changes_since = ISODateString(changes_since_date); |
290 | f533f224 | Vangelis Koukis | } |
291 | f533f224 | Vangelis Koukis | |
292 | f533f224 | Vangelis Koukis | if (interval) {
|
293 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
294 | f533f224 | Vangelis Koukis | deferred = setTimeout(function() {update_networks(interval);},interval,interval);
|
295 | f533f224 | Vangelis Koukis | } |
296 | f533f224 | Vangelis Koukis | |
297 | f533f224 | Vangelis Koukis | if (jqXHR.status == 200 || jqXHR.status == 203) { |
298 | f533f224 | Vangelis Koukis | try {
|
299 | f533f224 | Vangelis Koukis | servers = data.servers.values; |
300 | f533f224 | Vangelis Koukis | } catch(err) { ajax_error('400', undefined, 'Update networks', jqXHR.responseText);} |
301 | f533f224 | Vangelis Koukis | update_network_names(data); |
302 | f533f224 | Vangelis Koukis | } else if (jqXHR.status == 304) { |
303 | f533f224 | Vangelis Koukis | update_network_names(); |
304 | f533f224 | Vangelis Koukis | } |
305 | f533f224 | Vangelis Koukis | else {
|
306 | f533f224 | Vangelis Koukis | try { console.info('update_networks callback:' + jqXHR.status ) } catch(err) {} |
307 | f533f224 | Vangelis Koukis | /*
|
308 | f533f224 | Vangelis Koukis | FIXME: Here it should return the error, however Opera does not support 304.
|
309 | f533f224 | Vangelis Koukis | Instead 304 it returns 0. To dealt with this we treat 0 as an
|
310 | f533f224 | Vangelis Koukis | 304, which should be corrected (Bug #317).
|
311 | f533f224 | Vangelis Koukis | */
|
312 | f533f224 | Vangelis Koukis | //ajax_error(jqXHR.status, undefined, 'Update networks', jqXHR.responseText);
|
313 | f533f224 | Vangelis Koukis | update_network_names(); |
314 | f533f224 | Vangelis Koukis | } |
315 | f533f224 | Vangelis Koukis | return false; |
316 | 42f67a2a | Dimitris Moraitis | } |
317 | 42f67a2a | Dimitris Moraitis | }); |
318 | 42f67a2a | Dimitris Moraitis | return false; |
319 | 42f67a2a | Dimitris Moraitis | } |
320 | 42f67a2a | Dimitris Moraitis | |
321 | f533f224 | Vangelis Koukis | // get and show a list of public and private networks
|
322 | f533f224 | Vangelis Koukis | function update_network_names(servers_data) { |
323 | f533f224 | Vangelis Koukis | try{ console.info('updating network names'); } catch(err){} |
324 | f533f224 | Vangelis Koukis | var uri= API_URL + '/networks/detail'; |
325 | f533f224 | Vangelis Koukis | |
326 | f533f224 | Vangelis Koukis | if (networks_changes_since != 0) |
327 | f533f224 | Vangelis Koukis | //FIXME: Comment out the following, until metadata do not 304 when changed
|
328 | f533f224 | Vangelis Koukis | uri+='?changes-since=' + networks_changes_since
|
329 | ce4f9227 | Mike Muzurakis | |
330 | 1c7978ce | Dimitris Moraitis | update_request = $.ajax({
|
331 | c8bde382 | Mike Muzurakis | cache: false, |
332 | 1a49199e | Dimitris Moraitis | url: uri,
|
333 | 42f67a2a | Dimitris Moraitis | type: "GET", |
334 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
335 | 42f67a2a | Dimitris Moraitis | dataType: "json", |
336 | 146b6003 | Dimitris Moraitis | error: function(jqXHR, textStatus, errorThrown) { |
337 | f533f224 | Vangelis Koukis | // as for now, just show an error message
|
338 | f533f224 | Vangelis Koukis | try {
|
339 | f533f224 | Vangelis Koukis | console.info('update_network names errback:' + jqXHR.status )
|
340 | f533f224 | Vangelis Koukis | } catch(err) {}
|
341 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Update network names', jqXHR.responseText); |
342 | f533f224 | Vangelis Koukis | return false; |
343 | f533f224 | Vangelis Koukis | }, |
344 | 1a49199e | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
345 | e6561111 | Mike Muzurakis | // create changes_since string if necessary
|
346 | e6561111 | Mike Muzurakis | if (jqXHR.getResponseHeader('Date') != null){ |
347 | f533f224 | Vangelis Koukis | changes_since_date = new Date(jqXHR.getResponseHeader('Date')); |
348 | f533f224 | Vangelis Koukis | networks_changes_since = ISODateString(changes_since_date); |
349 | f533f224 | Vangelis Koukis | } |
350 | f533f224 | Vangelis Koukis | |
351 | f533f224 | Vangelis Koukis | if (jqXHR.status == 200 || jqXHR.status == 203) { |
352 | f533f224 | Vangelis Koukis | try {
|
353 | f533f224 | Vangelis Koukis | networks = data.networks.values; |
354 | f533f224 | Vangelis Koukis | } catch(err) {
|
355 | f533f224 | Vangelis Koukis | ajax_error('400', undefined, 'Update network names', jqXHR.responseText); |
356 | f533f224 | Vangelis Koukis | } |
357 | f533f224 | Vangelis Koukis | update_networks_view(servers_data, data); |
358 | f533f224 | Vangelis Koukis | } else if (jqXHR.status == 304) { |
359 | f533f224 | Vangelis Koukis | update_networks_view(servers_data); |
360 | f533f224 | Vangelis Koukis | } else if (jqXHR.status != 304){ |
361 | f533f224 | Vangelis Koukis | try { console.info('update_network_names callback:' + jqXHR.status ) } catch(err) {} |
362 | f533f224 | Vangelis Koukis | /*
|
363 | f533f224 | Vangelis Koukis | FIXME: Here it should return the error, however Opera does not support 304.
|
364 | f533f224 | Vangelis Koukis | Instead 304 it returns 0. To dealt with this we treat 0 as an
|
365 | f533f224 | Vangelis Koukis | 304, which should be corrected (Bug #317).
|
366 | f533f224 | Vangelis Koukis | */
|
367 | f533f224 | Vangelis Koukis | //ajax_error(jqXHR.status, undefined, 'Update network names', jqXHR.responseText);
|
368 | f533f224 | Vangelis Koukis | update_networks_view(servers_data); |
369 | f533f224 | Vangelis Koukis | } |
370 | f533f224 | Vangelis Koukis | return false; |
371 | 42f67a2a | Dimitris Moraitis | } |
372 | 42f67a2a | Dimitris Moraitis | }); |
373 | 42f67a2a | Dimitris Moraitis | return false; |
374 | 42f67a2a | Dimitris Moraitis | } |
375 | 42f67a2a | Dimitris Moraitis | |
376 | 146b6003 | Dimitris Moraitis | // get and show a list of available standard and custom images
|
377 | b02144c8 | Vangelis Koukis | function update_images() { |
378 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
379 | 73c2c75b | Markos Gogoulos | url: API_URL + '/images/detail', |
380 | 42f67a2a | Dimitris Moraitis | type: "GET", |
381 | 42f67a2a | Dimitris Moraitis | //async: false,
|
382 | 42f67a2a | Dimitris Moraitis | dataType: "json", |
383 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
384 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
385 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, undefined, 'Update Images', jqXHR.responseText); |
386 | 42f67a2a | Dimitris Moraitis | }, |
387 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
388 | 146b6003 | Dimitris Moraitis | try {
|
389 | f533f224 | Vangelis Koukis | images = data.images.values; |
390 | f533f224 | Vangelis Koukis | update_wizard_images(); |
391 | f533f224 | Vangelis Koukis | } catch(err){
|
392 | f533f224 | Vangelis Koukis | ajax_error("NO_IMAGES");
|
393 | f533f224 | Vangelis Koukis | } |
394 | 42f67a2a | Dimitris Moraitis | } |
395 | 42f67a2a | Dimitris Moraitis | }); |
396 | 42f67a2a | Dimitris Moraitis | return false; |
397 | 42f67a2a | Dimitris Moraitis | } |
398 | 42f67a2a | Dimitris Moraitis | |
399 | d134b632 | Dimitris Moraitis | function update_wizard_images() { |
400 | f533f224 | Vangelis Koukis | if ($("ul#standard-images li").toArray().length + $("ul#custom-images li").toArray().length == 0) { |
401 | f533f224 | Vangelis Koukis | $.each(images, function(i,image){ |
402 | f533f224 | Vangelis Koukis | var img = $('#image-template').clone().attr("id","img-"+image.id).fadeIn("slow"); |
403 | f533f224 | Vangelis Koukis | img.find("label").attr('for',"img-radio-" + image.id); |
404 | f533f224 | Vangelis Koukis | img.find(".image-title").text(image.name);
|
405 | 73c2c75b | Markos Gogoulos | if (image.metadata) {
|
406 | 73c2c75b | Markos Gogoulos | if (image.metadata.values.description != undefined) { |
407 | 73c2c75b | Markos Gogoulos | img.find(".description").text(image.metadata.values.description);
|
408 | 73c2c75b | Markos Gogoulos | } |
409 | 73c2c75b | Markos Gogoulos | if (image.metadata.values.size != undefined) { |
410 | f533f224 | Vangelis Koukis | img.find("#size").text(image.metadata.values.size);
|
411 | 73c2c75b | Markos Gogoulos | } |
412 | 73c2c75b | Markos Gogoulos | } |
413 | f533f224 | Vangelis Koukis | img.find("input.radio").attr('id',"img-radio-" + image.id); |
414 | f533f224 | Vangelis Koukis | if (i==0) img.find("input.radio").attr("checked","checked"); |
415 | a64e74f0 | Markos Gogoulos | var image_logo = os_icon(image.metadata);
|
416 | f533f224 | Vangelis Koukis | img.find("img.image-logo").attr('src','static/icons/os/'+image_logo+'.png'); |
417 | 73c2c75b | Markos Gogoulos | if (image.metadata) {
|
418 | 73c2c75b | Markos Gogoulos | if (image.metadata.values.serverId != undefined) { |
419 | 73c2c75b | Markos Gogoulos | img.appendTo("ul#custom-images");
|
420 | 73c2c75b | Markos Gogoulos | } else {
|
421 | 73c2c75b | Markos Gogoulos | img.appendTo("ul#standard-images");
|
422 | 73c2c75b | Markos Gogoulos | } |
423 | 73c2c75b | Markos Gogoulos | } else {
|
424 | 73c2c75b | Markos Gogoulos | img.appendTo("ul#standard-images");
|
425 | 73c2c75b | Markos Gogoulos | } |
426 | f533f224 | Vangelis Koukis | }); |
427 | f533f224 | Vangelis Koukis | } |
428 | d134b632 | Dimitris Moraitis | } |
429 | d134b632 | Dimitris Moraitis | |
430 | d134b632 | Dimitris Moraitis | function update_wizard_flavors(){ |
431 | f533f224 | Vangelis Koukis | // sliders for selecting VM flavor
|
432 | f533f224 | Vangelis Koukis | $("#cpu:range").rangeinput({min:0, |
433 | f533f224 | Vangelis Koukis | value:0, |
434 | f533f224 | Vangelis Koukis | step:1, |
435 | f533f224 | Vangelis Koukis | progress: true, |
436 | f533f224 | Vangelis Koukis | max:cpus.length-1}); |
437 | f533f224 | Vangelis Koukis | |
438 | f533f224 | Vangelis Koukis | $("#storage:range").rangeinput({min:0, |
439 | f533f224 | Vangelis Koukis | value:0, |
440 | f533f224 | Vangelis Koukis | step:1, |
441 | f533f224 | Vangelis Koukis | progress: true, |
442 | f533f224 | Vangelis Koukis | max:disks.length-1}); |
443 | f533f224 | Vangelis Koukis | |
444 | f533f224 | Vangelis Koukis | $("#ram:range").rangeinput({min:0, |
445 | f533f224 | Vangelis Koukis | value:0, |
446 | f533f224 | Vangelis Koukis | step:1, |
447 | f533f224 | Vangelis Koukis | progress: true, |
448 | f533f224 | Vangelis Koukis | max:ram.length-1}); |
449 | f533f224 | Vangelis Koukis | $("#small").click(); |
450 | f533f224 | Vangelis Koukis | |
451 | f533f224 | Vangelis Koukis | // update the indicators when sliding
|
452 | f533f224 | Vangelis Koukis | $("#cpu:range").data().rangeinput.onSlide(function(event,value){ |
453 | f533f224 | Vangelis Koukis | $("#cpu-indicator")[0].value = cpus[Number(value)]; |
454 | afa2ebd2 | Mike Muzurakis | $("#cpu-indicator").addClass('selectedrange'); |
455 | f533f224 | Vangelis Koukis | }); |
456 | f533f224 | Vangelis Koukis | $("#cpu:range").data().rangeinput.change(function(event,value){ |
457 | f533f224 | Vangelis Koukis | $("#cpu-indicator")[0].value = cpus[Number(value)]; |
458 | f533f224 | Vangelis Koukis | $("#custom").click(); |
459 | f533f224 | Vangelis Koukis | $("#cpu-indicator").removeClass('selectedrange'); |
460 | f533f224 | Vangelis Koukis | }); |
461 | f533f224 | Vangelis Koukis | $("#ram:range").data().rangeinput.onSlide(function(event,value){ |
462 | f533f224 | Vangelis Koukis | $("#ram-indicator")[0].value = ram[Number(value)]; |
463 | afa2ebd2 | Mike Muzurakis | $("#ram-indicator").addClass('selectedrange'); |
464 | f533f224 | Vangelis Koukis | }); |
465 | f533f224 | Vangelis Koukis | $("#ram:range").data().rangeinput.change(function(event,value){ |
466 | f533f224 | Vangelis Koukis | $("#ram-indicator")[0].value = ram[Number(value)]; |
467 | f533f224 | Vangelis Koukis | $("#custom").click(); |
468 | f533f224 | Vangelis Koukis | $("#ram-indicator").removeClass('selectedrange'); |
469 | f533f224 | Vangelis Koukis | }); |
470 | f533f224 | Vangelis Koukis | $("#storage:range").data().rangeinput.onSlide(function(event,value){ |
471 | f533f224 | Vangelis Koukis | $("#storage-indicator")[0].value = disks[Number(value)]; |
472 | afa2ebd2 | Mike Muzurakis | $("#storage-indicator").addClass('selectedrange'); |
473 | f533f224 | Vangelis Koukis | }); |
474 | f533f224 | Vangelis Koukis | $("#storage:range").data().rangeinput.change(function(event,value){ |
475 | f533f224 | Vangelis Koukis | $("#storage-indicator")[0].value = disks[Number(value)]; |
476 | f533f224 | Vangelis Koukis | $("#custom").click(); |
477 | f533f224 | Vangelis Koukis | $("#storage-indicator").removeClass('selectedrange'); |
478 | f533f224 | Vangelis Koukis | }); |
479 | d134b632 | Dimitris Moraitis | } |
480 | d134b632 | Dimitris Moraitis | |
481 | 42f67a2a | Dimitris Moraitis | Array.prototype.unique = function () { |
482 | f533f224 | Vangelis Koukis | var r = new Array(); |
483 | f533f224 | Vangelis Koukis | o:for(var i = 0, n = this.length; i < n; i++) |
484 | f533f224 | Vangelis Koukis | { |
485 | f533f224 | Vangelis Koukis | for(var x = 0, y = r.length; x < y; x++) |
486 | f533f224 | Vangelis Koukis | { |
487 | f533f224 | Vangelis Koukis | if(r[x]==this[i]) |
488 | f533f224 | Vangelis Koukis | { |
489 | f533f224 | Vangelis Koukis | continue o;
|
490 | f533f224 | Vangelis Koukis | } |
491 | f533f224 | Vangelis Koukis | } |
492 | f533f224 | Vangelis Koukis | r[r.length] = this[i];
|
493 | f533f224 | Vangelis Koukis | } |
494 | f533f224 | Vangelis Koukis | return r;
|
495 | 42f67a2a | Dimitris Moraitis | } |
496 | 42f67a2a | Dimitris Moraitis | |
497 | 42f67a2a | Dimitris Moraitis | // get and configure flavor selection
|
498 | b02144c8 | Vangelis Koukis | function update_flavors() { |
499 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
500 | f1641e4d | Markos Gogoulos | url: API_URL + '/flavors/detail', |
501 | 42f67a2a | Dimitris Moraitis | type: "GET", |
502 | 42f67a2a | Dimitris Moraitis | //async: false,
|
503 | 42f67a2a | Dimitris Moraitis | dataType: "json", |
504 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
505 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
506 | 146b6003 | Dimitris Moraitis | try {
|
507 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Update Flavors', jqXHR.responseText); |
508 | f533f224 | Vangelis Koukis | } catch (err) {
|
509 | f533f224 | Vangelis Koukis | ajax_error(err); |
510 | f533f224 | Vangelis Koukis | } |
511 | 66307c9e | Christodoulos Psaltis | // start updating vm list
|
512 | 66307c9e | Christodoulos Psaltis | update_vms(UPDATE_INTERVAL); |
513 | 42f67a2a | Dimitris Moraitis | }, |
514 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
515 | f1641e4d | Markos Gogoulos | flavors = data.flavors.values; |
516 | 42f67a2a | Dimitris Moraitis | $.each(flavors, function(i, flavor) { |
517 | 42f67a2a | Dimitris Moraitis | cpus[i] = flavor['cpu'];
|
518 | 42f67a2a | Dimitris Moraitis | disks[i] = flavor['disk'];
|
519 | 42f67a2a | Dimitris Moraitis | ram[i] = flavor['ram'];
|
520 | 42f67a2a | Dimitris Moraitis | }); |
521 | 42f67a2a | Dimitris Moraitis | cpus = cpus.unique(); |
522 | 42f67a2a | Dimitris Moraitis | disks = disks.unique(); |
523 | 42f67a2a | Dimitris Moraitis | ram = ram.unique(); |
524 | f533f224 | Vangelis Koukis | update_wizard_flavors(); |
525 | 66307c9e | Christodoulos Psaltis | // start updating vm list
|
526 | 66307c9e | Christodoulos Psaltis | update_vms(UPDATE_INTERVAL); |
527 | 42f67a2a | Dimitris Moraitis | } |
528 | 42f67a2a | Dimitris Moraitis | }); |
529 | 42f67a2a | Dimitris Moraitis | return false; |
530 | 42f67a2a | Dimitris Moraitis | } |
531 | 1a49199e | Dimitris Moraitis | |
532 | b335768e | Markos Gogoulos | // return flavorRef from cpu, disk, ram values
|
533 | 42f67a2a | Dimitris Moraitis | function identify_flavor(cpu, disk, ram){ |
534 | 42f67a2a | Dimitris Moraitis | for (i=0;i<flavors.length;i++){ |
535 | 42f67a2a | Dimitris Moraitis | if (flavors[i]['cpu'] == cpu && flavors[i]['disk']==disk && flavors[i]['ram']==ram) { |
536 | 42f67a2a | Dimitris Moraitis | return flavors[i]['id'] |
537 | 42f67a2a | Dimitris Moraitis | } |
538 | 42f67a2a | Dimitris Moraitis | } |
539 | 42f67a2a | Dimitris Moraitis | return 0; |
540 | 42f67a2a | Dimitris Moraitis | } |
541 | 42f67a2a | Dimitris Moraitis | |
542 | 45ab204d | Markos Gogoulos | // return image entry from imageRef
|
543 | 45ab204d | Markos Gogoulos | function get_image(imageRef) { |
544 | 45ab204d | Markos Gogoulos | for (i=0;i<images.length;i++){ |
545 | 45ab204d | Markos Gogoulos | if (images[i]['id'] == imageRef) { |
546 | 45ab204d | Markos Gogoulos | return images[i];
|
547 | 45ab204d | Markos Gogoulos | } |
548 | 45ab204d | Markos Gogoulos | } |
549 | 45ab204d | Markos Gogoulos | return 0; |
550 | 45ab204d | Markos Gogoulos | } |
551 | 45ab204d | Markos Gogoulos | |
552 | f533f224 | Vangelis Koukis | // return machine entry from serverID
|
553 | f533f224 | Vangelis Koukis | function get_machine(serverID) { |
554 | f533f224 | Vangelis Koukis | for (i=0;i<servers.length;i++){ |
555 | f533f224 | Vangelis Koukis | if (servers[i]['id'] == serverID) { |
556 | f533f224 | Vangelis Koukis | return servers[i];
|
557 | f533f224 | Vangelis Koukis | } |
558 | f533f224 | Vangelis Koukis | } |
559 | f533f224 | Vangelis Koukis | return 0; |
560 | f533f224 | Vangelis Koukis | } |
561 | f533f224 | Vangelis Koukis | |
562 | f533f224 | Vangelis Koukis | // update the actions in icon view, per server
|
563 | f533f224 | Vangelis Koukis | function update_iconview_actions(serverID, server_status) { |
564 | f533f224 | Vangelis Koukis | // remove .disable from all actions to begin with
|
565 | f533f224 | Vangelis Koukis | $('#machinesview-icon.standard #' + serverID + ' div.actions').children().removeClass('disabled'); |
566 | f533f224 | Vangelis Koukis | // decide which actions should be disabled
|
567 | f533f224 | Vangelis Koukis | for (current_action in actions) { |
568 | f533f224 | Vangelis Koukis | if (actions[current_action].indexOf(server_status) == -1 ) { |
569 | f533f224 | Vangelis Koukis | $('#machinesview-icon.standard #' + serverID + ' a.action-' + current_action).addClass('disabled'); |
570 | f533f224 | Vangelis Koukis | } |
571 | f533f224 | Vangelis Koukis | } |
572 | f533f224 | Vangelis Koukis | } |
573 | f533f224 | Vangelis Koukis | |
574 | dcf153ce | Christodoulos Psaltis | // update the actions in list view
|
575 | f533f224 | Vangelis Koukis | function update_listview_actions() { |
576 | f533f224 | Vangelis Koukis | var states = [];
|
577 | f533f224 | Vangelis Koukis | var on = [];
|
578 | f533f224 | Vangelis Koukis | var checked = $("table.list-machines tbody input[type='checkbox']:checked"); |
579 | f533f224 | Vangelis Koukis | // disable all actions to begin with
|
580 | f533f224 | Vangelis Koukis | $('#machinesview .list div.actions').children().removeClass('enabled'); |
581 | f533f224 | Vangelis Koukis | |
582 | f533f224 | Vangelis Koukis | // are there multiple machines selected?
|
583 | f533f224 | Vangelis Koukis | if (checked.length>1) |
584 | f533f224 | Vangelis Koukis | states[0] = 'multiple'; |
585 | f533f224 | Vangelis Koukis | |
586 | f533f224 | Vangelis Koukis | // check the states of selected machines
|
587 | f533f224 | Vangelis Koukis | checked.each(function(i,checkbox) {
|
588 | f533f224 | Vangelis Koukis | states[states.length] = checkbox.className; |
589 | f533f224 | Vangelis Koukis | var ip = $("#" + checkbox.id.replace('input-','') + ".ip span.public").text(); |
590 | f533f224 | Vangelis Koukis | if (ip.replace('undefined','').length) |
591 | f533f224 | Vangelis Koukis | states[states.length] = 'network';
|
592 | f533f224 | Vangelis Koukis | }); |
593 | f533f224 | Vangelis Koukis | |
594 | f533f224 | Vangelis Koukis | // decide which actions should be enabled
|
595 | f533f224 | Vangelis Koukis | for (a in actions) { |
596 | f533f224 | Vangelis Koukis | var enabled = false; |
597 | f533f224 | Vangelis Koukis | for (var s =0; s<states.length; s++) { |
598 | f533f224 | Vangelis Koukis | if (actions[a].indexOf(states[s]) != -1 ) { |
599 | f533f224 | Vangelis Koukis | enabled = true;
|
600 | f533f224 | Vangelis Koukis | } else {
|
601 | f533f224 | Vangelis Koukis | enabled = false;
|
602 | f533f224 | Vangelis Koukis | break;
|
603 | f533f224 | Vangelis Koukis | } |
604 | f533f224 | Vangelis Koukis | } |
605 | f533f224 | Vangelis Koukis | if (enabled)
|
606 | f533f224 | Vangelis Koukis | on[on.length]=a; |
607 | f533f224 | Vangelis Koukis | } |
608 | f533f224 | Vangelis Koukis | // enable those actions
|
609 | f533f224 | Vangelis Koukis | for (action in on) { |
610 | f533f224 | Vangelis Koukis | $("#action-" + on[action]).addClass('enabled'); |
611 | f533f224 | Vangelis Koukis | } |
612 | e32c2a5d | Dimitris Moraitis | } |
613 | 146b6003 | Dimitris Moraitis | |
614 | 0971fa71 | Markos Gogoulos | //create server action
|
615 | 0971fa71 | Markos Gogoulos | function create_vm(machineName, imageRef, flavorRef){ |
616 | 45ab204d | Markos Gogoulos | var image_logo = os_icon(get_image(imageRef).metadata);
|
617 | f533f224 | Vangelis Koukis | var uri = API_URL + '/servers'; |
618 | 0971fa71 | Markos Gogoulos | var payload = {
|
619 | 0971fa71 | Markos Gogoulos | "server": {
|
620 | 0971fa71 | Markos Gogoulos | "name": machineName,
|
621 | 0971fa71 | Markos Gogoulos | "imageRef": imageRef,
|
622 | 0971fa71 | Markos Gogoulos | "flavorRef" : flavorRef,
|
623 | 0971fa71 | Markos Gogoulos | "metadata" : {
|
624 | 45ab204d | Markos Gogoulos | "OS" : image_logo
|
625 | 038383b1 | Dimitris Moraitis | } |
626 | 0971fa71 | Markos Gogoulos | } |
627 | 0971fa71 | Markos Gogoulos | }; |
628 | 0971fa71 | Markos Gogoulos | |
629 | 0971fa71 | Markos Gogoulos | $.ajax({
|
630 | 7e45ddef | Dimitris Moraitis | url: uri,
|
631 | 0971fa71 | Markos Gogoulos | type: "POST", |
632 | f533f224 | Vangelis Koukis | contentType: "application/json", |
633 | b02144c8 | Vangelis Koukis | dataType: "json", |
634 | 0971fa71 | Markos Gogoulos | data: JSON.stringify(payload),
|
635 | 0971fa71 | Markos Gogoulos | timeout: TIMEOUT,
|
636 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
637 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, undefined, 'Create VM', jqXHR.responseText); |
638 | 0971fa71 | Markos Gogoulos | }, |
639 | 0971fa71 | Markos Gogoulos | success: function(data, textStatus, jqXHR) { |
640 | 0971fa71 | Markos Gogoulos | if ( jqXHR.status == '202') { |
641 | b02144c8 | Vangelis Koukis | ajax_success("CREATE_VM_SUCCESS", data.server.adminPass);
|
642 | 0971fa71 | Markos Gogoulos | } else {
|
643 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, undefined, 'Create VM', jqXHR.responseText); |
644 | 0971fa71 | Markos Gogoulos | } |
645 | 0971fa71 | Markos Gogoulos | } |
646 | 0971fa71 | Markos Gogoulos | }); |
647 | 0971fa71 | Markos Gogoulos | } |
648 | 0971fa71 | Markos Gogoulos | |
649 | 42f67a2a | Dimitris Moraitis | // reboot action
|
650 | 42f67a2a | Dimitris Moraitis | function reboot(serverIDs){ |
651 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
652 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
653 | f533f224 | Vangelis Koukis | return false; |
654 | f533f224 | Vangelis Koukis | } |
655 | 42f67a2a | Dimitris Moraitis | // ajax post reboot call
|
656 | 42f67a2a | Dimitris Moraitis | var payload = {
|
657 | 42f67a2a | Dimitris Moraitis | "reboot": {"type" : "HARD"} |
658 | 42f67a2a | Dimitris Moraitis | }; |
659 | f533f224 | Vangelis Koukis | |
660 | a1a31201 | Dimitris Moraitis | var serverID = serverIDs.pop();
|
661 | f533f224 | Vangelis Koukis | |
662 | f533f224 | Vangelis Koukis | $.ajax({
|
663 | f533f224 | Vangelis Koukis | url: API_URL + '/servers/' + serverID + '/action', |
664 | f533f224 | Vangelis Koukis | type: "POST", |
665 | f533f224 | Vangelis Koukis | contentType: "application/json", |
666 | f533f224 | Vangelis Koukis | dataType: "json", |
667 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
668 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
669 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
670 | 038383b1 | Dimitris Moraitis | display_failure(jqXHR.status, serverID, 'Reboot', jqXHR.responseText)
|
671 | f533f224 | Vangelis Koukis | }, |
672 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
673 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '202') { |
674 | 583932c4 | Christodoulos Psaltis | try {
|
675 | 583932c4 | Christodoulos Psaltis | console.info('rebooted ' + serverID);
|
676 | a1a31201 | Dimitris Moraitis | } catch(err) {}
|
677 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
678 | f533f224 | Vangelis Koukis | display_success(serverID); |
679 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
680 | f533f224 | Vangelis Koukis | reboot(serverIDs); |
681 | f533f224 | Vangelis Koukis | } else {
|
682 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, serverID, 'Reboot', jqXHR.responseText);
|
683 | f533f224 | Vangelis Koukis | } |
684 | f533f224 | Vangelis Koukis | } |
685 | 42f67a2a | Dimitris Moraitis | }); |
686 | 42f67a2a | Dimitris Moraitis | return false; |
687 | 42f67a2a | Dimitris Moraitis | } |
688 | 42f67a2a | Dimitris Moraitis | |
689 | 42f67a2a | Dimitris Moraitis | // shutdown action
|
690 | 42f67a2a | Dimitris Moraitis | function shutdown(serverIDs) { |
691 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
692 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
693 | f533f224 | Vangelis Koukis | return false; |
694 | f533f224 | Vangelis Koukis | } |
695 | 42f67a2a | Dimitris Moraitis | // ajax post shutdown call
|
696 | 42f67a2a | Dimitris Moraitis | var payload = {
|
697 | 9bc2dbfa | Vangelis Koukis | "shutdown": {}
|
698 | b02144c8 | Vangelis Koukis | }; |
699 | 42f67a2a | Dimitris Moraitis | |
700 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
701 | f533f224 | Vangelis Koukis | |
702 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
703 | f533f224 | Vangelis Koukis | url: API_URL + '/servers/' + serverID + '/action', |
704 | f533f224 | Vangelis Koukis | type: "POST", |
705 | f533f224 | Vangelis Koukis | contentType: "application/json", |
706 | f533f224 | Vangelis Koukis | dataType: "json", |
707 | 42f67a2a | Dimitris Moraitis | data: JSON.stringify(payload),
|
708 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
709 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
710 | 038383b1 | Dimitris Moraitis | display_failure(jqXHR.status, serverID, 'Shutdown', jqXHR.responseText)
|
711 | 42f67a2a | Dimitris Moraitis | }, |
712 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
713 | 42f67a2a | Dimitris Moraitis | if ( jqXHR.status == '202') { |
714 | f533f224 | Vangelis Koukis | try {
|
715 | 583932c4 | Christodoulos Psaltis | console.info('suspended ' + serverID);
|
716 | a1a31201 | Dimitris Moraitis | } catch(err) {}
|
717 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
718 | f533f224 | Vangelis Koukis | display_success(serverID); |
719 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
720 | 42f67a2a | Dimitris Moraitis | shutdown(serverIDs); |
721 | 42f67a2a | Dimitris Moraitis | } else {
|
722 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, serverID, 'Shutdown', jqXHR.responseText);
|
723 | 748139ba | Christodoulos Psaltis | } |
724 | b02144c8 | Vangelis Koukis | } |
725 | 42f67a2a | Dimitris Moraitis | }); |
726 | b02144c8 | Vangelis Koukis | return false; |
727 | 42f67a2a | Dimitris Moraitis | } |
728 | 42f67a2a | Dimitris Moraitis | |
729 | 42f67a2a | Dimitris Moraitis | // destroy action
|
730 | 42f67a2a | Dimitris Moraitis | function destroy(serverIDs) { |
731 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
732 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
733 | f533f224 | Vangelis Koukis | return false; |
734 | f533f224 | Vangelis Koukis | } |
735 | f15025bc | Christodoulos Psaltis | // ajax post destroy call can have an empty request body
|
736 | b02144c8 | Vangelis Koukis | var payload = {};
|
737 | 42f67a2a | Dimitris Moraitis | |
738 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
739 | f533f224 | Vangelis Koukis | |
740 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
741 | f533f224 | Vangelis Koukis | url: API_URL + '/servers/' + serverID, |
742 | f533f224 | Vangelis Koukis | type: "DELETE", |
743 | f533f224 | Vangelis Koukis | contentType: "application/json", |
744 | f533f224 | Vangelis Koukis | dataType: "json", |
745 | 42f67a2a | Dimitris Moraitis | data: JSON.stringify(payload),
|
746 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
747 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
748 | 038383b1 | Dimitris Moraitis | display_failure(jqXHR.status, serverID, 'Destroy', jqXHR.responseText)
|
749 | 42f67a2a | Dimitris Moraitis | }, |
750 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
751 | 2d5cea9b | Markos Gogoulos | if ( jqXHR.status == '204') { |
752 | f533f224 | Vangelis Koukis | try {
|
753 | f15025bc | Christodoulos Psaltis | console.info('destroyed ' + serverID);
|
754 | a1a31201 | Dimitris Moraitis | } catch (err) {}
|
755 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
756 | f533f224 | Vangelis Koukis | display_success(serverID); |
757 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
758 | 38b1f387 | Christodoulos Psaltis | destroy(serverIDs); |
759 | 42f67a2a | Dimitris Moraitis | } else {
|
760 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, serverID, 'Destroy', jqXHR.responseText);
|
761 | 748139ba | Christodoulos Psaltis | } |
762 | b02144c8 | Vangelis Koukis | } |
763 | 42f67a2a | Dimitris Moraitis | }); |
764 | b02144c8 | Vangelis Koukis | return false; |
765 | 42f67a2a | Dimitris Moraitis | } |
766 | 42f67a2a | Dimitris Moraitis | |
767 | 42f67a2a | Dimitris Moraitis | // start action
|
768 | 42f67a2a | Dimitris Moraitis | function start(serverIDs){ |
769 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
770 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
771 | f533f224 | Vangelis Koukis | return false; |
772 | f533f224 | Vangelis Koukis | } |
773 | 42f67a2a | Dimitris Moraitis | // ajax post start call
|
774 | 42f67a2a | Dimitris Moraitis | var payload = {
|
775 | 623d7244 | Vangelis Koukis | "start": {}
|
776 | b02144c8 | Vangelis Koukis | }; |
777 | 42f67a2a | Dimitris Moraitis | |
778 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
779 | f533f224 | Vangelis Koukis | |
780 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
781 | 0971fa71 | Markos Gogoulos | url: API_URL + '/servers/' + serverID + '/action', |
782 | 42f67a2a | Dimitris Moraitis | type: "POST", |
783 | f533f224 | Vangelis Koukis | contentType: "application/json", |
784 | 42f67a2a | Dimitris Moraitis | dataType: "json", |
785 | 42f67a2a | Dimitris Moraitis | data: JSON.stringify(payload),
|
786 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
787 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
788 | 038383b1 | Dimitris Moraitis | display_failure(jqXHR.status, serverID, 'Start', jqXHR.responseText)
|
789 | 42f67a2a | Dimitris Moraitis | }, |
790 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
791 | 42f67a2a | Dimitris Moraitis | if ( jqXHR.status == '202') { |
792 | f533f224 | Vangelis Koukis | try {
|
793 | 583932c4 | Christodoulos Psaltis | console.info('started ' + serverID);
|
794 | a1a31201 | Dimitris Moraitis | } catch(err) {}
|
795 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
796 | f533f224 | Vangelis Koukis | display_success(serverID); |
797 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
798 | 42f67a2a | Dimitris Moraitis | start(serverIDs); |
799 | 42f67a2a | Dimitris Moraitis | } else {
|
800 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, serverID, 'Start', jqXHR.responseText);
|
801 | 748139ba | Christodoulos Psaltis | } |
802 | 748139ba | Christodoulos Psaltis | } |
803 | 42f67a2a | Dimitris Moraitis | }); |
804 | 42f67a2a | Dimitris Moraitis | return false; |
805 | 42f67a2a | Dimitris Moraitis | } |
806 | 6902f72e | clopy | |
807 | b02144c8 | Vangelis Koukis | // Show VNC console
|
808 | b02144c8 | Vangelis Koukis | function vnc_attachment(host, port, password) { |
809 | b02144c8 | Vangelis Koukis | // FIXME: Must be made into parameters, in settings.py
|
810 | b02144c8 | Vangelis Koukis | //vnc = open("", "displayWindow",
|
811 | b02144c8 | Vangelis Koukis | // "status=yes,toolbar=yes,menubar=yes");
|
812 | b02144c8 | Vangelis Koukis | vd = document.open("application/x-vnc");
|
813 | b02144c8 | Vangelis Koukis | |
814 | b02144c8 | Vangelis Koukis | vd.writeln("[connection]");
|
815 | b02144c8 | Vangelis Koukis | vd.writeln("host=" + host);
|
816 | b02144c8 | Vangelis Koukis | vd.writeln("port=" + port);
|
817 | b02144c8 | Vangelis Koukis | vd.writeln("password=" + password);
|
818 | b02144c8 | Vangelis Koukis | |
819 | b02144c8 | Vangelis Koukis | vd.close(); |
820 | b02144c8 | Vangelis Koukis | } |
821 | b02144c8 | Vangelis Koukis | |
822 | b02144c8 | Vangelis Koukis | // Show VNC console
|
823 | f533f224 | Vangelis Koukis | function show_vnc_console(serverID, serverName, serverIP, host, port, password) { |
824 | f533f224 | Vangelis Koukis | var params_url = '?machine=' + serverName + '&host_ip=' + serverIP + '&host=' + host + '&port=' + port + '&password=' + password; |
825 | f533f224 | Vangelis Koukis | var params_window = 'scrollbars=no,' + |
826 | f533f224 | Vangelis Koukis | 'menubar=no,' +
|
827 | f533f224 | Vangelis Koukis | 'toolbar=no,' +
|
828 | f533f224 | Vangelis Koukis | 'status=no,' +
|
829 | f533f224 | Vangelis Koukis | 'top=0,' +
|
830 | f533f224 | Vangelis Koukis | 'left=0,' +
|
831 | f533f224 | Vangelis Koukis | 'height=' + screen.height + ',' + |
832 | f533f224 | Vangelis Koukis | 'width=' + screen.width + ',' + |
833 | f533f224 | Vangelis Koukis | 'fullscreen=yes';
|
834 | f533f224 | Vangelis Koukis | |
835 | 7e51c3db | Markos Gogoulos | window.open('machines/console' + params_url, 'formresult' + serverID, params_window); |
836 | f533f224 | Vangelis Koukis | |
837 | f533f224 | Vangelis Koukis | // Restore os icon in list view
|
838 | f533f224 | Vangelis Koukis | osIcon = $('#'+serverID).parent().parent().find('.list-logo'); |
839 | f533f224 | Vangelis Koukis | osIcon.attr('src',osIcon.attr('os')); |
840 | 9c901aec | Markos Gogoulos | return false; |
841 | b02144c8 | Vangelis Koukis | } |
842 | b02144c8 | Vangelis Koukis | |
843 | b02144c8 | Vangelis Koukis | // console action
|
844 | fb3eec11 | Christodoulos Psaltis | function open_console(serverIDs){ |
845 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
846 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
847 | f533f224 | Vangelis Koukis | return false; |
848 | f533f224 | Vangelis Koukis | } |
849 | b02144c8 | Vangelis Koukis | // ajax post start call
|
850 | b02144c8 | Vangelis Koukis | var payload = {
|
851 | b02144c8 | Vangelis Koukis | "console": {"type": "vnc"} |
852 | b02144c8 | Vangelis Koukis | }; |
853 | b02144c8 | Vangelis Koukis | |
854 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
855 | f533f224 | Vangelis Koukis | |
856 | f533f224 | Vangelis Koukis | var machine = get_machine(serverID);
|
857 | f533f224 | Vangelis Koukis | var serverName = machine.name;
|
858 | f533f224 | Vangelis Koukis | var serverIP = machine.addresses.values[0].values[0].addr; |
859 | f533f224 | Vangelis Koukis | |
860 | b02144c8 | Vangelis Koukis | $.ajax({
|
861 | b02144c8 | Vangelis Koukis | url: API_URL + '/servers/' + serverID + '/action', |
862 | b02144c8 | Vangelis Koukis | type: "POST", |
863 | f533f224 | Vangelis Koukis | contentType: "application/json", |
864 | b02144c8 | Vangelis Koukis | dataType: "json", |
865 | b02144c8 | Vangelis Koukis | data: JSON.stringify(payload),
|
866 | b02144c8 | Vangelis Koukis | timeout: TIMEOUT,
|
867 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
868 | b02144c8 | Vangelis Koukis | display_failure(jqXHR.status, serverID, 'Console', jqXHR.responseText)
|
869 | b02144c8 | Vangelis Koukis | }, |
870 | b02144c8 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
871 | b02144c8 | Vangelis Koukis | if ( jqXHR.status == '200') { |
872 | f533f224 | Vangelis Koukis | try {
|
873 | b02144c8 | Vangelis Koukis | console.info('got_console ' + serverID);
|
874 | b02144c8 | Vangelis Koukis | } catch(err) {}
|
875 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
876 | f533f224 | Vangelis Koukis | //show_vnc_console(serverID, serverName, serverIP, data.console.host,data.console.port,data.console.password);
|
877 | f533f224 | Vangelis Koukis | show_vnc_console(serverID, serverName, serverIP, data.console.host,data.console.port,data.console.password); |
878 | f533f224 | Vangelis Koukis | display_success(serverID); |
879 | 74175c17 | Christodoulos Psaltis | // hide spinner
|
880 | 74175c17 | Christodoulos Psaltis | $('#' + serverID + ' .spinner').hide(); |
881 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
882 | 74175c17 | Christodoulos Psaltis | open_console(serverIDs); |
883 | b02144c8 | Vangelis Koukis | } else {
|
884 | b02144c8 | Vangelis Koukis | ajax_error(jqXHR.status, serverID, 'Console', jqXHR.responseText);
|
885 | b02144c8 | Vangelis Koukis | } |
886 | b02144c8 | Vangelis Koukis | } |
887 | b02144c8 | Vangelis Koukis | }); |
888 | b02144c8 | Vangelis Koukis | return false; |
889 | b02144c8 | Vangelis Koukis | } |
890 | b02144c8 | Vangelis Koukis | |
891 | f533f224 | Vangelis Koukis | // rename server
|
892 | a70a9116 | Mike Muzurakis | function rename(serverID, serverName){ |
893 | f533f224 | Vangelis Koukis | if (!serverID.length){
|
894 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
895 | f533f224 | Vangelis Koukis | return false; |
896 | f533f224 | Vangelis Koukis | } |
897 | 0d4faeb8 | Mike Muzurakis | // ajax post rename call
|
898 | 0d4faeb8 | Mike Muzurakis | var payload = {
|
899 | 73715544 | Christodoulos Psaltis | "server": {"name": serverName} |
900 | b02144c8 | Vangelis Koukis | }; |
901 | 0d4faeb8 | Mike Muzurakis | |
902 | 0d4faeb8 | Mike Muzurakis | $.ajax({
|
903 | 5b35631e | Markos Gogoulos | url: API_URL + '/servers/' + serverID, |
904 | a70a9116 | Mike Muzurakis | type: "PUT", |
905 | f533f224 | Vangelis Koukis | contentType: "application/json", |
906 | 0d4faeb8 | Mike Muzurakis | dataType: "json", |
907 | 0d4faeb8 | Mike Muzurakis | data: JSON.stringify(payload),
|
908 | 0d4faeb8 | Mike Muzurakis | timeout: TIMEOUT,
|
909 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
910 | 0d4faeb8 | Mike Muzurakis | display_failure(jqXHR.status, serverID, 'Rename', jqXHR.responseText)
|
911 | 0d4faeb8 | Mike Muzurakis | }, |
912 | 0d4faeb8 | Mike Muzurakis | success: function(data, textStatus, jqXHR) { |
913 | 853c53ea | Markos Gogoulos | if ( jqXHR.status == '204') { |
914 | f533f224 | Vangelis Koukis | try {
|
915 | 0d4faeb8 | Mike Muzurakis | console.info('renamed ' + serverID);
|
916 | 0d4faeb8 | Mike Muzurakis | } catch(err) {}
|
917 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
918 | f533f224 | Vangelis Koukis | display_success(serverID); |
919 | 0d4faeb8 | Mike Muzurakis | } else {
|
920 | 0d4faeb8 | Mike Muzurakis | ajax_error(jqXHR.status, serverID, 'Rename', jqXHR.responseText);
|
921 | 0d4faeb8 | Mike Muzurakis | } |
922 | 0d4faeb8 | Mike Muzurakis | } |
923 | 0d4faeb8 | Mike Muzurakis | }); |
924 | 0d4faeb8 | Mike Muzurakis | return false; |
925 | 0d4faeb8 | Mike Muzurakis | } |
926 | 0d4faeb8 | Mike Muzurakis | |
927 | 5186eb04 | Christodoulos Psaltis | // get server metadata
|
928 | f533f224 | Vangelis Koukis | function get_metadata(serverID, keys_only) { |
929 | 5186eb04 | Christodoulos Psaltis | $.ajax({
|
930 | 5186eb04 | Christodoulos Psaltis | url: API_URL + '/servers/' + serverID + '/meta', |
931 | 5186eb04 | Christodoulos Psaltis | type: "GET", |
932 | 5186eb04 | Christodoulos Psaltis | //async: false,
|
933 | 5186eb04 | Christodoulos Psaltis | dataType: "json", |
934 | 5186eb04 | Christodoulos Psaltis | timeout: TIMEOUT,
|
935 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
936 | 5186eb04 | Christodoulos Psaltis | try {
|
937 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Get metadata', jqXHR.responseText); |
938 | f533f224 | Vangelis Koukis | } catch (err) {
|
939 | f533f224 | Vangelis Koukis | ajax_error(err); |
940 | f533f224 | Vangelis Koukis | } |
941 | 5186eb04 | Christodoulos Psaltis | }, |
942 | 5186eb04 | Christodoulos Psaltis | success: function(data, textStatus, jqXHR) { |
943 | 1b3857ab | Christodoulos Psaltis | // to list the new results in the edit dialog
|
944 | f533f224 | Vangelis Koukis | if (keys_only) {
|
945 | f533f224 | Vangelis Koukis | list_metadata_keys(serverID, data.metadata.values); |
946 | f533f224 | Vangelis Koukis | } else {
|
947 | f533f224 | Vangelis Koukis | list_metadata(data); |
948 | f533f224 | Vangelis Koukis | list_metadata_keys(serverID, data.metadata.values); |
949 | f533f224 | Vangelis Koukis | } |
950 | f533f224 | Vangelis Koukis | //hide spinner
|
951 | f533f224 | Vangelis Koukis | $('#metadata-wizard .large-spinner').hide(); |
952 | 5186eb04 | Christodoulos Psaltis | } |
953 | 5186eb04 | Christodoulos Psaltis | }); |
954 | 5186eb04 | Christodoulos Psaltis | return false; |
955 | 5186eb04 | Christodoulos Psaltis | } |
956 | 5186eb04 | Christodoulos Psaltis | |
957 | 1b3857ab | Christodoulos Psaltis | // delete metadata key-value pair
|
958 | 1b3857ab | Christodoulos Psaltis | function delete_metadata(serverID, meta_key) { |
959 | 0943cc77 | Markos Gogoulos | $.ajax({
|
960 | 0943cc77 | Markos Gogoulos | url: API_URL + '/servers/' + serverID + '/meta/' + meta_key, |
961 | 0943cc77 | Markos Gogoulos | type: "DELETE", |
962 | 0943cc77 | Markos Gogoulos | //async: false,
|
963 | 0943cc77 | Markos Gogoulos | dataType: "json", |
964 | 0943cc77 | Markos Gogoulos | timeout: TIMEOUT,
|
965 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
966 | 0943cc77 | Markos Gogoulos | try {
|
967 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Delete metadata', jqXHR.responseText); |
968 | f533f224 | Vangelis Koukis | } catch (err) {
|
969 | f533f224 | Vangelis Koukis | ajax_error(err); |
970 | f533f224 | Vangelis Koukis | } |
971 | 0943cc77 | Markos Gogoulos | }, |
972 | 0943cc77 | Markos Gogoulos | success: function(data, textStatus, jqXHR) { |
973 | f533f224 | Vangelis Koukis | // success: Do nothing, the UI is already updated
|
974 | 0943cc77 | Markos Gogoulos | } |
975 | 0943cc77 | Markos Gogoulos | }); |
976 | 0943cc77 | Markos Gogoulos | return false; |
977 | 0943cc77 | Markos Gogoulos | } |
978 | 0943cc77 | Markos Gogoulos | |
979 | 1b3857ab | Christodoulos Psaltis | // add metadata key-value pair
|
980 | f533f224 | Vangelis Koukis | function update_metadata(serverID, meta_key, meta_value) { |
981 | 0c578a28 | Markos Gogoulos | var payload = {
|
982 | 0c578a28 | Markos Gogoulos | "meta": {
|
983 | 0c578a28 | Markos Gogoulos | } |
984 | 0c578a28 | Markos Gogoulos | }; |
985 | 0c578a28 | Markos Gogoulos | payload["meta"][meta_key] = meta_value;
|
986 | 0c578a28 | Markos Gogoulos | |
987 | 0c578a28 | Markos Gogoulos | $.ajax({
|
988 | 0c578a28 | Markos Gogoulos | url: API_URL + '/servers/' + serverID + '/meta/' + meta_key, |
989 | 0c578a28 | Markos Gogoulos | type: "PUT", |
990 | f533f224 | Vangelis Koukis | contentType: "application/json", |
991 | f533f224 | Vangelis Koukis | dataType: "json", |
992 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
993 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
994 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
995 | f533f224 | Vangelis Koukis | try {
|
996 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'add metadata', jqXHR.responseText); |
997 | f533f224 | Vangelis Koukis | } catch (err) {
|
998 | f533f224 | Vangelis Koukis | ajax_error(err); |
999 | f533f224 | Vangelis Koukis | } |
1000 | f533f224 | Vangelis Koukis | }, |
1001 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1002 | f533f224 | Vangelis Koukis | // success: Update icons if meta key is OS
|
1003 | f533f224 | Vangelis Koukis | if (meta_key == "OS") { |
1004 | f533f224 | Vangelis Koukis | $("#metadata-wizard .machine-icon").attr("src","static/icons/machines/small/" + os_icon_from_value(meta_value) + '-' + $("#metadata-wizard div#on-off").text() + '.png'); |
1005 | f533f224 | Vangelis Koukis | $("#machinesview-icon").find("div#" + serverID).find("img.logo").attr("src", "static/icons/machines/medium/" + os_icon_from_value(meta_value) + '-' + $("#metadata-wizard div#on-off").text() + '.png'); |
1006 | f533f224 | Vangelis Koukis | } |
1007 | f533f224 | Vangelis Koukis | } |
1008 | f533f224 | Vangelis Koukis | }); |
1009 | f533f224 | Vangelis Koukis | return false; |
1010 | f533f224 | Vangelis Koukis | } |
1011 | f533f224 | Vangelis Koukis | |
1012 | f533f224 | Vangelis Koukis | // create network
|
1013 | f533f224 | Vangelis Koukis | function create_network(networkName){ |
1014 | f533f224 | Vangelis Koukis | // ajax post start call
|
1015 | f533f224 | Vangelis Koukis | var payload = {
|
1016 | f533f224 | Vangelis Koukis | "network": { "name": networkName } |
1017 | f533f224 | Vangelis Koukis | }; |
1018 | f533f224 | Vangelis Koukis | |
1019 | f533f224 | Vangelis Koukis | $.ajax({
|
1020 | f533f224 | Vangelis Koukis | url: API_URL + '/networks', |
1021 | f533f224 | Vangelis Koukis | type: "POST", |
1022 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1023 | f533f224 | Vangelis Koukis | dataType: "json", |
1024 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1025 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1026 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1027 | f533f224 | Vangelis Koukis | try {
|
1028 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Create network', jqXHR.responseText); |
1029 | f533f224 | Vangelis Koukis | } catch (err) {
|
1030 | f533f224 | Vangelis Koukis | ajax_error(err); |
1031 | f533f224 | Vangelis Koukis | } |
1032 | f533f224 | Vangelis Koukis | }, |
1033 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1034 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '202') { |
1035 | f533f224 | Vangelis Koukis | try {
|
1036 | f533f224 | Vangelis Koukis | console.info('created network ' + networkName);
|
1037 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1038 | f533f224 | Vangelis Koukis | update_networks(UPDATE_INTERVAL); |
1039 | f533f224 | Vangelis Koukis | $("a#networkscreate").overlay().close(); |
1040 | f533f224 | Vangelis Koukis | } else {
|
1041 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Create network', jqXHR.responseText); |
1042 | f533f224 | Vangelis Koukis | } |
1043 | f533f224 | Vangelis Koukis | } |
1044 | f533f224 | Vangelis Koukis | }); |
1045 | f533f224 | Vangelis Koukis | return false; |
1046 | f533f224 | Vangelis Koukis | } |
1047 | f533f224 | Vangelis Koukis | |
1048 | f533f224 | Vangelis Koukis | // rename network
|
1049 | f533f224 | Vangelis Koukis | function rename_network(networkID, networkName){ |
1050 | f533f224 | Vangelis Koukis | if (!networkID.length){
|
1051 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1052 | f533f224 | Vangelis Koukis | return false; |
1053 | f533f224 | Vangelis Koukis | } |
1054 | f533f224 | Vangelis Koukis | // prepare payload
|
1055 | f533f224 | Vangelis Koukis | var payload = {
|
1056 | f533f224 | Vangelis Koukis | "network": {"name": networkName} |
1057 | f533f224 | Vangelis Koukis | }; |
1058 | f533f224 | Vangelis Koukis | // ajax call
|
1059 | f533f224 | Vangelis Koukis | $.ajax({
|
1060 | f533f224 | Vangelis Koukis | url: API_URL + '/networks/' + networkID, |
1061 | f533f224 | Vangelis Koukis | type: "PUT", |
1062 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1063 | f533f224 | Vangelis Koukis | dataType: "json", |
1064 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1065 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1066 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1067 | f533f224 | Vangelis Koukis | try {
|
1068 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Rename network', jqXHR.responseText); |
1069 | f533f224 | Vangelis Koukis | } catch (err) {
|
1070 | f533f224 | Vangelis Koukis | ajax_error(err); |
1071 | f533f224 | Vangelis Koukis | } |
1072 | f533f224 | Vangelis Koukis | }, |
1073 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1074 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '204') { |
1075 | f533f224 | Vangelis Koukis | try {
|
1076 | f533f224 | Vangelis Koukis | console.info('renamed network' + networkID);
|
1077 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1078 | f533f224 | Vangelis Koukis | } else {
|
1079 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Rename network', jqXHR.responseText); |
1080 | f533f224 | Vangelis Koukis | } |
1081 | f533f224 | Vangelis Koukis | } |
1082 | f533f224 | Vangelis Koukis | }); |
1083 | f533f224 | Vangelis Koukis | return false; |
1084 | f533f224 | Vangelis Koukis | } |
1085 | f533f224 | Vangelis Koukis | |
1086 | f533f224 | Vangelis Koukis | function delete_network(networkIDs){ |
1087 | f533f224 | Vangelis Koukis | if (!networkIDs.length){
|
1088 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1089 | f533f224 | Vangelis Koukis | return false; |
1090 | f533f224 | Vangelis Koukis | } |
1091 | f533f224 | Vangelis Koukis | // get a network
|
1092 | f533f224 | Vangelis Koukis | var networkID = networkIDs.pop();
|
1093 | f533f224 | Vangelis Koukis | // ajax post destroy call can have an empty request body
|
1094 | f533f224 | Vangelis Koukis | var payload = {};
|
1095 | f533f224 | Vangelis Koukis | // ajax call
|
1096 | f533f224 | Vangelis Koukis | $.ajax({
|
1097 | f533f224 | Vangelis Koukis | url: API_URL + '/networks/' + networkID, |
1098 | f533f224 | Vangelis Koukis | type: "DELETE", |
1099 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1100 | f533f224 | Vangelis Koukis | dataType: "json", |
1101 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1102 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1103 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1104 | f533f224 | Vangelis Koukis | try {
|
1105 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Delete network', jqXHR.responseText); |
1106 | f533f224 | Vangelis Koukis | } catch (err) {
|
1107 | f533f224 | Vangelis Koukis | ajax_error(err); |
1108 | f533f224 | Vangelis Koukis | } |
1109 | f533f224 | Vangelis Koukis | }, |
1110 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1111 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '204') { |
1112 | f533f224 | Vangelis Koukis | try {
|
1113 | f533f224 | Vangelis Koukis | console.info('deleted network ' + networkID);
|
1114 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1115 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
1116 | f533f224 | Vangelis Koukis | delete_network(networkIDs); |
1117 | f533f224 | Vangelis Koukis | } else {
|
1118 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Delete network', jqXHR.responseText); |
1119 | f533f224 | Vangelis Koukis | } |
1120 | f533f224 | Vangelis Koukis | } |
1121 | f533f224 | Vangelis Koukis | }); |
1122 | f533f224 | Vangelis Koukis | return false; |
1123 | f533f224 | Vangelis Koukis | } |
1124 | f533f224 | Vangelis Koukis | |
1125 | f533f224 | Vangelis Koukis | function add_server_to_network(networkID, serverIDs) { |
1126 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
1127 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1128 | f533f224 | Vangelis Koukis | update_networks(UPDATE_INTERVAL); |
1129 | f533f224 | Vangelis Koukis | $("a#add-machines-overlay").overlay().close(); |
1130 | f533f224 | Vangelis Koukis | return false; |
1131 | f533f224 | Vangelis Koukis | } |
1132 | f533f224 | Vangelis Koukis | // get a server
|
1133 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
1134 | f533f224 | Vangelis Koukis | // prepare payload
|
1135 | f533f224 | Vangelis Koukis | var payload = {
|
1136 | f533f224 | Vangelis Koukis | "add": { "serverRef": serverID } |
1137 | f533f224 | Vangelis Koukis | }; |
1138 | f533f224 | Vangelis Koukis | // prepare ajax call
|
1139 | f533f224 | Vangelis Koukis | $.ajax({
|
1140 | f533f224 | Vangelis Koukis | url: API_URL + '/networks/' + networkID + '/action', |
1141 | f533f224 | Vangelis Koukis | type: "POST", |
1142 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1143 | b02144c8 | Vangelis Koukis | dataType: "json", |
1144 | 0c578a28 | Markos Gogoulos | data: JSON.stringify(payload),
|
1145 | 0c578a28 | Markos Gogoulos | timeout: TIMEOUT,
|
1146 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1147 | 0c578a28 | Markos Gogoulos | try {
|
1148 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Add server to network', jqXHR.responseText); |
1149 | f533f224 | Vangelis Koukis | } catch (err) {
|
1150 | f533f224 | Vangelis Koukis | ajax_error(err); |
1151 | f533f224 | Vangelis Koukis | } |
1152 | 0c578a28 | Markos Gogoulos | }, |
1153 | 0c578a28 | Markos Gogoulos | success: function(data, textStatus, jqXHR) { |
1154 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '202') { |
1155 | f533f224 | Vangelis Koukis | try {
|
1156 | f533f224 | Vangelis Koukis | console.info('added server ' + serverID + ' to network ' + networkID); |
1157 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1158 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
1159 | f533f224 | Vangelis Koukis | add_server_to_network(networkID, serverIDs); |
1160 | f533f224 | Vangelis Koukis | } else {
|
1161 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Add server to network', jqXHR.responseText); |
1162 | f533f224 | Vangelis Koukis | } |
1163 | 0c578a28 | Markos Gogoulos | } |
1164 | 0c578a28 | Markos Gogoulos | }); |
1165 | 0c578a28 | Markos Gogoulos | return false; |
1166 | 0c578a28 | Markos Gogoulos | } |
1167 | 0c578a28 | Markos Gogoulos | |
1168 | f533f224 | Vangelis Koukis | function remove_server_from_network(networkIDs, serverIDs) { |
1169 | f533f224 | Vangelis Koukis | if (!networkIDs.length){
|
1170 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1171 | f533f224 | Vangelis Koukis | return false; |
1172 | f533f224 | Vangelis Koukis | } |
1173 | f533f224 | Vangelis Koukis | // get a network and a server
|
1174 | f533f224 | Vangelis Koukis | var networkID = networkIDs.pop();
|
1175 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
1176 | f533f224 | Vangelis Koukis | // prepare payload
|
1177 | f533f224 | Vangelis Koukis | var payload = {
|
1178 | f533f224 | Vangelis Koukis | "remove": { "serverRef": serverID } |
1179 | f533f224 | Vangelis Koukis | }; |
1180 | f533f224 | Vangelis Koukis | // prepare ajax call
|
1181 | f533f224 | Vangelis Koukis | $.ajax({
|
1182 | f533f224 | Vangelis Koukis | url: API_URL + '/networks/' + networkID + '/action', |
1183 | f533f224 | Vangelis Koukis | type: "POST", |
1184 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1185 | f533f224 | Vangelis Koukis | dataType: "json", |
1186 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1187 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1188 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1189 | f533f224 | Vangelis Koukis | try {
|
1190 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Remove server form network', jqXHR.responseText); |
1191 | f533f224 | Vangelis Koukis | } catch (err) {
|
1192 | f533f224 | Vangelis Koukis | ajax_error(err); |
1193 | f533f224 | Vangelis Koukis | } |
1194 | f533f224 | Vangelis Koukis | }, |
1195 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1196 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '202') { |
1197 | f533f224 | Vangelis Koukis | try {
|
1198 | f533f224 | Vangelis Koukis | console.info('deleted server ' + serverID + ' from network ' + networkID); |
1199 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1200 | f533f224 | Vangelis Koukis | // remove it from DOM
|
1201 | f533f224 | Vangelis Koukis | $('#net-' + networkID + '-server-' + serverID).fadeOut('slow').remove(); |
1202 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
1203 | f533f224 | Vangelis Koukis | remove_server_form_network(networkIDs, serverIDs); |
1204 | f533f224 | Vangelis Koukis | } else {
|
1205 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Remove server form network', jqXHR.responseText); |
1206 | f533f224 | Vangelis Koukis | } |
1207 | f533f224 | Vangelis Koukis | } |
1208 | f533f224 | Vangelis Koukis | }); |
1209 | f533f224 | Vangelis Koukis | return false; |
1210 | f533f224 | Vangelis Koukis | } |
1211 | 0c578a28 | Markos Gogoulos | |
1212 | 6902f72e | clopy | // show the welcome screen
|
1213 | 6902f72e | clopy | function showWelcome() { |
1214 | f5ebca32 | Mike Muzurakis | $("#view-select").fadeOut("fast"); |
1215 | f5ebca32 | Mike Muzurakis | $("#emptymachineslist").fadeIn("fast"); |
1216 | f0215d6b | Mike Muzurakis | $("#machinesview").hide(); |
1217 | 6902f72e | clopy | } |
1218 | 6902f72e | clopy | |
1219 | 6902f72e | clopy | // hide the welcome screen
|
1220 | 6902f72e | clopy | function hideWelcome() { |
1221 | 6902f72e | clopy | $("#emptymachineslist").fadeOut("fast"); |
1222 | 6902f72e | clopy | $("#view-select").fadeIn("fast"); |
1223 | ce4f9227 | Mike Muzurakis | $("div#view-select").show(); |
1224 | f0215d6b | Mike Muzurakis | $("#machinesview").show(); |
1225 | f533f224 | Vangelis Koukis | } |
1226 | f533f224 | Vangelis Koukis | |
1227 | f533f224 | Vangelis Koukis | function log_server_status_change(server_entry, new_status) { |
1228 | f533f224 | Vangelis Koukis | // firebug console logging
|
1229 | f533f224 | Vangelis Koukis | try {
|
1230 | f533f224 | Vangelis Koukis | console.info(server_entry.find("div.name span.name").text() +
|
1231 | f533f224 | Vangelis Koukis | ' from ' + server_entry.find(".status").text() + |
1232 | f533f224 | Vangelis Koukis | ' to ' + STATUSES[new_status]);
|
1233 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1234 | f533f224 | Vangelis Koukis | } |
1235 | f533f224 | Vangelis Koukis | |
1236 | f533f224 | Vangelis Koukis | function get_flavor_params(flavorRef) { |
1237 | f533f224 | Vangelis Koukis | var cpus, ram, disk;
|
1238 | f533f224 | Vangelis Koukis | if ( flavors.length > 0 ) { |
1239 | f533f224 | Vangelis Koukis | var current_flavor = ''; |
1240 | f533f224 | Vangelis Koukis | for (i=0; i<flavors.length; i++) { |
1241 | f533f224 | Vangelis Koukis | if (flavors[i]['id'] == flavorRef) { |
1242 | f533f224 | Vangelis Koukis | current_flavor = flavors[i]; |
1243 | f533f224 | Vangelis Koukis | } |
1244 | f533f224 | Vangelis Koukis | } |
1245 | f533f224 | Vangelis Koukis | cpus = current_flavor['cpu'];
|
1246 | f533f224 | Vangelis Koukis | ram = current_flavor['ram'];
|
1247 | f533f224 | Vangelis Koukis | disk = current_flavor['disk'];
|
1248 | f533f224 | Vangelis Koukis | } else {
|
1249 | f533f224 | Vangelis Koukis | cpus = 'undefined';
|
1250 | f533f224 | Vangelis Koukis | ram = 'undefined';
|
1251 | f533f224 | Vangelis Koukis | disk = 'undefined';
|
1252 | f533f224 | Vangelis Koukis | } |
1253 | f533f224 | Vangelis Koukis | return {'cpus': cpus, 'ram': ram, 'disk': disk}; |
1254 | f533f224 | Vangelis Koukis | } |
1255 | f533f224 | Vangelis Koukis | |
1256 | f533f224 | Vangelis Koukis | function get_image_params(imageRef) { |
1257 | f533f224 | Vangelis Koukis | var image_name, image_size;
|
1258 | f533f224 | Vangelis Koukis | if ( images.length > 0 ) { |
1259 | f533f224 | Vangelis Koukis | var current_image = ''; |
1260 | f533f224 | Vangelis Koukis | for (i=0; i<images.length; i++) { |
1261 | f533f224 | Vangelis Koukis | if (images[i]['id'] == imageRef) { |
1262 | f533f224 | Vangelis Koukis | current_image = images[i]; |
1263 | f533f224 | Vangelis Koukis | } |
1264 | f533f224 | Vangelis Koukis | } |
1265 | f533f224 | Vangelis Koukis | image_name = current_image['name'];
|
1266 | f533f224 | Vangelis Koukis | image_size = current_image['metadata']['values']['size']; |
1267 | f533f224 | Vangelis Koukis | } else {
|
1268 | f533f224 | Vangelis Koukis | image_name = 'undefined';
|
1269 | f533f224 | Vangelis Koukis | image_size = 'undefined';
|
1270 | f533f224 | Vangelis Koukis | } |
1271 | f533f224 | Vangelis Koukis | return {'name': image_name,'size': image_size}; |
1272 | f533f224 | Vangelis Koukis | } |
1273 | f533f224 | Vangelis Koukis | |
1274 | f533f224 | Vangelis Koukis | function get_public_ips(server) { |
1275 | f533f224 | Vangelis Koukis | var ip4, ip6;
|
1276 | f533f224 | Vangelis Koukis | try {
|
1277 | f533f224 | Vangelis Koukis | if (server.addresses.values) {
|
1278 | f533f224 | Vangelis Koukis | $.each (server.addresses.values, function(i, value) { |
1279 | f533f224 | Vangelis Koukis | if (value.id == 'public') { |
1280 | f533f224 | Vangelis Koukis | try {
|
1281 | f533f224 | Vangelis Koukis | $.each (value.values, function(i, ip) { |
1282 | f533f224 | Vangelis Koukis | if (ip.version == '4') { |
1283 | f533f224 | Vangelis Koukis | ip4 = ip.addr; |
1284 | f533f224 | Vangelis Koukis | } else if (ip.version == '6') { |
1285 | f533f224 | Vangelis Koukis | ip6 = ip.addr; |
1286 | f533f224 | Vangelis Koukis | } else {
|
1287 | f533f224 | Vangelis Koukis | ip4 = 'undefined';
|
1288 | f533f224 | Vangelis Koukis | ip6 = 'undefined';
|
1289 | f533f224 | Vangelis Koukis | } |
1290 | f533f224 | Vangelis Koukis | }); |
1291 | f533f224 | Vangelis Koukis | } catch (err){
|
1292 | f533f224 | Vangelis Koukis | try{console.info('Server ' + server.id + ' has invalid ips')}catch(err){}; |
1293 | f533f224 | Vangelis Koukis | ip4 = 'undefined';
|
1294 | f533f224 | Vangelis Koukis | ip6 = 'undefined';
|
1295 | f533f224 | Vangelis Koukis | } |
1296 | f533f224 | Vangelis Koukis | } |
1297 | f533f224 | Vangelis Koukis | }); |
1298 | f533f224 | Vangelis Koukis | } |
1299 | f533f224 | Vangelis Koukis | } catch (err) {
|
1300 | f533f224 | Vangelis Koukis | try{console.info('Server ' + server.id + ' has no network addresses')}catch(err){}; |
1301 | f533f224 | Vangelis Koukis | ip4 = 'undefined';
|
1302 | f533f224 | Vangelis Koukis | ip6 = 'undefined';
|
1303 | f533f224 | Vangelis Koukis | } |
1304 | f533f224 | Vangelis Koukis | return {'ip4': ip4, 'ip6': ip6}; |
1305 | 6902f72e | clopy | } |
1306 | 6902f72e | clopy | |
1307 | f533f224 | Vangelis Koukis | function get_private_ips(server) { |
1308 | f533f224 | Vangelis Koukis | |
1309 | f533f224 | Vangelis Koukis | } |