root / ui / templates / machines.html @ 9eef701d
History | View | Annotate | Download (25.7 kB)
1 | edda4d30 | Markos Gogoulos | {% load i18n %} |
---|---|---|---|
2 | edda4d30 | Markos Gogoulos | |
3 | 43df43aa | Markos Gogoulos | <div id="machines" class="seperator"></div> |
4 | e55b8703 | Christodoulos Psaltis | |
5 | d165dbb4 | Christodoulos Psaltis | <!-- the create button -->
|
6 | edda4d30 | Markos Gogoulos | <a id="create" rel="#wizard" href="#">{% trans "Create New +" %}</a> |
7 | d165dbb4 | Christodoulos Psaltis | |
8 | d165dbb4 | Christodoulos Psaltis | <!-- changing between standard/list view -->
|
9 | e55b8703 | Christodoulos Psaltis | <div id="view-select"> |
10 | 43df43aa | Markos Gogoulos | <a id="standard" class="current" href="/machines">#</a> |
11 | 1dd48fea | Markos Gogoulos | <span class="view-seperator">|</span> |
12 | 43df43aa | Markos Gogoulos | <a id="list" href="/machines/list">=</a> |
13 | e55b8703 | Christodoulos Psaltis | </div>
|
14 | e55b8703 | Christodoulos Psaltis | |
15 | d165dbb4 | Christodoulos Psaltis | <!-- the standard view -->
|
16 | 43df43aa | Markos Gogoulos | <div id="machinesview" class="standard"> |
17 | 38e2c5ed | Christodoulos Psaltis | <div id="spinner"></div> |
18 | c376783b | Markos Gogoulos | <div class="machine" id="machine-template" style="display:none"> |
19 | ec06b07c | Dimitris Moraitis | <div class="state"> |
20 | cf0eb36b | Markos Gogoulos | <div class="status">{% trans "Running" %}</div> |
21 | ec06b07c | Dimitris Moraitis | <div class="indicator"></div> |
22 | ec06b07c | Dimitris Moraitis | <div class="indicator"></div> |
23 | ec06b07c | Dimitris Moraitis | <div class="indicator"></div> |
24 | ec06b07c | Dimitris Moraitis | <div class="indicator"></div> |
25 | ec06b07c | Dimitris Moraitis | </div>
|
26 | c3b3043d | Dimitris Moraitis | <img class="logo" src="" /> |
27 | ec06b07c | Dimitris Moraitis | <a href="#" class="name"> |
28 | b7f8c534 | Christodoulos Psaltis | <h5>Νame: <span class="name">node.name</span><span class="rename"></span></h5> |
29 | ec06b07c | Dimitris Moraitis | </a>
|
30 | ec06b07c | Dimitris Moraitis | <a href="#" class="ip"> |
31 | ec06b07c | Dimitris Moraitis | <h5>IP: <span class="public">node.public_ip</span></h5> |
32 | ec06b07c | Dimitris Moraitis | </a>
|
33 | 5de45a61 | Christodoulos Psaltis | <h5 class="settings"> |
34 | cf0eb36b | Markos Gogoulos | {% trans "Show:" %} <a href="#">{% trans "disks" %}</a> | <a href="#">{% trans "networks" %}</a> | <a href="#">{% trans "group" %}</a> |
35 | ec06b07c | Dimitris Moraitis | </h5>
|
36 | ec06b07c | Dimitris Moraitis | <div class="actions"> |
37 | bd8b1d60 | Christodoulos Psaltis | <a href="#" class="action-reboot">{% trans "Reboot" %}</a> |
38 | bd8b1d60 | Christodoulos Psaltis | <a href="#" class="action-shutdown">{% trans "Shutdown" %}</a> |
39 | c376783b | Markos Gogoulos | <a href="#" class="more">{% trans "more …" %}</a> |
40 | e98852ba | Markos Gogoulos | <a href="#" class="action-start">{% trans "Start" %}</a> |
41 | ec06b07c | Dimitris Moraitis | </div>
|
42 | 5435c65a | Christodoulos Psaltis | <div class="seperator"></div> |
43 | ec06b07c | Dimitris Moraitis | </div>
|
44 | ec06b07c | Dimitris Moraitis | |
45 | 5de45a61 | Christodoulos Psaltis | <div class="running"></div> |
46 | e55b8703 | Christodoulos Psaltis | <div id="mini" class="seperator"></div> |
47 | 5de45a61 | Christodoulos Psaltis | <div class="terminated"></div> |
48 | cc7c5902 | Dimitris Moraitis | </div>
|
49 | cc7c5902 | Dimitris Moraitis | |
50 | 43df43aa | Markos Gogoulos | <div id="machines" class="seperator"></div> |
51 | e55b8703 | Christodoulos Psaltis | |
52 | cc7c5902 | Dimitris Moraitis | <!-- the form -->
|
53 | cc7c5902 | Dimitris Moraitis | <form action="#"> |
54 | cc7c5902 | Dimitris Moraitis | <!-- scrollable root element -->
|
55 | cc7c5902 | Dimitris Moraitis | <div class="modal" id="wizard"> |
56 | cc7c5902 | Dimitris Moraitis | <!-- status bar -->
|
57 | cc7c5902 | Dimitris Moraitis | <ul id="status"> |
58 | cf0eb36b | Markos Gogoulos | <li class="active"><strong>1.</strong> {% trans "Image" %}</li> |
59 | c376783b | Markos Gogoulos | <li><strong>2.</strong> {% trans "Machine" %}</li> |
60 | cf0eb36b | Markos Gogoulos | <li><strong>3.</strong> {% trans "Review" %}</li> |
61 | cc7c5902 | Dimitris Moraitis | </ul>
|
62 | cc7c5902 | Dimitris Moraitis | <!-- scrollable items -->
|
63 | cc7c5902 | Dimitris Moraitis | <div class="items"> |
64 | cc7c5902 | Dimitris Moraitis | <!-- pages -->
|
65 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
66 | cf0eb36b | Markos Gogoulos | <h2>{% trans "Select an OS" %}</h2> |
67 | cc7c5902 | Dimitris Moraitis | <ul class="tabs"> |
68 | cf0eb36b | Markos Gogoulos | <li><a href="#">{% trans "standard" %}</a></li> |
69 | cf0eb36b | Markos Gogoulos | <li><a href="#">{% trans "custom" %}</a></li> |
70 | cc7c5902 | Dimitris Moraitis | </ul>
|
71 | 89976b6c | Christodoulos Psaltis | <div class="panes"> |
72 | ec06b07c | Dimitris Moraitis | <li id="image-template" style="display:none"> |
73 | ec06b07c | Dimitris Moraitis | <label for="image.id"> |
74 | ec06b07c | Dimitris Moraitis | <a><div class="image"> |
75 | c3b3043d | Dimitris Moraitis | <img src="" class="image-logo"/> |
76 | ec06b07c | Dimitris Moraitis | <strong class="image-title">image.title</strong> |
77 | ec06b07c | Dimitris Moraitis | <input class="radio" type="radio" name="image-id" id="image-id" /> |
78 | ec06b07c | Dimitris Moraitis | <br /> |
79 | ec06b07c | Dimitris Moraitis | <span class="description">image.description</span> |
80 | ec06b07c | Dimitris Moraitis | <span class="size">?? MB</span> |
81 | ec06b07c | Dimitris Moraitis | |
82 | ec06b07c | Dimitris Moraitis | </div></a> |
83 | ec06b07c | Dimitris Moraitis | </label>
|
84 | ec06b07c | Dimitris Moraitis | </li>
|
85 | ec06b07c | Dimitris Moraitis | <ul class="pane" id="standard-images"> |
86 | cc7c5902 | Dimitris Moraitis | <!-- standard images -->
|
87 | cc7c5902 | Dimitris Moraitis | </ul>
|
88 | ec06b07c | Dimitris Moraitis | <ul class="pane" id="custom-images"> |
89 | cc7c5902 | Dimitris Moraitis | <!-- custom images -->
|
90 | ec06b07c | Dimitris Moraitis | |
91 | cc7c5902 | Dimitris Moraitis | </ul>
|
92 | cc7c5902 | Dimitris Moraitis | </div>
|
93 | cf0eb36b | Markos Gogoulos | <button type="button" class="prev" id="cancel">{% trans "Cancel" %}</button> |
94 | cf0eb36b | Markos Gogoulos | <button type="button" class="next right">{% trans "Next" %} »</button> |
95 | cc7c5902 | Dimitris Moraitis | </div>
|
96 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
97 | cf0eb36b | Markos Gogoulos | <h2>{% trans "Select CPU, RAM and storage" %}</h2> |
98 | cc7c5902 | Dimitris Moraitis | <ul>
|
99 | cc7c5902 | Dimitris Moraitis | <li>
|
100 | c376783b | Markos Gogoulos | <div class="machine-type"> |
101 | cc7c5902 | Dimitris Moraitis | <label for="small"> |
102 | c376783b | Markos Gogoulos | <input type="radio" id="small" name="machine-type" value="small" checked="true" /> |
103 | cf0eb36b | Markos Gogoulos | <strong>{% trans "small" %}</strong> |
104 | cc7c5902 | Dimitris Moraitis | </label>
|
105 | cc7c5902 | Dimitris Moraitis | </div>
|
106 | c376783b | Markos Gogoulos | <div class="machine-type"> |
107 | cc7c5902 | Dimitris Moraitis | <label for="medium"> |
108 | c376783b | Markos Gogoulos | <input type="radio" id="medium" name="machine-type" value="medium" /> |
109 | cf0eb36b | Markos Gogoulos | <strong>{% trans "medium" %}</strong> |
110 | cc7c5902 | Dimitris Moraitis | </label>
|
111 | cc7c5902 | Dimitris Moraitis | </div>
|
112 | c376783b | Markos Gogoulos | <div class="machine-type"> |
113 | cc7c5902 | Dimitris Moraitis | <label for="large"> |
114 | c376783b | Markos Gogoulos | <input type="radio" id="large" name="machine-type" value="large" /> |
115 | cf0eb36b | Markos Gogoulos | <strong>{% trans "large" %}</strong> |
116 | cc7c5902 | Dimitris Moraitis | </label>
|
117 | cc7c5902 | Dimitris Moraitis | </div>
|
118 | c376783b | Markos Gogoulos | <div class="machine-type"> |
119 | cc7c5902 | Dimitris Moraitis | <label for="custom"> |
120 | c376783b | Markos Gogoulos | <input type="radio" name="machine-type" id="custom" value="large" /> |
121 | cf0eb36b | Markos Gogoulos | <strong>{% trans "custom" %}</strong> |
122 | cc7c5902 | Dimitris Moraitis | </label>
|
123 | cc7c5902 | Dimitris Moraitis | </div>
|
124 | cc7c5902 | Dimitris Moraitis | </li>
|
125 | cc7c5902 | Dimitris Moraitis | <li>
|
126 | cc7c5902 | Dimitris Moraitis | <label><strong class="sliders">CPU (cores)</strong></label> |
127 | cc7c5902 | Dimitris Moraitis | <input type="range" id="cpu" value="1" max="8" min="1" /> |
128 | cc7c5902 | Dimitris Moraitis | </li>
|
129 | cc7c5902 | Dimitris Moraitis | <li>
|
130 | cc7c5902 | Dimitris Moraitis | <label><strong class="sliders">RAM (MB)</strong></label> |
131 | cc7c5902 | Dimitris Moraitis | <input type="range" id="ram" value="256" max="2048" min="256" step="256" /> |
132 | cc7c5902 | Dimitris Moraitis | </li>
|
133 | cc7c5902 | Dimitris Moraitis | <li>
|
134 | cc7c5902 | Dimitris Moraitis | <label><strong class="sliders">Storage (GB)</strong></label> |
135 | cc7c5902 | Dimitris Moraitis | <input type="range" id="storage" value="5" step="1" max="100" min="2" /> |
136 | cc7c5902 | Dimitris Moraitis | </li>
|
137 | cc7c5902 | Dimitris Moraitis | <li>
|
138 | cc7c5902 | Dimitris Moraitis | <div class="cost"> |
139 | cf0eb36b | Markos Gogoulos | {% trans "Cost per hour:" %} 20 {% trans "credits" %} | {% trans "Credits currently in account:" %} 10.000 |
140 | cc7c5902 | Dimitris Moraitis | </div>
|
141 | cc7c5902 | Dimitris Moraitis | </li>
|
142 | cc7c5902 | Dimitris Moraitis | </ul>
|
143 | cf0eb36b | Markos Gogoulos | <button type="button" class="prev">« {% trans "Back" %}</button> |
144 | cf0eb36b | Markos Gogoulos | <button type="button" class="next right">{% trans "Next" %} »</button> |
145 | cc7c5902 | Dimitris Moraitis | </div>
|
146 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
147 | cf0eb36b | Markos Gogoulos | <h2>{% trans "Confirm your settings" %}</h2> |
148 | cc7c5902 | Dimitris Moraitis | <ul>
|
149 | cc7c5902 | Dimitris Moraitis | <li class="required"> |
150 | cc7c5902 | Dimitris Moraitis | <label>
|
151 | c376783b | Markos Gogoulos | <strong>Machine name</strong> |
152 | c376783b | Markos Gogoulos | <input type="text" class="text" name="machine_name" value="My Ubuntu 10.04 x86_64 server"/> |
153 | cc7c5902 | Dimitris Moraitis | </label>
|
154 | cc7c5902 | Dimitris Moraitis | </li>
|
155 | cc7c5902 | Dimitris Moraitis | <li>
|
156 | cf0eb36b | Markos Gogoulos | <strong>{% trans "Image:" %}</strong> <span>Ubuntu 10.04 x86_64 server</span> |
157 | cc7c5902 | Dimitris Moraitis | </li>
|
158 | cc7c5902 | Dimitris Moraitis | <li>
|
159 | cf0eb36b | Markos Gogoulos | <strong>{% trans "CPU:" %}</strong> <span>2 cores</span> |
160 | cc7c5902 | Dimitris Moraitis | </li>
|
161 | cc7c5902 | Dimitris Moraitis | <li>
|
162 | cf0eb36b | Markos Gogoulos | <strong>{% trans "RAM:" %}</strong> <span>1024MB</span> |
163 | cc7c5902 | Dimitris Moraitis | </li>
|
164 | cc7c5902 | Dimitris Moraitis | <li>
|
165 | cf0eb36b | Markos Gogoulos | <strong>{% trans "Storage:" %}</strong> <span>10GB</span> |
166 | cc7c5902 | Dimitris Moraitis | </li>
|
167 | cc7c5902 | Dimitris Moraitis | <li>
|
168 | cf0eb36b | Markos Gogoulos | <strong>{% trans "Cost per hour:" %}</strong> <span>20 {% trans "credits" %}</span> |
169 | cc7c5902 | Dimitris Moraitis | </li>
|
170 | cc7c5902 | Dimitris Moraitis | <li>
|
171 | cf0eb36b | Markos Gogoulos | <strong>{% trans "Remaining credits:" %}</strong> <span>10.000</span> |
172 | cc7c5902 | Dimitris Moraitis | </li>
|
173 | cc7c5902 | Dimitris Moraitis | </ul>
|
174 | cf0eb36b | Markos Gogoulos | <button type="button" class="prev">« {% trans "Back" %}</button> |
175 | cf0eb36b | Markos Gogoulos | <button type="button" class="next right" id="start">{% trans "Create VM" %}</button> |
176 | cc7c5902 | Dimitris Moraitis | </div>
|
177 | cc7c5902 | Dimitris Moraitis | </div>
|
178 | cc7c5902 | Dimitris Moraitis | </div>
|
179 | cc7c5902 | Dimitris Moraitis | </form>
|
180 | cc7c5902 | Dimitris Moraitis | |
181 | d165dbb4 | Christodoulos Psaltis | <!-- notification after wizard completion -->
|
182 | f58ec963 | Christodoulos Psaltis | <a id="notification" rel="#error-success" href="#"></a> |
183 | d165dbb4 | Christodoulos Psaltis | |
184 | f58ec963 | Christodoulos Psaltis | <div class="modal" id="error-success"> |
185 | f58ec963 | Christodoulos Psaltis | <h3>{% trans "Error!/Success!" %}</h3> |
186 | f58ec963 | Christodoulos Psaltis | <p>{% trans "More details about the result"%}</p> |
187 | cc7c5902 | Dimitris Moraitis | </div>
|
188 | cc7c5902 | Dimitris Moraitis | |
189 | bd528b3b | Christodoulos Psaltis | <!-- confirmation before executing an action -->
|
190 | f58ec963 | Christodoulos Psaltis | <a id="confirmation" rel="#yes-no" href="#"></a> |
191 | d165dbb4 | Christodoulos Psaltis | |
192 | f58ec963 | Christodoulos Psaltis | <div class="modal" id="yes-no"> |
193 | bd528b3b | Christodoulos Psaltis | <h3>{% trans "You are about to xxx machine yyy" %}</h3> |
194 | bd528b3b | Christodoulos Psaltis | <p>{% trans "Are you sure you want to proceed?" %}</p> |
195 | bd528b3b | Christodoulos Psaltis | <button>{% trans "Yes" %}</button> |
196 | bd528b3b | Christodoulos Psaltis | <button>{% trans "No" %}</button> |
197 | d165dbb4 | Christodoulos Psaltis | </div>
|
198 | d165dbb4 | Christodoulos Psaltis | |
199 | 941b00d4 | Markos Gogoulos | <script type="text/javascript"> |
200 | 941b00d4 | Markos Gogoulos | var TIMEOUT = {{timeout}};
|
201 | 941b00d4 | Markos Gogoulos | </script>
|
202 | 941b00d4 | Markos Gogoulos | |
203 | cc7c5902 | Dimitris Moraitis | <script>
|
204 | bd8b1d60 | Christodoulos Psaltis | // hardcoded image types
|
205 | ec06b07c | Dimitris Moraitis | var image_tags = {
|
206 | ec06b07c | Dimitris Moraitis | 1: 'archlinux',
|
207 | ec06b07c | Dimitris Moraitis | 2: 'centos',
|
208 | ec06b07c | Dimitris Moraitis | 3: 'debian',
|
209 | ec06b07c | Dimitris Moraitis | 4: 'freebsd',
|
210 | ec06b07c | Dimitris Moraitis | 5: 'gentoo',
|
211 | ec06b07c | Dimitris Moraitis | 6: 'netbsd',
|
212 | ec06b07c | Dimitris Moraitis | 7: 'openbsd',
|
213 | ec06b07c | Dimitris Moraitis | 8: 'redhat',
|
214 | ec06b07c | Dimitris Moraitis | 9: 'slackware',
|
215 | ec06b07c | Dimitris Moraitis | 10: 'suse',
|
216 | ec06b07c | Dimitris Moraitis | 11: 'ubuntu',
|
217 | ec06b07c | Dimitris Moraitis | 12: 'windows',
|
218 | cbec4223 | Markos Gogoulos | 20: 'ubuntu',
|
219 | ec06b07c | Dimitris Moraitis | };
|
220 | ec06b07c | Dimitris Moraitis | |
221 | bd528b3b | Christodoulos Psaltis | // ajax error checking
|
222 | f58ec963 | Christodoulos Psaltis | function ajax_error(jqXHR) {;
|
223 | f58ec963 | Christodoulos Psaltis | // prepare the error message
|
224 | f58ec963 | Christodoulos Psaltis | $("#error-success h3").text('Error!');
|
225 | bd96a56b | Christodoulos Psaltis | // check the error code
|
226 | bd96a56b | Christodoulos Psaltis | switch (jqXHR.status) {
|
227 | bd96a56b | Christodoulos Psaltis | case 503: // XX error/message
|
228 | bd96a56b | Christodoulos Psaltis | $("#error-success p").text('Your request caused a <strong>' + jqXHR.status + '</strong> error');
|
229 | bd96a56b | Christodoulos Psaltis | break;
|
230 | bd96a56b | Christodoulos Psaltis | case 400: // YY error/message
|
231 | bd96a56b | Christodoulos Psaltis | $("#error-success p").text('Your request caused a <strong>' + jqXHR.status + '</strong> error');
|
232 | bd96a56b | Christodoulos Psaltis | break;
|
233 | bd96a56b | Christodoulos Psaltis | default: // XXYY error/message
|
234 | bd96a56b | Christodoulos Psaltis | $("#error-success p").text('Your request caused a <strong>' + jqXHR.status + '</strong> error');
|
235 | a30a43a7 | Markos Gogoulos | }
|
236 | bd96a56b | Christodoulos Psaltis | // bring up error notification
|
237 | f58ec963 | Christodoulos Psaltis | var triggers = $("a#notification").overlay({
|
238 | 4e5d5e70 | Christodoulos Psaltis | // some mask tweaks suitable for modal dialogs
|
239 | 4e5d5e70 | Christodoulos Psaltis | mask: {
|
240 | 4e5d5e70 | Christodoulos Psaltis | color: '#ebecff',
|
241 | 4e5d5e70 | Christodoulos Psaltis | opacity: '0.9'
|
242 | 4e5d5e70 | Christodoulos Psaltis | },
|
243 | 4e5d5e70 | Christodoulos Psaltis | top: 'center',
|
244 | f58ec963 | Christodoulos Psaltis | closeOnClick: false,
|
245 | f58ec963 | Christodoulos Psaltis | oneInstance: false,
|
246 | 4e5d5e70 | Christodoulos Psaltis | load: true,
|
247 | 4e5d5e70 | Christodoulos Psaltis | onClose: function(){
|
248 | 4e5d5e70 | Christodoulos Psaltis | $("div.pane#machines-pane").load($("a#standard").attr("href"));
|
249 | 4e5d5e70 | Christodoulos Psaltis | }
|
250 | 4e5d5e70 | Christodoulos Psaltis | });
|
251 | facad27f | Christodoulos Psaltis | return false;
|
252 | bd528b3b | Christodoulos Psaltis | }
|
253 | bd528b3b | Christodoulos Psaltis | |
254 | f58ec963 | Christodoulos Psaltis | // ajax success checking
|
255 | f58ec963 | Christodoulos Psaltis | function ajax_success() {
|
256 | f58ec963 | Christodoulos Psaltis | // prepare the error message
|
257 | f58ec963 | Christodoulos Psaltis | $("#error-success h3").text('Success!');
|
258 | f58ec963 | Christodoulos Psaltis | $("#error-success p").text('Your request has been succefully executed.');
|
259 | bd96a56b | Christodoulos Psaltis | // bring up success notification
|
260 | 962733ad | Christodoulos Psaltis | var triggers = $("a#notification").overlay({
|
261 | 962733ad | Christodoulos Psaltis | // some mask tweaks suitable for modal dialogs
|
262 | 962733ad | Christodoulos Psaltis | mask: {
|
263 | 962733ad | Christodoulos Psaltis | color: '#ebecff',
|
264 | 962733ad | Christodoulos Psaltis | opacity: '0.9'
|
265 | 962733ad | Christodoulos Psaltis | },
|
266 | 962733ad | Christodoulos Psaltis | top: 'center',
|
267 | 962733ad | Christodoulos Psaltis | closeOnClick: false,
|
268 | 962733ad | Christodoulos Psaltis | oneInstance: false,
|
269 | 962733ad | Christodoulos Psaltis | load: true,
|
270 | 962733ad | Christodoulos Psaltis | onClose: function(){
|
271 | 962733ad | Christodoulos Psaltis | $("div.pane#machines-pane").load($("a#standard").attr("href"));
|
272 | 962733ad | Christodoulos Psaltis | }
|
273 | 962733ad | Christodoulos Psaltis | });
|
274 | f58ec963 | Christodoulos Psaltis | return false;
|
275 | f58ec963 | Christodoulos Psaltis | }
|
276 | f58ec963 | Christodoulos Psaltis | |
277 | f58ec963 | Christodoulos Psaltis | // confirmation overlay generation
|
278 | f58ec963 | Christodoulos Psaltis | function confirm_action(action_string, action_function, serverID, serverName) {
|
279 | f58ec963 | Christodoulos Psaltis | $("#yes-no h3").text('You are about to ' + action_string + ' vm ' + serverName);
|
280 | f58ec963 | Christodoulos Psaltis | // action confirmation overlay
|
281 | f58ec963 | Christodoulos Psaltis | var triggers = $("a#confirmation").overlay({
|
282 | f58ec963 | Christodoulos Psaltis | // some mask tweaks suitable for modal dialogs
|
283 | f58ec963 | Christodoulos Psaltis | mask: {
|
284 | f58ec963 | Christodoulos Psaltis | color: '#ebecff',
|
285 | f58ec963 | Christodoulos Psaltis | opacity: '0.9'
|
286 | f58ec963 | Christodoulos Psaltis | },
|
287 | f58ec963 | Christodoulos Psaltis | top: 'center',
|
288 | f58ec963 | Christodoulos Psaltis | load: true
|
289 | f58ec963 | Christodoulos Psaltis | });
|
290 | f58ec963 | Christodoulos Psaltis | // yes or no?
|
291 | f58ec963 | Christodoulos Psaltis | var buttons = $("#yes-no button").click(function(e) {
|
292 | f58ec963 | Christodoulos Psaltis | // get user input
|
293 | f58ec963 | Christodoulos Psaltis | var yes = buttons.index(this) === 0;
|
294 | f58ec963 | Christodoulos Psaltis | //close the confirmation window
|
295 | f58ec963 | Christodoulos Psaltis | $("a#confirmation").overlay().close();
|
296 | f58ec963 | Christodoulos Psaltis | // return true=yes or false=no
|
297 | f58ec963 | Christodoulos Psaltis | if (yes) {
|
298 | f58ec963 | Christodoulos Psaltis | action_function(serverID);
|
299 | f58ec963 | Christodoulos Psaltis | }
|
300 | f58ec963 | Christodoulos Psaltis | });
|
301 | f58ec963 | Christodoulos Psaltis | //close the window, no matter the answer
|
302 | f58ec963 | Christodoulos Psaltis | return false;
|
303 | 962733ad | Christodoulos Psaltis | }
|
304 | 962733ad | Christodoulos Psaltis | |
305 | bd528b3b | Christodoulos Psaltis | // get and show a list of running and terminated machines
|
306 | bd528b3b | Christodoulos Psaltis | function update_vms() {
|
307 | facad27f | Christodoulos Psaltis | |
308 | 1c86af5b | Christodoulos Psaltis | $(".running").text('');
|
309 | 1c86af5b | Christodoulos Psaltis | $(".terminated").text('');
|
310 | ec06b07c | Dimitris Moraitis | $("ul#standard-images").text('');
|
311 | ec06b07c | Dimitris Moraitis | $("ul#custom-images").text('');
|
312 | facad27f | Christodoulos Psaltis | |
313 | ec06b07c | Dimitris Moraitis | $.ajax({
|
314 | ec06b07c | Dimitris Moraitis | url: '/api/v1.0/servers/detail',
|
315 | ec06b07c | Dimitris Moraitis | type: "GET",
|
316 | 941b00d4 | Markos Gogoulos | timeout: TIMEOUT,
|
317 | ec06b07c | Dimitris Moraitis | dataType: "json",
|
318 | facad27f | Christodoulos Psaltis | error: function(jqXHR, textStatus, errorThrown) {
|
319 | facad27f | Christodoulos Psaltis | ajax_error(jqXHR);
|
320 | facad27f | Christodoulos Psaltis | },
|
321 | facad27f | Christodoulos Psaltis | success: function(data, textStatus, jqXHR) {
|
322 | 9ea8125a | Christodoulos Psaltis | if ($(".running a.name").length + $(".terminated a.name").length == 0) {
|
323 | fb66080c | Dimitris Moraitis |
|
324 | fb66080c | Dimitris Moraitis | $.each(data.servers, function(i,server){
|
325 | 9ea8125a | Christodoulos Psaltis | // if the machine is deleted it should not be included in any list
|
326 | 9ea8125a | Christodoulos Psaltis | if (server.status == 'DELETED') {
|
327 | a9d8ed3a | Christodoulos Psaltis | return;
|
328 | 9ea8125a | Christodoulos Psaltis | }
|
329 | fb66080c | Dimitris Moraitis | var machine = $("#machine-template").clone().attr("id", server.id).fadeIn("slow");
|
330 | fb66080c | Dimitris Moraitis | machine.find("input[type='checkbox']").attr("id", "input-" + server.id);
|
331 | fb66080c | Dimitris Moraitis | machine.find("input[type='checkbox']").attr("class", server.status);
|
332 | fb66080c | Dimitris Moraitis | machine.find("a.name span.name").text(server.name);
|
333 | fb66080c | Dimitris Moraitis | machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageId]+'.png');
|
334 | fb66080c | Dimitris Moraitis | machine.find("img.list-logo").attr("src","static/os_logos/"+image_tags[server.imageId]+'.png');
|
335 | fb66080c | Dimitris Moraitis | machine.find("img.list-logo").attr("title",image_tags[server.imageId]);
|
336 | fb66080c | Dimitris Moraitis | machine.find("span.imagetag").text(image_tags[server.imageId]);
|
337 | fb66080c | Dimitris Moraitis |
|
338 | 12827073 | Markos Gogoulos | machine.find("a.ip span.public").text(String(server.metadata.addresses.public).replace(',',' '));
|
339 | fb66080c | Dimitris Moraitis |
|
340 | b9e0f667 | Dimitris Moraitis | // TODO: handle SHARE_IP, SHARE_IP_NO_CONFIG, DELETE_IP, REBUILD, QUEUE_RESIZE, PREP_RESIZE, RESIZE, VERIFY_RESIZE, PASSWORD, RESCUE
|
341 | b9e0f667 | Dimitris Moraitis | if (server.status == 'BUILD'){
|
342 | fb66080c | Dimitris Moraitis | machine.find(".status").text('Building');
|
343 | fb66080c | Dimitris Moraitis | machine.appendTo(".running");
|
344 | b9e0f667 | Dimitris Moraitis | } else if (server.status == 'ACTIVE') {
|
345 | fb66080c | Dimitris Moraitis | machine.find(".status").text('Running');
|
346 | b9e0f667 | Dimitris Moraitis | machine.appendTo(".running");
|
347 | b9e0f667 | Dimitris Moraitis | } else if (server.status == 'REBOOT' || server.status == 'HARD_REBOOT') {
|
348 | b9e0f667 | Dimitris Moraitis | machine.find(".status").text('Rebooting');
|
349 | fb66080c | Dimitris Moraitis | machine.appendTo(".running");
|
350 | 9ea8125a | Christodoulos Psaltis | } else if (server.status == 'STOPPED') {
|
351 | 9ea8125a | Christodoulos Psaltis | machine.find(".status").text('Stopped');
|
352 | 9ea8125a | Christodoulos Psaltis | machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageId]+'-off.png');
|
353 | 9ea8125a | Christodoulos Psaltis | machine.find("img.list-logo").attr("src","static/os_logos/"+image_tags[server.imageId]+'-off.png');
|
354 | 9ea8125a | Christodoulos Psaltis | machine.appendTo(".terminated");
|
355 | 9ea8125a | Christodoulos Psaltis | } else if (server.status == 'ERROR') {
|
356 | 9ea8125a | Christodoulos Psaltis | machine.find(".status").text('Error');
|
357 | fb66080c | Dimitris Moraitis | machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageId]+'-off.png');
|
358 | fb66080c | Dimitris Moraitis | machine.find("img.list-logo").attr("src","static/os_logos/"+image_tags[server.imageId]+'-off.png');
|
359 | fb66080c | Dimitris Moraitis | machine.appendTo(".terminated");
|
360 | 9ea8125a | Christodoulos Psaltis | }
|
361 | 9ea8125a | Christodoulos Psaltis | else {
|
362 | fb66080c | Dimitris Moraitis | machine.find(".status").text('Unknown');
|
363 | fb66080c | Dimitris Moraitis | machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageId]+'-off.png');
|
364 | fb66080c | Dimitris Moraitis | machine.find("img.list-logo").attr("src","static/os_logos/"+image_tags[server.imageId]+'-off.png');
|
365 | fb66080c | Dimitris Moraitis | machine.appendTo(".terminated");
|
366 | fb66080c | Dimitris Moraitis | }
|
367 | fb66080c | Dimitris Moraitis | });
|
368 | 9ea8125a | Christodoulos Psaltis | // if the terminated list is populated then the seperator must be shown
|
369 | 9ea8125a | Christodoulos Psaltis | if ($(".terminated a.name").length > 0) {
|
370 | 9ea8125a | Christodoulos Psaltis | $("#mini.seperator").fadeIn("slow");
|
371 | 9ea8125a | Christodoulos Psaltis | }
|
372 | fb66080c | Dimitris Moraitis | }
|
373 | 36dc242e | Christodoulos Psaltis | $("div.machine:last-child").find("div.seperator").hide();
|
374 | 38e2c5ed | Christodoulos Psaltis | $("#spinner").hide();
|
375 | 9918dde8 | Christodoulos Psaltis | if ($("div.list table.list-running tbody.running tr").length > 0) {
|
376 | a4531705 | Christodoulos Psaltis | $("div.list table.list-running").dataTable({
|
377 | a4531705 | Christodoulos Psaltis | "bInfo": false,
|
378 | a4531705 | Christodoulos Psaltis | "bPaginate": false,
|
379 | a4531705 | Christodoulos Psaltis | "bAutoWidth": false,
|
380 | bd96a56b | Christodoulos Psaltis | "bSort": true,
|
381 | bd96a56b | Christodoulos Psaltis | "bStateSave": true,
|
382 | bd96a56b | Christodoulos Psaltis | "aoColumnDefs": [
|
383 | bd96a56b | Christodoulos Psaltis | { "bSortable": false, "aTargets": [ 0 ] }
|
384 | bd96a56b | Christodoulos Psaltis | ]//,
|
385 | a4531705 | Christodoulos Psaltis | //"sScrollY": "310px",
|
386 | a4531705 | Christodoulos Psaltis | //"bScrollCollapse": true
|
387 | a4531705 | Christodoulos Psaltis | });
|
388 | a4531705 | Christodoulos Psaltis | $("div.list table.list-running").show();
|
389 | a4531705 | Christodoulos Psaltis | $("div.list div.actions").show();
|
390 | 9918dde8 | Christodoulos Psaltis | }
|
391 | 9918dde8 | Christodoulos Psaltis | if ($("div.list table.list-terminated tbody.terminated tr").length > 0) {
|
392 | a4531705 | Christodoulos Psaltis | $("div.list table.list-terminated").dataTable({
|
393 | a4531705 | Christodoulos Psaltis | "bInfo": false,
|
394 | a4531705 | Christodoulos Psaltis | "bPaginate": false,
|
395 | a4531705 | Christodoulos Psaltis | "bSort": true,
|
396 | a4531705 | Christodoulos Psaltis | "bAutoWidth": false,
|
397 | bd96a56b | Christodoulos Psaltis | "bStateSave": true,
|
398 | bd96a56b | Christodoulos Psaltis | "aoColumnDefs": [
|
399 | bd96a56b | Christodoulos Psaltis | { "bSortable": false, "aTargets": [ 0 ] }
|
400 | bd96a56b | Christodoulos Psaltis | ]//,
|
401 | a4531705 | Christodoulos Psaltis | //"sScrollY": "200px",
|
402 | a4531705 | Christodoulos Psaltis | //"bScrollCollapse": true
|
403 | a4531705 | Christodoulos Psaltis | });
|
404 | a4531705 | Christodoulos Psaltis | $("div.list table.list-terminated").show();
|
405 | a4531705 | Christodoulos Psaltis | $("div.list div.actions").show();
|
406 | 9918dde8 | Christodoulos Psaltis | }
|
407 | ec06b07c | Dimitris Moraitis | }
|
408 | ec06b07c | Dimitris Moraitis | });
|
409 | bd528b3b | Christodoulos Psaltis | return false;
|
410 | bd528b3b | Christodoulos Psaltis | }
|
411 | ec06b07c | Dimitris Moraitis | |
412 | bd528b3b | Christodoulos Psaltis | // get and show a list of anvailable standard and custom images
|
413 | bd528b3b | Christodoulos Psaltis | function update_images() {
|
414 | ec06b07c | Dimitris Moraitis | $.ajax({
|
415 | ec06b07c | Dimitris Moraitis | url: '/api/v1.0/images/detail',
|
416 | ec06b07c | Dimitris Moraitis | type: "GET",
|
417 | 14739cd6 | Christodoulos Psaltis | //async: false,
|
418 | ec06b07c | Dimitris Moraitis | dataType: "json",
|
419 | 941b00d4 | Markos Gogoulos | timeout: TIMEOUT,
|
420 | facad27f | Christodoulos Psaltis | error: function(jqXHR, textStatus, errorThrown) {
|
421 | facad27f | Christodoulos Psaltis | ajax_error(jqXHR);
|
422 | facad27f | Christodoulos Psaltis | },
|
423 | facad27f | Christodoulos Psaltis | success: function(data, textStatus, jqXHR) {
|
424 | fac6fbbe | Dimitris Moraitis | if ($("ul#standard-images li").toArray().length + $("ul#custom-images li").toArray().length == 0) {
|
425 | fac6fbbe | Dimitris Moraitis | $.each(data.images, function(i,image){
|
426 | fac6fbbe | Dimitris Moraitis | var img = $('#image-template').clone().attr("id","img-"+image.id).fadeIn("slow");
|
427 | fac6fbbe | Dimitris Moraitis | img.find("label").attr('for',"img-radio-" + image.id);
|
428 | fac6fbbe | Dimitris Moraitis | img.find(".image-title").text(image.name);
|
429 | fac6fbbe | Dimitris Moraitis | img.find(".description").text(image.description);
|
430 | fac6fbbe | Dimitris Moraitis | img.find("input.radio").attr('id',"img-radio-" + image.id);
|
431 | fac6fbbe | Dimitris Moraitis | if (i==0) img.find("input.radio").attr("checked","checked");
|
432 | fac6fbbe | Dimitris Moraitis | img.find("img.image-logo").attr('src','static/os_logos/'+image_tags[image.id]+'.png');
|
433 | fac6fbbe | Dimitris Moraitis | if (image.serverId) {
|
434 | fac6fbbe | Dimitris Moraitis | img.appendTo("ul#custom-images");
|
435 | fac6fbbe | Dimitris Moraitis | } else {
|
436 | fac6fbbe | Dimitris Moraitis | img.appendTo("ul#standard-images");
|
437 | fac6fbbe | Dimitris Moraitis | }
|
438 | fac6fbbe | Dimitris Moraitis | });
|
439 | fac6fbbe | Dimitris Moraitis | }
|
440 | ec06b07c | Dimitris Moraitis | }
|
441 | ec06b07c | Dimitris Moraitis | });
|
442 | fac6fbbe | Dimitris Moraitis | return false;
|
443 | c3b3043d | Dimitris Moraitis | }
|
444 | c3b3043d | Dimitris Moraitis | |
445 | fb66080c | Dimitris Moraitis | // switch to list view
|
446 | fb66080c | Dimitris Moraitis | $("#list").click(function(){
|
447 | fac6fbbe | Dimitris Moraitis | $.cookie("list", '1'); // set list cookie
|
448 | fb66080c | Dimitris Moraitis | $("div.standard#machinesview").load($("#list").attr("href"));
|
449 | fb66080c | Dimitris Moraitis | $("a#standard")[0].className += ' activelink'
|
450 | fb66080c | Dimitris Moraitis | this.style.color = '#5f8dd3';
|
451 | bd528b3b | Christodoulos Psaltis | update_vms();
|
452 | fb66080c | Dimitris Moraitis | return false;
|
453 | fb66080c | Dimitris Moraitis | });
|
454 | fb66080c | Dimitris Moraitis | |
455 | fb66080c | Dimitris Moraitis | // switch to standard view
|
456 | fb66080c | Dimitris Moraitis | $("a#standard").click(function(){
|
457 | fb66080c | Dimitris Moraitis | $.cookie("list", '0');
|
458 | fb66080c | Dimitris Moraitis | href=$("a#standard").attr("href");
|
459 | fb66080c | Dimitris Moraitis | $("div.pane#machines-pane").load(href);
|
460 | fb66080c | Dimitris Moraitis | return false;
|
461 | fb66080c | Dimitris Moraitis | });
|
462 | fb66080c | Dimitris Moraitis | |
463 | fac6fbbe | Dimitris Moraitis | // redirect to list view if the list cookie is set
|
464 | fb66080c | Dimitris Moraitis | if ($.cookie("list") == '1') {
|
465 | fb66080c | Dimitris Moraitis | $("#list").click();
|
466 | fb66080c | Dimitris Moraitis | } else {
|
467 | fac6fbbe | Dimitris Moraitis | // execute the update function to populate the list
|
468 | bd528b3b | Christodoulos Psaltis | update_vms();
|
469 | fb66080c | Dimitris Moraitis | }
|
470 | 38e2c5ed | Christodoulos Psaltis | |
471 | bd8b1d60 | Christodoulos Psaltis | // launch VM creation wizard
|
472 | 8fd5c3a5 | Christodoulos Psaltis | $("a#create").click(function(){
|
473 | bd528b3b | Christodoulos Psaltis | // populate image list
|
474 | bd528b3b | Christodoulos Psaltis | update_images();
|
475 | bd528b3b | Christodoulos Psaltis | // launch the wizard
|
476 | bd8b1d60 | Christodoulos Psaltis | $("#wizard").scrollable().begin();
|
477 | ec06b07c | Dimitris Moraitis | });
|
478 | ec06b07c | Dimitris Moraitis | |
479 | f124656b | Christodoulos Psaltis | // create wizard overlay
|
480 | f124656b | Christodoulos Psaltis | $(function() {
|
481 | 4e5d5e70 | Christodoulos Psaltis | $("a#create").overlay({
|
482 | f124656b | Christodoulos Psaltis | mask: '#000',
|
483 | f124656b | Christodoulos Psaltis | effect: 'default',
|
484 | f124656b | Christodoulos Psaltis | top: '5%',
|
485 | f124656b | Christodoulos Psaltis | oneInstance: false,
|
486 | f124656b | Christodoulos Psaltis | closeOnClick: false
|
487 | f124656b | Christodoulos Psaltis | });
|
488 | f124656b | Christodoulos Psaltis | });
|
489 | f124656b | Christodoulos Psaltis | |
490 | bd8b1d60 | Christodoulos Psaltis | // wizard
|
491 | bd8b1d60 | Christodoulos Psaltis | $(function() {
|
492 | bd8b1d60 | Christodoulos Psaltis | var root = $("#wizard").scrollable();
|
493 | cc7c5902 | Dimitris Moraitis | |
494 | bd8b1d60 | Christodoulos Psaltis | // some variables that we need
|
495 | bd8b1d60 | Christodoulos Psaltis | var api = root.scrollable();
|
496 | cc7c5902 | Dimitris Moraitis | |
497 | bd8b1d60 | Christodoulos Psaltis | // rangeinput with default configuration
|
498 | bd8b1d60 | Christodoulos Psaltis | // validation logic is done inside the onBeforeSeek callback
|
499 | bd8b1d60 | Christodoulos Psaltis | api.onBeforeSeek(function(event, i) {
|
500 | bd8b1d60 | Christodoulos Psaltis | // we are going 1 step backwards so no need for validation
|
501 | bd8b1d60 | Christodoulos Psaltis | if (api.getIndex() < i) {
|
502 | bd8b1d60 | Christodoulos Psaltis | // 1. get current page
|
503 | bd8b1d60 | Christodoulos Psaltis | var page = root.find(".page").eq(api.getIndex()),
|
504 | bd8b1d60 | Christodoulos Psaltis | // 2. .. and all required fields inside the page
|
505 | bd8b1d60 | Christodoulos Psaltis | inputs = page.find(".required :input").removeClass("error"),
|
506 | bd8b1d60 | Christodoulos Psaltis | // 3. .. which are empty
|
507 | bd8b1d60 | Christodoulos Psaltis | empty = inputs.filter(function() {
|
508 | bd8b1d60 | Christodoulos Psaltis | return $(this).val().replace(/\s*/g, '') == '';
|
509 | bd8b1d60 | Christodoulos Psaltis | });
|
510 | bd8b1d60 | Christodoulos Psaltis | // if there are empty fields, then
|
511 | bd8b1d60 | Christodoulos Psaltis | if (empty.length) {
|
512 | bd8b1d60 | Christodoulos Psaltis | // add a CSS class name "error" for empty & required fields
|
513 | bd8b1d60 | Christodoulos Psaltis | empty.addClass("error");
|
514 | bd8b1d60 | Christodoulos Psaltis | // cancel seeking of the scrollable by returning false
|
515 | bd8b1d60 | Christodoulos Psaltis | return false;
|
516 | bd8b1d60 | Christodoulos Psaltis | // everything is good
|
517 | bd8b1d60 | Christodoulos Psaltis | }
|
518 | bd8b1d60 | Christodoulos Psaltis | }
|
519 | bd8b1d60 | Christodoulos Psaltis | // update status bar
|
520 | bd8b1d60 | Christodoulos Psaltis | $("#status li").removeClass("active").eq(i).addClass("active");
|
521 | bd8b1d60 | Christodoulos Psaltis | });
|
522 | bd8b1d60 | Christodoulos Psaltis | |
523 | bd8b1d60 | Christodoulos Psaltis | // if tab is pressed on the next button seek to next page
|
524 | bd8b1d60 | Christodoulos Psaltis | root.find("button.next").keydown(function(e) {
|
525 | bd8b1d60 | Christodoulos Psaltis | if (e.keyCode == 9) {
|
526 | bd8b1d60 | Christodoulos Psaltis | // seeks to next tab by executing our validation routine
|
527 | bd8b1d60 | Christodoulos Psaltis | api.next();
|
528 | bd8b1d60 | Christodoulos Psaltis | e.preventDefault();
|
529 | bd8b1d60 | Christodoulos Psaltis | }
|
530 | bd8b1d60 | Christodoulos Psaltis | });
|
531 | bd8b1d60 | Christodoulos Psaltis | });
|
532 | bd8b1d60 | Christodoulos Psaltis | |
533 | bd8b1d60 | Christodoulos Psaltis | // sliders for selecting VM flavor
|
534 | 3141976d | Christodoulos Psaltis | $(":range").rangeinput({progress:true});
|
535 | cc7c5902 | Dimitris Moraitis | |
536 | bd8b1d60 | Christodoulos Psaltis | // disable sliders in flavor selection
|
537 | cc7c5902 | Dimitris Moraitis | function disableSliders() {
|
538 | cc7c5902 | Dimitris Moraitis | $("#cpu").attr('disabled',true);
|
539 | cc7c5902 | Dimitris Moraitis | $("#ram").attr('disabled',true);
|
540 | cc7c5902 | Dimitris Moraitis | $("#storage").attr('disabled',true);
|
541 | cc7c5902 | Dimitris Moraitis | }
|
542 | cc7c5902 | Dimitris Moraitis | |
543 | bd8b1d60 | Christodoulos Psaltis | // selecting the small size
|
544 | 8fd5c3a5 | Christodoulos Psaltis | $("#small").click(function(){
|
545 | cc7c5902 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(1);
|
546 | cc7c5902 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(256);
|
547 | cc7c5902 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(5);
|
548 | cc7c5902 | Dimitris Moraitis | });
|
549 | cc7c5902 | Dimitris Moraitis | |
550 | bd8b1d60 | Christodoulos Psaltis | // selecting the medium size
|
551 | 8fd5c3a5 | Christodoulos Psaltis | $("#medium").click(function(){
|
552 | cc7c5902 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(4);
|
553 | cc7c5902 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(1024);
|
554 | cc7c5902 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(30);
|
555 | cc7c5902 | Dimitris Moraitis | });
|
556 | cc7c5902 | Dimitris Moraitis | |
557 | bd8b1d60 | Christodoulos Psaltis | // selecting the large size
|
558 | 8fd5c3a5 | Christodoulos Psaltis | $("#large").click(function(){
|
559 | cc7c5902 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(8);
|
560 | cc7c5902 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(4096);
|
561 | cc7c5902 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(80);
|
562 | cc7c5902 | Dimitris Moraitis | });
|
563 | cc7c5902 | Dimitris Moraitis | |
564 | bd8b1d60 | Christodoulos Psaltis | // selecting the custom flavor enables the sliders
|
565 | 8fd5c3a5 | Christodoulos Psaltis | $("#custom").click(function(){
|
566 | bd8b1d60 | Christodoulos Psaltis | $("#cpu").attr('disabled',false);
|
567 | bd8b1d60 | Christodoulos Psaltis | $("#ram").attr('disabled',false);
|
568 | bd8b1d60 | Christodoulos Psaltis | $("#storage").attr('disabled',false);
|
569 | bd8b1d60 | Christodoulos Psaltis | $("strong.sliders").style = 'color: #778899;';
|
570 | bd8b1d60 | Christodoulos Psaltis | });
|
571 | bd8b1d60 | Christodoulos Psaltis | |
572 | bd8b1d60 | Christodoulos Psaltis | // get cpu value for custom flavor
|
573 | 8fd5c3a5 | Christodoulos Psaltis | $("#cpu").change(function(){
|
574 | bd8b1d60 | Christodoulos Psaltis | $("#custom").click();
|
575 | bd8b1d60 | Christodoulos Psaltis | });
|
576 | bd8b1d60 | Christodoulos Psaltis | |
577 | bd8b1d60 | Christodoulos Psaltis | // get ram value for custom flavor
|
578 | 8fd5c3a5 | Christodoulos Psaltis | $("#ram").change(function(){
|
579 | bd8b1d60 | Christodoulos Psaltis | $("#custom").click();
|
580 | bd8b1d60 | Christodoulos Psaltis | });
|
581 | bd8b1d60 | Christodoulos Psaltis | |
582 | bd8b1d60 | Christodoulos Psaltis | // get storage value for custom flavor
|
583 | 8fd5c3a5 | Christodoulos Psaltis | $("#storage").change(function(){
|
584 | bd8b1d60 | Christodoulos Psaltis | $("#custom").click();
|
585 | bd8b1d60 | Christodoulos Psaltis | });
|
586 | bd8b1d60 | Christodoulos Psaltis | |
587 | bd8b1d60 | Christodoulos Psaltis | // exit the wizard
|
588 | 8fd5c3a5 | Christodoulos Psaltis | $("#cancel").click(function(){
|
589 | b6270d15 | Christodoulos Psaltis | $("a#create").overlay().close();
|
590 | cc7c5902 | Dimitris Moraitis | });
|
591 | cc7c5902 | Dimitris Moraitis | |
592 | bd8b1d60 | Christodoulos Psaltis | // starting a new VM through the wizard
|
593 | 8fd5c3a5 | Christodoulos Psaltis | $("#start").click(function(){
|
594 | b6270d15 | Christodoulos Psaltis | // ajax port create call
|
595 | 5c908a0f | Christodoulos Psaltis | $.ajax({
|
596 | 5c908a0f | Christodoulos Psaltis | url: '/api/v1.0/servers',
|
597 | 5c908a0f | Christodoulos Psaltis | type: "POST",
|
598 | 5c908a0f | Christodoulos Psaltis | data: {
|
599 | debeeec9 | Markos Gogoulos | "create": '{"cpu" : "2", "ram": "1024", "storage": "15", "name": "image name"}'
|
600 | 5c908a0f | Christodoulos Psaltis | },
|
601 | 5c908a0f | Christodoulos Psaltis | //TODO: get the real data
|
602 | 5c908a0f | Christodoulos Psaltis | dataType: "json",
|
603 | debeeec9 | Markos Gogoulos | timeout: TIMEOUT,
|
604 | facad27f | Christodoulos Psaltis | error: function(jqXHR, textStatus, errorThrown) {
|
605 | facad27f | Christodoulos Psaltis | ajax_error(jqXHR);
|
606 | b6270d15 | Christodoulos Psaltis | },
|
607 | facad27f | Christodoulos Psaltis | success: function(data, textStatus, jqXHR) {
|
608 | f58ec963 | Christodoulos Psaltis | if ( jqXHR.status == '202') {
|
609 | debeeec9 | Markos Gogoulos | ajax_success(jqXHR);
|
610 | f58ec963 | Christodoulos Psaltis | } else {
|
611 | f58ec963 | Christodoulos Psaltis | ajax_error(jqXHR);
|
612 | f58ec963 | Christodoulos Psaltis | }}
|
613 | cc7c5902 | Dimitris Moraitis | });
|
614 | ec06b07c | Dimitris Moraitis | $("#wizard").hide();
|
615 | cc7c5902 | Dimitris Moraitis | });
|
616 | cc7c5902 | Dimitris Moraitis | |
617 | 1e03328c | Christodoulos Psaltis | // reboot action
|
618 | facad27f | Christodoulos Psaltis | function reboot(serverID){
|
619 | b6270d15 | Christodoulos Psaltis | // ajax post reboot call
|
620 | facad27f | Christodoulos Psaltis | $.ajax({
|
621 | facad27f | Christodoulos Psaltis | url: '/api/v1.0/servers/' + serverID + '/action',
|
622 | facad27f | Christodoulos Psaltis | type: "POST",
|
623 | facad27f | Christodoulos Psaltis | data: {
|
624 | facad27f | Christodoulos Psaltis | "reboot": '{"type" : "HARD"}'
|
625 | facad27f | Christodoulos Psaltis | },
|
626 | facad27f | Christodoulos Psaltis | dataType: "json",
|
627 | facad27f | Christodoulos Psaltis | timeout: TIMEOUT,
|
628 | facad27f | Christodoulos Psaltis | error: function(jqXHR, textStatus, errorThrown) {
|
629 | facad27f | Christodoulos Psaltis | ajax_error(jqXHR);
|
630 | facad27f | Christodoulos Psaltis | },
|
631 | facad27f | Christodoulos Psaltis | success: function(data, textStatus, jqXHR) {
|
632 | facad27f | Christodoulos Psaltis | if ( jqXHR.status == '202') {
|
633 | ba4c763b | Christodoulos Psaltis | ajax_success(jqXHR);
|
634 | facad27f | Christodoulos Psaltis | } else {
|
635 | facad27f | Christodoulos Psaltis | ajax_error(jqXHR);
|
636 | facad27f | Christodoulos Psaltis | }}
|
637 | facad27f | Christodoulos Psaltis | });
|
638 | fac6fbbe | Dimitris Moraitis | return false;
|
639 | fac6fbbe | Dimitris Moraitis | }
|
640 | 8400e1a5 | Markos Gogoulos | |
641 | 1e03328c | Christodoulos Psaltis | // shutdown action
|
642 | facad27f | Christodoulos Psaltis | function shutdown(serverID) {
|
643 | b6270d15 | Christodoulos Psaltis | // ajax post shutdown call
|
644 | facad27f | Christodoulos Psaltis | $.ajax({
|
645 | facad27f | Christodoulos Psaltis | url: '/api/v1.0/servers/' + serverID + '/action',
|
646 | facad27f | Christodoulos Psaltis | type: "POST",
|
647 | facad27f | Christodoulos Psaltis | data: {
|
648 | facad27f | Christodoulos Psaltis | "shutdown": '{"timeout" : "5"}'
|
649 | facad27f | Christodoulos Psaltis | },
|
650 | facad27f | Christodoulos Psaltis | dataType: "json",
|
651 | facad27f | Christodoulos Psaltis | timeout: TIMEOUT,
|
652 | facad27f | Christodoulos Psaltis | error: function(jqXHR, textStatus, errorThrown) {
|
653 | facad27f | Christodoulos Psaltis | ajax_error(jqXHR);
|
654 | facad27f | Christodoulos Psaltis | },
|
655 | facad27f | Christodoulos Psaltis | success: function(data, textStatus, jqXHR) {
|
656 | facad27f | Christodoulos Psaltis | if ( jqXHR.status == '202') {
|
657 | ba4c763b | Christodoulos Psaltis | ajax_success(jqXHR);
|
658 | facad27f | Christodoulos Psaltis | } else {
|
659 | facad27f | Christodoulos Psaltis | ajax_error(jqXHR);
|
660 | facad27f | Christodoulos Psaltis | }}
|
661 | facad27f | Christodoulos Psaltis | });
|
662 | fac6fbbe | Dimitris Moraitis | return false;
|
663 | fac6fbbe | Dimitris Moraitis | }
|
664 | fac6fbbe | Dimitris Moraitis | |
665 | e98852ba | Markos Gogoulos | |
666 | 9eef701d | Markos Gogoulos | // start action
|
667 | e98852ba | Markos Gogoulos | function start(serverID){
|
668 | e98852ba | Markos Gogoulos | // ajax post start call
|
669 | e98852ba | Markos Gogoulos | $.ajax({
|
670 | e98852ba | Markos Gogoulos | url: '/api/v1.0/servers/' + serverID + '/action',
|
671 | e98852ba | Markos Gogoulos | type: "POST",
|
672 | e98852ba | Markos Gogoulos | data: {
|
673 | e98852ba | Markos Gogoulos | "start": '{"type" : "NORMAL"}'
|
674 | e98852ba | Markos Gogoulos | },
|
675 | e98852ba | Markos Gogoulos | dataType: "json",
|
676 | e98852ba | Markos Gogoulos | timeout: TIMEOUT,
|
677 | e98852ba | Markos Gogoulos | error: function(jqXHR, textStatus, errorThrown) {
|
678 | e98852ba | Markos Gogoulos | ajax_error(jqXHR);
|
679 | e98852ba | Markos Gogoulos | },
|
680 | e98852ba | Markos Gogoulos | success: function(data, textStatus, jqXHR) {
|
681 | e98852ba | Markos Gogoulos | if ( jqXHR.status == '202') {
|
682 | e98852ba | Markos Gogoulos | ajax_success(jqXHR);
|
683 | e98852ba | Markos Gogoulos | } else {
|
684 | e98852ba | Markos Gogoulos | ajax_error(jqXHR);
|
685 | e98852ba | Markos Gogoulos | }}
|
686 | e98852ba | Markos Gogoulos | });
|
687 | e98852ba | Markos Gogoulos | return false;
|
688 | e98852ba | Markos Gogoulos | }
|
689 | e98852ba | Markos Gogoulos | |
690 | e98852ba | Markos Gogoulos | |
691 | bd528b3b | Christodoulos Psaltis | // basic functions executed on page load
|
692 | bd528b3b | Christodoulos Psaltis | |
693 | bd528b3b | Christodoulos Psaltis | // create tabs for main menu
|
694 | bd528b3b | Christodoulos Psaltis | $("ul.tabs").tabs("div.panes ul");
|
695 | bd528b3b | Christodoulos Psaltis | |
696 | b6270d15 | Christodoulos Psaltis | // intercept reboot click
|
697 | facad27f | Christodoulos Psaltis | $("div.actions a.action-reboot").live('click', function(){
|
698 | facad27f | Christodoulos Psaltis | var serverID = $(this).parent().parent().attr("id");
|
699 | facad27f | Christodoulos Psaltis | var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
|
700 | facad27f | Christodoulos Psaltis | confirm_action('reboot', reboot, serverID, serverName);
|
701 | facad27f | Christodoulos Psaltis | return false;
|
702 | facad27f | Christodoulos Psaltis | });
|
703 | facad27f | Christodoulos Psaltis | |
704 | b6270d15 | Christodoulos Psaltis | // intercept shutdown click
|
705 | facad27f | Christodoulos Psaltis | $("div.actions a.action-shutdown").live('click', function(){
|
706 | facad27f | Christodoulos Psaltis | var serverID = $(this).parent().parent().attr("id");
|
707 | facad27f | Christodoulos Psaltis | var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
|
708 | f58ec963 | Christodoulos Psaltis | confirm_action('shutdown', shutdown, serverID, serverName);
|
709 | facad27f | Christodoulos Psaltis | return false;
|
710 | facad27f | Christodoulos Psaltis | });
|
711 | e98852ba | Markos Gogoulos | // intercept start click
|
712 | e98852ba | Markos Gogoulos | $("div.actions a.action-start").live('click', function(){
|
713 | e98852ba | Markos Gogoulos | var serverID = $(this).parent().parent().attr("id");
|
714 | e98852ba | Markos Gogoulos | var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
|
715 | e98852ba | Markos Gogoulos | confirm_action('start', start, serverID, serverName);
|
716 | e98852ba | Markos Gogoulos | return false;
|
717 | e98852ba | Markos Gogoulos | });
|
718 | 8400e1a5 | Markos Gogoulos | </script> |