Statistics
| Branch: | Tag: | Revision:

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 &hellip;" %}</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" %} &raquo;</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">&laquo; {% trans "Back" %}</button>
144 cf0eb36b Markos Gogoulos
                                <button type="button" class="next right">{% trans "Next" %} &raquo;</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">&laquo; {% 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>