Statistics
| Branch: | Tag: | Revision:

root / ui / templates / networks.html @ dae23b8f

History | View | Annotate | Download (50 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 e8f98b18 Christodoulos Psaltis
    <div class="separator" style="display:none;"></div>
188 e8f98b18 Christodoulos Psaltis
189 f533f224 Vangelis Koukis
    <!-- private network template -->
190 f533f224 Vangelis Koukis
    <div class="network" id="private-template">
191 f533f224 Vangelis Koukis
        <div class="actions">
192 f533f224 Vangelis Koukis
            <a href="#" class="action-add">{% trans "Add Machine" %}</a>
193 f533f224 Vangelis Koukis
            <a href="#" class="action-network-destroy">{% trans "Destroy" %}</a>
194 f533f224 Vangelis Koukis
        </div>
195 d7414be6 Markos Gogoulos
        <div class="action_error" align="center">
196 d7414be6 Markos Gogoulos
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
197 d7414be6 Markos Gogoulos
            <span class="code"></span>
198 d7414be6 Markos Gogoulos
            <span class="message"></span>
199 d7414be6 Markos Gogoulos
            <button class="details">{% trans "Details" %}</button>
200 d7414be6 Markos Gogoulos
        </div>
201 f533f224 Vangelis Koukis
        <div class="confirm_single">
202 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
203 df67c0cc Markos Gogoulos
            <button class="no">X</button>
204 f533f224 Vangelis Koukis
        </div>
205 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
206 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
207 f533f224 Vangelis Koukis
            <span class="code"></span>
208 f533f224 Vangelis Koukis
            <span class="message"></span>
209 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
210 f533f224 Vangelis Koukis
        </div>
211 f533f224 Vangelis Koukis
        <div class="state">
212 f533f224 Vangelis Koukis
            <div class="status">{% trans "Private Network" %}</div>
213 df67c0cc Markos Gogoulos
            <div class="indicators network-indicator">
214 df67c0cc Markos Gogoulos
                <div class="indicator1"></div>
215 df67c0cc Markos Gogoulos
                <div class="indicator2"></div>
216 df67c0cc Markos Gogoulos
                <div class="indicator3"></div>
217 df67c0cc Markos Gogoulos
                <div class="indicator4"></div>
218 df67c0cc Markos Gogoulos
            </div>
219 0a5c4b4d Markos Gogoulos
            <img class="spinner" style="display:none" src="static/icons/indicators/medium/progress.gif" />
220 0a5c4b4d Markos Gogoulos
            <img class="wave" style="display:none" src="static/icons/indicators/medium/wave.gif" />
221 f533f224 Vangelis Koukis
        </div>
222 0a5c4b4d Markos Gogoulos
        <img class="network-logos" src="static/network.png" />
223 f533f224 Vangelis Koukis
        <div href="#" class="name-div">
224 f533f224 Vangelis Koukis
            <h5 class="namecontainer editable">
225 f533f224 Vangelis Koukis
                <span class="name">{% trans "My Network 1" %}</span>
226 f533f224 Vangelis Koukis
                <span class="rename-network"></span>
227 f533f224 Vangelis Koukis
                <div class="editbuttons" style="display:none">
228 29310e65 Mike Muzurakis
                    <span class="save"></span>
229 29310e65 Mike Muzurakis
                    <span class="cancel"></span>
230 c0c46a60 Christodoulos Psaltis
                </div>
231 f533f224 Vangelis Koukis
            </h5>
232 6f547d12 Mike Muzurakis
        </div>
233 24990e31 Christodoulos Psaltis
        <div class="network-machines">
234 24990e31 Christodoulos Psaltis
            <div class="machines-header">
235 24990e31 Christodoulos Psaltis
                <div class="machines-label">{% trans "machines" %}
236 24990e31 Christodoulos Psaltis
                    (<span class="machines-count">0</span>)
237 24990e31 Christodoulos Psaltis
                </div>
238 24990e31 Christodoulos Psaltis
                <div class="toggler down"></div>
239 24990e31 Christodoulos Psaltis
            </div>
240 24990e31 Christodoulos Psaltis
        </div>
241 f533f224 Vangelis Koukis
        <div class="network-contents">
242 f533f224 Vangelis Koukis
            <div class="network-placeholder">
243 f533f224 Vangelis Koukis
                <div class="machines-list">
244 f533f224 Vangelis Koukis
                <!-- append machines here -->
245 f533f224 Vangelis Koukis
                </div>
246 f533f224 Vangelis Koukis
                <div class="empty-network-slot" id="machine-template">
247 01f84412 Mike Muzurakis
                    <div class='network-add-machine'><div class="add-icon">+</div></div>
248 f533f224 Vangelis Koukis
                </div>
249 6f547d12 Mike Muzurakis
            </div>
250 f533f224 Vangelis Koukis
        </div>
251 f533f224 Vangelis Koukis
    </div>
252 f533f224 Vangelis Koukis
253 f533f224 Vangelis Koukis
    <!-- template for machines in private network -->
254 f533f224 Vangelis Koukis
    <div class="network-machine" id="private-machine-template">
255 f533f224 Vangelis Koukis
        <div class="machine-actions">
256 f533f224 Vangelis Koukis
            <a href="#" class="action-disconnect">{% trans "Disconnect" %}</a>
257 f533f224 Vangelis Koukis
            <a href="#" class="action-details">{% trans "Details" %}</a>
258 f533f224 Vangelis Koukis
        </div>
259 f533f224 Vangelis Koukis
        <div class="confirm_single">
260 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
261 df67c0cc Markos Gogoulos
            <button class="no">X</button>
262 f533f224 Vangelis Koukis
        </div>
263 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
264 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
265 f533f224 Vangelis Koukis
            <span class="code"></span>
266 f533f224 Vangelis Koukis
            <span class="message"></span>
267 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
268 f533f224 Vangelis Koukis
        </div>
269 0a5c4b4d Markos Gogoulos
        <img class="logo" src="static/icons/machines/medium/debian-on.png" />
270 f533f224 Vangelis Koukis
        <div class='network-remove-machine'><span class="remove-icon">X</span></div>
271 f533f224 Vangelis Koukis
        <div href="#" class="machine-name-div">
272 f533f224 Vangelis Koukis
            <h5 class="namecontainer editable">
273 f533f224 Vangelis Koukis
                <span class="name">my desktop1</span>
274 6f547d12 Mike Muzurakis
            </h5>
275 f533f224 Vangelis Koukis
        </div>
276 77d4b76f Christodoulos Psaltis
        <h5 class='machine-connect'>
277 77d4b76f Christodoulos Psaltis
            <span>{% trans "Connect" %}</span> {% trans "to manage private IPs" %}
278 f533f224 Vangelis Koukis
        </h5>
279 f533f224 Vangelis Koukis
        <div class="network-separator machines"></div>
280 f533f224 Vangelis Koukis
    </div>
281 f533f224 Vangelis Koukis
282 f533f224 Vangelis Koukis
    <!-- the actual structure to be populated -->
283 f533f224 Vangelis Koukis
    <div class="public-networks"></div>
284 f533f224 Vangelis Koukis
    <div class="private-networks" style="display:none;"></div>
285 f533f224 Vangelis Koukis
</div>
286 f533f224 Vangelis Koukis
287 f533f224 Vangelis Koukis
<!-- add servers to network overlay -->
288 f533f224 Vangelis Koukis
<div>
289 f533f224 Vangelis Koukis
    <div id="add-machines-wizard" class="modal">
290 f533f224 Vangelis Koukis
        <h3 class="popup-header">{% trans "Add machine" %}</h3>
291 f533f224 Vangelis Koukis
        <p style='display:none;'>hidden network id</p>
292 f533f224 Vangelis Koukis
        <div class="popup-body">
293 f533f224 Vangelis Koukis
            <div class="popup-body-inner">
294 f533f224 Vangelis Koukis
                <div class="popup-title">{% trans "Select machines to add to:" %}</div>
295 f533f224 Vangelis Koukis
                <div class="network-name"></div>
296 f533f224 Vangelis Koukis
                <div class="popup-separator"></div>
297 f533f224 Vangelis Koukis
                <div class="machines-container">
298 f533f224 Vangelis Koukis
                    <div class="large-spinner"></div>
299 f533f224 Vangelis Koukis
                    <div id='machine-entry-template' style="display:none;">
300 f533f224 Vangelis Koukis
                        <input type="checkbox" />
301 0a5c4b4d Markos Gogoulos
                        <img class=list-logo src="static/icons/machines/small/debian-on.png" title="debian"></img>
302 f533f224 Vangelis Koukis
                        <span class="machine-name">kati</span>
303 c0c46a60 Christodoulos Psaltis
                    </div>
304 c0c46a60 Christodoulos Psaltis
                </div>
305 b1272faa Mike Muzurakis
            </div>
306 6f547d12 Mike Muzurakis
        </div>
307 f533f224 Vangelis Koukis
        <div class="buttons">
308 f533f224 Vangelis Koukis
            <button type="button" class="cancel" id="add-server-cancel">{% trans "Cancel" %}</button>
309 f533f224 Vangelis Koukis
            <button type="button" class="add" id="add-server-add">{% trans "Add" %}</button>
310 f533f224 Vangelis Koukis
        </div>
311 7d4f351b Mike Muzurakis
    </div>
312 7d4f351b Mike Muzurakis
</div>
313 f533f224 Vangelis Koukis
314 f533f224 Vangelis Koukis
<a id="add-machines-overlay" href="#" rel="#add-machines-wizard"></a>
315 f533f224 Vangelis Koukis
316 64c30d16 Christodoulos Psaltis
<!-- reboot dialog -->
317 64c30d16 Christodoulos Psaltis
<div class="reboot-dialog">
318 64c30d16 Christodoulos Psaltis
    <p>{% trans "For the network changes to take effect you need to reboot all affected machines:" %}</p>
319 64c30d16 Christodoulos Psaltis
    <button class="reboot-all">{% trans "Reboot All" %}</button>
320 26a8c814 Christodoulos Psaltis
    <div id="reboot-machine-template" class='reboot-machine-entry'>
321 64c30d16 Christodoulos Psaltis
        <div class="name">my debian server</div>
322 64c30d16 Christodoulos Psaltis
        <button class="reboot-single">{% trans "Reboot" %}</button>
323 b9d9894f Christodoulos Psaltis
        <div class="reboot-error">
324 b9d9894f Christodoulos Psaltis
            <div class="code"></div>
325 b9d9894f Christodoulos Psaltis
            <div class="action"></div>
326 b9d9894f Christodoulos Psaltis
            <div class="message"></div>
327 b9d9894f Christodoulos Psaltis
            <button class="details">{% trans "Error!" %}</button>
328 b9d9894f Christodoulos Psaltis
        </div>
329 64c30d16 Christodoulos Psaltis
    </div>
330 26a8c814 Christodoulos Psaltis
    <div class="reboot-list"></div>
331 64c30d16 Christodoulos Psaltis
</div>
332 64c30d16 Christodoulos Psaltis
333 f533f224 Vangelis Koukis
<!-- multiple confirmation dialog -->
334 f533f224 Vangelis Koukis
<div class="confirm_multiple">
335 eead5be3 Dimitris Moraitis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "networks or machines" %}</p>
336 f533f224 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
337 f533f224 Vangelis Koukis
    <button class="no">{% trans "Cancel All" %}</button>
338 f533f224 Vangelis Koukis
</div>
339 6f547d12 Mike Muzurakis
340 6f547d12 Mike Muzurakis
<script>
341 f533f224 Vangelis Koukis
// add network wizard initialization
342 f533f224 Vangelis Koukis
$(function() {
343 f533f224 Vangelis Koukis
    // create wizard overlay
344 f533f224 Vangelis Koukis
    $("a#networkscreate").overlay({
345 716c3ead Dimitris Moraitis
        mask: '#666',
346 f533f224 Vangelis Koukis
        effect: 'default',
347 f533f224 Vangelis Koukis
        top: '10%',
348 f533f224 Vangelis Koukis
        closeOnClick: false,
349 f533f224 Vangelis Koukis
        oneInstance: false,
350 f533f224 Vangelis Koukis
        closeOnEsc: true,
351 f533f224 Vangelis Koukis
        load: false
352 f533f224 Vangelis Koukis
    });
353 b1272faa Mike Muzurakis
});
354 f533f224 Vangelis Koukis

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

805 3a254f7c Christodoulos Psaltis
// after single action call error
806 3a254f7c Christodoulos Psaltis
function display_net_failure(status, networkID, action, responseText) {
807 3a254f7c Christodoulos Psaltis
    return false;
808 3a254f7c Christodoulos Psaltis
}
809 3a254f7c Christodoulos Psaltis

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

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

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

853 f533f224 Vangelis Koukis
// update the networks list
854 f533f224 Vangelis Koukis
function update_networks_view(servers_data, networks_data){
855 f533f224 Vangelis Koukis
    /*
856 f533f224 Vangelis Koukis
    Go through the input data. Update existing entries, add
857 f533f224 Vangelis Koukis
    new ones to the list
858 f533f224 Vangelis Koukis
    */
859 f533f224 Vangelis Koukis

860 f533f224 Vangelis Koukis
    // check for changes in networks
861 f533f224 Vangelis Koukis
    if (networks_data){
862 f533f224 Vangelis Koukis
        /*
863 f533f224 Vangelis Koukis
        Here we are interested in private networks only
864 28a81775 Christodoulos Psaltis
        and for servers disconnected from them
865 f533f224 Vangelis Koukis
        */
866 f533f224 Vangelis Koukis

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

883 f533f224 Vangelis Koukis
        // update private networks
884 f533f224 Vangelis Koukis
        $.each(networks_data.networks.values, function(i,network) {
885 f533f224 Vangelis Koukis
            // search DOM for this network
886 f533f224 Vangelis Koukis
            existing = $('#networks-pane #net-' + network.id);
887 f533f224 Vangelis Koukis

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

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

934 f533f224 Vangelis Koukis
    // check for changes in servers
935 f533f224 Vangelis Koukis
    if (servers_data) {
936 f533f224 Vangelis Koukis
        /*
937 f533f224 Vangelis Koukis
        Here we are interested in any server contained
938 f533f224 Vangelis Koukis
        either in a public network or a private one
939 f533f224 Vangelis Koukis
        */
940 f533f224 Vangelis Koukis
        $.each(servers_data.servers.values, function(i,server) {
941 f533f224 Vangelis Koukis
            /*
942 f533f224 Vangelis Koukis
            First update the public network
943 f533f224 Vangelis Koukis
            */
944 f533f224 Vangelis Koukis

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

948 f533f224 Vangelis Koukis
            // get the server's OS icon
949 f533f224 Vangelis Koukis
            var server_image = os_icon(server.metadata);
950 e4f32f27 Mike Muzurakis
            if (!(server.metadata == undefined)) {
951 e4f32f27 Mike Muzurakis
                var server_image = os_icon(server.metadata);
952 e4f32f27 Mike Muzurakis
            } else {
953 e4f32f27 Mike Muzurakis
                var server_image = "unknown"
954 e4f32f27 Mike Muzurakis
            }
955 f533f224 Vangelis Koukis

956 f533f224 Vangelis Koukis
            // server was deleted
957 f533f224 Vangelis Koukis
            if (server.status == 'DELETED') {
958 f533f224 Vangelis Koukis
                existing_public.remove();
959 f533f224 Vangelis Koukis
            }
960 f533f224 Vangelis Koukis

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

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

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

1071 f533f224 Vangelis Koukis
    // show all separators and hide the last one
1072 e8f98b18 Christodoulos Psaltis
    $("div.private-networks div.separator").show();
1073 e8f98b18 Christodoulos Psaltis
    $("div.private-networks div.separator:last").hide();
1074 f533f224 Vangelis Koukis
    // update the counters of servers in each network
1075 f533f224 Vangelis Koukis
    var nets = $('#networks-pane .network');
1076 f533f224 Vangelis Koukis
    $.each(nets, function(i,net) {
1077 f533f224 Vangelis Koukis
        $(net).find('span.machines-count').text($(net).find('.network-machine').length);
1078 f533f224 Vangelis Koukis
    });
1079 f533f224 Vangelis Koukis

1080 f533f224 Vangelis Koukis
    // the private div shows only when private networks are available
1081 f533f224 Vangelis Koukis
    if ($("div.private-networks div.network").length > 0) {
1082 f533f224 Vangelis Koukis
        $("div.private-networks").fadeIn("slow");
1083 f533f224 Vangelis Koukis
    } else {
1084 f533f224 Vangelis Koukis
        $("div.private-networks").fadeOut("slow");
1085 f533f224 Vangelis Koukis
    }
1086 77d4b76f Christodoulos Psaltis

1087 829c32c6 Dimitris Moraitis
    // tag the first and last seperators for better styling
1088 829c32c6 Dimitris Moraitis
    $("#pub .network-machine").removeClass('first');
1089 4ede8cf5 Christodoulos Psaltis
    $("#pub .network-machine").first().addClass('first');
1090 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").removeClass('last');
1091 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").last().addClass('last');
1092 016f234a Mike Muzurakis

1093 0d9ac039 clopy
    if ($("div.public-networks div.network-machine").length == 1) {
1094 0d9ac039 clopy
        $("div.public-networks div.network-machine div.network-cable").css('height','60px');
1095 0d9ac039 clopy
    }
1096 0d9ac039 clopy

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

1101 d7414be6 Markos Gogoulos
// indicate that the requested action was not completed
1102 d7414be6 Markos Gogoulos
function display_failure(status, networkID, action, responseText) {
1103 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .spinner').hide();
1104 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .action').text(action);
1105 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .code').text(status);
1106 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .message').text(responseText);
1107 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error').show();
1108 d7414be6 Markos Gogoulos
}
1109 d7414be6 Markos Gogoulos

1110 f533f224 Vangelis Koukis
// reposition multiple confirmation box on window resize
1111 f533f224 Vangelis Koukis
$(window).resize(function(){
1112 2aab1d5e Christodoulos Psaltis
    if (this.innerHeight - 220 < $('#networks-pane #networks-container').height()) {
1113 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').addClass('fixed');
1114 2aab1d5e Christodoulos Psaltis
        $('div.reboot-dialog').addClass('fixed');
1115 2aab1d5e Christodoulos Psaltis
    } else {
1116 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').removeClass('fixed');
1117 2aab1d5e Christodoulos Psaltis
        $('div.reboot-dialog').removeClass('fixed');
1118 2aab1d5e Christodoulos Psaltis
    }
1119 b1272faa Mike Muzurakis
});
1120 f533f224 Vangelis Koukis

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

1133 d2f03cb3 Mike Muzurakis
//fix ie z-index bug by moving the overlays to the bottom
1134 d2f03cb3 Mike Muzurakis
$(document).ready(function() {
1135 d2f03cb3 Mike Muzurakis
    if ($.browser.msie) {
1136 d2f03cb3 Mike Muzurakis
        $("body").append($("#networks-wizard"));
1137 d2f03cb3 Mike Muzurakis
        $("body").append($("#add-machines-wizard"));
1138 d2f03cb3 Mike Muzurakis
    }
1139 d2f03cb3 Mike Muzurakis
});
1140 d2f03cb3 Mike Muzurakis

1141 b365d9ff Christodoulos Psaltis
//IE specific fixes
1142 b365d9ff Christodoulos Psaltis
if ($.browser.msie) {
1143 b365d9ff Christodoulos Psaltis
    //IE fix for network div hover
1144 b365d9ff Christodoulos Psaltis
    $("div.network").live("mouseenter", function () {
1145 b365d9ff Christodoulos Psaltis
        $(this).css("background-color","#A1C8DB");
1146 b365d9ff Christodoulos Psaltis
        $(this).find(".actions a").css("visibility","visible");
1147 b365d9ff Christodoulos Psaltis
    });
1148 b365d9ff Christodoulos Psaltis
    $("div.network").live("mouseleave", function () {
1149 b365d9ff Christodoulos Psaltis
        $(this).css("background-color","transparent");
1150 b365d9ff Christodoulos Psaltis
        $(this).find(".actions a").css("visibility","hidden");
1151 b365d9ff Christodoulos Psaltis
    });
1152 c93a67cd Christodoulos Psaltis
    //IE fix for network machine hover
1153 c93a67cd Christodoulos Psaltis
    $("div.network-machine").live("mouseenter", function () {
1154 c93a67cd Christodoulos Psaltis
        $(this).css("background-color","#84B7D0");
1155 c93a67cd Christodoulos Psaltis
        $(this).find("div.machine-actions a").css("visibility","visible");
1156 c93a67cd Christodoulos Psaltis
    });
1157 c93a67cd Christodoulos Psaltis
    $("div.network-machine").live("mouseleave", function () {
1158 c93a67cd Christodoulos Psaltis
        $(this).css("background-color","transparent");
1159 c93a67cd Christodoulos Psaltis
        $(this).find("div.machine-actions a").css("visibility","hidden");
1160 c93a67cd Christodoulos Psaltis
    });
1161 b365d9ff Christodoulos Psaltis
}
1162 6f547d12 Mike Muzurakis
</script>