root / ui / static / synnefo.js @ ca5125bd
History | View | Annotate | Download (63.4 kB)
1 | a5bc3755 | Vangelis Koukis | //
|
---|---|---|---|
2 | a5bc3755 | Vangelis Koukis | // Copyright 2011 GRNET S.A. All rights reserved.
|
3 | 72872ba2 | Christodoulos Psaltis | //
|
4 | a5bc3755 | Vangelis Koukis | // Redistribution and use in source and binary forms, with or
|
5 | a5bc3755 | Vangelis Koukis | // without modification, are permitted provided that the following
|
6 | a5bc3755 | Vangelis Koukis | // conditions are met:
|
7 | 72872ba2 | Christodoulos Psaltis | //
|
8 | a5bc3755 | Vangelis Koukis | // 1. Redistributions of source code must retain the above
|
9 | a5bc3755 | Vangelis Koukis | // copyright notice, this list of conditions and the following
|
10 | a5bc3755 | Vangelis Koukis | // disclaimer.
|
11 | 72872ba2 | Christodoulos Psaltis | //
|
12 | a5bc3755 | Vangelis Koukis | // 2. Redistributions in binary form must reproduce the above
|
13 | a5bc3755 | Vangelis Koukis | // copyright notice, this list of conditions and the following
|
14 | a5bc3755 | Vangelis Koukis | // disclaimer in the documentation and/or other materials
|
15 | a5bc3755 | Vangelis Koukis | // provided with the distribution.
|
16 | 72872ba2 | Christodoulos Psaltis | //
|
17 | a5bc3755 | Vangelis Koukis | // THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
18 | a5bc3755 | Vangelis Koukis | // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 | a5bc3755 | Vangelis Koukis | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
20 | a5bc3755 | Vangelis Koukis | // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
21 | a5bc3755 | Vangelis Koukis | // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
22 | a5bc3755 | Vangelis Koukis | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
23 | a5bc3755 | Vangelis Koukis | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
24 | a5bc3755 | Vangelis Koukis | // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
25 | a5bc3755 | Vangelis Koukis | // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
26 | a5bc3755 | Vangelis Koukis | // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
27 | a5bc3755 | Vangelis Koukis | // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
28 | a5bc3755 | Vangelis Koukis | // POSSIBILITY OF SUCH DAMAGE.
|
29 | 72872ba2 | Christodoulos Psaltis | //
|
30 | a5bc3755 | Vangelis Koukis | // The views and conclusions contained in the software and
|
31 | a5bc3755 | Vangelis Koukis | // documentation are those of the authors and should not be
|
32 | a5bc3755 | Vangelis Koukis | // interpreted as representing official policies, either expressed
|
33 | a5bc3755 | Vangelis Koukis | // or implied, of GRNET S.A.
|
34 | a5bc3755 | Vangelis Koukis | //
|
35 | 22afb635 | Vangelis Koukis | var API_URL = "/api/v1.1"; |
36 | f533f224 | Vangelis Koukis | var changes_since = 0, deferred = 0, update_request = false, load_request = false, pending_actions = []; |
37 | f533f224 | Vangelis Koukis | var flavors = [], images = [], servers = [], disks = [], cpus = [], ram = [];
|
38 | f533f224 | Vangelis Koukis | var networks = [], networks_changes_since = 0; |
39 | f533f224 | Vangelis Koukis | |
40 | 146b6003 | Dimitris Moraitis | |
41 | f533f224 | Vangelis Koukis | //FIXME: authentication
|
42 | be066a83 | Markos Gogoulos | //if cookie with value X-Auth-Token exists, set the value on the headers.
|
43 | d994d118 | Markos Gogoulos | $.ajaxSetup({
|
44 | 8b17cf6e | Markos Gogoulos | 'beforeSend': function(xhr) { |
45 | 89b6b240 | Georgios Gousios | //if ($.cookie("X-Auth-Token") != null) {
|
46 | be066a83 | Markos Gogoulos | xhr.setRequestHeader("X-Auth-Token", $.cookie("X-Auth-Token")); |
47 | 89b6b240 | Georgios Gousios | //} else {
|
48 | 89b6b240 | Georgios Gousios | // $.cookie("X-Auth-Token", "46e427d657b20defe352804f0eb6f8a2"); // set X-Auth-Token cookie
|
49 | 89b6b240 | Georgios Gousios | //}
|
50 | 8b17cf6e | Markos Gogoulos | } |
51 | d994d118 | Markos Gogoulos | }); |
52 | d994d118 | Markos Gogoulos | |
53 | a583aa29 | Kostas Papadimitriou | |
54 | 70eab221 | Kostas Papadimitriou | // jquery show/hide events
|
55 | a583aa29 | Kostas Papadimitriou | var _oldshow = $.fn.show; |
56 | a583aa29 | Kostas Papadimitriou | $.fn.show = function(speed, callback) { |
57 | a583aa29 | Kostas Papadimitriou | $(this).trigger('show'); |
58 | a583aa29 | Kostas Papadimitriou | return _oldshow.apply(this,arguments); |
59 | a583aa29 | Kostas Papadimitriou | } |
60 | 70eab221 | Kostas Papadimitriou | var _oldhide = $.fn.hide; |
61 | 70eab221 | Kostas Papadimitriou | $.fn.hide = function(speed, callback) { |
62 | 70eab221 | Kostas Papadimitriou | $(this).trigger('hide'); |
63 | 70eab221 | Kostas Papadimitriou | return _oldhide.apply(this,arguments); |
64 | 70eab221 | Kostas Papadimitriou | } |
65 | a583aa29 | Kostas Papadimitriou | |
66 | c5a032c4 | Markos Gogoulos | function ISODateString(d){ |
67 | b02144c8 | Vangelis Koukis | //return a date in an ISO 8601 format using UTC.
|
68 | c5a032c4 | Markos Gogoulos | //do not include time zone info (Z) at the end
|
69 | b02144c8 | Vangelis Koukis | //taken from the Mozilla Developer Center
|
70 | 267403ca | Dimitris Moraitis | function pad(n){ return n<10 ? '0'+n : n } |
71 | 267403ca | Dimitris Moraitis | return d.getUTCFullYear()+ '-' + |
72 | f533f224 | Vangelis Koukis | pad(d.getUTCMonth()+1) + '-' + |
73 | f533f224 | Vangelis Koukis | pad(d.getUTCDate()) + 'T' +
|
74 | f533f224 | Vangelis Koukis | pad(d.getUTCHours()) + ':' +
|
75 | f533f224 | Vangelis Koukis | pad(d.getUTCMinutes()) + ':' +
|
76 | f533f224 | Vangelis Koukis | pad(d.getUTCSeconds()) +'Z'
|
77 | 038383b1 | Dimitris Moraitis | } |
78 | 038383b1 | Dimitris Moraitis | |
79 | f533f224 | Vangelis Koukis | function parse_error(responseText, errorCode){ |
80 | f533f224 | Vangelis Koukis | var errors = [];
|
81 | f533f224 | Vangelis Koukis | try {
|
82 | f533f224 | Vangelis Koukis | responseObj = JSON.parse(responseText); |
83 | f533f224 | Vangelis Koukis | } |
84 | f533f224 | Vangelis Koukis | catch(err) {
|
85 | f533f224 | Vangelis Koukis | errors[0] = {'code': errorCode}; |
86 | f533f224 | Vangelis Koukis | return errors;
|
87 | f533f224 | Vangelis Koukis | } |
88 | f533f224 | Vangelis Koukis | for (var err in responseObj){ |
89 | f533f224 | Vangelis Koukis | errors[errors.length] = responseObj[err]; |
90 | f533f224 | Vangelis Koukis | } |
91 | f533f224 | Vangelis Koukis | return errors;
|
92 | 267403ca | Dimitris Moraitis | } |
93 | c5a032c4 | Markos Gogoulos | |
94 | 41cad45d | Dimitris Moraitis | // indexOf prototype for IE
|
95 | 41cad45d | Dimitris Moraitis | if (!Array.prototype.indexOf) {
|
96 | 41cad45d | Dimitris Moraitis | Array.prototype.indexOf = function(elt /*, from*/) { |
97 | 41cad45d | Dimitris Moraitis | var len = this.length; |
98 | 41cad45d | Dimitris Moraitis | var from = Number(arguments[1]) || 0; |
99 | 41cad45d | Dimitris Moraitis | from = (from < 0)
|
100 | 41cad45d | Dimitris Moraitis | ? Math.ceil(from) |
101 | 41cad45d | Dimitris Moraitis | : Math.floor(from); |
102 | 41cad45d | Dimitris Moraitis | if (from < 0) |
103 | 41cad45d | Dimitris Moraitis | from += len; |
104 | 41cad45d | Dimitris Moraitis | |
105 | 41cad45d | Dimitris Moraitis | for (; from < len; from++) {
|
106 | 41cad45d | Dimitris Moraitis | if (from in this && |
107 | 41cad45d | Dimitris Moraitis | this[from] === elt)
|
108 | 41cad45d | Dimitris Moraitis | return from;
|
109 | 41cad45d | Dimitris Moraitis | } |
110 | 41cad45d | Dimitris Moraitis | return -1; |
111 | 41cad45d | Dimitris Moraitis | }; |
112 | 41cad45d | Dimitris Moraitis | } |
113 | 41cad45d | Dimitris Moraitis | |
114 | 380c0520 | Dimitris Moraitis | // trim prototype for IE
|
115 | 380c0520 | Dimitris Moraitis | if(typeof String.prototype.trim !== 'function') { |
116 | 380c0520 | Dimitris Moraitis | String.prototype.trim = function() { |
117 | 82835e06 | Christodoulos Psaltis | return this.replace(/^\s+|\s+$/g, ''); |
118 | 380c0520 | Dimitris Moraitis | } |
119 | 380c0520 | Dimitris Moraitis | } |
120 | 380c0520 | Dimitris Moraitis | |
121 | a70fb308 | Christodoulos Psaltis | function update_confirmations() { |
122 | dcf153ce | Christodoulos Psaltis | // hide all confirm boxes to begin with
|
123 | f533f224 | Vangelis Koukis | $('#machines-pane div.confirm_single').hide(); |
124 | f533f224 | Vangelis Koukis | $('#machines-pane div.confirm_multiple').hide(); |
125 | a70fb308 | Christodoulos Psaltis | var action_type = [];
|
126 | 9b2ab29a | Christodoulos Psaltis | // standard view or single view
|
127 | 9b2ab29a | Christodoulos Psaltis | if ($.cookie("view") == '0' || $.cookie("view") == '2') { |
128 | 9044c6eb | Christodoulos Psaltis | for (var i=0; i<pending_actions.length; i++) { |
129 | dcf153ce | Christodoulos Psaltis | // show single confirms
|
130 | a70fb308 | Christodoulos Psaltis | if (pending_actions[i][0] == reboot) { |
131 | 9044c6eb | Christodoulos Psaltis | action_type = "reboot";
|
132 | a70fb308 | Christodoulos Psaltis | } else if (pending_actions[i][0] == shutdown) { |
133 | 9044c6eb | Christodoulos Psaltis | action_type = "shutdown";
|
134 | a70fb308 | Christodoulos Psaltis | } else if (pending_actions[i][0] == start) { |
135 | 9044c6eb | Christodoulos Psaltis | action_type = "start";
|
136 | 9044c6eb | Christodoulos Psaltis | } else if (pending_actions[i][0] == open_console) { |
137 | 9044c6eb | Christodoulos Psaltis | action_type = "console";
|
138 | a70fb308 | Christodoulos Psaltis | } else {
|
139 | 9044c6eb | Christodoulos Psaltis | action_type = "destroy";
|
140 | a70fb308 | Christodoulos Psaltis | } |
141 | 9b2ab29a | Christodoulos Psaltis | $("#machines-pane #" + pending_actions[i][1] + |
142 | 9b2ab29a | Christodoulos Psaltis | " div.action-container." + action_type + " div.confirm_single").show(); |
143 | dc3e66b9 | Mike Muzurakis | } |
144 | f533f224 | Vangelis Koukis | } |
145 | f533f224 | Vangelis Koukis | // if more than one pending action show multiple confirm box
|
146 | f533f224 | Vangelis Koukis | if (pending_actions.length>1 || $.cookie("view") == '1' && pending_actions.length == 1){ |
147 | f533f224 | Vangelis Koukis | $('#machines-pane div.confirm_multiple span.actionLen').text(pending_actions.length); |
148 | f533f224 | Vangelis Koukis | $('#machines-pane div.confirm_multiple').show(); |
149 | f533f224 | Vangelis Koukis | } |
150 | f533f224 | Vangelis Koukis | } |
151 | dcf153ce | Christodoulos Psaltis | |
152 | f533f224 | Vangelis Koukis | function update_network_confirmations(){ |
153 | f533f224 | Vangelis Koukis | // hide all confirm boxes to begin with
|
154 | f533f224 | Vangelis Koukis | $('#networks-pane div.confirm_multiple').hide(); |
155 | f533f224 | Vangelis Koukis | |
156 | f533f224 | Vangelis Koukis | for (var i=0;i<pending_actions.length;i++){ |
157 | f533f224 | Vangelis Koukis | // show single confirms depending on the action
|
158 | f533f224 | Vangelis Koukis | if (pending_actions[i][0] == delete_network) { |
159 | f533f224 | Vangelis Koukis | $("#networks-pane div.network#net-"+pending_actions[i][1]).children('.confirm_single').show(); |
160 | f533f224 | Vangelis Koukis | } else if (pending_actions[i][0] == remove_server_from_network) { |
161 | f533f224 | Vangelis Koukis | $("#networks-pane div.network #net-"+pending_actions[i][1]+"-server-"+pending_actions[i][2]).children('.confirm_single').show(); |
162 | f533f224 | Vangelis Koukis | } // else {}
|
163 | f533f224 | Vangelis Koukis | } |
164 | f533f224 | Vangelis Koukis | |
165 | f533f224 | Vangelis Koukis | // if more than one pending action show multiple confirm box
|
166 | f533f224 | Vangelis Koukis | if (pending_actions.length > 1){ |
167 | f533f224 | Vangelis Koukis | $('#networks-pane div.confirm_multiple span.actionLen').text(pending_actions.length); |
168 | f533f224 | Vangelis Koukis | $('#networks-pane div.confirm_multiple').show(); |
169 | f533f224 | Vangelis Koukis | } |
170 | 3d286f84 | Dimitris Moraitis | } |
171 | 3d286f84 | Dimitris Moraitis | |
172 | 42f67a2a | Dimitris Moraitis | function list_view() { |
173 | f533f224 | Vangelis Koukis | changes_since = 0; // to reload full list |
174 | f533f224 | Vangelis Koukis | pending_actions = []; // clear pending actions
|
175 | f533f224 | Vangelis Koukis | update_confirmations(); |
176 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
177 | f533f224 | Vangelis Koukis | try {
|
178 | f533f224 | Vangelis Koukis | update_request.abort(); // cancel pending ajax updates
|
179 | f533f224 | Vangelis Koukis | load_request.abort(); |
180 | f533f224 | Vangelis Koukis | }catch(err){}
|
181 | f533f224 | Vangelis Koukis | $.cookie("view", '1'); // set list cookie |
182 | f533f224 | Vangelis Koukis | uri = $("a#list").attr("href"); |
183 | 267403ca | Dimitris Moraitis | load_request = $.ajax({
|
184 | 267403ca | Dimitris Moraitis | url: uri,
|
185 | 267403ca | Dimitris Moraitis | type: "GET", |
186 | 267403ca | Dimitris Moraitis | timeout: TIMEOUT,
|
187 | 267403ca | Dimitris Moraitis | dataType: "html", |
188 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
189 | f533f224 | Vangelis Koukis | return false; |
190 | f533f224 | Vangelis Koukis | }, |
191 | 267403ca | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
192 | f533f224 | Vangelis Koukis | $("a#list")[0].className += ' activelink'; |
193 | f533f224 | Vangelis Koukis | $("a#standard")[0].className = ''; |
194 | f533f224 | Vangelis Koukis | $("a#single")[0].className = ''; |
195 | f533f224 | Vangelis Koukis | $("div#machinesview").html(data); |
196 | f533f224 | Vangelis Koukis | } |
197 | f533f224 | Vangelis Koukis | }); |
198 | f533f224 | Vangelis Koukis | return false; |
199 | f533f224 | Vangelis Koukis | } |
200 | b02144c8 | Vangelis Koukis | |
201 | f533f224 | Vangelis Koukis | function single_view() { |
202 | f533f224 | Vangelis Koukis | changes_since = 0; // to reload full list |
203 | f533f224 | Vangelis Koukis | pending_actions = []; // clear pending actions
|
204 | f533f224 | Vangelis Koukis | update_confirmations(); |
205 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
206 | f533f224 | Vangelis Koukis | try {
|
207 | f533f224 | Vangelis Koukis | update_request.abort(); // cancel pending ajax updates
|
208 | f533f224 | Vangelis Koukis | load_request.abort(); |
209 | f533f224 | Vangelis Koukis | }catch(err){}
|
210 | f533f224 | Vangelis Koukis | $.cookie("view", '2'); // set list cookie |
211 | f533f224 | Vangelis Koukis | uri = $("a#single").attr("href"); |
212 | f533f224 | Vangelis Koukis | load_request = $.ajax({
|
213 | f533f224 | Vangelis Koukis | url: uri,
|
214 | f533f224 | Vangelis Koukis | type: "GET", |
215 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
216 | f533f224 | Vangelis Koukis | dataType: "html", |
217 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
218 | f533f224 | Vangelis Koukis | return false; |
219 | f533f224 | Vangelis Koukis | }, |
220 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
221 | f533f224 | Vangelis Koukis | $("a#single")[0].className += ' activelink'; |
222 | f533f224 | Vangelis Koukis | $("a#standard")[0].className = ''; |
223 | f533f224 | Vangelis Koukis | $("a#list")[0].className = ''; |
224 | f533f224 | Vangelis Koukis | $("div#machinesview").html(data); |
225 | f533f224 | Vangelis Koukis | } |
226 | f533f224 | Vangelis Koukis | }); |
227 | 42f67a2a | Dimitris Moraitis | return false; |
228 | 42f67a2a | Dimitris Moraitis | } |
229 | 42f67a2a | Dimitris Moraitis | |
230 | 42f67a2a | Dimitris Moraitis | function standard_view() { |
231 | f533f224 | Vangelis Koukis | changes_since = 0; // to reload full list |
232 | f533f224 | Vangelis Koukis | pending_actions = []; // clear pending actions
|
233 | f533f224 | Vangelis Koukis | update_confirmations(); |
234 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
235 | f533f224 | Vangelis Koukis | try {
|
236 | f533f224 | Vangelis Koukis | update_request.abort() // cancel pending ajax updates
|
237 | f533f224 | Vangelis Koukis | load_request.abort(); |
238 | f533f224 | Vangelis Koukis | }catch(err){}
|
239 | f533f224 | Vangelis Koukis | $.cookie("view", '0'); |
240 | 267403ca | Dimitris Moraitis | uri = $("a#standard").attr("href"); |
241 | 267403ca | Dimitris Moraitis | load_request = $.ajax({
|
242 | 267403ca | Dimitris Moraitis | url: uri,
|
243 | 267403ca | Dimitris Moraitis | type: "GET", |
244 | 267403ca | Dimitris Moraitis | timeout: TIMEOUT,
|
245 | 267403ca | Dimitris Moraitis | dataType: "html", |
246 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
247 | f533f224 | Vangelis Koukis | return false; |
248 | f533f224 | Vangelis Koukis | }, |
249 | 267403ca | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
250 | f533f224 | Vangelis Koukis | $("a#standard")[0].className += ' activelink'; |
251 | f533f224 | Vangelis Koukis | $("a#list")[0].className = ''; |
252 | f533f224 | Vangelis Koukis | $("a#single")[0].className = ''; |
253 | f533f224 | Vangelis Koukis | $("div#machinesview").html(data); |
254 | f533f224 | Vangelis Koukis | } |
255 | f533f224 | Vangelis Koukis | }); |
256 | 42f67a2a | Dimitris Moraitis | return false; |
257 | 42f67a2a | Dimitris Moraitis | } |
258 | 42f67a2a | Dimitris Moraitis | |
259 | 42f67a2a | Dimitris Moraitis | function choose_view() { |
260 | f533f224 | Vangelis Koukis | if ($.cookie("view")=='1') { |
261 | 42f67a2a | Dimitris Moraitis | list_view(); |
262 | f533f224 | Vangelis Koukis | } else if ($.cookie("view")=='2'){ |
263 | f533f224 | Vangelis Koukis | single_view(); |
264 | 42f67a2a | Dimitris Moraitis | } else {
|
265 | 42f67a2a | Dimitris Moraitis | standard_view(); |
266 | 42f67a2a | Dimitris Moraitis | } |
267 | 42f67a2a | Dimitris Moraitis | } |
268 | 42f67a2a | Dimitris Moraitis | |
269 | e4f32f27 | Mike Muzurakis | // return value from metadata key "OS", if it exists
|
270 | e4f32f27 | Mike Muzurakis | function os_icon(metadata) { |
271 | e4f32f27 | Mike Muzurakis | if (!metadata) {
|
272 | e4f32f27 | Mike Muzurakis | return 'unknown'; |
273 | e4f32f27 | Mike Muzurakis | } |
274 | e4f32f27 | Mike Muzurakis | if (metadata.values.OS == undefined || metadata.values.OS == '') { |
275 | e4f32f27 | Mike Muzurakis | return 'unknown'; |
276 | e4f32f27 | Mike Muzurakis | } else {
|
277 | e4f32f27 | Mike Muzurakis | if (os_icons.indexOf(metadata.values.OS) == -1) { |
278 | e4f32f27 | Mike Muzurakis | return 'unknown'; |
279 | e4f32f27 | Mike Muzurakis | } else {
|
280 | e4f32f27 | Mike Muzurakis | return metadata.values.OS;
|
281 | e4f32f27 | Mike Muzurakis | } |
282 | e4f32f27 | Mike Muzurakis | } |
283 | e4f32f27 | Mike Muzurakis | } |
284 | e4f32f27 | Mike Muzurakis | |
285 | e4f32f27 | Mike Muzurakis | function os_icon_from_value(metadata) { |
286 | e4f32f27 | Mike Muzurakis | if (!metadata) {
|
287 | e4f32f27 | Mike Muzurakis | return 'unknown'; |
288 | e4f32f27 | Mike Muzurakis | } |
289 | e4f32f27 | Mike Muzurakis | if (metadata == undefined || metadata == '') { |
290 | e4f32f27 | Mike Muzurakis | return 'unknown'; |
291 | e4f32f27 | Mike Muzurakis | } else {
|
292 | e4f32f27 | Mike Muzurakis | if (os_icons.indexOf(metadata) == -1) { |
293 | e4f32f27 | Mike Muzurakis | return 'unknown'; |
294 | e4f32f27 | Mike Muzurakis | } else {
|
295 | e4f32f27 | Mike Muzurakis | return metadata;
|
296 | e4f32f27 | Mike Muzurakis | } |
297 | e4f32f27 | Mike Muzurakis | } |
298 | e4f32f27 | Mike Muzurakis | } |
299 | e4f32f27 | Mike Muzurakis | |
300 | f533f224 | Vangelis Koukis | // get and show a list of running and terminated machines
|
301 | f533f224 | Vangelis Koukis | function update_vms(interval) { |
302 | f533f224 | Vangelis Koukis | try{ console.info('updating machines'); } catch(err){} |
303 | f533f224 | Vangelis Koukis | var uri= API_URL + '/servers/detail'; |
304 | b02144c8 | Vangelis Koukis | |
305 | f533f224 | Vangelis Koukis | if (changes_since != 0) |
306 | f533f224 | Vangelis Koukis | uri+='?changes-since='+changes_since
|
307 | b02144c8 | Vangelis Koukis | |
308 | f533f224 | Vangelis Koukis | update_request = $.ajax({
|
309 | f533f224 | Vangelis Koukis | cache: false, |
310 | f533f224 | Vangelis Koukis | url: uri,
|
311 | f533f224 | Vangelis Koukis | type: "GET", |
312 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
313 | f533f224 | Vangelis Koukis | dataType: "json", |
314 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
315 | f533f224 | Vangelis Koukis | // don't forget to try again later
|
316 | f533f224 | Vangelis Koukis | if (interval) {
|
317 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
318 | f533f224 | Vangelis Koukis | deferred = setTimeout(function() {update_vms(interval);},interval,interval);
|
319 | f533f224 | Vangelis Koukis | } |
320 | f533f224 | Vangelis Koukis | // as for now, just show an error message
|
321 | f533f224 | Vangelis Koukis | try { console.info('update_vms errback:' + jqXHR.status ) } catch(err) {} |
322 | aeed1f09 | Mike Muzurakis | try {
|
323 | aeed1f09 | Mike Muzurakis | ajax_error(jqXHR.status, undefined, 'Update VMs', jqXHR.responseText); |
324 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
325 | b8110bae | Mike Muzurakis | ajax_error(0, undefined, 'Update VMs', jqXHR.responseText); |
326 | aeed1f09 | Mike Muzurakis | } |
327 | f533f224 | Vangelis Koukis | return false; |
328 | f533f224 | Vangelis Koukis | }, |
329 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
330 | f533f224 | Vangelis Koukis | // create changes_since string if necessary
|
331 | f533f224 | Vangelis Koukis | if (jqXHR.getResponseHeader('Date') != null){ |
332 | f533f224 | Vangelis Koukis | changes_since_date = new Date(jqXHR.getResponseHeader('Date')); |
333 | f533f224 | Vangelis Koukis | changes_since = ISODateString(changes_since_date); |
334 | f533f224 | Vangelis Koukis | } |
335 | b02144c8 | Vangelis Koukis | |
336 | f533f224 | Vangelis Koukis | if (interval) {
|
337 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
338 | f533f224 | Vangelis Koukis | deferred = setTimeout(function() {update_vms(interval);},interval,interval);
|
339 | f533f224 | Vangelis Koukis | } |
340 | 42f67a2a | Dimitris Moraitis | |
341 | f533f224 | Vangelis Koukis | if (jqXHR.status == 200 || jqXHR.status == 203) { |
342 | f533f224 | Vangelis Koukis | try {
|
343 | f533f224 | Vangelis Koukis | servers = data.servers.values; |
344 | 882ceb8f | Dimitris Moraitis | jQuery.parseJSON(data); |
345 | 882ceb8f | Dimitris Moraitis | update_machines_view(data); |
346 | 9b2ab29a | Christodoulos Psaltis | } catch(err) { ajax_error('400', undefined, 'Update VMs', jqXHR.responseText);} |
347 | f533f224 | Vangelis Koukis | } else if (jqXHR.status != 304){ |
348 | f533f224 | Vangelis Koukis | try { console.info('update_vms callback:' + jqXHR.status ) } catch(err) {} |
349 | f533f224 | Vangelis Koukis | /*
|
350 | f533f224 | Vangelis Koukis | FIXME: Here it should return the error, however Opera does not support 304.
|
351 | f533f224 | Vangelis Koukis | Instead 304 it returns 0. To dealt with this we treat 0 as an
|
352 | f533f224 | Vangelis Koukis | 304, which should be corrected (Bug #317).
|
353 | f533f224 | Vangelis Koukis | */
|
354 | f533f224 | Vangelis Koukis | //ajax_error(jqXHR.status, undefined, 'Update VMs', jqXHR.responseText);
|
355 | f533f224 | Vangelis Koukis | } |
356 | f533f224 | Vangelis Koukis | return false; |
357 | f533f224 | Vangelis Koukis | } |
358 | 42f67a2a | Dimitris Moraitis | }); |
359 | f533f224 | Vangelis Koukis | return false; |
360 | f533f224 | Vangelis Koukis | } |
361 | f533f224 | Vangelis Koukis | |
362 | f533f224 | Vangelis Koukis | // get a list of running and terminated machines, used in network view
|
363 | f533f224 | Vangelis Koukis | function update_networks(interval) { |
364 | f533f224 | Vangelis Koukis | try{ console.info('updating networks'); } catch(err){} |
365 | f533f224 | Vangelis Koukis | var uri= API_URL + '/servers/detail'; |
366 | f533f224 | Vangelis Koukis | |
367 | f533f224 | Vangelis Koukis | if (changes_since != 0) |
368 | f533f224 | Vangelis Koukis | uri+='?changes-since='+changes_since
|
369 | f533f224 | Vangelis Koukis | |
370 | f533f224 | Vangelis Koukis | update_request = $.ajax({
|
371 | f533f224 | Vangelis Koukis | cache: false, |
372 | f533f224 | Vangelis Koukis | url: uri,
|
373 | f533f224 | Vangelis Koukis | type: "GET", |
374 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
375 | f533f224 | Vangelis Koukis | dataType: "json", |
376 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
377 | f533f224 | Vangelis Koukis | // don't forget to try again later
|
378 | f533f224 | Vangelis Koukis | if (interval) {
|
379 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
380 | f533f224 | Vangelis Koukis | deferred = setTimeout(function() {update_networks(interval);},interval,interval);
|
381 | f533f224 | Vangelis Koukis | } |
382 | f533f224 | Vangelis Koukis | // as for now, just show an error message
|
383 | f533f224 | Vangelis Koukis | try { console.info('update_networks errback:' + jqXHR.status ) } catch(err) {} |
384 | aeed1f09 | Mike Muzurakis | try {
|
385 | aeed1f09 | Mike Muzurakis | ajax_error(jqXHR.status, undefined, 'Update networks', jqXHR.responseText); |
386 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
387 | b8110bae | Mike Muzurakis | ajax_error(0, undefined, 'Update networks', jqXHR.responseText); |
388 | aeed1f09 | Mike Muzurakis | } |
389 | f533f224 | Vangelis Koukis | return false; |
390 | f533f224 | Vangelis Koukis | }, |
391 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
392 | f533f224 | Vangelis Koukis | // create changes_since string if necessary
|
393 | f533f224 | Vangelis Koukis | if (jqXHR.getResponseHeader('Date') != null){ |
394 | f533f224 | Vangelis Koukis | changes_since_date = new Date(jqXHR.getResponseHeader('Date')); |
395 | f533f224 | Vangelis Koukis | changes_since = ISODateString(changes_since_date); |
396 | f533f224 | Vangelis Koukis | } |
397 | f533f224 | Vangelis Koukis | |
398 | f533f224 | Vangelis Koukis | if (interval) {
|
399 | f533f224 | Vangelis Koukis | clearTimeout(deferred); // clear old deferred calls
|
400 | f533f224 | Vangelis Koukis | deferred = setTimeout(function() {update_networks(interval);},interval,interval);
|
401 | f533f224 | Vangelis Koukis | } |
402 | f533f224 | Vangelis Koukis | |
403 | f533f224 | Vangelis Koukis | if (jqXHR.status == 200 || jqXHR.status == 203) { |
404 | f533f224 | Vangelis Koukis | try {
|
405 | f533f224 | Vangelis Koukis | servers = data.servers.values; |
406 | 882ceb8f | Dimitris Moraitis | jQuery.parseJSON(data); |
407 | 882ceb8f | Dimitris Moraitis | update_network_names(data); |
408 | f533f224 | Vangelis Koukis | } catch(err) { ajax_error('400', undefined, 'Update networks', jqXHR.responseText);} |
409 | f533f224 | Vangelis Koukis | } else if (jqXHR.status == 304) { |
410 | f533f224 | Vangelis Koukis | update_network_names(); |
411 | f533f224 | Vangelis Koukis | } |
412 | f533f224 | Vangelis Koukis | else {
|
413 | f533f224 | Vangelis Koukis | try { console.info('update_networks callback:' + jqXHR.status ) } catch(err) {} |
414 | f533f224 | Vangelis Koukis | /*
|
415 | f533f224 | Vangelis Koukis | FIXME: Here it should return the error, however Opera does not support 304.
|
416 | f533f224 | Vangelis Koukis | Instead 304 it returns 0. To dealt with this we treat 0 as an
|
417 | f533f224 | Vangelis Koukis | 304, which should be corrected (Bug #317).
|
418 | f533f224 | Vangelis Koukis | */
|
419 | f533f224 | Vangelis Koukis | //ajax_error(jqXHR.status, undefined, 'Update networks', jqXHR.responseText);
|
420 | f533f224 | Vangelis Koukis | update_network_names(); |
421 | f533f224 | Vangelis Koukis | } |
422 | f533f224 | Vangelis Koukis | return false; |
423 | 42f67a2a | Dimitris Moraitis | } |
424 | 42f67a2a | Dimitris Moraitis | }); |
425 | 42f67a2a | Dimitris Moraitis | return false; |
426 | 42f67a2a | Dimitris Moraitis | } |
427 | 42f67a2a | Dimitris Moraitis | |
428 | f533f224 | Vangelis Koukis | // get and show a list of public and private networks
|
429 | f533f224 | Vangelis Koukis | function update_network_names(servers_data) { |
430 | f533f224 | Vangelis Koukis | try{ console.info('updating network names'); } catch(err){} |
431 | f533f224 | Vangelis Koukis | var uri= API_URL + '/networks/detail'; |
432 | f533f224 | Vangelis Koukis | |
433 | f533f224 | Vangelis Koukis | if (networks_changes_since != 0) |
434 | f533f224 | Vangelis Koukis | //FIXME: Comment out the following, until metadata do not 304 when changed
|
435 | f533f224 | Vangelis Koukis | uri+='?changes-since=' + networks_changes_since
|
436 | ce4f9227 | Mike Muzurakis | |
437 | 1c7978ce | Dimitris Moraitis | update_request = $.ajax({
|
438 | c8bde382 | Mike Muzurakis | cache: false, |
439 | 1a49199e | Dimitris Moraitis | url: uri,
|
440 | 42f67a2a | Dimitris Moraitis | type: "GET", |
441 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
442 | 42f67a2a | Dimitris Moraitis | dataType: "json", |
443 | 146b6003 | Dimitris Moraitis | error: function(jqXHR, textStatus, errorThrown) { |
444 | f533f224 | Vangelis Koukis | // as for now, just show an error message
|
445 | f533f224 | Vangelis Koukis | try {
|
446 | f533f224 | Vangelis Koukis | console.info('update_network names errback:' + jqXHR.status )
|
447 | f533f224 | Vangelis Koukis | } catch(err) {}
|
448 | aeed1f09 | Mike Muzurakis | try {
|
449 | aeed1f09 | Mike Muzurakis | ajax_error(jqXHR.status, undefined, 'Update network names', jqXHR.responseText); |
450 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
451 | b8110bae | Mike Muzurakis | ajax_error(0, undefined, 'Update network names', jqXHR.responseText); |
452 | aeed1f09 | Mike Muzurakis | } |
453 | f533f224 | Vangelis Koukis | return false; |
454 | f533f224 | Vangelis Koukis | }, |
455 | 1a49199e | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
456 | e6561111 | Mike Muzurakis | // create changes_since string if necessary
|
457 | e6561111 | Mike Muzurakis | if (jqXHR.getResponseHeader('Date') != null){ |
458 | f533f224 | Vangelis Koukis | changes_since_date = new Date(jqXHR.getResponseHeader('Date')); |
459 | f533f224 | Vangelis Koukis | networks_changes_since = ISODateString(changes_since_date); |
460 | f533f224 | Vangelis Koukis | } |
461 | f533f224 | Vangelis Koukis | |
462 | f533f224 | Vangelis Koukis | if (jqXHR.status == 200 || jqXHR.status == 203) { |
463 | f533f224 | Vangelis Koukis | try {
|
464 | f533f224 | Vangelis Koukis | networks = data.networks.values; |
465 | 882ceb8f | Dimitris Moraitis | jQuery.parseJSON(data); |
466 | 882ceb8f | Dimitris Moraitis | update_networks_view(servers_data, data); |
467 | f533f224 | Vangelis Koukis | } catch(err) {
|
468 | f533f224 | Vangelis Koukis | ajax_error('400', undefined, 'Update network names', jqXHR.responseText); |
469 | f533f224 | Vangelis Koukis | } |
470 | f533f224 | Vangelis Koukis | } else if (jqXHR.status == 304) { |
471 | f533f224 | Vangelis Koukis | update_networks_view(servers_data); |
472 | f533f224 | Vangelis Koukis | } else if (jqXHR.status != 304){ |
473 | f533f224 | Vangelis Koukis | try { console.info('update_network_names callback:' + jqXHR.status ) } catch(err) {} |
474 | f533f224 | Vangelis Koukis | /*
|
475 | f533f224 | Vangelis Koukis | FIXME: Here it should return the error, however Opera does not support 304.
|
476 | f533f224 | Vangelis Koukis | Instead 304 it returns 0. To dealt with this we treat 0 as an
|
477 | f533f224 | Vangelis Koukis | 304, which should be corrected (Bug #317).
|
478 | f533f224 | Vangelis Koukis | */
|
479 | f533f224 | Vangelis Koukis | //ajax_error(jqXHR.status, undefined, 'Update network names', jqXHR.responseText);
|
480 | f533f224 | Vangelis Koukis | update_networks_view(servers_data); |
481 | f533f224 | Vangelis Koukis | } |
482 | f533f224 | Vangelis Koukis | return false; |
483 | 42f67a2a | Dimitris Moraitis | } |
484 | 42f67a2a | Dimitris Moraitis | }); |
485 | 42f67a2a | Dimitris Moraitis | return false; |
486 | 42f67a2a | Dimitris Moraitis | } |
487 | 42f67a2a | Dimitris Moraitis | |
488 | 146b6003 | Dimitris Moraitis | // get and show a list of available standard and custom images
|
489 | b02144c8 | Vangelis Koukis | function update_images() { |
490 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
491 | 73c2c75b | Markos Gogoulos | url: API_URL + '/images/detail', |
492 | 42f67a2a | Dimitris Moraitis | type: "GET", |
493 | 42f67a2a | Dimitris Moraitis | //async: false,
|
494 | 42f67a2a | Dimitris Moraitis | dataType: "json", |
495 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
496 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
497 | aeed1f09 | Mike Muzurakis | try {
|
498 | aeed1f09 | Mike Muzurakis | ajax_error(jqXHR.status, undefined, 'Update Images', jqXHR.responseText); |
499 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
500 | b8110bae | Mike Muzurakis | ajax_error(0, undefined, 'Update Images', jqXHR.responseText); |
501 | aeed1f09 | Mike Muzurakis | } |
502 | aeed1f09 | Mike Muzurakis | }, |
503 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
504 | 146b6003 | Dimitris Moraitis | try {
|
505 | f533f224 | Vangelis Koukis | images = data.images.values; |
506 | ddf929a7 | Christodoulos Psaltis | jQuery.parseJSON(data); |
507 | f533f224 | Vangelis Koukis | update_wizard_images(); |
508 | f533f224 | Vangelis Koukis | } catch(err){
|
509 | f533f224 | Vangelis Koukis | ajax_error("NO_IMAGES");
|
510 | f533f224 | Vangelis Koukis | } |
511 | 42f67a2a | Dimitris Moraitis | } |
512 | 42f67a2a | Dimitris Moraitis | }); |
513 | 42f67a2a | Dimitris Moraitis | return false; |
514 | 42f67a2a | Dimitris Moraitis | } |
515 | 42f67a2a | Dimitris Moraitis | |
516 | d134b632 | Dimitris Moraitis | function update_wizard_images() { |
517 | f533f224 | Vangelis Koukis | if ($("ul#standard-images li").toArray().length + $("ul#custom-images li").toArray().length == 0) { |
518 | f533f224 | Vangelis Koukis | $.each(images, function(i,image){ |
519 | f533f224 | Vangelis Koukis | var img = $('#image-template').clone().attr("id","img-"+image.id).fadeIn("slow"); |
520 | f533f224 | Vangelis Koukis | img.find("label").attr('for',"img-radio-" + image.id); |
521 | f533f224 | Vangelis Koukis | img.find(".image-title").text(image.name);
|
522 | 73c2c75b | Markos Gogoulos | if (image.metadata) {
|
523 | 73c2c75b | Markos Gogoulos | if (image.metadata.values.description != undefined) { |
524 | 73c2c75b | Markos Gogoulos | img.find(".description").text(image.metadata.values.description);
|
525 | 73c2c75b | Markos Gogoulos | } |
526 | 73c2c75b | Markos Gogoulos | if (image.metadata.values.size != undefined) { |
527 | f533f224 | Vangelis Koukis | img.find("#size").text(image.metadata.values.size);
|
528 | 73c2c75b | Markos Gogoulos | } |
529 | 73c2c75b | Markos Gogoulos | } |
530 | f533f224 | Vangelis Koukis | img.find("input.radio").attr('id',"img-radio-" + image.id); |
531 | f533f224 | Vangelis Koukis | if (i==0) img.find("input.radio").attr("checked","checked"); |
532 | a64e74f0 | Markos Gogoulos | var image_logo = os_icon(image.metadata);
|
533 | f533f224 | Vangelis Koukis | img.find("img.image-logo").attr('src','static/icons/os/'+image_logo+'.png'); |
534 | 73c2c75b | Markos Gogoulos | if (image.metadata) {
|
535 | 73c2c75b | Markos Gogoulos | if (image.metadata.values.serverId != undefined) { |
536 | 73c2c75b | Markos Gogoulos | img.appendTo("ul#custom-images");
|
537 | 73c2c75b | Markos Gogoulos | } else {
|
538 | 73c2c75b | Markos Gogoulos | img.appendTo("ul#standard-images");
|
539 | 73c2c75b | Markos Gogoulos | } |
540 | 73c2c75b | Markos Gogoulos | } else {
|
541 | 73c2c75b | Markos Gogoulos | img.appendTo("ul#standard-images");
|
542 | 73c2c75b | Markos Gogoulos | } |
543 | f533f224 | Vangelis Koukis | }); |
544 | f533f224 | Vangelis Koukis | } |
545 | d134b632 | Dimitris Moraitis | } |
546 | d134b632 | Dimitris Moraitis | |
547 | d134b632 | Dimitris Moraitis | function update_wizard_flavors(){ |
548 | f533f224 | Vangelis Koukis | // sliders for selecting VM flavor
|
549 | f533f224 | Vangelis Koukis | $("#cpu:range").rangeinput({min:0, |
550 | f533f224 | Vangelis Koukis | value:0, |
551 | f533f224 | Vangelis Koukis | step:1, |
552 | f533f224 | Vangelis Koukis | progress: true, |
553 | f533f224 | Vangelis Koukis | max:cpus.length-1}); |
554 | f533f224 | Vangelis Koukis | |
555 | f533f224 | Vangelis Koukis | $("#storage:range").rangeinput({min:0, |
556 | f533f224 | Vangelis Koukis | value:0, |
557 | f533f224 | Vangelis Koukis | step:1, |
558 | f533f224 | Vangelis Koukis | progress: true, |
559 | f533f224 | Vangelis Koukis | max:disks.length-1}); |
560 | f533f224 | Vangelis Koukis | |
561 | f533f224 | Vangelis Koukis | $("#ram:range").rangeinput({min:0, |
562 | f533f224 | Vangelis Koukis | value:0, |
563 | f533f224 | Vangelis Koukis | step:1, |
564 | f533f224 | Vangelis Koukis | progress: true, |
565 | f533f224 | Vangelis Koukis | max:ram.length-1}); |
566 | f533f224 | Vangelis Koukis | $("#small").click(); |
567 | f533f224 | Vangelis Koukis | |
568 | f533f224 | Vangelis Koukis | // update the indicators when sliding
|
569 | f533f224 | Vangelis Koukis | $("#cpu:range").data().rangeinput.onSlide(function(event,value){ |
570 | f533f224 | Vangelis Koukis | $("#cpu-indicator")[0].value = cpus[Number(value)]; |
571 | afa2ebd2 | Mike Muzurakis | $("#cpu-indicator").addClass('selectedrange'); |
572 | f533f224 | Vangelis Koukis | }); |
573 | f533f224 | Vangelis Koukis | $("#cpu:range").data().rangeinput.change(function(event,value){ |
574 | f533f224 | Vangelis Koukis | $("#cpu-indicator")[0].value = cpus[Number(value)]; |
575 | f533f224 | Vangelis Koukis | $("#custom").click(); |
576 | f533f224 | Vangelis Koukis | $("#cpu-indicator").removeClass('selectedrange'); |
577 | f533f224 | Vangelis Koukis | }); |
578 | f533f224 | Vangelis Koukis | $("#ram:range").data().rangeinput.onSlide(function(event,value){ |
579 | f533f224 | Vangelis Koukis | $("#ram-indicator")[0].value = ram[Number(value)]; |
580 | afa2ebd2 | Mike Muzurakis | $("#ram-indicator").addClass('selectedrange'); |
581 | f533f224 | Vangelis Koukis | }); |
582 | f533f224 | Vangelis Koukis | $("#ram:range").data().rangeinput.change(function(event,value){ |
583 | f533f224 | Vangelis Koukis | $("#ram-indicator")[0].value = ram[Number(value)]; |
584 | f533f224 | Vangelis Koukis | $("#custom").click(); |
585 | f533f224 | Vangelis Koukis | $("#ram-indicator").removeClass('selectedrange'); |
586 | f533f224 | Vangelis Koukis | }); |
587 | f533f224 | Vangelis Koukis | $("#storage:range").data().rangeinput.onSlide(function(event,value){ |
588 | f533f224 | Vangelis Koukis | $("#storage-indicator")[0].value = disks[Number(value)]; |
589 | afa2ebd2 | Mike Muzurakis | $("#storage-indicator").addClass('selectedrange'); |
590 | f533f224 | Vangelis Koukis | }); |
591 | f533f224 | Vangelis Koukis | $("#storage:range").data().rangeinput.change(function(event,value){ |
592 | f533f224 | Vangelis Koukis | $("#storage-indicator")[0].value = disks[Number(value)]; |
593 | f533f224 | Vangelis Koukis | $("#custom").click(); |
594 | f533f224 | Vangelis Koukis | $("#storage-indicator").removeClass('selectedrange'); |
595 | f533f224 | Vangelis Koukis | }); |
596 | d134b632 | Dimitris Moraitis | } |
597 | d134b632 | Dimitris Moraitis | |
598 | 42f67a2a | Dimitris Moraitis | Array.prototype.unique = function () { |
599 | f533f224 | Vangelis Koukis | var r = new Array(); |
600 | f533f224 | Vangelis Koukis | o:for(var i = 0, n = this.length; i < n; i++) |
601 | f533f224 | Vangelis Koukis | { |
602 | f533f224 | Vangelis Koukis | for(var x = 0, y = r.length; x < y; x++) |
603 | f533f224 | Vangelis Koukis | { |
604 | f533f224 | Vangelis Koukis | if(r[x]==this[i]) |
605 | f533f224 | Vangelis Koukis | { |
606 | f533f224 | Vangelis Koukis | continue o;
|
607 | f533f224 | Vangelis Koukis | } |
608 | f533f224 | Vangelis Koukis | } |
609 | f533f224 | Vangelis Koukis | r[r.length] = this[i];
|
610 | f533f224 | Vangelis Koukis | } |
611 | f533f224 | Vangelis Koukis | return r;
|
612 | 42f67a2a | Dimitris Moraitis | } |
613 | 42f67a2a | Dimitris Moraitis | |
614 | 42f67a2a | Dimitris Moraitis | // get and configure flavor selection
|
615 | b02144c8 | Vangelis Koukis | function update_flavors() { |
616 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
617 | f1641e4d | Markos Gogoulos | url: API_URL + '/flavors/detail', |
618 | 42f67a2a | Dimitris Moraitis | type: "GET", |
619 | 42f67a2a | Dimitris Moraitis | //async: false,
|
620 | 42f67a2a | Dimitris Moraitis | dataType: "json", |
621 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
622 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
623 | 146b6003 | Dimitris Moraitis | try {
|
624 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Update Flavors', jqXHR.responseText); |
625 | f533f224 | Vangelis Koukis | } catch (err) {
|
626 | f533f224 | Vangelis Koukis | ajax_error(err); |
627 | f533f224 | Vangelis Koukis | } |
628 | 66307c9e | Christodoulos Psaltis | // start updating vm list
|
629 | 66307c9e | Christodoulos Psaltis | update_vms(UPDATE_INTERVAL); |
630 | 42f67a2a | Dimitris Moraitis | }, |
631 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
632 | 9b2ab29a | Christodoulos Psaltis | |
633 | 882ceb8f | Dimitris Moraitis | try {
|
634 | 882ceb8f | Dimitris Moraitis | flavors = data.flavors.values; |
635 | 882ceb8f | Dimitris Moraitis | jQuery.parseJSON(data); |
636 | 882ceb8f | Dimitris Moraitis | $.each(flavors, function(i, flavor) { |
637 | 882ceb8f | Dimitris Moraitis | cpus[i] = flavor['cpu'];
|
638 | 882ceb8f | Dimitris Moraitis | disks[i] = flavor['disk'];
|
639 | 882ceb8f | Dimitris Moraitis | ram[i] = flavor['ram'];
|
640 | 882ceb8f | Dimitris Moraitis | }); |
641 | 882ceb8f | Dimitris Moraitis | cpus = cpus.unique(); |
642 | 882ceb8f | Dimitris Moraitis | disks = disks.unique(); |
643 | 882ceb8f | Dimitris Moraitis | ram = ram.unique(); |
644 | 882ceb8f | Dimitris Moraitis | update_wizard_flavors(); |
645 | 882ceb8f | Dimitris Moraitis | } catch(err){
|
646 | 882ceb8f | Dimitris Moraitis | ajax_error("NO_FLAVORS");
|
647 | 882ceb8f | Dimitris Moraitis | } |
648 | 66307c9e | Christodoulos Psaltis | // start updating vm list
|
649 | 66307c9e | Christodoulos Psaltis | update_vms(UPDATE_INTERVAL); |
650 | 42f67a2a | Dimitris Moraitis | } |
651 | 42f67a2a | Dimitris Moraitis | }); |
652 | 42f67a2a | Dimitris Moraitis | return false; |
653 | 42f67a2a | Dimitris Moraitis | } |
654 | 1a49199e | Dimitris Moraitis | |
655 | b335768e | Markos Gogoulos | // return flavorRef from cpu, disk, ram values
|
656 | 42f67a2a | Dimitris Moraitis | function identify_flavor(cpu, disk, ram){ |
657 | 42f67a2a | Dimitris Moraitis | for (i=0;i<flavors.length;i++){ |
658 | 42f67a2a | Dimitris Moraitis | if (flavors[i]['cpu'] == cpu && flavors[i]['disk']==disk && flavors[i]['ram']==ram) { |
659 | 42f67a2a | Dimitris Moraitis | return flavors[i]['id'] |
660 | 42f67a2a | Dimitris Moraitis | } |
661 | 42f67a2a | Dimitris Moraitis | } |
662 | 42f67a2a | Dimitris Moraitis | return 0; |
663 | 42f67a2a | Dimitris Moraitis | } |
664 | 42f67a2a | Dimitris Moraitis | |
665 | 45ab204d | Markos Gogoulos | // return image entry from imageRef
|
666 | 45ab204d | Markos Gogoulos | function get_image(imageRef) { |
667 | 45ab204d | Markos Gogoulos | for (i=0;i<images.length;i++){ |
668 | 45ab204d | Markos Gogoulos | if (images[i]['id'] == imageRef) { |
669 | 45ab204d | Markos Gogoulos | return images[i];
|
670 | 45ab204d | Markos Gogoulos | } |
671 | 45ab204d | Markos Gogoulos | } |
672 | 45ab204d | Markos Gogoulos | return 0; |
673 | 45ab204d | Markos Gogoulos | } |
674 | 45ab204d | Markos Gogoulos | |
675 | f533f224 | Vangelis Koukis | // return machine entry from serverID
|
676 | f533f224 | Vangelis Koukis | function get_machine(serverID) { |
677 | f533f224 | Vangelis Koukis | for (i=0;i<servers.length;i++){ |
678 | f533f224 | Vangelis Koukis | if (servers[i]['id'] == serverID) { |
679 | f533f224 | Vangelis Koukis | return servers[i];
|
680 | f533f224 | Vangelis Koukis | } |
681 | f533f224 | Vangelis Koukis | } |
682 | f533f224 | Vangelis Koukis | return 0; |
683 | f533f224 | Vangelis Koukis | } |
684 | f533f224 | Vangelis Koukis | |
685 | f533f224 | Vangelis Koukis | // update the actions in icon view, per server
|
686 | f533f224 | Vangelis Koukis | function update_iconview_actions(serverID, server_status) { |
687 | dc3e66b9 | Mike Muzurakis | if ($.cookie("view")=='2') { |
688 | dc3e66b9 | Mike Muzurakis | // remove .disable from all actions to begin with
|
689 | 6a738cca | Christodoulos Psaltis | $('#machinesview-single #' + serverID + ' div.single-action').show(); |
690 | dc3e66b9 | Mike Muzurakis | // decide which actions should be disabled
|
691 | dc3e66b9 | Mike Muzurakis | for (current_action in actions) { |
692 | dc3e66b9 | Mike Muzurakis | if (actions[current_action].indexOf(server_status) == -1 ) { |
693 | 6a738cca | Christodoulos Psaltis | $('#machinesview-single #' + serverID + ' div.action-' + current_action).hide(); |
694 | dc3e66b9 | Mike Muzurakis | } |
695 | dc3e66b9 | Mike Muzurakis | } |
696 | dc3e66b9 | Mike Muzurakis | } else {
|
697 | dc3e66b9 | Mike Muzurakis | // remove .disable from all actions to begin with
|
698 | 19697f4f | Mike Muzurakis | $('#machinesview-icon.standard #' + serverID + ' div.actions').find('a').removeClass('disabled'); |
699 | dc3e66b9 | Mike Muzurakis | // decide which actions should be disabled
|
700 | dc3e66b9 | Mike Muzurakis | for (current_action in actions) { |
701 | dc3e66b9 | Mike Muzurakis | if (actions[current_action].indexOf(server_status) == -1 ) { |
702 | dc3e66b9 | Mike Muzurakis | $('#machinesview-icon.standard #' + serverID + ' a.action-' + current_action).addClass('disabled'); |
703 | dc3e66b9 | Mike Muzurakis | } |
704 | f533f224 | Vangelis Koukis | } |
705 | f533f224 | Vangelis Koukis | } |
706 | f533f224 | Vangelis Koukis | } |
707 | f533f224 | Vangelis Koukis | |
708 | dcf153ce | Christodoulos Psaltis | // update the actions in list view
|
709 | f533f224 | Vangelis Koukis | function update_listview_actions() { |
710 | f533f224 | Vangelis Koukis | var states = [];
|
711 | f533f224 | Vangelis Koukis | var on = [];
|
712 | f533f224 | Vangelis Koukis | var checked = $("table.list-machines tbody input[type='checkbox']:checked"); |
713 | f533f224 | Vangelis Koukis | // disable all actions to begin with
|
714 | f533f224 | Vangelis Koukis | $('#machinesview .list div.actions').children().removeClass('enabled'); |
715 | f533f224 | Vangelis Koukis | |
716 | f533f224 | Vangelis Koukis | // are there multiple machines selected?
|
717 | f533f224 | Vangelis Koukis | if (checked.length>1) |
718 | f533f224 | Vangelis Koukis | states[0] = 'multiple'; |
719 | f533f224 | Vangelis Koukis | |
720 | f533f224 | Vangelis Koukis | // check the states of selected machines
|
721 | f533f224 | Vangelis Koukis | checked.each(function(i,checkbox) {
|
722 | f533f224 | Vangelis Koukis | states[states.length] = checkbox.className; |
723 | f533f224 | Vangelis Koukis | var ip = $("#" + checkbox.id.replace('input-','') + ".ip span.public").text(); |
724 | f533f224 | Vangelis Koukis | if (ip.replace('undefined','').length) |
725 | f533f224 | Vangelis Koukis | states[states.length] = 'network';
|
726 | f533f224 | Vangelis Koukis | }); |
727 | f533f224 | Vangelis Koukis | |
728 | f533f224 | Vangelis Koukis | // decide which actions should be enabled
|
729 | f533f224 | Vangelis Koukis | for (a in actions) { |
730 | f533f224 | Vangelis Koukis | var enabled = false; |
731 | f533f224 | Vangelis Koukis | for (var s =0; s<states.length; s++) { |
732 | f533f224 | Vangelis Koukis | if (actions[a].indexOf(states[s]) != -1 ) { |
733 | f533f224 | Vangelis Koukis | enabled = true;
|
734 | f533f224 | Vangelis Koukis | } else {
|
735 | f533f224 | Vangelis Koukis | enabled = false;
|
736 | f533f224 | Vangelis Koukis | break;
|
737 | f533f224 | Vangelis Koukis | } |
738 | f533f224 | Vangelis Koukis | } |
739 | f533f224 | Vangelis Koukis | if (enabled)
|
740 | f533f224 | Vangelis Koukis | on[on.length]=a; |
741 | f533f224 | Vangelis Koukis | } |
742 | f533f224 | Vangelis Koukis | // enable those actions
|
743 | f533f224 | Vangelis Koukis | for (action in on) { |
744 | f533f224 | Vangelis Koukis | $("#action-" + on[action]).addClass('enabled'); |
745 | f533f224 | Vangelis Koukis | } |
746 | e32c2a5d | Dimitris Moraitis | } |
747 | 146b6003 | Dimitris Moraitis | |
748 | 0971fa71 | Markos Gogoulos | //create server action
|
749 | 0971fa71 | Markos Gogoulos | function create_vm(machineName, imageRef, flavorRef){ |
750 | 45ab204d | Markos Gogoulos | var image_logo = os_icon(get_image(imageRef).metadata);
|
751 | f533f224 | Vangelis Koukis | var uri = API_URL + '/servers'; |
752 | 0971fa71 | Markos Gogoulos | var payload = {
|
753 | 0971fa71 | Markos Gogoulos | "server": {
|
754 | 0971fa71 | Markos Gogoulos | "name": machineName,
|
755 | 0971fa71 | Markos Gogoulos | "imageRef": imageRef,
|
756 | 0971fa71 | Markos Gogoulos | "flavorRef" : flavorRef,
|
757 | 0971fa71 | Markos Gogoulos | "metadata" : {
|
758 | 45ab204d | Markos Gogoulos | "OS" : image_logo
|
759 | 038383b1 | Dimitris Moraitis | } |
760 | 0971fa71 | Markos Gogoulos | } |
761 | 0971fa71 | Markos Gogoulos | }; |
762 | 0971fa71 | Markos Gogoulos | |
763 | 0971fa71 | Markos Gogoulos | $.ajax({
|
764 | 7e45ddef | Dimitris Moraitis | url: uri,
|
765 | 0971fa71 | Markos Gogoulos | type: "POST", |
766 | f533f224 | Vangelis Koukis | contentType: "application/json", |
767 | b02144c8 | Vangelis Koukis | dataType: "json", |
768 | 0971fa71 | Markos Gogoulos | data: JSON.stringify(payload),
|
769 | 0971fa71 | Markos Gogoulos | timeout: TIMEOUT,
|
770 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
771 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
772 | ddf929a7 | Christodoulos Psaltis | $('#machines-pane a#create').data('overlay').close(); |
773 | aeed1f09 | Mike Muzurakis | try {
|
774 | cbb7a325 | Christodoulos Psaltis | ajax_error(jqXHR.status, undefined, 'Create VM', jqXHR.responseText); |
775 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
776 | cbb7a325 | Christodoulos Psaltis | ajax_error(0, undefined, 'Create VM', jqXHR.responseText); |
777 | aeed1f09 | Mike Muzurakis | } |
778 | 0971fa71 | Markos Gogoulos | }, |
779 | 0971fa71 | Markos Gogoulos | success: function(data, textStatus, jqXHR) { |
780 | 0971fa71 | Markos Gogoulos | if ( jqXHR.status == '202') { |
781 | b02144c8 | Vangelis Koukis | ajax_success("CREATE_VM_SUCCESS", data.server.adminPass);
|
782 | 0971fa71 | Markos Gogoulos | } else {
|
783 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
784 | ddf929a7 | Christodoulos Psaltis | $('#machines-pane a#create').data('overlay').close(); |
785 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, undefined, 'Create VM', jqXHR.responseText); |
786 | 0971fa71 | Markos Gogoulos | } |
787 | 0971fa71 | Markos Gogoulos | } |
788 | 0971fa71 | Markos Gogoulos | }); |
789 | 0971fa71 | Markos Gogoulos | } |
790 | 0971fa71 | Markos Gogoulos | |
791 | 42f67a2a | Dimitris Moraitis | // reboot action
|
792 | 42f67a2a | Dimitris Moraitis | function reboot(serverIDs){ |
793 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
794 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
795 | f533f224 | Vangelis Koukis | return false; |
796 | f533f224 | Vangelis Koukis | } |
797 | 42f67a2a | Dimitris Moraitis | // ajax post reboot call
|
798 | 42f67a2a | Dimitris Moraitis | var payload = {
|
799 | 42f67a2a | Dimitris Moraitis | "reboot": {"type" : "HARD"} |
800 | 42f67a2a | Dimitris Moraitis | }; |
801 | f533f224 | Vangelis Koukis | |
802 | a1a31201 | Dimitris Moraitis | var serverID = serverIDs.pop();
|
803 | f533f224 | Vangelis Koukis | |
804 | f533f224 | Vangelis Koukis | $.ajax({
|
805 | f533f224 | Vangelis Koukis | url: API_URL + '/servers/' + serverID + '/action', |
806 | f533f224 | Vangelis Koukis | type: "POST", |
807 | f533f224 | Vangelis Koukis | contentType: "application/json", |
808 | f533f224 | Vangelis Koukis | dataType: "json", |
809 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
810 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
811 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
812 | 3a254f7c | Christodoulos Psaltis | // in machine views
|
813 | 3a254f7c | Christodoulos Psaltis | if ( $.cookie("pane") == 0) { |
814 | 3a254f7c | Christodoulos Psaltis | try {
|
815 | 3a254f7c | Christodoulos Psaltis | display_failure(jqXHR.status, serverID, 'Reboot', jqXHR.responseText);
|
816 | 3a254f7c | Christodoulos Psaltis | } catch (err) {
|
817 | 3a254f7c | Christodoulos Psaltis | display_failure(0, serverID, 'Reboot', jqXHR.responseText); |
818 | 3a254f7c | Christodoulos Psaltis | } |
819 | 3a254f7c | Christodoulos Psaltis | } |
820 | 3a254f7c | Christodoulos Psaltis | // in network view
|
821 | 3a254f7c | Christodoulos Psaltis | else {
|
822 | 3a254f7c | Christodoulos Psaltis | try {
|
823 | 3a254f7c | Christodoulos Psaltis | display_reboot_failure(jqXHR.status, serverID, jqXHR.responseText); |
824 | 3a254f7c | Christodoulos Psaltis | } catch (err) {
|
825 | 3a254f7c | Christodoulos Psaltis | display_reboot_failure(0, serverID, jqXHR.responseText);
|
826 | 3a254f7c | Christodoulos Psaltis | } |
827 | aeed1f09 | Mike Muzurakis | } |
828 | f533f224 | Vangelis Koukis | }, |
829 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
830 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '202') { |
831 | 583932c4 | Christodoulos Psaltis | try {
|
832 | 583932c4 | Christodoulos Psaltis | console.info('rebooted ' + serverID);
|
833 | a1a31201 | Dimitris Moraitis | } catch(err) {}
|
834 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
835 | 3a254f7c | Christodoulos Psaltis | // in machine views
|
836 | 3a254f7c | Christodoulos Psaltis | if ( $.cookie("pane") == 0) { |
837 | 3a254f7c | Christodoulos Psaltis | display_success(serverID); |
838 | 3a254f7c | Christodoulos Psaltis | } |
839 | 3a254f7c | Christodoulos Psaltis | // in network view
|
840 | 3a254f7c | Christodoulos Psaltis | else {
|
841 | 3a254f7c | Christodoulos Psaltis | display_reboot_success(serverID); |
842 | 3a254f7c | Christodoulos Psaltis | } |
843 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
844 | f533f224 | Vangelis Koukis | reboot(serverIDs); |
845 | f533f224 | Vangelis Koukis | } else {
|
846 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, serverID, 'Reboot', jqXHR.responseText);
|
847 | f533f224 | Vangelis Koukis | } |
848 | f533f224 | Vangelis Koukis | } |
849 | 42f67a2a | Dimitris Moraitis | }); |
850 | 42f67a2a | Dimitris Moraitis | return false; |
851 | 42f67a2a | Dimitris Moraitis | } |
852 | 42f67a2a | Dimitris Moraitis | |
853 | 42f67a2a | Dimitris Moraitis | // shutdown action
|
854 | 42f67a2a | Dimitris Moraitis | function shutdown(serverIDs) { |
855 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
856 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
857 | f533f224 | Vangelis Koukis | return false; |
858 | f533f224 | Vangelis Koukis | } |
859 | 42f67a2a | Dimitris Moraitis | // ajax post shutdown call
|
860 | 42f67a2a | Dimitris Moraitis | var payload = {
|
861 | 9bc2dbfa | Vangelis Koukis | "shutdown": {}
|
862 | b02144c8 | Vangelis Koukis | }; |
863 | 42f67a2a | Dimitris Moraitis | |
864 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
865 | f533f224 | Vangelis Koukis | |
866 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
867 | f533f224 | Vangelis Koukis | url: API_URL + '/servers/' + serverID + '/action', |
868 | f533f224 | Vangelis Koukis | type: "POST", |
869 | f533f224 | Vangelis Koukis | contentType: "application/json", |
870 | f533f224 | Vangelis Koukis | dataType: "json", |
871 | 42f67a2a | Dimitris Moraitis | data: JSON.stringify(payload),
|
872 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
873 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
874 | aeed1f09 | Mike Muzurakis | try {
|
875 | aeed1f09 | Mike Muzurakis | display_failure(jqXHR.status, serverID, 'Shutdown', jqXHR.responseText);
|
876 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
877 | b8110bae | Mike Muzurakis | display_failure(0, serverID, 'Shutdown', jqXHR.responseText); |
878 | aeed1f09 | Mike Muzurakis | } |
879 | aeed1f09 | Mike Muzurakis | }, |
880 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
881 | 42f67a2a | Dimitris Moraitis | if ( jqXHR.status == '202') { |
882 | f533f224 | Vangelis Koukis | try {
|
883 | 583932c4 | Christodoulos Psaltis | console.info('suspended ' + serverID);
|
884 | a1a31201 | Dimitris Moraitis | } catch(err) {}
|
885 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
886 | f533f224 | Vangelis Koukis | display_success(serverID); |
887 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
888 | 42f67a2a | Dimitris Moraitis | shutdown(serverIDs); |
889 | 42f67a2a | Dimitris Moraitis | } else {
|
890 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, serverID, 'Shutdown', jqXHR.responseText);
|
891 | 748139ba | Christodoulos Psaltis | } |
892 | b02144c8 | Vangelis Koukis | } |
893 | 42f67a2a | Dimitris Moraitis | }); |
894 | b02144c8 | Vangelis Koukis | return false; |
895 | 42f67a2a | Dimitris Moraitis | } |
896 | 42f67a2a | Dimitris Moraitis | |
897 | 42f67a2a | Dimitris Moraitis | // destroy action
|
898 | 42f67a2a | Dimitris Moraitis | function destroy(serverIDs) { |
899 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
900 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
901 | f533f224 | Vangelis Koukis | return false; |
902 | f533f224 | Vangelis Koukis | } |
903 | f15025bc | Christodoulos Psaltis | // ajax post destroy call can have an empty request body
|
904 | b02144c8 | Vangelis Koukis | var payload = {};
|
905 | 42f67a2a | Dimitris Moraitis | |
906 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
907 | f533f224 | Vangelis Koukis | |
908 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
909 | f533f224 | Vangelis Koukis | url: API_URL + '/servers/' + serverID, |
910 | f533f224 | Vangelis Koukis | type: "DELETE", |
911 | f533f224 | Vangelis Koukis | contentType: "application/json", |
912 | f533f224 | Vangelis Koukis | dataType: "json", |
913 | 42f67a2a | Dimitris Moraitis | data: JSON.stringify(payload),
|
914 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
915 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
916 | aeed1f09 | Mike Muzurakis | try {
|
917 | aeed1f09 | Mike Muzurakis | display_failure(jqXHR.status, serverID, 'Destroy', jqXHR.responseText);
|
918 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
919 | b8110bae | Mike Muzurakis | display_failure(0, serverID, 'Destroy', jqXHR.responseText); |
920 | aeed1f09 | Mike Muzurakis | } |
921 | aeed1f09 | Mike Muzurakis | }, |
922 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
923 | 2d5cea9b | Markos Gogoulos | if ( jqXHR.status == '204') { |
924 | f533f224 | Vangelis Koukis | try {
|
925 | f15025bc | Christodoulos Psaltis | console.info('destroyed ' + serverID);
|
926 | a1a31201 | Dimitris Moraitis | } catch (err) {}
|
927 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
928 | f533f224 | Vangelis Koukis | display_success(serverID); |
929 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
930 | 38b1f387 | Christodoulos Psaltis | destroy(serverIDs); |
931 | 42f67a2a | Dimitris Moraitis | } else {
|
932 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, serverID, 'Destroy', jqXHR.responseText);
|
933 | 748139ba | Christodoulos Psaltis | } |
934 | b02144c8 | Vangelis Koukis | } |
935 | 42f67a2a | Dimitris Moraitis | }); |
936 | b02144c8 | Vangelis Koukis | return false; |
937 | 42f67a2a | Dimitris Moraitis | } |
938 | 42f67a2a | Dimitris Moraitis | |
939 | 42f67a2a | Dimitris Moraitis | // start action
|
940 | 42f67a2a | Dimitris Moraitis | function start(serverIDs){ |
941 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
942 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
943 | f533f224 | Vangelis Koukis | return false; |
944 | f533f224 | Vangelis Koukis | } |
945 | 42f67a2a | Dimitris Moraitis | // ajax post start call
|
946 | 42f67a2a | Dimitris Moraitis | var payload = {
|
947 | 623d7244 | Vangelis Koukis | "start": {}
|
948 | b02144c8 | Vangelis Koukis | }; |
949 | 42f67a2a | Dimitris Moraitis | |
950 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
951 | f533f224 | Vangelis Koukis | |
952 | 42f67a2a | Dimitris Moraitis | $.ajax({
|
953 | 0971fa71 | Markos Gogoulos | url: API_URL + '/servers/' + serverID + '/action', |
954 | 42f67a2a | Dimitris Moraitis | type: "POST", |
955 | f533f224 | Vangelis Koukis | contentType: "application/json", |
956 | 42f67a2a | Dimitris Moraitis | dataType: "json", |
957 | 42f67a2a | Dimitris Moraitis | data: JSON.stringify(payload),
|
958 | 42f67a2a | Dimitris Moraitis | timeout: TIMEOUT,
|
959 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
960 | aeed1f09 | Mike Muzurakis | try {
|
961 | aeed1f09 | Mike Muzurakis | display_failure(jqXHR.status, serverID, 'Start', jqXHR.responseText);
|
962 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
963 | b8110bae | Mike Muzurakis | display_failure(0, serverID, 'Start', jqXHR.responseText); |
964 | aeed1f09 | Mike Muzurakis | } |
965 | aeed1f09 | Mike Muzurakis | }, |
966 | 42f67a2a | Dimitris Moraitis | success: function(data, textStatus, jqXHR) { |
967 | 42f67a2a | Dimitris Moraitis | if ( jqXHR.status == '202') { |
968 | f533f224 | Vangelis Koukis | try {
|
969 | 583932c4 | Christodoulos Psaltis | console.info('started ' + serverID);
|
970 | a1a31201 | Dimitris Moraitis | } catch(err) {}
|
971 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
972 | f533f224 | Vangelis Koukis | display_success(serverID); |
973 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
974 | 42f67a2a | Dimitris Moraitis | start(serverIDs); |
975 | 42f67a2a | Dimitris Moraitis | } else {
|
976 | 038383b1 | Dimitris Moraitis | ajax_error(jqXHR.status, serverID, 'Start', jqXHR.responseText);
|
977 | 748139ba | Christodoulos Psaltis | } |
978 | 748139ba | Christodoulos Psaltis | } |
979 | 42f67a2a | Dimitris Moraitis | }); |
980 | 42f67a2a | Dimitris Moraitis | return false; |
981 | 42f67a2a | Dimitris Moraitis | } |
982 | 6902f72e | clopy | |
983 | b02144c8 | Vangelis Koukis | // Show VNC console
|
984 | b02144c8 | Vangelis Koukis | function vnc_attachment(host, port, password) { |
985 | b02144c8 | Vangelis Koukis | // FIXME: Must be made into parameters, in settings.py
|
986 | b02144c8 | Vangelis Koukis | //vnc = open("", "displayWindow",
|
987 | b02144c8 | Vangelis Koukis | // "status=yes,toolbar=yes,menubar=yes");
|
988 | b02144c8 | Vangelis Koukis | vd = document.open("application/x-vnc");
|
989 | b02144c8 | Vangelis Koukis | |
990 | b02144c8 | Vangelis Koukis | vd.writeln("[connection]");
|
991 | b02144c8 | Vangelis Koukis | vd.writeln("host=" + host);
|
992 | b02144c8 | Vangelis Koukis | vd.writeln("port=" + port);
|
993 | b02144c8 | Vangelis Koukis | vd.writeln("password=" + password);
|
994 | b02144c8 | Vangelis Koukis | |
995 | b02144c8 | Vangelis Koukis | vd.close(); |
996 | b02144c8 | Vangelis Koukis | } |
997 | b02144c8 | Vangelis Koukis | |
998 | b02144c8 | Vangelis Koukis | // Show VNC console
|
999 | f533f224 | Vangelis Koukis | function show_vnc_console(serverID, serverName, serverIP, host, port, password) { |
1000 | f533f224 | Vangelis Koukis | var params_url = '?machine=' + serverName + '&host_ip=' + serverIP + '&host=' + host + '&port=' + port + '&password=' + password; |
1001 | f533f224 | Vangelis Koukis | var params_window = 'scrollbars=no,' + |
1002 | f533f224 | Vangelis Koukis | 'menubar=no,' +
|
1003 | f533f224 | Vangelis Koukis | 'toolbar=no,' +
|
1004 | f533f224 | Vangelis Koukis | 'status=no,' +
|
1005 | f533f224 | Vangelis Koukis | 'top=0,' +
|
1006 | f533f224 | Vangelis Koukis | 'left=0,' +
|
1007 | f533f224 | Vangelis Koukis | 'height=' + screen.height + ',' + |
1008 | f533f224 | Vangelis Koukis | 'width=' + screen.width + ',' + |
1009 | f533f224 | Vangelis Koukis | 'fullscreen=yes';
|
1010 | f533f224 | Vangelis Koukis | |
1011 | 7e51c3db | Markos Gogoulos | window.open('machines/console' + params_url, 'formresult' + serverID, params_window); |
1012 | f533f224 | Vangelis Koukis | |
1013 | f533f224 | Vangelis Koukis | // Restore os icon in list view
|
1014 | f533f224 | Vangelis Koukis | osIcon = $('#'+serverID).parent().parent().find('.list-logo'); |
1015 | f533f224 | Vangelis Koukis | osIcon.attr('src',osIcon.attr('os')); |
1016 | 9c901aec | Markos Gogoulos | return false; |
1017 | b02144c8 | Vangelis Koukis | } |
1018 | b02144c8 | Vangelis Koukis | |
1019 | b02144c8 | Vangelis Koukis | // console action
|
1020 | fb3eec11 | Christodoulos Psaltis | function open_console(serverIDs){ |
1021 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
1022 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1023 | f533f224 | Vangelis Koukis | return false; |
1024 | f533f224 | Vangelis Koukis | } |
1025 | b02144c8 | Vangelis Koukis | // ajax post start call
|
1026 | b02144c8 | Vangelis Koukis | var payload = {
|
1027 | b02144c8 | Vangelis Koukis | "console": {"type": "vnc"} |
1028 | b02144c8 | Vangelis Koukis | }; |
1029 | b02144c8 | Vangelis Koukis | |
1030 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
1031 | f533f224 | Vangelis Koukis | |
1032 | f533f224 | Vangelis Koukis | var machine = get_machine(serverID);
|
1033 | f533f224 | Vangelis Koukis | var serverName = machine.name;
|
1034 | f533f224 | Vangelis Koukis | var serverIP = machine.addresses.values[0].values[0].addr; |
1035 | f533f224 | Vangelis Koukis | |
1036 | b02144c8 | Vangelis Koukis | $.ajax({
|
1037 | b02144c8 | Vangelis Koukis | url: API_URL + '/servers/' + serverID + '/action', |
1038 | b02144c8 | Vangelis Koukis | type: "POST", |
1039 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1040 | b02144c8 | Vangelis Koukis | dataType: "json", |
1041 | b02144c8 | Vangelis Koukis | data: JSON.stringify(payload),
|
1042 | b02144c8 | Vangelis Koukis | timeout: TIMEOUT,
|
1043 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1044 | aeed1f09 | Mike Muzurakis | try {
|
1045 | aeed1f09 | Mike Muzurakis | display_failure(jqXHR.status, serverID, 'Console', jqXHR.responseText);
|
1046 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
1047 | b8110bae | Mike Muzurakis | display_failure(0, serverID, 'Console', jqXHR.responseText); |
1048 | aeed1f09 | Mike Muzurakis | } |
1049 | aeed1f09 | Mike Muzurakis | }, |
1050 | b02144c8 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1051 | b02144c8 | Vangelis Koukis | if ( jqXHR.status == '200') { |
1052 | f533f224 | Vangelis Koukis | try {
|
1053 | b02144c8 | Vangelis Koukis | console.info('got_console ' + serverID);
|
1054 | b02144c8 | Vangelis Koukis | } catch(err) {}
|
1055 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
1056 | ddf929a7 | Christodoulos Psaltis | // show_vnc_console(serverID, serverName, serverIP,
|
1057 | ddf929a7 | Christodoulos Psaltis | // data.console.host,data.console.port,data.console.password);
|
1058 | ddf929a7 | Christodoulos Psaltis | show_vnc_console(serverID, serverName, serverIP, |
1059 | ddf929a7 | Christodoulos Psaltis | data.console.host,data.console.port,data.console.password); |
1060 | f533f224 | Vangelis Koukis | display_success(serverID); |
1061 | 74175c17 | Christodoulos Psaltis | // hide spinner
|
1062 | 74175c17 | Christodoulos Psaltis | $('#' + serverID + ' .spinner').hide(); |
1063 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
1064 | 74175c17 | Christodoulos Psaltis | open_console(serverIDs); |
1065 | b02144c8 | Vangelis Koukis | } else {
|
1066 | b02144c8 | Vangelis Koukis | ajax_error(jqXHR.status, serverID, 'Console', jqXHR.responseText);
|
1067 | b02144c8 | Vangelis Koukis | } |
1068 | b02144c8 | Vangelis Koukis | } |
1069 | b02144c8 | Vangelis Koukis | }); |
1070 | b02144c8 | Vangelis Koukis | return false; |
1071 | b02144c8 | Vangelis Koukis | } |
1072 | b02144c8 | Vangelis Koukis | |
1073 | f533f224 | Vangelis Koukis | // rename server
|
1074 | a70a9116 | Mike Muzurakis | function rename(serverID, serverName){ |
1075 | f533f224 | Vangelis Koukis | if (!serverID.length){
|
1076 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1077 | f533f224 | Vangelis Koukis | return false; |
1078 | f533f224 | Vangelis Koukis | } |
1079 | 0d4faeb8 | Mike Muzurakis | // ajax post rename call
|
1080 | 0d4faeb8 | Mike Muzurakis | var payload = {
|
1081 | 73715544 | Christodoulos Psaltis | "server": {"name": serverName} |
1082 | b02144c8 | Vangelis Koukis | }; |
1083 | 0d4faeb8 | Mike Muzurakis | |
1084 | 0d4faeb8 | Mike Muzurakis | $.ajax({
|
1085 | 5b35631e | Markos Gogoulos | url: API_URL + '/servers/' + serverID, |
1086 | a70a9116 | Mike Muzurakis | type: "PUT", |
1087 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1088 | 0d4faeb8 | Mike Muzurakis | dataType: "json", |
1089 | 0d4faeb8 | Mike Muzurakis | data: JSON.stringify(payload),
|
1090 | 0d4faeb8 | Mike Muzurakis | timeout: TIMEOUT,
|
1091 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1092 | aeed1f09 | Mike Muzurakis | try {
|
1093 | aeed1f09 | Mike Muzurakis | display_failure(jqXHR.status, serverID, 'Rename', jqXHR.responseText);
|
1094 | aeed1f09 | Mike Muzurakis | } catch(err) {
|
1095 | b8110bae | Mike Muzurakis | display_failure(0, serverID, 'Rename', jqXHR.responseText); |
1096 | aeed1f09 | Mike Muzurakis | } |
1097 | aeed1f09 | Mike Muzurakis | }, |
1098 | 0d4faeb8 | Mike Muzurakis | success: function(data, textStatus, jqXHR) { |
1099 | 380c0520 | Dimitris Moraitis | if ( jqXHR.status == '204' || jqXHR.status == '1223') { |
1100 | f533f224 | Vangelis Koukis | try {
|
1101 | 0d4faeb8 | Mike Muzurakis | console.info('renamed ' + serverID);
|
1102 | 0d4faeb8 | Mike Muzurakis | } catch(err) {}
|
1103 | f533f224 | Vangelis Koukis | // indicate that the action succeeded
|
1104 | f533f224 | Vangelis Koukis | display_success(serverID); |
1105 | 0d4faeb8 | Mike Muzurakis | } else {
|
1106 | 0d4faeb8 | Mike Muzurakis | ajax_error(jqXHR.status, serverID, 'Rename', jqXHR.responseText);
|
1107 | 0d4faeb8 | Mike Muzurakis | } |
1108 | 0d4faeb8 | Mike Muzurakis | } |
1109 | 0d4faeb8 | Mike Muzurakis | }); |
1110 | 0d4faeb8 | Mike Muzurakis | return false; |
1111 | 0d4faeb8 | Mike Muzurakis | } |
1112 | 0d4faeb8 | Mike Muzurakis | |
1113 | 5186eb04 | Christodoulos Psaltis | // get server metadata
|
1114 | f533f224 | Vangelis Koukis | function get_metadata(serverID, keys_only) { |
1115 | 5186eb04 | Christodoulos Psaltis | $.ajax({
|
1116 | 5186eb04 | Christodoulos Psaltis | url: API_URL + '/servers/' + serverID + '/meta', |
1117 | d1e14e2c | Mike Muzurakis | cache: false, |
1118 | 5186eb04 | Christodoulos Psaltis | type: "GET", |
1119 | 5186eb04 | Christodoulos Psaltis | //async: false,
|
1120 | 5186eb04 | Christodoulos Psaltis | dataType: "json", |
1121 | 5186eb04 | Christodoulos Psaltis | timeout: TIMEOUT,
|
1122 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1123 | 5186eb04 | Christodoulos Psaltis | try {
|
1124 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
1125 | ddf929a7 | Christodoulos Psaltis | $("a#metadata-scrollable").data('overlay').close(); |
1126 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Get metadata', jqXHR.responseText); |
1127 | f533f224 | Vangelis Koukis | } catch (err) {
|
1128 | f533f224 | Vangelis Koukis | ajax_error(err); |
1129 | f533f224 | Vangelis Koukis | } |
1130 | 5186eb04 | Christodoulos Psaltis | }, |
1131 | 5186eb04 | Christodoulos Psaltis | success: function(data, textStatus, jqXHR) { |
1132 | 1b3857ab | Christodoulos Psaltis | // to list the new results in the edit dialog
|
1133 | f533f224 | Vangelis Koukis | if (keys_only) {
|
1134 | f533f224 | Vangelis Koukis | list_metadata_keys(serverID, data.metadata.values); |
1135 | f533f224 | Vangelis Koukis | } else {
|
1136 | f533f224 | Vangelis Koukis | list_metadata(data); |
1137 | f533f224 | Vangelis Koukis | list_metadata_keys(serverID, data.metadata.values); |
1138 | f533f224 | Vangelis Koukis | } |
1139 | f533f224 | Vangelis Koukis | //hide spinner
|
1140 | f533f224 | Vangelis Koukis | $('#metadata-wizard .large-spinner').hide(); |
1141 | 5186eb04 | Christodoulos Psaltis | } |
1142 | 5186eb04 | Christodoulos Psaltis | }); |
1143 | 5186eb04 | Christodoulos Psaltis | return false; |
1144 | 5186eb04 | Christodoulos Psaltis | } |
1145 | 5186eb04 | Christodoulos Psaltis | |
1146 | 1b3857ab | Christodoulos Psaltis | // delete metadata key-value pair
|
1147 | 1b3857ab | Christodoulos Psaltis | function delete_metadata(serverID, meta_key) { |
1148 | 0943cc77 | Markos Gogoulos | $.ajax({
|
1149 | 0943cc77 | Markos Gogoulos | url: API_URL + '/servers/' + serverID + '/meta/' + meta_key, |
1150 | 0943cc77 | Markos Gogoulos | type: "DELETE", |
1151 | 0943cc77 | Markos Gogoulos | //async: false,
|
1152 | 0943cc77 | Markos Gogoulos | dataType: "json", |
1153 | 0943cc77 | Markos Gogoulos | timeout: TIMEOUT,
|
1154 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1155 | 0943cc77 | Markos Gogoulos | try {
|
1156 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
1157 | ddf929a7 | Christodoulos Psaltis | $("a#metadata-scrollable").data('overlay').close(); |
1158 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Delete metadata', jqXHR.responseText); |
1159 | f533f224 | Vangelis Koukis | } catch (err) {
|
1160 | f533f224 | Vangelis Koukis | ajax_error(err); |
1161 | f533f224 | Vangelis Koukis | } |
1162 | 0943cc77 | Markos Gogoulos | }, |
1163 | 0943cc77 | Markos Gogoulos | success: function(data, textStatus, jqXHR) { |
1164 | ddf929a7 | Christodoulos Psaltis | // success: Do nothing, the UI is already updated
|
1165 | 0943cc77 | Markos Gogoulos | } |
1166 | 0943cc77 | Markos Gogoulos | }); |
1167 | 0943cc77 | Markos Gogoulos | return false; |
1168 | 0943cc77 | Markos Gogoulos | } |
1169 | 0943cc77 | Markos Gogoulos | |
1170 | 1b3857ab | Christodoulos Psaltis | // add metadata key-value pair
|
1171 | f533f224 | Vangelis Koukis | function update_metadata(serverID, meta_key, meta_value) { |
1172 | 0c578a28 | Markos Gogoulos | var payload = {
|
1173 | 0c578a28 | Markos Gogoulos | "meta": {
|
1174 | 0c578a28 | Markos Gogoulos | } |
1175 | 0c578a28 | Markos Gogoulos | }; |
1176 | 0c578a28 | Markos Gogoulos | payload["meta"][meta_key] = meta_value;
|
1177 | 0c578a28 | Markos Gogoulos | |
1178 | 0c578a28 | Markos Gogoulos | $.ajax({
|
1179 | 0c578a28 | Markos Gogoulos | url: API_URL + '/servers/' + serverID + '/meta/' + meta_key, |
1180 | 0c578a28 | Markos Gogoulos | type: "PUT", |
1181 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1182 | f533f224 | Vangelis Koukis | dataType: "json", |
1183 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1184 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1185 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1186 | f533f224 | Vangelis Koukis | try {
|
1187 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
1188 | ddf929a7 | Christodoulos Psaltis | $("a#metadata-scrollable").data('overlay').close(); |
1189 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'add metadata', jqXHR.responseText); |
1190 | f533f224 | Vangelis Koukis | } catch (err) {
|
1191 | f533f224 | Vangelis Koukis | ajax_error(err); |
1192 | f533f224 | Vangelis Koukis | } |
1193 | f533f224 | Vangelis Koukis | }, |
1194 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1195 | f533f224 | Vangelis Koukis | // success: Update icons if meta key is OS
|
1196 | f533f224 | Vangelis Koukis | if (meta_key == "OS") { |
1197 | 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'); |
1198 | 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'); |
1199 | f533f224 | Vangelis Koukis | } |
1200 | f533f224 | Vangelis Koukis | } |
1201 | f533f224 | Vangelis Koukis | }); |
1202 | f533f224 | Vangelis Koukis | return false; |
1203 | f533f224 | Vangelis Koukis | } |
1204 | f533f224 | Vangelis Koukis | |
1205 | f533f224 | Vangelis Koukis | // create network
|
1206 | f533f224 | Vangelis Koukis | function create_network(networkName){ |
1207 | f533f224 | Vangelis Koukis | // ajax post start call
|
1208 | f533f224 | Vangelis Koukis | var payload = {
|
1209 | f533f224 | Vangelis Koukis | "network": { "name": networkName } |
1210 | f533f224 | Vangelis Koukis | }; |
1211 | f533f224 | Vangelis Koukis | |
1212 | f533f224 | Vangelis Koukis | $.ajax({
|
1213 | f533f224 | Vangelis Koukis | url: API_URL + '/networks', |
1214 | f533f224 | Vangelis Koukis | type: "POST", |
1215 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1216 | f533f224 | Vangelis Koukis | dataType: "json", |
1217 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1218 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1219 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1220 | f533f224 | Vangelis Koukis | try {
|
1221 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
1222 | ddf929a7 | Christodoulos Psaltis | $("a#networkscreate").overlay().close(); |
1223 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Create network', jqXHR.responseText); |
1224 | f533f224 | Vangelis Koukis | } catch (err) {
|
1225 | f533f224 | Vangelis Koukis | ajax_error(err); |
1226 | f533f224 | Vangelis Koukis | } |
1227 | f533f224 | Vangelis Koukis | }, |
1228 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1229 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '202') { |
1230 | f533f224 | Vangelis Koukis | try {
|
1231 | f533f224 | Vangelis Koukis | console.info('created network ' + networkName);
|
1232 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1233 | a67bb993 | Christodoulos Psaltis | /*
|
1234 | a67bb993 | Christodoulos Psaltis | On success of this call nothing happens.
|
1235 | a67bb993 | Christodoulos Psaltis | When the UI gets the first update containing the created server,
|
1236 | a67bb993 | Christodoulos Psaltis | the creation wizard is closed and the new network is inserted
|
1237 | a67bb993 | Christodoulos Psaltis | to the DOM. This is done in update_networks_view()
|
1238 | a67bb993 | Christodoulos Psaltis | */
|
1239 | f533f224 | Vangelis Koukis | } else {
|
1240 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
1241 | a67bb993 | Christodoulos Psaltis | $("a#networkscreate").overlay().close(); |
1242 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Create network', jqXHR.responseText); |
1243 | f533f224 | Vangelis Koukis | } |
1244 | f533f224 | Vangelis Koukis | } |
1245 | f533f224 | Vangelis Koukis | }); |
1246 | f533f224 | Vangelis Koukis | return false; |
1247 | f533f224 | Vangelis Koukis | } |
1248 | f533f224 | Vangelis Koukis | |
1249 | f533f224 | Vangelis Koukis | // rename network
|
1250 | f533f224 | Vangelis Koukis | function rename_network(networkID, networkName){ |
1251 | f533f224 | Vangelis Koukis | if (!networkID.length){
|
1252 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1253 | f533f224 | Vangelis Koukis | return false; |
1254 | f533f224 | Vangelis Koukis | } |
1255 | f533f224 | Vangelis Koukis | // prepare payload
|
1256 | f533f224 | Vangelis Koukis | var payload = {
|
1257 | f533f224 | Vangelis Koukis | "network": {"name": networkName} |
1258 | f533f224 | Vangelis Koukis | }; |
1259 | f533f224 | Vangelis Koukis | // ajax call
|
1260 | f533f224 | Vangelis Koukis | $.ajax({
|
1261 | f533f224 | Vangelis Koukis | url: API_URL + '/networks/' + networkID, |
1262 | f533f224 | Vangelis Koukis | type: "PUT", |
1263 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1264 | f533f224 | Vangelis Koukis | dataType: "json", |
1265 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1266 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1267 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1268 | f533f224 | Vangelis Koukis | try {
|
1269 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Rename network', jqXHR.responseText); |
1270 | f533f224 | Vangelis Koukis | } catch (err) {
|
1271 | b8110bae | Mike Muzurakis | ajax_error(0, undefined, 'Rename network', jqXHR.responseText); |
1272 | f533f224 | Vangelis Koukis | } |
1273 | f533f224 | Vangelis Koukis | }, |
1274 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1275 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '204') { |
1276 | f533f224 | Vangelis Koukis | try {
|
1277 | f533f224 | Vangelis Koukis | console.info('renamed network' + networkID);
|
1278 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1279 | f533f224 | Vangelis Koukis | } else {
|
1280 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Rename network', jqXHR.responseText); |
1281 | f533f224 | Vangelis Koukis | } |
1282 | f533f224 | Vangelis Koukis | } |
1283 | f533f224 | Vangelis Koukis | }); |
1284 | f533f224 | Vangelis Koukis | return false; |
1285 | f533f224 | Vangelis Koukis | } |
1286 | f533f224 | Vangelis Koukis | |
1287 | f533f224 | Vangelis Koukis | function delete_network(networkIDs){ |
1288 | f533f224 | Vangelis Koukis | if (!networkIDs.length){
|
1289 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1290 | f533f224 | Vangelis Koukis | return false; |
1291 | f533f224 | Vangelis Koukis | } |
1292 | f533f224 | Vangelis Koukis | // get a network
|
1293 | f533f224 | Vangelis Koukis | var networkID = networkIDs.pop();
|
1294 | f533f224 | Vangelis Koukis | // ajax post destroy call can have an empty request body
|
1295 | f533f224 | Vangelis Koukis | var payload = {};
|
1296 | f533f224 | Vangelis Koukis | // ajax call
|
1297 | f533f224 | Vangelis Koukis | $.ajax({
|
1298 | f533f224 | Vangelis Koukis | url: API_URL + '/networks/' + networkID, |
1299 | f533f224 | Vangelis Koukis | type: "DELETE", |
1300 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1301 | f533f224 | Vangelis Koukis | dataType: "json", |
1302 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1303 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1304 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1305 | f533f224 | Vangelis Koukis | try {
|
1306 | 2aab1d5e | Christodoulos Psaltis | display_net_failure(jqXHR.status, networkID, 'Delete', jqXHR.responseText);
|
1307 | f533f224 | Vangelis Koukis | } catch (err) {
|
1308 | 2aab1d5e | Christodoulos Psaltis | display_net_failure(0, networkID, 'Delete', jqXHR.responseText); |
1309 | f533f224 | Vangelis Koukis | } |
1310 | f533f224 | Vangelis Koukis | }, |
1311 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1312 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '204') { |
1313 | f533f224 | Vangelis Koukis | try {
|
1314 | f533f224 | Vangelis Koukis | console.info('deleted network ' + networkID);
|
1315 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1316 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
1317 | f533f224 | Vangelis Koukis | delete_network(networkIDs); |
1318 | f533f224 | Vangelis Koukis | } else {
|
1319 | 3a254f7c | Christodoulos Psaltis | try {
|
1320 | 2aab1d5e | Christodoulos Psaltis | display_net_failure(jqXHR.status, networkID, 'Delete', jqXHR.responseText);
|
1321 | 3a254f7c | Christodoulos Psaltis | } catch (err) {
|
1322 | 2aab1d5e | Christodoulos Psaltis | display_net_failure(0, networkID, 'Delete', jqXHR.responseText); |
1323 | 3a254f7c | Christodoulos Psaltis | } |
1324 | f533f224 | Vangelis Koukis | } |
1325 | f533f224 | Vangelis Koukis | } |
1326 | f533f224 | Vangelis Koukis | }); |
1327 | f533f224 | Vangelis Koukis | return false; |
1328 | f533f224 | Vangelis Koukis | } |
1329 | f533f224 | Vangelis Koukis | |
1330 | f39b36a6 | Christodoulos Psaltis | function add_server_to_network(networkID, serverIDs, serverNames, serverStates) { |
1331 | f533f224 | Vangelis Koukis | if (!serverIDs.length){
|
1332 | be191315 | Christodoulos Psaltis | // close the overlay when all the calls are made
|
1333 | be191315 | Christodoulos Psaltis | $("a#add-machines-overlay").overlay().close(); |
1334 | f533f224 | Vangelis Koukis | return false; |
1335 | f533f224 | Vangelis Koukis | } |
1336 | f533f224 | Vangelis Koukis | // get a server
|
1337 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
1338 | 82835e06 | Christodoulos Psaltis | var serverName = serverNames.pop();
|
1339 | f39b36a6 | Christodoulos Psaltis | var serverState = serverStates.pop();
|
1340 | f533f224 | Vangelis Koukis | // prepare payload
|
1341 | f533f224 | Vangelis Koukis | var payload = {
|
1342 | f533f224 | Vangelis Koukis | "add": { "serverRef": serverID } |
1343 | f533f224 | Vangelis Koukis | }; |
1344 | f533f224 | Vangelis Koukis | // prepare ajax call
|
1345 | f533f224 | Vangelis Koukis | $.ajax({
|
1346 | f533f224 | Vangelis Koukis | url: API_URL + '/networks/' + networkID + '/action', |
1347 | f533f224 | Vangelis Koukis | type: "POST", |
1348 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1349 | b02144c8 | Vangelis Koukis | dataType: "json", |
1350 | 0c578a28 | Markos Gogoulos | data: JSON.stringify(payload),
|
1351 | 0c578a28 | Markos Gogoulos | timeout: TIMEOUT,
|
1352 | b02144c8 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1353 | 0c578a28 | Markos Gogoulos | try {
|
1354 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
1355 | ddf929a7 | Christodoulos Psaltis | $("a#add-machines-overlay").data('overlay').close(); |
1356 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Add server to network', jqXHR.responseText); |
1357 | f533f224 | Vangelis Koukis | } catch (err) {
|
1358 | b8110bae | Mike Muzurakis | ajax_error(0, undefined, 'Add server to network', jqXHR.responseText); |
1359 | f533f224 | Vangelis Koukis | } |
1360 | 0c578a28 | Markos Gogoulos | }, |
1361 | 0c578a28 | Markos Gogoulos | success: function(data, textStatus, jqXHR) { |
1362 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '202') { |
1363 | f533f224 | Vangelis Koukis | try {
|
1364 | f533f224 | Vangelis Koukis | console.info('added server ' + serverID + ' to network ' + networkID); |
1365 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1366 | 82835e06 | Christodoulos Psaltis | // toggle the reboot dialog
|
1367 | f39b36a6 | Christodoulos Psaltis | display_reboot_dialog(networkID, serverID, serverName, serverState); |
1368 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
1369 | f39b36a6 | Christodoulos Psaltis | add_server_to_network(networkID, serverIDs, serverNames, serverStates); |
1370 | f533f224 | Vangelis Koukis | } else {
|
1371 | ddf929a7 | Christodoulos Psaltis | // close wizard and show error box
|
1372 | ddf929a7 | Christodoulos Psaltis | $("a#add-machines-overlay").data('overlay').close(); |
1373 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Add server to network', jqXHR.responseText); |
1374 | f533f224 | Vangelis Koukis | } |
1375 | 0c578a28 | Markos Gogoulos | } |
1376 | 0c578a28 | Markos Gogoulos | }); |
1377 | 0c578a28 | Markos Gogoulos | return false; |
1378 | 0c578a28 | Markos Gogoulos | } |
1379 | 0c578a28 | Markos Gogoulos | |
1380 | f39b36a6 | Christodoulos Psaltis | function remove_server_from_network(networkIDs, serverIDs, serverNames, serverStates) { |
1381 | f533f224 | Vangelis Koukis | if (!networkIDs.length){
|
1382 | f533f224 | Vangelis Koukis | //ajax_success('DEFAULT');
|
1383 | f533f224 | Vangelis Koukis | return false; |
1384 | f533f224 | Vangelis Koukis | } |
1385 | f533f224 | Vangelis Koukis | // get a network and a server
|
1386 | f533f224 | Vangelis Koukis | var networkID = networkIDs.pop();
|
1387 | f533f224 | Vangelis Koukis | var serverID = serverIDs.pop();
|
1388 | 82835e06 | Christodoulos Psaltis | var serverName = serverNames.pop();
|
1389 | f39b36a6 | Christodoulos Psaltis | var serverState = serverStates.pop();
|
1390 | f533f224 | Vangelis Koukis | // prepare payload
|
1391 | f533f224 | Vangelis Koukis | var payload = {
|
1392 | f533f224 | Vangelis Koukis | "remove": { "serverRef": serverID } |
1393 | f533f224 | Vangelis Koukis | }; |
1394 | f533f224 | Vangelis Koukis | // prepare ajax call
|
1395 | f533f224 | Vangelis Koukis | $.ajax({
|
1396 | f533f224 | Vangelis Koukis | url: API_URL + '/networks/' + networkID + '/action', |
1397 | f533f224 | Vangelis Koukis | type: "POST", |
1398 | f533f224 | Vangelis Koukis | contentType: "application/json", |
1399 | f533f224 | Vangelis Koukis | dataType: "json", |
1400 | f533f224 | Vangelis Koukis | data: JSON.stringify(payload),
|
1401 | f533f224 | Vangelis Koukis | timeout: TIMEOUT,
|
1402 | f533f224 | Vangelis Koukis | error: function(jqXHR, textStatus, errorThrown) { |
1403 | f533f224 | Vangelis Koukis | try {
|
1404 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Remove server form network', jqXHR.responseText); |
1405 | f533f224 | Vangelis Koukis | } catch (err) {
|
1406 | b8110bae | Mike Muzurakis | ajax_error(0, undefined, 'Remove server form network', jqXHR.responseText); |
1407 | f533f224 | Vangelis Koukis | } |
1408 | f533f224 | Vangelis Koukis | }, |
1409 | f533f224 | Vangelis Koukis | success: function(data, textStatus, jqXHR) { |
1410 | f533f224 | Vangelis Koukis | if ( jqXHR.status == '202') { |
1411 | f533f224 | Vangelis Koukis | try {
|
1412 | f533f224 | Vangelis Koukis | console.info('deleted server ' + serverID + ' from network ' + networkID); |
1413 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1414 | 82835e06 | Christodoulos Psaltis | // toggle the reboot dialog
|
1415 | f39b36a6 | Christodoulos Psaltis | display_reboot_dialog(networkID, serverID, serverName, serverState); |
1416 | f533f224 | Vangelis Koukis | // continue with the rest of the servers
|
1417 | f39b36a6 | Christodoulos Psaltis | remove_server_form_network(networkIDs, serverIDs, serverNames, serverStates); |
1418 | f533f224 | Vangelis Koukis | } else {
|
1419 | f533f224 | Vangelis Koukis | ajax_error(jqXHR.status, undefined, 'Remove server form network', jqXHR.responseText); |
1420 | f533f224 | Vangelis Koukis | } |
1421 | f533f224 | Vangelis Koukis | } |
1422 | f533f224 | Vangelis Koukis | }); |
1423 | f533f224 | Vangelis Koukis | return false; |
1424 | f533f224 | Vangelis Koukis | } |
1425 | 0c578a28 | Markos Gogoulos | |
1426 | 6423ba92 | Christodoulos Psaltis | function set_firewall(networkID, serverID, profile) { |
1427 | 6423ba92 | Christodoulos Psaltis | if (!networkID.length || !serverID.length || !profile.length){
|
1428 | 6423ba92 | Christodoulos Psaltis | return false; |
1429 | 6423ba92 | Christodoulos Psaltis | } |
1430 | 6423ba92 | Christodoulos Psaltis | // prepare payload
|
1431 | 6423ba92 | Christodoulos Psaltis | var payload = {
|
1432 | 6423ba92 | Christodoulos Psaltis | "firewallProfile": { "profile": profile } |
1433 | 6423ba92 | Christodoulos Psaltis | }; |
1434 | 6423ba92 | Christodoulos Psaltis | // prepare ajax call
|
1435 | 6423ba92 | Christodoulos Psaltis | $.ajax({
|
1436 | 6423ba92 | Christodoulos Psaltis | url: API_URL + '/servers/' + serverID + '/action', |
1437 | 6423ba92 | Christodoulos Psaltis | type: "POST", |
1438 | 6423ba92 | Christodoulos Psaltis | contentType: "application/json", |
1439 | 6423ba92 | Christodoulos Psaltis | dataType: "json", |
1440 | 6423ba92 | Christodoulos Psaltis | data: JSON.stringify(payload),
|
1441 | 6423ba92 | Christodoulos Psaltis | timeout: TIMEOUT,
|
1442 | 6423ba92 | Christodoulos Psaltis | error: function(jqXHR, textStatus, errorThrown) { |
1443 | 6423ba92 | Christodoulos Psaltis | try {
|
1444 | 6423ba92 | Christodoulos Psaltis | ajax_error(jqXHR.status, undefined, 'Set firewall profile', jqXHR.responseText); |
1445 | 6423ba92 | Christodoulos Psaltis | } catch (err) {
|
1446 | 6423ba92 | Christodoulos Psaltis | ajax_error(0, undefined, 'Set firewall profile', jqXHR.responseText); |
1447 | 6423ba92 | Christodoulos Psaltis | } |
1448 | 6423ba92 | Christodoulos Psaltis | }, |
1449 | 6423ba92 | Christodoulos Psaltis | success: function(data, textStatus, jqXHR) { |
1450 | 6423ba92 | Christodoulos Psaltis | if ( jqXHR.status == '202') { |
1451 | 6423ba92 | Christodoulos Psaltis | try {
|
1452 | 6423ba92 | Christodoulos Psaltis | console.info('for server ' + serverID + ' set firewall profile to ' + profile); |
1453 | 6423ba92 | Christodoulos Psaltis | } catch(err) {}
|
1454 | 372f6c81 | Mike Muzurakis | //remove progress gif and toggle the content
|
1455 | d6872a51 | Christodoulos Psaltis | $('div#net-' + networkID + '-server-' + serverID + ' button.firewall-apply').html(VARIOUS["APPLY"]); |
1456 | d6872a51 | Christodoulos Psaltis | $('div#net-' + networkID + '-server-' + serverID + ' button.firewall-apply').attr("disabled", false); |
1457 | d6872a51 | Christodoulos Psaltis | $('div#net-' + networkID + '-server-' + serverID + ' div.firewall-header').click(); |
1458 | d6872a51 | Christodoulos Psaltis | // change on/off
|
1459 | d6872a51 | Christodoulos Psaltis | $('div#net-' + networkID + '-server-' + serverID + ' .firewall-label span').removeClass(); |
1460 | d6872a51 | Christodoulos Psaltis | if ( profile == 'DISABLED' ) { |
1461 | d6872a51 | Christodoulos Psaltis | $('div#net-' + networkID + '-server-' + serverID + ' .firewall-label span').addClass('firewall-off'); |
1462 | d6872a51 | Christodoulos Psaltis | $('div#net-' + networkID + '-server-' + serverID + ' .firewall-label span').html(VARIOUS["OFF"]); |
1463 | d6872a51 | Christodoulos Psaltis | } |
1464 | d6872a51 | Christodoulos Psaltis | else {
|
1465 | d6872a51 | Christodoulos Psaltis | $('div#net-' + networkID + '-server-' + serverID + ' .firewall-label span').addClass('firewall-on'); |
1466 | d6872a51 | Christodoulos Psaltis | $('div#net-' + networkID + '-server-' + serverID + ' .firewall-label span').html(VARIOUS["ON"]); |
1467 | d6872a51 | Christodoulos Psaltis | } |
1468 | 6423ba92 | Christodoulos Psaltis | // toggle the reboot dialog
|
1469 | d6872a51 | Christodoulos Psaltis | var serverName = $('div#net-' + networkID + '-server-' + serverID + ' div.machine-name-div span.name').text(); |
1470 | d6872a51 | Christodoulos Psaltis | var serverState = $('div#net-' + networkID + '-server-' + serverID + ' img.logo').attr('src').split('-')[1]; |
1471 | 372f6c81 | Mike Muzurakis | serverState = serverState.split('.')[0]; |
1472 | 372f6c81 | Mike Muzurakis | display_reboot_dialog(networkID, serverID, serverName, serverState); |
1473 | 6423ba92 | Christodoulos Psaltis | } else {
|
1474 | 6423ba92 | Christodoulos Psaltis | ajax_error(jqXHR.status, undefined, 'Set firewall profile', jqXHR.responseText); |
1475 | 6423ba92 | Christodoulos Psaltis | } |
1476 | 6423ba92 | Christodoulos Psaltis | } |
1477 | 6423ba92 | Christodoulos Psaltis | }); |
1478 | 6423ba92 | Christodoulos Psaltis | return false; |
1479 | 6423ba92 | Christodoulos Psaltis | } |
1480 | 6423ba92 | Christodoulos Psaltis | |
1481 | 6902f72e | clopy | // show the welcome screen
|
1482 | 6902f72e | clopy | function showWelcome() { |
1483 | f5ebca32 | Mike Muzurakis | $("#view-select").fadeOut("fast"); |
1484 | f5ebca32 | Mike Muzurakis | $("#emptymachineslist").fadeIn("fast"); |
1485 | f0215d6b | Mike Muzurakis | $("#machinesview").hide(); |
1486 | 6902f72e | clopy | } |
1487 | 6902f72e | clopy | |
1488 | 6902f72e | clopy | // hide the welcome screen
|
1489 | 6902f72e | clopy | function hideWelcome() { |
1490 | 6902f72e | clopy | $("#emptymachineslist").fadeOut("fast"); |
1491 | 6902f72e | clopy | $("#view-select").fadeIn("fast"); |
1492 | ce4f9227 | Mike Muzurakis | $("div#view-select").show(); |
1493 | f0215d6b | Mike Muzurakis | $("#machinesview").show(); |
1494 | f533f224 | Vangelis Koukis | } |
1495 | f533f224 | Vangelis Koukis | |
1496 | f533f224 | Vangelis Koukis | function log_server_status_change(server_entry, new_status) { |
1497 | f533f224 | Vangelis Koukis | // firebug console logging
|
1498 | f533f224 | Vangelis Koukis | try {
|
1499 | 09828cb5 | Mike Muzurakis | if ($("#machinesview-single").length > 0) { |
1500 | 09828cb5 | Mike Muzurakis | console.info(server_entry.find("div.machine-details div.name").text() +
|
1501 | 09828cb5 | Mike Muzurakis | ' from ' + server_entry.find(".state-label").text() + |
1502 | 09828cb5 | Mike Muzurakis | ' to ' + STATUSES[new_status]);
|
1503 | 09828cb5 | Mike Muzurakis | } else {
|
1504 | 09828cb5 | Mike Muzurakis | console.info(server_entry.find("div.name span.name").text() +
|
1505 | 09828cb5 | Mike Muzurakis | ' from ' + server_entry.find(".status").text() + |
1506 | 09828cb5 | Mike Muzurakis | ' to ' + STATUSES[new_status]);
|
1507 | 09828cb5 | Mike Muzurakis | } |
1508 | f533f224 | Vangelis Koukis | } catch(err) {}
|
1509 | f533f224 | Vangelis Koukis | } |
1510 | f533f224 | Vangelis Koukis | |
1511 | f533f224 | Vangelis Koukis | function get_flavor_params(flavorRef) { |
1512 | f533f224 | Vangelis Koukis | var cpus, ram, disk;
|
1513 | f533f224 | Vangelis Koukis | if ( flavors.length > 0 ) { |
1514 | f533f224 | Vangelis Koukis | var current_flavor = ''; |
1515 | f533f224 | Vangelis Koukis | for (i=0; i<flavors.length; i++) { |
1516 | f533f224 | Vangelis Koukis | if (flavors[i]['id'] == flavorRef) { |
1517 | f533f224 | Vangelis Koukis | current_flavor = flavors[i]; |
1518 | f533f224 | Vangelis Koukis | } |
1519 | f533f224 | Vangelis Koukis | } |
1520 | f533f224 | Vangelis Koukis | cpus = current_flavor['cpu'];
|
1521 | f533f224 | Vangelis Koukis | ram = current_flavor['ram'];
|
1522 | f533f224 | Vangelis Koukis | disk = current_flavor['disk'];
|
1523 | f533f224 | Vangelis Koukis | } else {
|
1524 | f533f224 | Vangelis Koukis | cpus = 'undefined';
|
1525 | f533f224 | Vangelis Koukis | ram = 'undefined';
|
1526 | f533f224 | Vangelis Koukis | disk = 'undefined';
|
1527 | f533f224 | Vangelis Koukis | } |
1528 | f533f224 | Vangelis Koukis | return {'cpus': cpus, 'ram': ram, 'disk': disk}; |
1529 | f533f224 | Vangelis Koukis | } |
1530 | f533f224 | Vangelis Koukis | |
1531 | f533f224 | Vangelis Koukis | function get_image_params(imageRef) { |
1532 | f533f224 | Vangelis Koukis | var image_name, image_size;
|
1533 | f533f224 | Vangelis Koukis | if ( images.length > 0 ) { |
1534 | f533f224 | Vangelis Koukis | var current_image = ''; |
1535 | f533f224 | Vangelis Koukis | for (i=0; i<images.length; i++) { |
1536 | f533f224 | Vangelis Koukis | if (images[i]['id'] == imageRef) { |
1537 | f533f224 | Vangelis Koukis | current_image = images[i]; |
1538 | f533f224 | Vangelis Koukis | } |
1539 | f533f224 | Vangelis Koukis | } |
1540 | 7ffea202 | Dimitris Moraitis | try {
|
1541 | 7ffea202 | Dimitris Moraitis | image_name = current_image['name'];
|
1542 | 7ffea202 | Dimitris Moraitis | } catch(err) { image_name = 'undefined'; } |
1543 | 7ffea202 | Dimitris Moraitis | try{
|
1544 | 7ffea202 | Dimitris Moraitis | image_size = current_image['metadata']['values']['size']; |
1545 | 7ffea202 | Dimitris Moraitis | } catch(err) { image_size = 'undefined'; } |
1546 | f533f224 | Vangelis Koukis | } else {
|
1547 | f533f224 | Vangelis Koukis | image_name = 'undefined';
|
1548 | f533f224 | Vangelis Koukis | image_size = 'undefined';
|
1549 | f533f224 | Vangelis Koukis | } |
1550 | f533f224 | Vangelis Koukis | return {'name': image_name,'size': image_size}; |
1551 | f533f224 | Vangelis Koukis | } |
1552 | f533f224 | Vangelis Koukis | |
1553 | f533f224 | Vangelis Koukis | function get_public_ips(server) { |
1554 | f533f224 | Vangelis Koukis | var ip4, ip6;
|
1555 | f533f224 | Vangelis Koukis | try {
|
1556 | f533f224 | Vangelis Koukis | if (server.addresses.values) {
|
1557 | f533f224 | Vangelis Koukis | $.each (server.addresses.values, function(i, value) { |
1558 | f533f224 | Vangelis Koukis | if (value.id == 'public') { |
1559 | f533f224 | Vangelis Koukis | try {
|
1560 | f533f224 | Vangelis Koukis | $.each (value.values, function(i, ip) { |
1561 | f533f224 | Vangelis Koukis | if (ip.version == '4') { |
1562 | f533f224 | Vangelis Koukis | ip4 = ip.addr; |
1563 | f533f224 | Vangelis Koukis | } else if (ip.version == '6') { |
1564 | f533f224 | Vangelis Koukis | ip6 = ip.addr; |
1565 | f533f224 | Vangelis Koukis | } else {
|
1566 | f533f224 | Vangelis Koukis | ip4 = 'undefined';
|
1567 | f533f224 | Vangelis Koukis | ip6 = 'undefined';
|
1568 | f533f224 | Vangelis Koukis | } |
1569 | f533f224 | Vangelis Koukis | }); |
1570 | f533f224 | Vangelis Koukis | } catch (err){
|
1571 | f533f224 | Vangelis Koukis | try{console.info('Server ' + server.id + ' has invalid ips')}catch(err){}; |
1572 | f533f224 | Vangelis Koukis | ip4 = 'undefined';
|
1573 | f533f224 | Vangelis Koukis | ip6 = 'undefined';
|
1574 | f533f224 | Vangelis Koukis | } |
1575 | f533f224 | Vangelis Koukis | } |
1576 | f533f224 | Vangelis Koukis | }); |
1577 | f533f224 | Vangelis Koukis | } |
1578 | f533f224 | Vangelis Koukis | } catch (err) {
|
1579 | f533f224 | Vangelis Koukis | try{console.info('Server ' + server.id + ' has no network addresses')}catch(err){}; |
1580 | f533f224 | Vangelis Koukis | ip4 = 'undefined';
|
1581 | f533f224 | Vangelis Koukis | ip6 = 'undefined';
|
1582 | f533f224 | Vangelis Koukis | } |
1583 | f533f224 | Vangelis Koukis | return {'ip4': ip4, 'ip6': ip6}; |
1584 | 6902f72e | clopy | } |
1585 | 6902f72e | clopy | |
1586 | f533f224 | Vangelis Koukis | function get_private_ips(server) { |
1587 | f533f224 | Vangelis Koukis | |
1588 | f533f224 | Vangelis Koukis | } |
1589 | 716c3ead | Dimitris Moraitis | |
1590 | 716c3ead | Dimitris Moraitis | function close_all_overlays() { |
1591 | 716c3ead | Dimitris Moraitis | try {
|
1592 | 716c3ead | Dimitris Moraitis | $("a#networkscreate").overlay().close(); |
1593 | 716c3ead | Dimitris Moraitis | } catch(err) {}
|
1594 | 716c3ead | Dimitris Moraitis | try {
|
1595 | 716c3ead | Dimitris Moraitis | $('a#create').overlay().close(); |
1596 | 716c3ead | Dimitris Moraitis | } catch(err) {}
|
1597 | 716c3ead | Dimitris Moraitis | try {
|
1598 | 716c3ead | Dimitris Moraitis | $("a#add-machines-overlay").overlay().close(); |
1599 | 716c3ead | Dimitris Moraitis | } catch(err) {}
|
1600 | 716c3ead | Dimitris Moraitis | try {
|
1601 | 716c3ead | Dimitris Moraitis | $("a#metadata-scrollable").overlay().close(); |
1602 | 82835e06 | Christodoulos Psaltis | } catch(err) {}
|
1603 | d1e14e2c | Mike Muzurakis | } |
1604 | a583aa29 | Kostas Papadimitriou | |
1605 | af6fc929 | Kostas Papadimitriou | // logout
|
1606 | af6fc929 | Kostas Papadimitriou | function user_session_logout() { |
1607 | af6fc929 | Kostas Papadimitriou | $.cookie("X-Auth-Token", null); |
1608 | af6fc929 | Kostas Papadimitriou | location.reload(); |
1609 | af6fc929 | Kostas Papadimitriou | } |
1610 | af6fc929 | Kostas Papadimitriou | |
1611 | a583aa29 | Kostas Papadimitriou | // action indicators
|
1612 | a583aa29 | Kostas Papadimitriou | function init_action_indicator_handlers(machines_view) |
1613 | a583aa29 | Kostas Papadimitriou | { |
1614 | 70eab221 | Kostas Papadimitriou | // init once for each view
|
1615 | 70eab221 | Kostas Papadimitriou | if (window.ACTION_ICON_HANDLERS == undefined) |
1616 | 70eab221 | Kostas Papadimitriou | { |
1617 | 70eab221 | Kostas Papadimitriou | window.ACTION_ICON_HANDLERS = {}; |
1618 | 70eab221 | Kostas Papadimitriou | } |
1619 | 70eab221 | Kostas Papadimitriou | |
1620 | 70eab221 | Kostas Papadimitriou | if (machines_view in window.ACTION_ICON_HANDLERS) |
1621 | 70eab221 | Kostas Papadimitriou | { |
1622 | 70eab221 | Kostas Papadimitriou | return;
|
1623 | 70eab221 | Kostas Papadimitriou | } |
1624 | 70eab221 | Kostas Papadimitriou | window.ACTION_ICON_HANDLERS[machines_view] = 1;
|
1625 | 70eab221 | Kostas Papadimitriou | |
1626 | a583aa29 | Kostas Papadimitriou | if (machines_view == "list") |
1627 | a583aa29 | Kostas Papadimitriou | { |
1628 | a583aa29 | Kostas Papadimitriou | // totally different logic for list view
|
1629 | a583aa29 | Kostas Papadimitriou | init_action_indicator_list_handlers(); |
1630 | a583aa29 | Kostas Papadimitriou | return;
|
1631 | a583aa29 | Kostas Papadimitriou | } |
1632 | a583aa29 | Kostas Papadimitriou | |
1633 | cce434fc | Kostas Papadimitriou | function update_action_icon_indicators(force) |
1634 | cce434fc | Kostas Papadimitriou | { |
1635 | cce434fc | Kostas Papadimitriou | function show(el, action) { |
1636 | cce434fc | Kostas Papadimitriou | $(".action-indicator", $(el)).attr("class", "action-indicator " + action); |
1637 | cce434fc | Kostas Papadimitriou | $(".action-indicator", $(el)).show(); |
1638 | cce434fc | Kostas Papadimitriou | } |
1639 | cce434fc | Kostas Papadimitriou | |
1640 | cce434fc | Kostas Papadimitriou | function hide(el) { |
1641 | cce434fc | Kostas Papadimitriou | $(".action-indicator", $(el)).hide(); |
1642 | cce434fc | Kostas Papadimitriou | } |
1643 | cce434fc | Kostas Papadimitriou | |
1644 | cce434fc | Kostas Papadimitriou | function get_pending_actions(el) { |
1645 | cce434fc | Kostas Papadimitriou | return $(".confirm_single:visible", $(el)); |
1646 | cce434fc | Kostas Papadimitriou | } |
1647 | cce434fc | Kostas Papadimitriou | |
1648 | cce434fc | Kostas Papadimitriou | function other_indicators(el) { |
1649 | cce434fc | Kostas Papadimitriou | return $("img.wave:visible, img.spinner:visible", $(el)) |
1650 | cce434fc | Kostas Papadimitriou | } |
1651 | cce434fc | Kostas Papadimitriou | |
1652 | cce434fc | Kostas Papadimitriou | $("div.machine:visible, div.single-container").each(function(index, el){ |
1653 | cce434fc | Kostas Papadimitriou | var el = $(el); |
1654 | cce434fc | Kostas Papadimitriou | var pending = get_pending_actions(el);
|
1655 | cce434fc | Kostas Papadimitriou | var other = other_indicators(el);
|
1656 | cce434fc | Kostas Papadimitriou | var action = undefined; |
1657 | cce434fc | Kostas Papadimitriou | var force_action = force;
|
1658 | cce434fc | Kostas Papadimitriou | var visible = $(el).css("display") == "block"; |
1659 | cce434fc | Kostas Papadimitriou | |
1660 | cce434fc | Kostas Papadimitriou | if (force_action !==undefined && force_action.el !== el[0]) { |
1661 | cce434fc | Kostas Papadimitriou | // force action for other vm
|
1662 | cce434fc | Kostas Papadimitriou | // skipping force action
|
1663 | cce434fc | Kostas Papadimitriou | force_action = undefined;
|
1664 | cce434fc | Kostas Papadimitriou | } |
1665 | cce434fc | Kostas Papadimitriou | |
1666 | cce434fc | Kostas Papadimitriou | if (force_action !==undefined && force_action.el === el[0]) { |
1667 | cce434fc | Kostas Papadimitriou | action = force_action.action; |
1668 | cce434fc | Kostas Papadimitriou | } |
1669 | cce434fc | Kostas Papadimitriou | |
1670 | cce434fc | Kostas Papadimitriou | if (other.length >= 1) { |
1671 | cce434fc | Kostas Papadimitriou | return;
|
1672 | cce434fc | Kostas Papadimitriou | } |
1673 | cce434fc | Kostas Papadimitriou | |
1674 | cce434fc | Kostas Papadimitriou | if (pending.length >= 1 && force_action === undefined) { |
1675 | cce434fc | Kostas Papadimitriou | action = $(pending.parent()).attr("class").replace("action-container",""); |
1676 | cce434fc | Kostas Papadimitriou | } |
1677 | cce434fc | Kostas Papadimitriou | |
1678 | cce434fc | Kostas Papadimitriou | if (action in {'console':''}) { |
1679 | cce434fc | Kostas Papadimitriou | return;
|
1680 | cce434fc | Kostas Papadimitriou | } |
1681 | cce434fc | Kostas Papadimitriou | |
1682 | cce434fc | Kostas Papadimitriou | if (action !== undefined) { |
1683 | cce434fc | Kostas Papadimitriou | show(el, action); |
1684 | cce434fc | Kostas Papadimitriou | } else {
|
1685 | cce434fc | Kostas Papadimitriou | try {
|
1686 | cce434fc | Kostas Papadimitriou | if (el.attr('id') == pending_actions[0][1]) |
1687 | cce434fc | Kostas Papadimitriou | { |
1688 | cce434fc | Kostas Papadimitriou | return;
|
1689 | cce434fc | Kostas Papadimitriou | } |
1690 | cce434fc | Kostas Papadimitriou | } catch (err) {
|
1691 | cce434fc | Kostas Papadimitriou | } |
1692 | cce434fc | Kostas Papadimitriou | hide(el); |
1693 | cce434fc | Kostas Papadimitriou | } |
1694 | cce434fc | Kostas Papadimitriou | |
1695 | cce434fc | Kostas Papadimitriou | }); |
1696 | a583aa29 | Kostas Papadimitriou | } |
1697 | a583aa29 | Kostas Papadimitriou | |
1698 | a583aa29 | Kostas Papadimitriou | // action indicators
|
1699 | cce434fc | Kostas Papadimitriou | $(".action-container").live('mouseover', function(evn) { |
1700 | cce434fc | Kostas Papadimitriou | force_action = {'el': $(evn.currentTarget).parent().parent()[0], 'action':$(evn.currentTarget).attr("class").replace("action-container","")}; |
1701 | 70eab221 | Kostas Papadimitriou | // single view case
|
1702 | cce434fc | Kostas Papadimitriou | if ($(force_action.el).attr("class") == "upper") |
1703 | a583aa29 | Kostas Papadimitriou | { |
1704 | cce434fc | Kostas Papadimitriou | force_action.el = $(evn.currentTarget).parent().parent().parent()[0] |
1705 | cce434fc | Kostas Papadimitriou | }; |
1706 | cce434fc | Kostas Papadimitriou | update_action_icon_indicators(force_action); |
1707 | a583aa29 | Kostas Papadimitriou | }); |
1708 | a583aa29 | Kostas Papadimitriou | |
1709 | 70eab221 | Kostas Papadimitriou | $("img.spinner, img.wave").live('hide', function(){ |
1710 | 70eab221 | Kostas Papadimitriou | update_action_icon_indicators(); |
1711 | 70eab221 | Kostas Papadimitriou | }); |
1712 | cce434fc | Kostas Papadimitriou | // register events where icons should get updated
|
1713 | cce434fc | Kostas Papadimitriou | |
1714 | a583aa29 | Kostas Papadimitriou | // hide action indicator image on mouse out, spinner appear, wave appear
|
1715 | a583aa29 | Kostas Papadimitriou | $(".action-container").live("mouseout", function(evn){ |
1716 | cce434fc | Kostas Papadimitriou | update_action_icon_indicators(); |
1717 | cce434fc | Kostas Papadimitriou | }); |
1718 | a583aa29 | Kostas Papadimitriou | |
1719 | cce434fc | Kostas Papadimitriou | $(".confirm_single").live("click", function(evn){ |
1720 | cce434fc | Kostas Papadimitriou | update_action_icon_indicators(); |
1721 | a583aa29 | Kostas Papadimitriou | }); |
1722 | a583aa29 | Kostas Papadimitriou | |
1723 | a583aa29 | Kostas Papadimitriou | $("img.spinner, img.wave").live('show', function(){ |
1724 | a583aa29 | Kostas Papadimitriou | $("div.action-indicator").hide(); |
1725 | a583aa29 | Kostas Papadimitriou | }); |
1726 | cce434fc | Kostas Papadimitriou | |
1727 | cce434fc | Kostas Papadimitriou | $(".confirm_single button.no").live('click', function(evn){ |
1728 | cce434fc | Kostas Papadimitriou | $("div.action-indicator", $(evn.currentTarget).parent().parent()).hide(); |
1729 | cce434fc | Kostas Papadimitriou | }); |
1730 | cce434fc | Kostas Papadimitriou | |
1731 | cce434fc | Kostas Papadimitriou | $(".confirm_multiple button.no").click(function(){ |
1732 | cce434fc | Kostas Papadimitriou | $("div.action-indicator").hide(); |
1733 | cce434fc | Kostas Papadimitriou | }); |
1734 | cce434fc | Kostas Papadimitriou | |
1735 | cce434fc | Kostas Papadimitriou | $(".confirm_multiple button.yes").click(function(){ |
1736 | cce434fc | Kostas Papadimitriou | $("div.action-indicator").hide(); |
1737 | cce434fc | Kostas Papadimitriou | }); |
1738 | a583aa29 | Kostas Papadimitriou | } |
1739 | a583aa29 | Kostas Papadimitriou | |
1740 | a583aa29 | Kostas Papadimitriou | function init_action_indicator_list_handlers() |
1741 | a583aa29 | Kostas Papadimitriou | { |
1742 | a583aa29 | Kostas Papadimitriou | var skip_actions = { 'console':'','connect':'','details':'' }; |
1743 | a583aa29 | Kostas Papadimitriou | |
1744 | a583aa29 | Kostas Papadimitriou | var has_pending_confirmation = function() |
1745 | a583aa29 | Kostas Papadimitriou | { |
1746 | a583aa29 | Kostas Papadimitriou | return $(".confirm_multiple:visible").length >= 1 |
1747 | a583aa29 | Kostas Papadimitriou | } |
1748 | a583aa29 | Kostas Papadimitriou | |
1749 | a583aa29 | Kostas Papadimitriou | function update_action_indicator_icons(force_action, skip_pending) |
1750 | a583aa29 | Kostas Papadimitriou | { |
1751 | a583aa29 | Kostas Papadimitriou | // pending action based on the element class
|
1752 | a583aa29 | Kostas Papadimitriou | var pending_action = $(".selected", $(".actions"))[0]; |
1753 | a583aa29 | Kostas Papadimitriou | var selected = get_list_view_selected_machine_rows();
|
1754 | a583aa29 | Kostas Papadimitriou | |
1755 | a583aa29 | Kostas Papadimitriou | // reset previous state
|
1756 | a583aa29 | Kostas Papadimitriou | list_view_hide_action_indicators(); |
1757 | a583aa29 | Kostas Papadimitriou | |
1758 | a583aa29 | Kostas Papadimitriou | if (pending_action == undefined && !force_action) |
1759 | a583aa29 | Kostas Papadimitriou | { |
1760 | a583aa29 | Kostas Papadimitriou | // no action selected
|
1761 | a583aa29 | Kostas Papadimitriou | return;
|
1762 | a583aa29 | Kostas Papadimitriou | } |
1763 | a583aa29 | Kostas Papadimitriou | |
1764 | a583aa29 | Kostas Papadimitriou | if (force_action != undefined) |
1765 | a583aa29 | Kostas Papadimitriou | { |
1766 | a583aa29 | Kostas Papadimitriou | // user forced action choice
|
1767 | a583aa29 | Kostas Papadimitriou | var action_class = force_action;
|
1768 | a583aa29 | Kostas Papadimitriou | } else {
|
1769 | a583aa29 | Kostas Papadimitriou | // retrieve action name (reboot, stop, etc..)
|
1770 | a583aa29 | Kostas Papadimitriou | var action_class = $(pending_action).attr("id").replace("action-",""); |
1771 | a583aa29 | Kostas Papadimitriou | } |
1772 | a583aa29 | Kostas Papadimitriou | |
1773 | a583aa29 | Kostas Papadimitriou | selected.each(function(index, el) {
|
1774 | a583aa29 | Kostas Papadimitriou | if (has_pending_confirmation() && skip_pending)
|
1775 | a583aa29 | Kostas Papadimitriou | { |
1776 | a583aa29 | Kostas Papadimitriou | return;
|
1777 | a583aa29 | Kostas Papadimitriou | } |
1778 | a583aa29 | Kostas Papadimitriou | var el = $(el); |
1779 | a583aa29 | Kostas Papadimitriou | var logo = $("img.list-logo", el); |
1780 | a583aa29 | Kostas Papadimitriou | $(".action-indicator", el).remove(); |
1781 | a583aa29 | Kostas Papadimitriou | var cls = "action-indicator " + action_class; |
1782 | a583aa29 | Kostas Papadimitriou | // add icon div
|
1783 | a583aa29 | Kostas Papadimitriou | logo.after('<div class="' + cls + '"></div>'); |
1784 | a583aa29 | Kostas Papadimitriou | // hide os logo
|
1785 | a583aa29 | Kostas Papadimitriou | $("img.list-logo", el).hide(); |
1786 | a583aa29 | Kostas Papadimitriou | }); |
1787 | a583aa29 | Kostas Papadimitriou | } |
1788 | a583aa29 | Kostas Papadimitriou | |
1789 | a583aa29 | Kostas Papadimitriou | // on mouseover we force the images to the hovered action
|
1790 | a583aa29 | Kostas Papadimitriou | $(".actions a").live("mouseover", function(evn) { |
1791 | a583aa29 | Kostas Papadimitriou | var el = $(evn.currentTarget); |
1792 | a583aa29 | Kostas Papadimitriou | if (!el.hasClass("enabled")) |
1793 | a583aa29 | Kostas Papadimitriou | { |
1794 | a583aa29 | Kostas Papadimitriou | return;
|
1795 | a583aa29 | Kostas Papadimitriou | } |
1796 | a583aa29 | Kostas Papadimitriou | var action_class = el.attr("id").replace("action-",""); |
1797 | a583aa29 | Kostas Papadimitriou | if (action_class in skip_actions) |
1798 | a583aa29 | Kostas Papadimitriou | { |
1799 | a583aa29 | Kostas Papadimitriou | return;
|
1800 | a583aa29 | Kostas Papadimitriou | } |
1801 | a583aa29 | Kostas Papadimitriou | update_action_indicator_icons(action_class, false);
|
1802 | a583aa29 | Kostas Papadimitriou | }); |
1803 | a583aa29 | Kostas Papadimitriou | |
1804 | cce434fc | Kostas Papadimitriou | |
1805 | cce434fc | Kostas Papadimitriou | // register events where icons should get updated
|
1806 | b35cda16 | Kostas Papadimitriou | $(".actions a.enabled").live("click", function(evn) { |
1807 | b35cda16 | Kostas Papadimitriou | // clear previous selections
|
1808 | b35cda16 | Kostas Papadimitriou | $("a.selected").removeClass("selected"); |
1809 | b35cda16 | Kostas Papadimitriou | |
1810 | a583aa29 | Kostas Papadimitriou | var el = $(evn.currentTarget); |
1811 | a583aa29 | Kostas Papadimitriou | el.addClass("selected");
|
1812 | a583aa29 | Kostas Papadimitriou | update_action_indicator_icons(undefined, false); |
1813 | a583aa29 | Kostas Papadimitriou | }); |
1814 | a583aa29 | Kostas Papadimitriou | |
1815 | a583aa29 | Kostas Papadimitriou | $(".actions a").live("mouseout", function(evn) { |
1816 | a583aa29 | Kostas Papadimitriou | update_action_indicator_icons(undefined, false); |
1817 | a583aa29 | Kostas Papadimitriou | }); |
1818 | a583aa29 | Kostas Papadimitriou | |
1819 | a583aa29 | Kostas Papadimitriou | $(".confirm_multiple button.no").click(function(){ |
1820 | a583aa29 | Kostas Papadimitriou | list_view_hide_action_indicators(); |
1821 | a583aa29 | Kostas Papadimitriou | }); |
1822 | a583aa29 | Kostas Papadimitriou | |
1823 | a583aa29 | Kostas Papadimitriou | $(".confirm_multiple button.yes").click(function(){ |
1824 | a583aa29 | Kostas Papadimitriou | list_view_hide_action_indicators(); |
1825 | a583aa29 | Kostas Papadimitriou | }); |
1826 | a583aa29 | Kostas Papadimitriou | |
1827 | a583aa29 | Kostas Papadimitriou | $("input[type=checkbox]").live('change', function(){ |
1828 | a583aa29 | Kostas Papadimitriou | // pending_actions will become empty on every checkbox click/change
|
1829 | a583aa29 | Kostas Papadimitriou | // line 154 machines_list.html
|
1830 | a583aa29 | Kostas Papadimitriou | pending_actions = []; |
1831 | a583aa29 | Kostas Papadimitriou | if (pending_actions.length == 0) |
1832 | a583aa29 | Kostas Papadimitriou | { |
1833 | a583aa29 | Kostas Papadimitriou | $(".confirm_multiple").hide(); |
1834 | a583aa29 | Kostas Papadimitriou | $("a.selected").each(function(index, el){$(el).removeClass("selected")}); |
1835 | a583aa29 | Kostas Papadimitriou | } |
1836 | a583aa29 | Kostas Papadimitriou | update_action_indicator_icons(undefined, false); |
1837 | a583aa29 | Kostas Papadimitriou | }); |
1838 | a583aa29 | Kostas Papadimitriou | |
1839 | a583aa29 | Kostas Papadimitriou | } |
1840 | a583aa29 | Kostas Papadimitriou | |
1841 | a583aa29 | Kostas Papadimitriou | function list_view_hide_action_indicators() |
1842 | a583aa29 | Kostas Papadimitriou | { |
1843 | a583aa29 | Kostas Papadimitriou | $("tr td .action-indicator").remove(); |
1844 | a583aa29 | Kostas Papadimitriou | $("tr td img.list-logo").show(); |
1845 | a583aa29 | Kostas Papadimitriou | } |
1846 | a583aa29 | Kostas Papadimitriou | |
1847 | a583aa29 | Kostas Papadimitriou | function get_list_view_selected_machine_rows() |
1848 | a583aa29 | Kostas Papadimitriou | { |
1849 | a583aa29 | Kostas Papadimitriou | var table = $("table.list-machines"); |
1850 | a583aa29 | Kostas Papadimitriou | var rows = $("tr:has(input[type=checkbox]:checked)",table); |
1851 | a583aa29 | Kostas Papadimitriou | return rows;
|
1852 | a583aa29 | Kostas Papadimitriou | } |