Statistics
| Branch: | Tag: | Revision:

root / ui / templates / networks.html @ d6872a51

History | View | Annotate | Download (48.7 kB)

1 a5bc3755 Vangelis Koukis
<!--
2 a5bc3755 Vangelis Koukis
Copyright 2011 GRNET S.A. All rights reserved.
3 a5bc3755 Vangelis Koukis

4 a5bc3755 Vangelis Koukis
Redistribution and use in source and binary forms, with or
5 a5bc3755 Vangelis Koukis
without modification, are permitted provided that the following
6 a5bc3755 Vangelis Koukis
conditions are met:
7 a5bc3755 Vangelis Koukis

8 a5bc3755 Vangelis Koukis
  1. Redistributions of source code must retain the above
9 a5bc3755 Vangelis Koukis
     copyright notice, this list of conditions and the following
10 a5bc3755 Vangelis Koukis
     disclaimer.
11 a5bc3755 Vangelis Koukis

12 a5bc3755 Vangelis Koukis
  2. Redistributions in binary form must reproduce the above
13 a5bc3755 Vangelis Koukis
     copyright notice, this list of conditions and the following
14 a5bc3755 Vangelis Koukis
     disclaimer in the documentation and/or other materials
15 a5bc3755 Vangelis Koukis
     provided with the distribution.
16 a5bc3755 Vangelis Koukis

17 a5bc3755 Vangelis Koukis
THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 a5bc3755 Vangelis Koukis
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 a5bc3755 Vangelis Koukis
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 a5bc3755 Vangelis Koukis
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 a5bc3755 Vangelis Koukis
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 a5bc3755 Vangelis Koukis
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 a5bc3755 Vangelis Koukis
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 a5bc3755 Vangelis Koukis
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 a5bc3755 Vangelis Koukis
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 a5bc3755 Vangelis Koukis
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 a5bc3755 Vangelis Koukis
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 a5bc3755 Vangelis Koukis
POSSIBILITY OF SUCH DAMAGE.
29 a5bc3755 Vangelis Koukis

30 a5bc3755 Vangelis Koukis
The views and conclusions contained in the software and
31 a5bc3755 Vangelis Koukis
documentation are those of the authors and should not be
32 a5bc3755 Vangelis Koukis
interpreted as representing official policies, either expressed
33 a5bc3755 Vangelis Koukis
or implied, of GRNET S.A.
34 a5bc3755 Vangelis Koukis
-->
35 a5bc3755 Vangelis Koukis
36 7d4f351b Mike Muzurakis
{% load i18n %}
37 e690c75d Christodoulos Psaltis
38 f533f224 Vangelis Koukis
<!-- the create button -->
39 f533f224 Vangelis Koukis
<div id="networks-createcontainer">
40 f533f224 Vangelis Koukis
    <div id="beforecreate"></div>
41 f533f224 Vangelis Koukis
    <a id="networkscreate" rel="#networks-wizard" href="#">{% trans "Create New +" %}</a>
42 f533f224 Vangelis Koukis
</div>
43 e690c75d Christodoulos Psaltis
44 f533f224 Vangelis Koukis
<!-- add new network overlay -->
45 f533f224 Vangelis Koukis
<div>
46 f533f224 Vangelis Koukis
    <div class="modal" id="networks-wizard">
47 f533f224 Vangelis Koukis
        <div class="header">
48 f533f224 Vangelis Koukis
        </div>
49 f533f224 Vangelis Koukis
        <h2>{% trans "Name your network" %}</h2>
50 f533f224 Vangelis Koukis
        <hr class="topruler" />
51 f533f224 Vangelis Koukis
        <div class="container">
52 f533f224 Vangelis Koukis
            <div class="name-input">
53 f533f224 Vangelis Koukis
                <label>{% trans "Name" %}:</label>
54 f533f224 Vangelis Koukis
                <input type="text" class="text" name="machine_name"></input>
55 f533f224 Vangelis Koukis
                <span class="help">{% trans "(* Required field)" %}</span>
56 f533f224 Vangelis Koukis
            </div>
57 f533f224 Vangelis Koukis
        </div>
58 f533f224 Vangelis Koukis
        <hr class="bottomruler" />
59 f533f224 Vangelis Koukis
        <button type="button" id="add-network-cancel" class="cancel">{% trans "Cancel" %}</button>
60 f533f224 Vangelis Koukis
        <button type="button" id="add-network-create" class="create">{% trans "Create Network" %}</button>
61 f533f224 Vangelis Koukis
        <hr class="separator-end"></hr>
62 7d4f351b Mike Muzurakis
    </div>
63 f533f224 Vangelis Koukis
</div>
64 f533f224 Vangelis Koukis
65 f533f224 Vangelis Koukis
<!-- networks list -->
66 f533f224 Vangelis Koukis
<div id="networks-container">
67 f533f224 Vangelis Koukis
    <!-- spinner while loading list -->
68 f533f224 Vangelis Koukis
    <div class = "large-spinner"></div>
69 f533f224 Vangelis Koukis
70 f533f224 Vangelis Koukis
    <!-- public network template -->
71 f533f224 Vangelis Koukis
    <div class="network" id="public-template">
72 0a5c4b4d Markos Gogoulos
        <img class="network-logos" src="static/internet.png" />
73 0a8e39b4 Mike Muzurakis
        <div href="#" class="name-div">
74 7d4f351b Mike Muzurakis
            <h5 class="namecontainer">
75 7d4f351b Mike Muzurakis
                <span class="name">{% trans "Internet" %}</span>
76 7d4f351b Mike Muzurakis
            </h5>
77 7d4f351b Mike Muzurakis
        </div>
78 24990e31 Christodoulos Psaltis
        <div class="network-machines">
79 24990e31 Christodoulos Psaltis
            <div class="machines-header">
80 24990e31 Christodoulos Psaltis
                <div class="machines-label">{% trans "machines" %}
81 24990e31 Christodoulos Psaltis
                    (<span class="machines-count">0</span>)
82 24990e31 Christodoulos Psaltis
                </div>
83 24990e31 Christodoulos Psaltis
                <div class="toggler down"></div>
84 24990e31 Christodoulos Psaltis
            </div>
85 24990e31 Christodoulos Psaltis
        </div>
86 b1272faa Mike Muzurakis
        <div class="network-contents">
87 69a37abb Christodoulos Psaltis
            <div class="network-placeholder">
88 f533f224 Vangelis Koukis
                <div class="machines-list">
89 f533f224 Vangelis Koukis
                <!-- append machines here -->
90 b1272faa Mike Muzurakis
                </div>
91 24990e31 Christodoulos Psaltis
                <!-- Adding servers to public network is not supported in 0.5
92 c0c46a60 Christodoulos Psaltis
                <div class="empty-network-slot" id="machine-template">
93 f533f224 Vangelis Koukis
                    <div class='network-add-machine'>
94 4ede8cf5 Christodoulos Psaltis
                        <span class="add-icon">+</span>
95 f533f224 Vangelis Koukis
                    </div>
96 c0c46a60 Christodoulos Psaltis
                </div>
97 4ede8cf5 Christodoulos Psaltis
                -->
98 69a37abb Christodoulos Psaltis
            </div>
99 69a37abb Christodoulos Psaltis
        </div>
100 29310e65 Mike Muzurakis
        <div class="state">
101 29310e65 Mike Muzurakis
            <div class="status">{% trans "Public Network" %}</div>
102 29310e65 Mike Muzurakis
            <div class="indicators network-indicator">
103 29310e65 Mike Muzurakis
                <div class="indicator1"></div>
104 29310e65 Mike Muzurakis
                <div class="indicator2"></div>
105 29310e65 Mike Muzurakis
                <div class="indicator3"></div>
106 29310e65 Mike Muzurakis
                <div class="indicator4"></div>
107 29310e65 Mike Muzurakis
            </div>
108 29310e65 Mike Muzurakis
        </div>
109 29310e65 Mike Muzurakis
        <div class="actions">
110 24990e31 Christodoulos Psaltis
             <!-- Adding servers to public network is not supported in 0.5
111 24990e31 Christodoulos Psaltis
            <a href="#" class="action-add">{% trans "Add Machine" %}</a>
112 24990e31 Christodoulos Psaltis
            -->
113 29310e65 Mike Muzurakis
        </div>
114 29310e65 Mike Muzurakis
        <div class="confirm_single">
115 29310e65 Mike Muzurakis
            <button class="yes">{% trans "Confirm" %}</button>
116 29310e65 Mike Muzurakis
            <button class="no">{% trans "Cancel" %}</button>
117 29310e65 Mike Muzurakis
        </div>
118 29310e65 Mike Muzurakis
        <div class="action_error" align="center">
119 29310e65 Mike Muzurakis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
120 29310e65 Mike Muzurakis
            <span class="code"></span>
121 29310e65 Mike Muzurakis
            <span class="message"></span>
122 29310e65 Mike Muzurakis
            <button class="details">{% trans "Details" %}</button>
123 29310e65 Mike Muzurakis
        </div>
124 69a37abb Christodoulos Psaltis
    </div>
125 f533f224 Vangelis Koukis
126 f533f224 Vangelis Koukis
    <!-- template for machines in public network -->
127 f533f224 Vangelis Koukis
    <div class="network-machine" id="public-machine-template">
128 829c32c6 Dimitris Moraitis
        <div class="network-cable"></div>
129 f533f224 Vangelis Koukis
        <div class="machine-actions">
130 f533f224 Vangelis Koukis
            <a href="#" class="action-details">{% trans "Details" %}</a>
131 f533f224 Vangelis Koukis
        </div>
132 f533f224 Vangelis Koukis
        <div class="confirm_single">
133 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
134 f533f224 Vangelis Koukis
            <button class="no">{% trans "Cancel" %}</button>
135 f533f224 Vangelis Koukis
        </div>
136 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
137 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
138 f533f224 Vangelis Koukis
            <span class="code"></span>
139 f533f224 Vangelis Koukis
            <span class="message"></span>
140 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
141 f533f224 Vangelis Koukis
        </div>
142 29310e65 Mike Muzurakis
        <div class="ips">
143 f533f224 Vangelis Koukis
            <div class="ip4-container status">
144 696fe9e6 Christodoulos Psaltis
                {% trans "IPv4" %}:
145 f533f224 Vangelis Koukis
                <span class="ip4">192.94.73.15</span>
146 69a37abb Christodoulos Psaltis
            </div>
147 f533f224 Vangelis Koukis
            <div class="ip6-container status">
148 696fe9e6 Christodoulos Psaltis
                {% trans "IPv6" %}:
149 f533f224 Vangelis Koukis
                <span class="ip6">vv</span>
150 b1272faa Mike Muzurakis
            </div>
151 7d4f351b Mike Muzurakis
        </div>
152 0a5c4b4d Markos Gogoulos
        <img class="logo" src="static/icons/machines/medium/debian-on.png" />
153 f533f224 Vangelis Koukis
        <div class='network-remove-machine'>
154 24990e31 Christodoulos Psaltis
            <!-- Removing servers from public network is not supported in 0.5
155 24990e31 Christodoulos Psaltis
            <span class="remove-icon">X</span>
156 24990e31 Christodoulos Psaltis
            -->
157 f533f224 Vangelis Koukis
            <span>&nbsp;</span>
158 f533f224 Vangelis Koukis
        </div>
159 f533f224 Vangelis Koukis
        <div href="#" class="machine-name-div">
160 f533f224 Vangelis Koukis
            <h5 class="namecontainer">
161 f533f224 Vangelis Koukis
                <span class="name">my desktop1</span>
162 6f547d12 Mike Muzurakis
            </h5>
163 f533f224 Vangelis Koukis
        </div>
164 24990e31 Christodoulos Psaltis
        <div class="firewall">
165 24990e31 Christodoulos Psaltis
            <div class="firewall-header">
166 24990e31 Christodoulos Psaltis
                <div class="firewall-label">{% trans "Firewall" %}
167 24990e31 Christodoulos Psaltis
                    (<span class="firewall-off">{% trans "Off" %}</span>)
168 24990e31 Christodoulos Psaltis
                </div>
169 24990e31 Christodoulos Psaltis
                <div class="toggler down"></div>
170 24990e31 Christodoulos Psaltis
            </div>
171 24990e31 Christodoulos Psaltis
        </div>
172 f533f224 Vangelis Koukis
        <div class="firewall-content">
173 829c32c6 Dimitris Moraitis
            <div class="firewall-cable"></div>
174 372f6c81 Mike Muzurakis
            <input type="radio" class="checkboxes" value="DISABLED" name="firewall" />
175 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Unprotected mode (Firewall off)" %}</span>
176 f533f224 Vangelis Koukis
            <br />
177 372f6c81 Mike Muzurakis
            <input type="radio" class="checkboxes" value="ENABLED" name="firewall" />
178 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Fully protected mode (Firewall on)" %}</span>
179 f533f224 Vangelis Koukis
            <br />
180 372f6c81 Mike Muzurakis
            <input type="radio" class="checkboxes" value="PROTECTED" name="firewall" />
181 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Basically protected mode (Firewall on)" %}</span>
182 f533f224 Vangelis Koukis
            <button type="submit" class="firewall-apply">{% trans "Apply" %}</button>
183 f533f224 Vangelis Koukis
        </div>
184 f533f224 Vangelis Koukis
        <div class="network-separator machines"></div>
185 f533f224 Vangelis Koukis
    </div>
186 f533f224 Vangelis Koukis
187 f533f224 Vangelis Koukis
    <!-- private network template -->
188 f533f224 Vangelis Koukis
    <div class="network" id="private-template">
189 f533f224 Vangelis Koukis
        <div class="actions">
190 f533f224 Vangelis Koukis
            <a href="#" class="action-add">{% trans "Add Machine" %}</a>
191 f533f224 Vangelis Koukis
            <a href="#" class="action-network-destroy">{% trans "Destroy" %}</a>
192 f533f224 Vangelis Koukis
        </div>
193 d7414be6 Markos Gogoulos
        <div class="action_error" align="center">
194 d7414be6 Markos Gogoulos
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
195 d7414be6 Markos Gogoulos
            <span class="code"></span>
196 d7414be6 Markos Gogoulos
            <span class="message"></span>
197 d7414be6 Markos Gogoulos
            <button class="details">{% trans "Details" %}</button>
198 d7414be6 Markos Gogoulos
        </div>
199 f533f224 Vangelis Koukis
        <div class="confirm_single">
200 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
201 df67c0cc Markos Gogoulos
            <button class="no">X</button>
202 f533f224 Vangelis Koukis
        </div>
203 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
204 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
205 f533f224 Vangelis Koukis
            <span class="code"></span>
206 f533f224 Vangelis Koukis
            <span class="message"></span>
207 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
208 f533f224 Vangelis Koukis
        </div>
209 f533f224 Vangelis Koukis
        <div class="state">
210 f533f224 Vangelis Koukis
            <div class="status">{% trans "Private Network" %}</div>
211 df67c0cc Markos Gogoulos
            <div class="indicators network-indicator">
212 df67c0cc Markos Gogoulos
                <div class="indicator1"></div>
213 df67c0cc Markos Gogoulos
                <div class="indicator2"></div>
214 df67c0cc Markos Gogoulos
                <div class="indicator3"></div>
215 df67c0cc Markos Gogoulos
                <div class="indicator4"></div>
216 df67c0cc Markos Gogoulos
            </div>
217 0a5c4b4d Markos Gogoulos
            <img class="spinner" style="display:none" src="static/icons/indicators/medium/progress.gif" />
218 0a5c4b4d Markos Gogoulos
            <img class="wave" style="display:none" src="static/icons/indicators/medium/wave.gif" />
219 f533f224 Vangelis Koukis
        </div>
220 0a5c4b4d Markos Gogoulos
        <img class="network-logos" src="static/network.png" />
221 f533f224 Vangelis Koukis
        <div href="#" class="name-div">
222 f533f224 Vangelis Koukis
            <h5 class="namecontainer editable">
223 f533f224 Vangelis Koukis
                <span class="name">{% trans "My Network 1" %}</span>
224 f533f224 Vangelis Koukis
                <span class="rename-network"></span>
225 f533f224 Vangelis Koukis
                <div class="editbuttons" style="display:none">
226 29310e65 Mike Muzurakis
                    <span class="save"></span>
227 29310e65 Mike Muzurakis
                    <span class="cancel"></span>
228 c0c46a60 Christodoulos Psaltis
                </div>
229 f533f224 Vangelis Koukis
            </h5>
230 6f547d12 Mike Muzurakis
        </div>
231 24990e31 Christodoulos Psaltis
        <div class="network-machines">
232 24990e31 Christodoulos Psaltis
            <div class="machines-header">
233 24990e31 Christodoulos Psaltis
                <div class="machines-label">{% trans "machines" %}
234 24990e31 Christodoulos Psaltis
                    (<span class="machines-count">0</span>)
235 24990e31 Christodoulos Psaltis
                </div>
236 24990e31 Christodoulos Psaltis
                <div class="toggler down"></div>
237 24990e31 Christodoulos Psaltis
            </div>
238 24990e31 Christodoulos Psaltis
        </div>
239 f533f224 Vangelis Koukis
        <div class="network-contents">
240 f533f224 Vangelis Koukis
            <div class="network-placeholder">
241 f533f224 Vangelis Koukis
                <div class="machines-list">
242 f533f224 Vangelis Koukis
                <!-- append machines here -->
243 f533f224 Vangelis Koukis
                </div>
244 f533f224 Vangelis Koukis
                <div class="empty-network-slot" id="machine-template">
245 01f84412 Mike Muzurakis
                    <div class='network-add-machine'><div class="add-icon">+</div></div>
246 f533f224 Vangelis Koukis
                </div>
247 6f547d12 Mike Muzurakis
            </div>
248 f533f224 Vangelis Koukis
        </div>
249 f533f224 Vangelis Koukis
        <div class="separator"></div>
250 f533f224 Vangelis Koukis
    </div>
251 f533f224 Vangelis Koukis
252 f533f224 Vangelis Koukis
    <!-- template for machines in private network -->
253 f533f224 Vangelis Koukis
    <div class="network-machine" id="private-machine-template">
254 f533f224 Vangelis Koukis
        <div class="machine-actions">
255 f533f224 Vangelis Koukis
            <a href="#" class="action-disconnect">{% trans "Disconnect" %}</a>
256 f533f224 Vangelis Koukis
            <a href="#" class="action-details">{% trans "Details" %}</a>
257 f533f224 Vangelis Koukis
        </div>
258 f533f224 Vangelis Koukis
        <div class="confirm_single">
259 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
260 df67c0cc Markos Gogoulos
            <button class="no">X</button>
261 f533f224 Vangelis Koukis
        </div>
262 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
263 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
264 f533f224 Vangelis Koukis
            <span class="code"></span>
265 f533f224 Vangelis Koukis
            <span class="message"></span>
266 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
267 f533f224 Vangelis Koukis
        </div>
268 0a5c4b4d Markos Gogoulos
        <img class="logo" src="static/icons/machines/medium/debian-on.png" />
269 f533f224 Vangelis Koukis
        <div class='network-remove-machine'><span class="remove-icon">X</span></div>
270 f533f224 Vangelis Koukis
        <div href="#" class="machine-name-div">
271 f533f224 Vangelis Koukis
            <h5 class="namecontainer editable">
272 f533f224 Vangelis Koukis
                <span class="name">my desktop1</span>
273 6f547d12 Mike Muzurakis
            </h5>
274 f533f224 Vangelis Koukis
        </div>
275 77d4b76f Christodoulos Psaltis
        <h5 class='machine-connect'>
276 77d4b76f Christodoulos Psaltis
            <span>{% trans "Connect" %}</span> {% trans "to manage private IPs" %}
277 f533f224 Vangelis Koukis
        </h5>
278 f533f224 Vangelis Koukis
        <div class="network-separator machines"></div>
279 f533f224 Vangelis Koukis
    </div>
280 f533f224 Vangelis Koukis
281 f533f224 Vangelis Koukis
    <!-- the actual structure to be populated -->
282 f533f224 Vangelis Koukis
    <div class="public-networks"></div>
283 f533f224 Vangelis Koukis
    <div class="private-networks" style="display:none;"></div>
284 f533f224 Vangelis Koukis
</div>
285 f533f224 Vangelis Koukis
286 f533f224 Vangelis Koukis
<!-- add servers to network overlay -->
287 f533f224 Vangelis Koukis
<div>
288 f533f224 Vangelis Koukis
    <div id="add-machines-wizard" class="modal">
289 f533f224 Vangelis Koukis
        <h3 class="popup-header">{% trans "Add machine" %}</h3>
290 f533f224 Vangelis Koukis
        <p style='display:none;'>hidden network id</p>
291 f533f224 Vangelis Koukis
        <div class="popup-body">
292 f533f224 Vangelis Koukis
            <div class="popup-body-inner">
293 f533f224 Vangelis Koukis
                <div class="popup-title">{% trans "Select machines to add to:" %}</div>
294 f533f224 Vangelis Koukis
                <div class="network-name"></div>
295 f533f224 Vangelis Koukis
                <div class="popup-separator"></div>
296 f533f224 Vangelis Koukis
                <div class="machines-container">
297 f533f224 Vangelis Koukis
                    <div class="large-spinner"></div>
298 f533f224 Vangelis Koukis
                    <div id='machine-entry-template' style="display:none;">
299 f533f224 Vangelis Koukis
                        <input type="checkbox" />
300 0a5c4b4d Markos Gogoulos
                        <img class=list-logo src="static/icons/machines/small/debian-on.png" title="debian"></img>
301 f533f224 Vangelis Koukis
                        <span class="machine-name">kati</span>
302 c0c46a60 Christodoulos Psaltis
                    </div>
303 c0c46a60 Christodoulos Psaltis
                </div>
304 b1272faa Mike Muzurakis
            </div>
305 6f547d12 Mike Muzurakis
        </div>
306 f533f224 Vangelis Koukis
        <div class="buttons">
307 f533f224 Vangelis Koukis
            <button type="button" class="cancel" id="add-server-cancel">{% trans "Cancel" %}</button>
308 f533f224 Vangelis Koukis
            <button type="button" class="add" id="add-server-add">{% trans "Add" %}</button>
309 f533f224 Vangelis Koukis
        </div>
310 7d4f351b Mike Muzurakis
    </div>
311 7d4f351b Mike Muzurakis
</div>
312 f533f224 Vangelis Koukis
313 f533f224 Vangelis Koukis
<a id="add-machines-overlay" href="#" rel="#add-machines-wizard"></a>
314 f533f224 Vangelis Koukis
315 64c30d16 Christodoulos Psaltis
<!-- reboot dialog -->
316 64c30d16 Christodoulos Psaltis
<div class="reboot-dialog">
317 64c30d16 Christodoulos Psaltis
    <p>{% trans "For the network changes to take effect you need to reboot all affected machines:" %}</p>
318 64c30d16 Christodoulos Psaltis
    <button class="reboot-all">{% trans "Reboot All" %}</button>
319 26a8c814 Christodoulos Psaltis
    <div id="reboot-machine-template" class='reboot-machine-entry'>
320 64c30d16 Christodoulos Psaltis
        <div class="name">my debian server</div>
321 64c30d16 Christodoulos Psaltis
        <button class="reboot-single">{% trans "Reboot" %}</button>
322 b9d9894f Christodoulos Psaltis
        <div class="reboot-error">
323 b9d9894f Christodoulos Psaltis
            <div class="code"></div>
324 b9d9894f Christodoulos Psaltis
            <div class="action"></div>
325 b9d9894f Christodoulos Psaltis
            <div class="message"></div>
326 b9d9894f Christodoulos Psaltis
            <button class="details">{% trans "Error!" %}</button>
327 b9d9894f Christodoulos Psaltis
        </div>
328 64c30d16 Christodoulos Psaltis
    </div>
329 26a8c814 Christodoulos Psaltis
    <div class="reboot-list"></div>
330 64c30d16 Christodoulos Psaltis
</div>
331 64c30d16 Christodoulos Psaltis
332 f533f224 Vangelis Koukis
<!-- multiple confirmation dialog -->
333 f533f224 Vangelis Koukis
<div class="confirm_multiple">
334 eead5be3 Dimitris Moraitis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "networks or machines" %}</p>
335 f533f224 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
336 f533f224 Vangelis Koukis
    <button class="no">{% trans "Cancel All" %}</button>
337 f533f224 Vangelis Koukis
</div>
338 6f547d12 Mike Muzurakis
339 6f547d12 Mike Muzurakis
<script>
340 f533f224 Vangelis Koukis
// add network wizard initialization
341 f533f224 Vangelis Koukis
$(function() {
342 f533f224 Vangelis Koukis
    // create wizard overlay
343 f533f224 Vangelis Koukis
    $("a#networkscreate").overlay({
344 716c3ead Dimitris Moraitis
        mask: '#666',
345 f533f224 Vangelis Koukis
        effect: 'default',
346 f533f224 Vangelis Koukis
        top: '10%',
347 f533f224 Vangelis Koukis
        closeOnClick: false,
348 f533f224 Vangelis Koukis
        oneInstance: false,
349 f533f224 Vangelis Koukis
        closeOnEsc: true,
350 f533f224 Vangelis Koukis
        load: false
351 f533f224 Vangelis Koukis
    });
352 b1272faa Mike Muzurakis
});
353 f533f224 Vangelis Koukis

354 f533f224 Vangelis Koukis
// intercept click to create new private network
355 f533f224 Vangelis Koukis
$("#networkscreate").click(function() {
356 f533f224 Vangelis Koukis
    // reset and load wizard
357 f533f224 Vangelis Koukis
    $('#networks-wizard span.help').removeClass('red');
358 f533f224 Vangelis Koukis
    $('#networks-wizard input').val('');
359 f533f224 Vangelis Koukis
    $('#networks-wizard #add-network-create').text('{% trans 'Create Network' %}');
360 f533f224 Vangelis Koukis
    $("#networks-wizard").show();
361 f533f224 Vangelis Koukis
    $('#networks-wizard input').focus();
362 f533f224 Vangelis Koukis
    $("a#networkscreate").data('overlay').load();
363 cd75a3f2 Christodoulos Psaltis
    // enable submit button
364 cd75a3f2 Christodoulos Psaltis
    $("#networks-wizard #add-network-create").removeAttr('disabled');
365 f533f224 Vangelis Koukis
    return false;
366 e0e9957e Christodoulos Psaltis
});
367 b1272faa Mike Muzurakis

368 f533f224 Vangelis Koukis
// exit the add machine to network wizard
369 f533f224 Vangelis Koukis
$("#add-network-cancel").live('click', function() {
370 f533f224 Vangelis Koukis
    $("a#networkscreate").overlay().close();
371 384da41e Christodoulos Psaltis
});
372 b1272faa Mike Muzurakis

373 f533f224 Vangelis Koukis
// add selected machines to network
374 f533f224 Vangelis Koukis
$("#add-network-create").live('click', function() {
375 f533f224 Vangelis Koukis
    if ($('#networks-wizard input').val() == '') {
376 f533f224 Vangelis Koukis
        $('#networks-wizard input').focus();
377 f533f224 Vangelis Koukis
        $('#networks-wizard span.help').addClass('red');
378 f533f224 Vangelis Koukis
    } else {
379 cd75a3f2 Christodoulos Psaltis
        // disable submit button to prevent multiple calls
380 cd75a3f2 Christodoulos Psaltis
        $(this).attr("disabled", true);
381 cd75a3f2 Christodoulos Psaltis
        // load progress bar
382 f533f224 Vangelis Koukis
        $(this).text('');
383 0a5c4b4d Markos Gogoulos
        $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
384 cd75a3f2 Christodoulos Psaltis
        // make the call
385 f533f224 Vangelis Koukis
        networkName = $('#networks-wizard input').val();
386 f533f224 Vangelis Koukis
        create_network(networkName);
387 f533f224 Vangelis Koukis
    }
388 f533f224 Vangelis Koukis
    return false;
389 92f534e9 Christodoulos Psaltis
});
390 92f534e9 Christodoulos Psaltis

391 f533f224 Vangelis Koukis
// toggle component with class network-contents
392 24990e31 Christodoulos Psaltis
$("#networks-pane div.machines-header").live('click', function() {
393 637104fe Christodoulos Psaltis
    if ($(this).find('.toggler').hasClass('up')) {
394 637104fe Christodoulos Psaltis
        $(this).find('.toggler').removeClass('up');
395 637104fe Christodoulos Psaltis
        $(this).find('.toggler').addClass('down');
396 637104fe Christodoulos Psaltis
        $(this).find('.machines-label').removeClass('darker');
397 637104fe Christodoulos Psaltis
        $(this).closest('div.network').removeClass('light-background');
398 637104fe Christodoulos Psaltis
    } else {
399 637104fe Christodoulos Psaltis
        $(this).find('.toggler').removeClass('down');
400 637104fe Christodoulos Psaltis
        $(this).find('.toggler').addClass('up');
401 637104fe Christodoulos Psaltis
        $(this).find('.machines-label').addClass('darker');
402 637104fe Christodoulos Psaltis
        $(this).closest('div.network').addClass('light-background');
403 637104fe Christodoulos Psaltis
    }
404 696fe9e6 Christodoulos Psaltis
    $(this).parent().next("#networks-pane .network-contents").slideToggle(600);
405 f533f224 Vangelis Koukis
    return false;
406 f533f224 Vangelis Koukis
});
407 f533f224 Vangelis Koukis

408 f533f224 Vangelis Koukis
// toggle component with class network-contents
409 f533f224 Vangelis Koukis
$("#networks-pane .network-logos").live('click', function() {
410 637104fe Christodoulos Psaltis
    $(this).closest('div.network').find('div.machines-header').click();
411 f533f224 Vangelis Koukis
    return false;
412 f533f224 Vangelis Koukis
});
413 f533f224 Vangelis Koukis

414 f533f224 Vangelis Koukis
//initiate network renaming
415 f533f224 Vangelis Koukis
$("#networks-pane .name-div .rename-network, #networks-pane .name-div h5.editable span.name").live('click', function() {
416 f533f224 Vangelis Koukis
    $(this).parent().find('.name').html("<input id=\"txtEdit\" type=\"text\" class=\"nametextbox\" value=\"" +
417 f533f224 Vangelis Koukis
                                        $(this).parent().find('.name').text() +
418 f533f224 Vangelis Koukis
                                        "\" / ><span class=\"oldValue\">" +
419 f533f224 Vangelis Koukis
                                        $(this).parent().find('.name').text() + "</span>");
420 f533f224 Vangelis Koukis
    $(this).parent().find('.rename-network').hide();
421 f533f224 Vangelis Koukis
    $(this).parent().find(".editbuttons").fadeIn();
422 f533f224 Vangelis Koukis
    $(this).parent().find(".nametextbox").focus().select();
423 f533f224 Vangelis Koukis
    $(this).parent().removeClass('editable');
424 f533f224 Vangelis Koukis

425 f533f224 Vangelis Koukis
    //submit wizard by pressing enter on the name textbox
426 f533f224 Vangelis Koukis
    $("#txtEdit").keydown(function (e) {
427 f533f224 Vangelis Koukis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
428 f533f224 Vangelis Koukis
            $(this).parent().parent().find('div.editbuttons span.save').click();
429 f533f224 Vangelis Koukis
            return false;
430 f533f224 Vangelis Koukis
        } else if ((e.which && e.which == 27) || (e.keyCode && e.keyCode == 27)) {
431 f533f224 Vangelis Koukis
            $(this).parent().parent().find('div.editbuttons span.cancel').click();
432 f533f224 Vangelis Koukis
            return true;
433 f533f224 Vangelis Koukis
        }
434 f533f224 Vangelis Koukis
    });
435 f533f224 Vangelis Koukis
    return false;
436 f533f224 Vangelis Koukis
});
437 f533f224 Vangelis Koukis

438 f533f224 Vangelis Koukis
//rename machine
439 f533f224 Vangelis Koukis
$("#networks-pane .name-div .editbuttons .save").live('click', function() {
440 f533f224 Vangelis Koukis
    networkID = $(this).closest('.network').attr("id").split('-').pop();
441 f533f224 Vangelis Koukis
    networkName = $(this).parent().parent().find('.nametextbox').val();
442 f533f224 Vangelis Koukis
    if (networkName.trim() == ''){
443 f533f224 Vangelis Koukis
        return false;
444 f533f224 Vangelis Koukis
    }
445 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.name').html($(this).parent().parent().find('.nametextbox').val());
446 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".editbuttons").fadeOut("fast");
447 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".rename-network").fadeIn("slow");
448 f533f224 Vangelis Koukis
    rename_network(networkID, networkName);
449 f533f224 Vangelis Koukis
    return false;
450 f533f224 Vangelis Koukis
});
451 f533f224 Vangelis Koukis

452 f533f224 Vangelis Koukis
//cancel renaming
453 f533f224 Vangelis Koukis
$("#networks-pane .name-div .editbuttons .cancel").live('click', function() {
454 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.name').html($(this).parent().parent().find('.oldValue').text());
455 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".editbuttons").hide();
456 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".rename-network").fadeIn();
457 f533f224 Vangelis Koukis
    $(this).parent().parent().addClass('editable');
458 f533f224 Vangelis Koukis
    return false;
459 f533f224 Vangelis Koukis
});
460 f533f224 Vangelis Koukis

461 f533f224 Vangelis Koukis
// intercept click to delete network
462 f533f224 Vangelis Koukis
$("#networks-pane .action-network-destroy").live('click', function() {
463 f533f224 Vangelis Koukis
    var networkID = $(this).parent().parent().attr('id').split('-').pop();
464 f533f224 Vangelis Koukis
    var networkName = $(this).parent().parent().find(".name-div span.name").text();
465 f533f224 Vangelis Koukis
    var found = false;
466 f533f224 Vangelis Koukis
    $(this).parent().children('a').removeClass('selected');
467 f533f224 Vangelis Koukis
    $(this).addClass('selected');
468 f533f224 Vangelis Koukis
    $(this).parent().addClass('display')
469 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.action_error').hide();
470 f533f224 Vangelis Koukis
    for (i=0; i < pending_actions.length; i++){ // if there is already a pending action for this network replace it
471 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network && pending_actions[i][1] == networkID){
472 f533f224 Vangelis Koukis
            pending_actions[i][0] = delete_network;
473 f533f224 Vangelis Koukis
            found = true
474 f533f224 Vangelis Koukis
        }
475 f533f224 Vangelis Koukis
    }
476 f533f224 Vangelis Koukis
    if (!found) {
477 f533f224 Vangelis Koukis
        // no pending action for this network was found, so let's just add it to the list
478 f533f224 Vangelis Koukis
        pending_actions.push([delete_network, networkID, networkName]);
479 f533f224 Vangelis Koukis
    }
480 f533f224 Vangelis Koukis
    update_network_confirmations();
481 f533f224 Vangelis Koukis
    return false;
482 f533f224 Vangelis Koukis
});
483 f533f224 Vangelis Koukis

484 f533f224 Vangelis Koukis
// intercept click to remove machine from network
485 f533f224 Vangelis Koukis
$("#networks-pane .remove-icon").live('click', function() {
486 f533f224 Vangelis Koukis
    $(this).closest('.network-machine').find('.action-disconnect').click();
487 f533f224 Vangelis Koukis
    return false;
488 f533f224 Vangelis Koukis
});
489 f533f224 Vangelis Koukis

490 f533f224 Vangelis Koukis
// intercept click to remove machine from network
491 f533f224 Vangelis Koukis
$("#networks-pane .action-disconnect").live('click', function() {
492 f533f224 Vangelis Koukis
    var serverID = $(this).parent().parent().attr('id').split('-').pop();
493 82835e06 Christodoulos Psaltis
    var serverName = $(this).closest('.network-machine').find('span.name').text();
494 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr('id').split('-').pop();
495 f39b36a6 Christodoulos Psaltis
    var serverState = $(this).closest('.network-machine').find('img.logo').attr('src').split('-')[1];
496 f39b36a6 Christodoulos Psaltis
    serverState = serverState.split('.')[0];
497 f533f224 Vangelis Koukis
    var found = false;
498 f533f224 Vangelis Koukis
    $(this).parent().children('a').removeClass('selected');
499 f533f224 Vangelis Koukis
    $(this).addClass('selected');
500 f533f224 Vangelis Koukis
    $(this).parent().addClass('display')
501 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.action_error').hide();
502 f533f224 Vangelis Koukis
    for (i=0; i < pending_actions.length; i++){
503 f533f224 Vangelis Koukis
        // if there is already a pending action for this network replace it
504 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == remove_server_from_network &&
505 f533f224 Vangelis Koukis
            pending_actions[i][1] == networkID &&
506 f533f224 Vangelis Koukis
            pending_actions[i][2] == serverID) {
507 f533f224 Vangelis Koukis
                pending_actions[i][0] = remove_server_from_network;
508 f533f224 Vangelis Koukis
                found = true
509 f533f224 Vangelis Koukis
        }
510 f533f224 Vangelis Koukis
    }
511 f533f224 Vangelis Koukis
    if (!found) {
512 f533f224 Vangelis Koukis
        // no pending action for this network was found, so let's just add it to the list
513 f39b36a6 Christodoulos Psaltis
        pending_actions.push([remove_server_from_network, networkID, serverID, serverName, serverState]);
514 f533f224 Vangelis Koukis
    }
515 f533f224 Vangelis Koukis
    update_network_confirmations();
516 f533f224 Vangelis Koukis
    return false;
517 f533f224 Vangelis Koukis
});
518 f533f224 Vangelis Koukis

519 f533f224 Vangelis Koukis
$("#networks-pane .action-details").live('click', function() {
520 f533f224 Vangelis Koukis
    var serverID = $(this).parent().parent().attr('id').split('-').pop();
521 f533f224 Vangelis Koukis
    $.cookie('view', '2');
522 f533f224 Vangelis Koukis
    $.cookie('server', serverID);
523 f533f224 Vangelis Koukis
    $('a#machines').click();
524 829c32c6 Dimitris Moraitis
    return false;
525 f533f224 Vangelis Koukis
});
526 f533f224 Vangelis Koukis

527 f533f224 Vangelis Koukis
// add machines wizard initialization
528 f533f224 Vangelis Koukis
$(function() {
529 f533f224 Vangelis Koukis
    // create wizard overlay
530 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").overlay({
531 716c3ead Dimitris Moraitis
        mask: '#666',
532 f533f224 Vangelis Koukis
        effect: 'default',
533 f533f224 Vangelis Koukis
        top: '10%',
534 f533f224 Vangelis Koukis
        closeOnClick: false,
535 f533f224 Vangelis Koukis
        oneInstance: false,
536 f533f224 Vangelis Koukis
        closeOnEsc: true,
537 28a81775 Christodoulos Psaltis
        load: false
538 f533f224 Vangelis Koukis
    });
539 f533f224 Vangelis Koukis
});
540 f533f224 Vangelis Koukis

541 f533f224 Vangelis Koukis
// intercept click to add machine to  network
542 f533f224 Vangelis Koukis
$("#networks-pane .action-add").live('click', function() {
543 f533f224 Vangelis Koukis
    // reset pre-existing values
544 f533f224 Vangelis Koukis
    $('#add-server-add').text('{% trans 'Add' %}');
545 f533f224 Vangelis Koukis
    $("#add-machines-wizard .network-name").text($(this).closest('.network').find('.name-div span.name').text());
546 f533f224 Vangelis Koukis
    $("#add-machines-wizard p").text($(this).closest('.network').attr('id').split('-').pop());
547 f533f224 Vangelis Koukis
    $("#add-machines-wizard .large-spinner").show();
548 f533f224 Vangelis Koukis
    $('[id^="list-entry-server-"]').remove();
549 f533f224 Vangelis Koukis
    // list new values
550 f533f224 Vangelis Koukis
    list_machines();
551 f533f224 Vangelis Koukis
    // load wizard
552 f533f224 Vangelis Koukis
    $("#add-machines-wizard").show();
553 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").data('overlay').load();
554 4e3a54f3 Christodoulos Psaltis
    // enable submit button
555 4e3a54f3 Christodoulos Psaltis
    $("#add-machines-wizard #add-server-add").removeAttr('disabled');
556 f533f224 Vangelis Koukis
    return false;
557 f533f224 Vangelis Koukis
});
558 f533f224 Vangelis Koukis

559 f533f224 Vangelis Koukis
//submit wizard by pressing enter on the name textbox
560 f533f224 Vangelis Koukis
$("#networks-wizard div.name-input input.text").keypress(function (e) {
561 f533f224 Vangelis Koukis
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
562 f533f224 Vangelis Koukis
        $('#add-network-create').click();
563 f533f224 Vangelis Koukis
        return false;
564 f533f224 Vangelis Koukis
    } else {
565 f533f224 Vangelis Koukis
        return true;
566 f533f224 Vangelis Koukis
    }
567 f533f224 Vangelis Koukis
});
568 f533f224 Vangelis Koukis

569 f533f224 Vangelis Koukis
// intercept click to bring up the add machine to network wizard
570 f533f224 Vangelis Koukis
$("#networks-pane .add-icon").live('click', function() {
571 f533f224 Vangelis Koukis
    $(this).closest('.network').find('.action-add').click();
572 f533f224 Vangelis Koukis
});
573 f533f224 Vangelis Koukis

574 f533f224 Vangelis Koukis
// get machines in public network and list them in add server to network wizard
575 f533f224 Vangelis Koukis
function list_machines() {
576 f533f224 Vangelis Koukis
    var networkID = $("#add-machines-wizard p").text();
577 f533f224 Vangelis Koukis
    // get the list of servers from the UI
578 f533f224 Vangelis Koukis
    var all_machines = $("#networks-pane .public-networks .network-machine");
579 f533f224 Vangelis Koukis

580 f533f224 Vangelis Koukis
    $.each(all_machines, function(i, machine) {
581 f533f224 Vangelis Koukis
        var currentID = machine.id.split('-').pop();
582 f533f224 Vangelis Koukis
        // if machine already exists in private network
583 f533f224 Vangelis Koukis
        if ( $('#net-' + networkID + '-server-' + currentID).length > 0 ) {
584 f533f224 Vangelis Koukis
            // do nothing
585 f533f224 Vangelis Koukis
        } else {
586 f533f224 Vangelis Koukis
            // put it in the list
587 f533f224 Vangelis Koukis
            var entry = $("#add-machines-wizard #machine-entry-template").clone().attr("id", "list-entry-server-" + currentID);
588 f533f224 Vangelis Koukis
            entry.find('input').attr("name", currentID);
589 0a5c4b4d Markos Gogoulos
            entry.find('img').attr('src', 'static/icons/machines/small/' + $(machine).find('img.logo').attr('src').split('/').pop());
590 f533f224 Vangelis Koukis
            entry.find('.machine-name').text($(machine).find('span.name').text());
591 f533f224 Vangelis Koukis
            entry.appendTo("#add-machines-wizard .machines-container");
592 f533f224 Vangelis Koukis
        }
593 f533f224 Vangelis Koukis
    });
594 f533f224 Vangelis Koukis
    $("#add-machines-wizard .large-spinner").hide();
595 f533f224 Vangelis Koukis
    $('[id^="list-entry-server-"]').fadeIn("slow");
596 f533f224 Vangelis Koukis
    return false;
597 f533f224 Vangelis Koukis
}
598 f533f224 Vangelis Koukis

599 f533f224 Vangelis Koukis
// exit the add machine to network wizard
600 f533f224 Vangelis Koukis
$("#add-server-cancel").live('click', function() {
601 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").overlay().close();
602 f533f224 Vangelis Koukis
});
603 f533f224 Vangelis Koukis

604 f533f224 Vangelis Koukis
// add selected machines to network
605 f533f224 Vangelis Koukis
$("#add-server-add").live('click', function() {
606 f533f224 Vangelis Koukis
    var selections = $("#add-machines-wizard :checkbox:checked");
607 9422d033 Christodoulos Psaltis
    // if there are no selections simply close the wizard
608 9422d033 Christodoulos Psaltis
    if (selections.length == 0 ) {
609 9422d033 Christodoulos Psaltis
        $("a#add-machines-overlay").overlay().close();
610 9422d033 Christodoulos Psaltis
    }
611 9422d033 Christodoulos Psaltis
    // if there are servers selected make the proper call
612 9422d033 Christodoulos Psaltis
    else {
613 9422d033 Christodoulos Psaltis
        var networkID = $("#add-machines-wizard p").text();
614 9422d033 Christodoulos Psaltis
        var serverIDs = [];
615 82835e06 Christodoulos Psaltis
        var serverNames = [];
616 f39b36a6 Christodoulos Psaltis
        var serverState = [];
617 f39b36a6 Christodoulos Psaltis
        var serverStates = [];
618 9422d033 Christodoulos Psaltis
        $.each(selections, function(i, selection) {
619 9422d033 Christodoulos Psaltis
            serverIDs.push(selection.name);
620 82835e06 Christodoulos Psaltis
            serverNames.push($("#list-entry-server-" + selection.name + " span.machine-name").text());
621 f39b36a6 Christodoulos Psaltis
            serverState = $("#list-entry-server-" + selection.name + " img.list-logo").attr('src').split('-')[1];
622 f39b36a6 Christodoulos Psaltis
            serverState = serverState.split('.')[0];
623 f39b36a6 Christodoulos Psaltis
            serverStates.push(serverState);
624 9422d033 Christodoulos Psaltis
        });
625 4e3a54f3 Christodoulos Psaltis
        // disable submit button to prevent multiple calls
626 4e3a54f3 Christodoulos Psaltis
        $(this).attr("disabled", true);
627 4e3a54f3 Christodoulos Psaltis
        // load progress bar
628 9422d033 Christodoulos Psaltis
        $(this).text('');
629 9422d033 Christodoulos Psaltis
        $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
630 91cbaf56 Christodoulos Psaltis
        // show the proper spinner
631 91cbaf56 Christodoulos Psaltis
        $('#net-' + networkID + '.network div.status').text(NET_STATES['Connecting']);
632 91cbaf56 Christodoulos Psaltis
        $('#net-' + networkID + '.network img.spinner').show();
633 91cbaf56 Christodoulos Psaltis
        // make the calls
634 f39b36a6 Christodoulos Psaltis
        add_server_to_network(networkID, serverIDs, serverNames, serverStates);
635 9422d033 Christodoulos Psaltis
    }
636 f533f224 Vangelis Koukis
    return false;
637 f533f224 Vangelis Koukis
});
638 f533f224 Vangelis Koukis

639 f533f224 Vangelis Koukis
// toggle component with class firewall-contents
640 24990e31 Christodoulos Psaltis
$("#networks-pane div.firewall-header").live('click', function() {
641 637104fe Christodoulos Psaltis
    if ($(this).find('.toggler').hasClass('up')) {
642 637104fe Christodoulos Psaltis
        $(this).find('.toggler').removeClass('up');
643 637104fe Christodoulos Psaltis
        $(this).find('.toggler').addClass('down');
644 637104fe Christodoulos Psaltis
        $(this).find('.firewall-label').removeClass('darker');
645 637104fe Christodoulos Psaltis
    } else {
646 637104fe Christodoulos Psaltis
        $(this).find('.toggler').removeClass('down');
647 637104fe Christodoulos Psaltis
        $(this).find('.toggler').addClass('up');
648 637104fe Christodoulos Psaltis
        $(this).find('.firewall-label').addClass('darker');
649 637104fe Christodoulos Psaltis
    }
650 b1272faa Mike Muzurakis
    $(this).parent().next(".firewall-content").slideToggle(600);
651 38bb6c34 Mike Muzurakis
    return false;
652 b1272faa Mike Muzurakis
});
653 b1272faa Mike Muzurakis

654 b1272faa Mike Muzurakis
//hide firewall content on apply click
655 f533f224 Vangelis Koukis
$("#networks-pane .firewall-apply").live('click', function() {
656 d6872a51 Christodoulos Psaltis
    var serverID = $(this).closest('.network-machine').attr("id").split('-').pop();
657 d6872a51 Christodoulos Psaltis
    var networkID = $(this).closest('.network-machine').attr("id").split('-')[1];
658 372f6c81 Mike Muzurakis
    var profile = $(this).parent().find('input:checked').attr('value');
659 372f6c81 Mike Muzurakis
    if (profile != undefined) {
660 372f6c81 Mike Muzurakis
        set_firewall(networkID, serverID, profile);
661 372f6c81 Mike Muzurakis
        $(this).attr("disabled", true);
662 372f6c81 Mike Muzurakis
        $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
663 372f6c81 Mike Muzurakis
    }
664 f533f224 Vangelis Koukis
    return false;
665 f533f224 Vangelis Koukis
});
666 f533f224 Vangelis Koukis

667 f39b36a6 Christodoulos Psaltis
function display_reboot_dialog(networkID, serverID, serverName, serverState) {
668 cd9d5eaf Christodoulos Psaltis
    // check if the server already exists in the list
669 cd9d5eaf Christodoulos Psaltis
    var existing_reboot = $("div.reboot-list div#server-" + serverID);
670 f39b36a6 Christodoulos Psaltis
    if ( !existing_reboot.length && serverState != 'off') {
671 cd9d5eaf Christodoulos Psaltis
        $('div.reboot-dialog').fadeIn("slow");
672 cd9d5eaf Christodoulos Psaltis
        var reboot_entry = $('div#reboot-machine-template').clone().attr("id", "server-" + serverID);
673 cd9d5eaf Christodoulos Psaltis
        reboot_entry.find('div.name').text(serverName);
674 cd9d5eaf Christodoulos Psaltis
        reboot_entry.appendTo('div.reboot-list').show();
675 cd9d5eaf Christodoulos Psaltis
    }
676 cd9d5eaf Christodoulos Psaltis
    return false;
677 cd9d5eaf Christodoulos Psaltis
}
678 cd9d5eaf Christodoulos Psaltis

679 0155dc19 Christodoulos Psaltis
// intercept single reboot click
680 0155dc19 Christodoulos Psaltis
$("div.reboot-dialog button.reboot-single").live('click', function() {
681 0155dc19 Christodoulos Psaltis
    var serverID = $(this).parent().attr('id').split('-')[1];
682 0155dc19 Christodoulos Psaltis
    reboot([serverID]);
683 0155dc19 Christodoulos Psaltis
    // load progress bar
684 0155dc19 Christodoulos Psaltis
    $(this).text('');
685 0155dc19 Christodoulos Psaltis
    $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
686 bf80097f Christodoulos Psaltis
    // disable submit button to prevent multiple calls
687 bf80097f Christodoulos Psaltis
    $(this).attr("disabled", true);
688 0155dc19 Christodoulos Psaltis
    return false;
689 0155dc19 Christodoulos Psaltis
});
690 0155dc19 Christodoulos Psaltis

691 0155dc19 Christodoulos Psaltis
// intercept multiple reboot click
692 0155dc19 Christodoulos Psaltis
$("div.reboot-dialog button.reboot-all").live('click', function() {
693 bf80097f Christodoulos Psaltis
    $(this).parent().find('div.reboot-list button.reboot-single').click();
694 0155dc19 Christodoulos Psaltis
    // load progress bar for all buttons
695 0155dc19 Christodoulos Psaltis
    $(this).parent().find('button').text('');
696 0155dc19 Christodoulos Psaltis
    $(this).parent().find('button').html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
697 bf80097f Christodoulos Psaltis
    // disable submit button to prevent multiple calls
698 bf80097f Christodoulos Psaltis
    $(this).attr("disabled", true);
699 0155dc19 Christodoulos Psaltis
    return false;
700 0155dc19 Christodoulos Psaltis
});
701 0155dc19 Christodoulos Psaltis

702 b9d9894f Christodoulos Psaltis
// intercept error on reboot click
703 b9d9894f Christodoulos Psaltis
$("div.reboot-dialog button.details").live('click', function() {
704 b9d9894f Christodoulos Psaltis
    $(this).closest('.reboot-machine-entry').remove();
705 b9d9894f Christodoulos Psaltis
    ajax_error( $(this).parent().children('.code').text(),
706 b9d9894f Christodoulos Psaltis
                undefined,
707 b9d9894f Christodoulos Psaltis
                $(this).parent().children('.action').text(),
708 b9d9894f Christodoulos Psaltis
                $(this).parent().children('.message').text());
709 b9d9894f Christodoulos Psaltis
    if ( !$('div.reboot-list').children().length ) {
710 b9d9894f Christodoulos Psaltis
        $('div.reboot-dialog').hide();
711 b9d9894f Christodoulos Psaltis
    }
712 b9d9894f Christodoulos Psaltis
    return false;
713 b9d9894f Christodoulos Psaltis
});
714 b9d9894f Christodoulos Psaltis

715 0155dc19 Christodoulos Psaltis
// after reboot success
716 3a254f7c Christodoulos Psaltis
function display_reboot_success(serverID) {
717 0155dc19 Christodoulos Psaltis
    // remove server from the list
718 0155dc19 Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID).remove();
719 0155dc19 Christodoulos Psaltis
    // if there are no other servers on the list, hide the reboot dialog
720 0155dc19 Christodoulos Psaltis
    if ( !$('div.reboot-list').children().length ) {
721 0155dc19 Christodoulos Psaltis
        $('div.reboot-dialog').hide();
722 bf80097f Christodoulos Psaltis
        // reset all buttons
723 e9789301 Christodoulos Psaltis
        $("div.reboot-dialog button.reboot-all").html('');
724 e9789301 Christodoulos Psaltis
        $("div.reboot-dialog button.reboot-all").text('{% trans 'Reboot All' %}');
725 e9789301 Christodoulos Psaltis
        $("div.reboot-dialog button.reboot-single").html('');
726 e9789301 Christodoulos Psaltis
        $("div.reboot-dialog button.reboot-single").text('{% trans 'Reboot' %}');
727 bf80097f Christodoulos Psaltis
        // enable submit button
728 bf80097f Christodoulos Psaltis
        $("#div.reboot-dialog button.reboot-all").removeAttr('disabled');
729 0155dc19 Christodoulos Psaltis
    }
730 b9d9894f Christodoulos Psaltis
    return false;
731 b9d9894f Christodoulos Psaltis
}
732 b9d9894f Christodoulos Psaltis

733 b9d9894f Christodoulos Psaltis
// after reboot error
734 3a254f7c Christodoulos Psaltis
function display_reboot_failure(status, serverID, responseText) {
735 b9d9894f Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' button.reboot-single').hide();
736 b9d9894f Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' div.code').text(status);
737 3a254f7c Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' div.action').text('Reboot');
738 b9d9894f Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' div.message').text(responseText);
739 b9d9894f Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' button.details').show();
740 b9d9894f Christodoulos Psaltis
    return false;
741 0155dc19 Christodoulos Psaltis
}
742 0155dc19 Christodoulos Psaltis

743 f533f224 Vangelis Koukis
// confirm single action
744 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_single .yes").live('click', function() {
745 f533f224 Vangelis Koukis
    // this works both for server and network actions
746 f533f224 Vangelis Koukis
    var serverID = [];
747 f533f224 Vangelis Koukis
    if ($(this).closest('.network-machine').attr('id')) {
748 f533f224 Vangelis Koukis
        serverID = $(this).closest('.network-machine').attr('id').split('-').pop();
749 f533f224 Vangelis Koukis
    }
750 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr("id").split('-').pop();
751 f533f224 Vangelis Koukis
    // execute actions
752 f533f224 Vangelis Koukis
    for (i=0;i<pending_actions.length;i++){
753 f533f224 Vangelis Koukis
        // if there is a pending action for this server execute it
754 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network &&
755 28a81775 Christodoulos Psaltis
            pending_actions[i][1] == networkID) {
756 f533f224 Vangelis Koukis
                action = pending_actions.splice(i,1)[0];
757 91cbaf56 Christodoulos Psaltis
                $(this).closest('div.network').find('div.status').text(NET_STATES['Destroying']);
758 91cbaf56 Christodoulos Psaltis
                $(this).closest('div.network').find('img.spinner').show();
759 f533f224 Vangelis Koukis
                action[0]([action[1]]); // execute action
760 f533f224 Vangelis Koukis
        } else if ( pending_actions[i][0] == remove_server_from_network &&
761 91cbaf56 Christodoulos Psaltis
                    pending_actions[i][1] == networkID ) {
762 91cbaf56 Christodoulos Psaltis
                        $(this).closest('div.network').find('div.status').text(NET_STATES['Disconnecting']);
763 91cbaf56 Christodoulos Psaltis
                        $(this).closest('div.network').find('img.spinner').show();
764 f533f224 Vangelis Koukis
                        action = pending_actions.splice(i,1)[0];
765 f39b36a6 Christodoulos Psaltis
                        action[0]([action[1]], [action[2]], [action[3]], [action[4]]); // execute action
766 91cbaf56 Christodoulos Psaltis
        } // for adding servers to a network look in $("#add-server-add").live('click', function() {...});
767 f533f224 Vangelis Koukis
    }
768 f533f224 Vangelis Koukis
    $(this).parent().hide();
769 019ae4bc Christodoulos Psaltis
    $(this).closest("div.network").find('a.selected').removeClass('selected');
770 d7414be6 Markos Gogoulos
    $(this).closest("div.network").children('div.actions').removeClass('display');
771 f533f224 Vangelis Koukis
    update_network_confirmations();
772 f533f224 Vangelis Koukis
    return false;
773 f533f224 Vangelis Koukis
});
774 f533f224 Vangelis Koukis

775 f533f224 Vangelis Koukis
// cancel single action
776 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_single .no").live('click', function(){
777 f533f224 Vangelis Koukis
    // this works both for server and network actions
778 f533f224 Vangelis Koukis
    var serverID = [];
779 f533f224 Vangelis Koukis
    if ($(this).closest('.network-machine').attr('id')) {
780 f533f224 Vangelis Koukis
        serverID = $(this).closest('.network-machine').attr('id').split('-').pop();
781 f533f224 Vangelis Koukis
    }
782 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr("id").split('-').pop();
783 f533f224 Vangelis Koukis
    // remove the action from the pending list
784 a7b39e08 clopy
    $(this).parent().parent().children('div.machine-actions').children('a').removeClass('selected');
785 a7b39e08 clopy
    $(this).parent().parent().children('div.machine-actions').removeClass('display');
786 93cad149 Markos Gogoulos

787 a67bb993 Christodoulos Psaltis
    for (i=0; i < pending_actions.length; i++) { // if there is a pending action for this network remove it
788 a67bb993 Christodoulos Psaltis
        if (pending_actions[i][0] == delete_network && pending_actions[i][1] == networkID) {
789 f533f224 Vangelis Koukis
                pending_actions.splice(i,1);
790 f533f224 Vangelis Koukis
        } else if ( pending_actions[i][0] == remove_server_from_network &&
791 f533f224 Vangelis Koukis
                    pending_actions[i][1] == networkID &&
792 f533f224 Vangelis Koukis
                    pending_actions[i][2] == serverID) {
793 f533f224 Vangelis Koukis
                        pending_actions.splice(i,1);
794 f533f224 Vangelis Koukis
        }
795 f533f224 Vangelis Koukis
    }
796 f533f224 Vangelis Koukis
    $(this).parent().hide();
797 f533f224 Vangelis Koukis
    update_network_confirmations();
798 f533f224 Vangelis Koukis
    return false;
799 f533f224 Vangelis Koukis
});
800 f533f224 Vangelis Koukis

801 3a254f7c Christodoulos Psaltis
// after single action call error
802 3a254f7c Christodoulos Psaltis
function display_net_failure(status, networkID, action, responseText) {
803 3a254f7c Christodoulos Psaltis
    return false;
804 3a254f7c Christodoulos Psaltis
}
805 3a254f7c Christodoulos Psaltis

806 f533f224 Vangelis Koukis
// show, single action, error details
807 f533f224 Vangelis Koukis
$("#networks-pane div.action_error .details").live('click', function(){
808 d7414be6 Markos Gogoulos
    $(this).parent().hide();
809 f533f224 Vangelis Koukis
    ajax_error($(this).parent().children('.code').text(),
810 f533f224 Vangelis Koukis
                 undefined,
811 f533f224 Vangelis Koukis
                 $(this).parent().children('.action').text(),
812 f533f224 Vangelis Koukis
                 $(this).parent().children('.message').text());
813 f533f224 Vangelis Koukis
    return false;
814 f533f224 Vangelis Koukis
});
815 f533f224 Vangelis Koukis

816 f533f224 Vangelis Koukis
// confirm all actions
817 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_multiple .yes").live('click', function(){
818 f533f224 Vangelis Koukis
    while(pending_actions.length > 0){ // if there is a pending action for this network execute it
819 f533f224 Vangelis Koukis
        action = pending_actions.pop(); // extract action
820 f533f224 Vangelis Koukis
        var networkID = action[1];
821 f533f224 Vangelis Koukis
        $('#networks-pane .selected').removeClass('selected');
822 f533f224 Vangelis Koukis
        $('#networks-pane .display').removeClass('display');
823 d7414be6 Markos Gogoulos
        $('#networks-pane .confirm_single').hide();
824 f533f224 Vangelis Koukis
        if (action[0] == delete_network) {
825 91cbaf56 Christodoulos Psaltis
            $('#networks-pane #net-' + networkID + ' .status').text(NET_STATES['Destroying']);
826 f533f224 Vangelis Koukis
            $('#networks-pane #net-' + networkID + ' .spinner').show();
827 f533f224 Vangelis Koukis
            action[0]([networkID]); // execute action
828 f533f224 Vangelis Koukis
        } else if (action[0] == remove_server_from_network) {
829 eead5be3 Dimitris Moraitis
            $('div.network#net-'+networkID).find('div.status').text(NET_STATES['Disconnecting']);
830 4ede8cf5 Christodoulos Psaltis
            $('div.network#net-'+networkID).find('img.spinner').show();
831 f39b36a6 Christodoulos Psaltis
            action[0]([action[1]], [action[2]], [action[3]], [action[4]]); // execute action
832 4ede8cf5 Christodoulos Psaltis
        }
833 f533f224 Vangelis Koukis
    }
834 f533f224 Vangelis Koukis
    update_network_confirmations();
835 f533f224 Vangelis Koukis
    return false;
836 f533f224 Vangelis Koukis
});
837 f533f224 Vangelis Koukis

838 f533f224 Vangelis Koukis
// cancel all actions
839 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_multiple .no").live('click', function(){
840 f533f224 Vangelis Koukis
    pending_actions = [];
841 f533f224 Vangelis Koukis
    $('#networks-pane .selected').removeClass('selected');
842 f533f224 Vangelis Koukis
    $('#networks-pane .display').removeClass('display');
843 d7414be6 Markos Gogoulos
    $('#networks-pane .confirm_single').hide();
844 f533f224 Vangelis Koukis
    update_network_confirmations();
845 f533f224 Vangelis Koukis
    return false;
846 f533f224 Vangelis Koukis
});
847 f533f224 Vangelis Koukis

848 f533f224 Vangelis Koukis
// update the networks list
849 f533f224 Vangelis Koukis
function update_networks_view(servers_data, networks_data){
850 f533f224 Vangelis Koukis
    /*
851 f533f224 Vangelis Koukis
    Go through the input data. Update existing entries, add
852 f533f224 Vangelis Koukis
    new ones to the list
853 f533f224 Vangelis Koukis
    */
854 f533f224 Vangelis Koukis

855 f533f224 Vangelis Koukis
    // check for changes in networks
856 f533f224 Vangelis Koukis
    if (networks_data){
857 f533f224 Vangelis Koukis
        /*
858 f533f224 Vangelis Koukis
        Here we are interested in private networks only
859 28a81775 Christodoulos Psaltis
        and for servers disconnected from them
860 f533f224 Vangelis Koukis
        */
861 f533f224 Vangelis Koukis

862 a67bb993 Christodoulos Psaltis
        // if we wait for a new network to be created
863 a67bb993 Christodoulos Psaltis
        if ($('#add-network-create').children().length > 0) {
864 a67bb993 Christodoulos Psaltis
            var response_objects = networks_data.networks.values;
865 a67bb993 Christodoulos Psaltis
            // check all objects in the response
866 a67bb993 Christodoulos Psaltis
            for (i=0; i < response_objects.length; i++) {
867 a67bb993 Christodoulos Psaltis
                // if it contains the network we want to create
868 a67bb993 Christodoulos Psaltis
                var networkName = $('#networks-wizard input').val();
869 a67bb993 Christodoulos Psaltis
                if ( response_objects[i]['name'] == networkName) {
870 a67bb993 Christodoulos Psaltis
                    // close the wizard
871 a67bb993 Christodoulos Psaltis
                    $("a#networkscreate").overlay().close();
872 a67bb993 Christodoulos Psaltis
                    // and the network will be inserted in the DOM
873 28a81775 Christodoulos Psaltis
                    // during this update loop
874 a67bb993 Christodoulos Psaltis
                }
875 a67bb993 Christodoulos Psaltis
            }
876 a67bb993 Christodoulos Psaltis
        }
877 4337c7e5 Dimitris Moraitis

878 f533f224 Vangelis Koukis
        // update private networks
879 f533f224 Vangelis Koukis
        $.each(networks_data.networks.values, function(i,network) {
880 f533f224 Vangelis Koukis
            // search DOM for this network
881 f533f224 Vangelis Koukis
            existing = $('#networks-pane #net-' + network.id);
882 f533f224 Vangelis Koukis

883 28a81775 Christodoulos Psaltis
            // If in the DOM exist multiple networks with the same id,
884 c0045740 Christodoulos Psaltis
            // delete all but one.
885 c0045740 Christodoulos Psaltis
            // Defensive coding - that shouldn't happen normally
886 c0045740 Christodoulos Psaltis
            while (existing.length > 1) {
887 f533f224 Vangelis Koukis
                existing.remove();
888 f533f224 Vangelis Koukis
            }
889 28a81775 Christodoulos Psaltis

890 f533f224 Vangelis Koukis
            // If network already exists in DOM, update it
891 28a81775 Christodoulos Psaltis
            if (existing.length) {
892 f533f224 Vangelis Koukis
                // network was deleted
893 f533f224 Vangelis Koukis
                if (network.status == 'DELETED') {
894 f533f224 Vangelis Koukis
                    existing.remove();
895 f533f224 Vangelis Koukis
                }
896 f533f224 Vangelis Koukis
                // network was renamed
897 f533f224 Vangelis Koukis
                if (existing.find('.name-div span.name').text() != network.name) {
898 f533f224 Vangelis Koukis
                    // set the new name
899 f533f224 Vangelis Koukis
                    existing.find('.name-div span.name').text(network.name);
900 f533f224 Vangelis Koukis
                }
901 28a81775 Christodoulos Psaltis
                // a server was disconnected
902 28a81775 Christodoulos Psaltis
                // search DOM for all machines
903 28a81775 Christodoulos Psaltis
                existing_machines = $('div.private-networks div.network-machine');
904 26a8c814 Christodoulos Psaltis
                // check if the machines in the DOM exist in the response
905 28a81775 Christodoulos Psaltis
                for (i=0; i<existing_machines.length; i++) {
906 28a81775 Christodoulos Psaltis
                    // get the existing server id
907 28a81775 Christodoulos Psaltis
                    var serverID = existing_machines[i].id.split('-')[3];
908 28a81775 Christodoulos Psaltis
                    // if a server exists in DOM, but not in the response it has
909 28a81775 Christodoulos Psaltis
                    // been disconnected
910 28a81775 Christodoulos Psaltis
                    if ( network.servers.values.indexOf( parseInt(serverID) ) == -1 ) {
911 26a8c814 Christodoulos Psaltis
                        // remove it from DOM and reset all spinners
912 26a8c814 Christodoulos Psaltis
                        $('#' + existing_machines[i].id).remove();
913 28a81775 Christodoulos Psaltis
                        $('#net-' + network.id + '.network div.status').text(NET_STATES['ACTIVE']);
914 28a81775 Christodoulos Psaltis
                        $('#net-' + network.id + '.network img.spinner').hide();
915 28a81775 Christodoulos Psaltis
                    }
916 28a81775 Christodoulos Psaltis
                }
917 f533f224 Vangelis Koukis
            }
918 f533f224 Vangelis Koukis
            // If network does not exist in DOM, create it, do not take into account public network
919 f533f224 Vangelis Koukis
            else if (network.id != 'public'){
920 f533f224 Vangelis Koukis
                var privNet = $("#networks-pane #private-template").clone().attr("id", "net-" + network.id);
921 f533f224 Vangelis Koukis
                privNet.find(".name-div span.name").text(network.name).fadeIn("slow");
922 f533f224 Vangelis Koukis
                privNet.appendTo("#networks-pane .private-networks");
923 f533f224 Vangelis Koukis
            }
924 f533f224 Vangelis Koukis
        });
925 f533f224 Vangelis Koukis
    }
926 f533f224 Vangelis Koukis

927 f533f224 Vangelis Koukis
    // check for changes in servers
928 f533f224 Vangelis Koukis
    if (servers_data) {
929 f533f224 Vangelis Koukis
        /*
930 f533f224 Vangelis Koukis
        Here we are interested in any server contained
931 f533f224 Vangelis Koukis
        either in a public network or a private one
932 f533f224 Vangelis Koukis
        */
933 f533f224 Vangelis Koukis
        $.each(servers_data.servers.values, function(i,server) {
934 f533f224 Vangelis Koukis
            /*
935 f533f224 Vangelis Koukis
            First update the public network
936 f533f224 Vangelis Koukis
            */
937 f533f224 Vangelis Koukis

938 f533f224 Vangelis Koukis
            // search public network's DOM for this server
939 f533f224 Vangelis Koukis
            existing_public = $('#networks-pane #net-pub-server-' + server.id);
940 28a81775 Christodoulos Psaltis

941 f533f224 Vangelis Koukis
            // get the server's OS icon
942 f533f224 Vangelis Koukis
            var server_image = os_icon(server.metadata);
943 e4f32f27 Mike Muzurakis
            if (!(server.metadata == undefined)) {
944 e4f32f27 Mike Muzurakis
                var server_image = os_icon(server.metadata);
945 e4f32f27 Mike Muzurakis
            } else {
946 e4f32f27 Mike Muzurakis
                var server_image = "unknown"
947 e4f32f27 Mike Muzurakis
            }
948 f533f224 Vangelis Koukis

949 f533f224 Vangelis Koukis
            // server was deleted
950 f533f224 Vangelis Koukis
            if (server.status == 'DELETED') {
951 f533f224 Vangelis Koukis
                existing_public.remove();
952 f533f224 Vangelis Koukis
            }
953 f533f224 Vangelis Koukis

954 f533f224 Vangelis Koukis
            // If server already exists in public network, update it
955 f533f224 Vangelis Koukis
            if (existing_public.length){
956 f533f224 Vangelis Koukis
                // server was renamed
957 f533f224 Vangelis Koukis
                if (server.name != existing_public.find('span.name').text()) {
958 c4e43d6b Mike Muzurakis
                    existing_public.find('span.name').text(server.name.substring(0,30));
959 f533f224 Vangelis Koukis
                }
960 f533f224 Vangelis Koukis
                // server has changed state
961 f533f224 Vangelis Koukis
                if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
962 f533f224 Vangelis Koukis
                    existing_public.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
963 f533f224 Vangelis Koukis
                } else {
964 f533f224 Vangelis Koukis
                    existing_public.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
965 f533f224 Vangelis Koukis
                }
966 f533f224 Vangelis Koukis
                // server has new ips
967 f533f224 Vangelis Koukis
                var old_ip4 = existing_public.find('span.ip4').text();
968 f533f224 Vangelis Koukis
                var old_ip6 = existing_public.find('span.ip6').text();
969 f533f224 Vangelis Koukis
                var new_ips = get_public_ips(server);
970 f533f224 Vangelis Koukis
                var new_ip4 = new_ips['ip4'];
971 f533f224 Vangelis Koukis
                var new_ip6 = new_ips['ip6'];
972 f533f224 Vangelis Koukis
                if (old_ip4 != new_ip4) {
973 f533f224 Vangelis Koukis
                    if (new_ips['ip4'] == undefined) {
974 f533f224 Vangelis Koukis
                        existing_public.find(".ip4-container").hide();
975 f533f224 Vangelis Koukis
                    } else {
976 f533f224 Vangelis Koukis
                        existing_public.find('span.ip4').text(new_ip4);
977 f533f224 Vangelis Koukis
                    }
978 f533f224 Vangelis Koukis
                }
979 f533f224 Vangelis Koukis
                if (old_ip6 != new_ip6) {
980 f533f224 Vangelis Koukis
                    if (new_ip6 == undefined) {
981 f533f224 Vangelis Koukis
                        existing_public.find(".ip6-container").hide();
982 f533f224 Vangelis Koukis
                    } else {
983 f533f224 Vangelis Koukis
                        existing_public.find('span.ip6').text(new_ip6);
984 f533f224 Vangelis Koukis
                    }
985 f533f224 Vangelis Koukis
                }
986 f533f224 Vangelis Koukis
                //TODO: server has changed OS
987 f533f224 Vangelis Koukis
            }
988 f533f224 Vangelis Koukis
            // If server does not exist in public network, create it
989 f533f224 Vangelis Koukis
            else {
990 f533f224 Vangelis Koukis
                var machine = $("#networks-pane #public-machine-template").clone().attr("id", "net-pub-server-" + server.id).fadeIn("slow");
991 c4e43d6b Mike Muzurakis
                machine.find('span.name').text(server.name.substring(0,30));
992 f533f224 Vangelis Koukis
                // find and display ips
993 f533f224 Vangelis Koukis
                var ips = get_public_ips(server);
994 f533f224 Vangelis Koukis
                if (ips['ip4'] == undefined) {
995 f533f224 Vangelis Koukis
                    machine.find(".ip4-container").hide();
996 f533f224 Vangelis Koukis
                } else {
997 f533f224 Vangelis Koukis
                    machine.find("span.ip4").text(ips['ip4']);
998 f533f224 Vangelis Koukis
                }
999 f533f224 Vangelis Koukis
                if (ips['ip6'] == undefined) {
1000 f533f224 Vangelis Koukis
                    machine.find(".ip6-container").hide();
1001 f533f224 Vangelis Koukis
                } else {
1002 f533f224 Vangelis Koukis
                    machine.find("span.ip6").text(ips['ip6']);
1003 f533f224 Vangelis Koukis
                }
1004 f533f224 Vangelis Koukis
                // add the proper icon
1005 f533f224 Vangelis Koukis
                if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
1006 f533f224 Vangelis Koukis
                    machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
1007 f533f224 Vangelis Koukis
                } else {
1008 f533f224 Vangelis Koukis
                    machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
1009 f533f224 Vangelis Koukis
                }
1010 f533f224 Vangelis Koukis
                machine.appendTo("#networks-pane .public-networks .machines-list");
1011 f533f224 Vangelis Koukis
            }
1012 e4f32f27 Mike Muzurakis

1013 f533f224 Vangelis Koukis
            /*
1014 28a81775 Christodoulos Psaltis
            Now update all private networks, this does NOT check for
1015 26a8c814 Christodoulos Psaltis
            disconnected servers (see above in updating private networks).
1016 f533f224 Vangelis Koukis
            Since one server may belong to more than one private networks,
1017 f533f224 Vangelis Koukis
            we follow a different approach.
1018 f533f224 Vangelis Koukis
            We check each server and add, update or leave it as it is accordingly
1019 f533f224 Vangelis Koukis
            */
1020 f533f224 Vangelis Koukis
            try {
1021 f533f224 Vangelis Koukis
                $.each(server.addresses.values, function(i,server_net) {
1022 f533f224 Vangelis Koukis
                    // find in which private networks it belongs
1023 f533f224 Vangelis Koukis
                    if (server_net.id != "public") {
1024 f533f224 Vangelis Koukis
                        var existing_private = $("#networks-pane .private-networks #net-" + server_net.id + "-server-" + server.id);
1025 f533f224 Vangelis Koukis
                        // add new server
1026 f533f224 Vangelis Koukis
                        if (!existing_private.length) {
1027 f533f224 Vangelis Koukis
                            var machine = $("#networks-pane #private-machine-template").clone().attr("id", "net-" + server_net.id + "-server-" + server.id).fadeIn("slow");
1028 c4e43d6b Mike Muzurakis
                            machine.find('span.name').text(server.name.substring(0,30));
1029 f533f224 Vangelis Koukis
                            if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
1030 f533f224 Vangelis Koukis
                                machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
1031 f533f224 Vangelis Koukis
                            } else {
1032 f533f224 Vangelis Koukis
                                machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
1033 f533f224 Vangelis Koukis
                            }
1034 f533f224 Vangelis Koukis
                            machine.appendTo("#networks-pane .private-networks #net-" + server_net.id + " .machines-list");
1035 28a81775 Christodoulos Psaltis
                        // hide spinners
1036 28a81775 Christodoulos Psaltis
                        $('#net-' + server_net.id + '.network div.status').text(NET_STATES['ACTIVE']);
1037 28a81775 Christodoulos Psaltis
                        $('#net-' + server_net.id + '.network img.spinner').hide();
1038 f533f224 Vangelis Koukis
                        }
1039 f533f224 Vangelis Koukis
                        // server was deleted
1040 f533f224 Vangelis Koukis
                        if (server.status == 'DELETED') {
1041 f533f224 Vangelis Koukis
                            existing_private.remove();
1042 f533f224 Vangelis Koukis
                        }
1043 f533f224 Vangelis Koukis
                        // server was renamed
1044 f533f224 Vangelis Koukis
                        if (server.name != existing_private.find('span.name').text()) {
1045 c4e43d6b Mike Muzurakis
                            existing_private.find('span.name').text(server.name.substring(0,30));
1046 f533f224 Vangelis Koukis
                        }
1047 f533f224 Vangelis Koukis
                        // server has changed state
1048 f533f224 Vangelis Koukis
                        if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
1049 f533f224 Vangelis Koukis
                            existing_private.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
1050 f533f224 Vangelis Koukis
                        } else {
1051 f533f224 Vangelis Koukis
                            existing_private.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
1052 f533f224 Vangelis Koukis
                        }
1053 f533f224 Vangelis Koukis
                        //TODO: server has changed OS
1054 f533f224 Vangelis Koukis
                    }
1055 f533f224 Vangelis Koukis
                });
1056 f533f224 Vangelis Koukis
            } catch (err) {
1057 f533f224 Vangelis Koukis
                try{console.info('Server ' + server.id + ' has no network addresses')}catch(err){};
1058 f533f224 Vangelis Koukis
            }
1059 f533f224 Vangelis Koukis
        });
1060 f533f224 Vangelis Koukis
    }
1061 f533f224 Vangelis Koukis

1062 f533f224 Vangelis Koukis
    $("#networks-pane #networks-container > .large-spinner").hide();
1063 f533f224 Vangelis Koukis

1064 f533f224 Vangelis Koukis
    // show all separators and hide the last one
1065 f533f224 Vangelis Koukis
    $("div.private-networks div.network div.separator").show();
1066 f533f224 Vangelis Koukis
    $("div.private-networks div.network div.separator:last").hide();
1067 f533f224 Vangelis Koukis
    // update the counters of servers in each network
1068 f533f224 Vangelis Koukis
    var nets = $('#networks-pane .network');
1069 f533f224 Vangelis Koukis
    $.each(nets, function(i,net) {
1070 f533f224 Vangelis Koukis
        $(net).find('span.machines-count').text($(net).find('.network-machine').length);
1071 f533f224 Vangelis Koukis
    });
1072 f533f224 Vangelis Koukis

1073 f533f224 Vangelis Koukis
    // the private div shows only when private networks are available
1074 f533f224 Vangelis Koukis
    if ($("div.private-networks div.network").length > 0) {
1075 f533f224 Vangelis Koukis
        $("div.private-networks").fadeIn("slow");
1076 f533f224 Vangelis Koukis
    } else {
1077 f533f224 Vangelis Koukis
        $("div.private-networks").fadeOut("slow");
1078 f533f224 Vangelis Koukis
    }
1079 77d4b76f Christodoulos Psaltis

1080 829c32c6 Dimitris Moraitis
    // tag the first and last seperators for better styling
1081 829c32c6 Dimitris Moraitis
    $("#pub .network-machine").removeClass('first');
1082 4ede8cf5 Christodoulos Psaltis
    $("#pub .network-machine").first().addClass('first');
1083 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").removeClass('last');
1084 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").last().addClass('last');
1085 016f234a Mike Muzurakis

1086 0d9ac039 clopy
    if ($("div.public-networks div.network-machine").length == 1) {
1087 0d9ac039 clopy
        $("div.public-networks div.network-machine div.network-cable").css('height','60px');
1088 0d9ac039 clopy
    }
1089 0d9ac039 clopy

1090 016f234a Mike Muzurakis
    //remove top margin from the first machine of each private network
1091 016f234a Mike Muzurakis
    $(".private-networks").find(".network-contents .network-machine:first-child").css("margin-top","0");
1092 f533f224 Vangelis Koukis
}
1093 f533f224 Vangelis Koukis

1094 d7414be6 Markos Gogoulos
// indicate that the requested action was not completed
1095 d7414be6 Markos Gogoulos
function display_failure(status, networkID, action, responseText) {
1096 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .spinner').hide();
1097 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .action').text(action);
1098 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .code').text(status);
1099 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .message').text(responseText);
1100 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error').show();
1101 d7414be6 Markos Gogoulos
}
1102 d7414be6 Markos Gogoulos

1103 f533f224 Vangelis Koukis
// reposition multiple confirmation box on window resize
1104 f533f224 Vangelis Koukis
$(window).resize(function(){
1105 2aab1d5e Christodoulos Psaltis
    if (this.innerHeight - 220 < $('#networks-pane #networks-container').height()) {
1106 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').addClass('fixed');
1107 2aab1d5e Christodoulos Psaltis
        $('div.reboot-dialog').addClass('fixed');
1108 2aab1d5e Christodoulos Psaltis
    } else {
1109 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').removeClass('fixed');
1110 2aab1d5e Christodoulos Psaltis
        $('div.reboot-dialog').removeClass('fixed');
1111 2aab1d5e Christodoulos Psaltis
    }
1112 b1272faa Mike Muzurakis
});
1113 f533f224 Vangelis Koukis

1114 f533f224 Vangelis Koukis
// basic functions executed on page load
1115 f533f224 Vangelis Koukis
// hide the all of the networks contents
1116 f533f224 Vangelis Koukis
$("#networks-pane .network-contents").hide();
1117 f533f224 Vangelis Koukis
// hide the all of the firewall contents
1118 f533f224 Vangelis Koukis
$("#networks-pane .firewall-content").hide();
1119 f533f224 Vangelis Koukis
changes_since = 0; // to reload full list of servers
1120 f533f224 Vangelis Koukis
networks_changes_since= 0; // to reload full list of networks
1121 fbab7fae Christodoulos Psaltis
// there is always one public network to render
1122 f533f224 Vangelis Koukis
var pubNet = $("#networks-pane #public-template").clone().attr("id", "pub").fadeIn("slow");
1123 f533f224 Vangelis Koukis
pubNet.appendTo("#networks-pane .public-networks");
1124 f533f224 Vangelis Koukis
update_networks(UPDATE_INTERVAL);
1125 f533f224 Vangelis Koukis

1126 d2f03cb3 Mike Muzurakis
//fix ie z-index bug by moving the overlays to the bottom
1127 d2f03cb3 Mike Muzurakis
$(document).ready(function() {
1128 d2f03cb3 Mike Muzurakis
    if ($.browser.msie) {
1129 d2f03cb3 Mike Muzurakis
        $("body").append($("#networks-wizard"));
1130 d2f03cb3 Mike Muzurakis
        $("body").append($("#add-machines-wizard"));
1131 d2f03cb3 Mike Muzurakis
    }
1132 d2f03cb3 Mike Muzurakis
});
1133 d2f03cb3 Mike Muzurakis
1134 6f547d12 Mike Muzurakis
</script>