Statistics
| Branch: | Tag: | Revision:

root / ui / templates / networks.html @ a70fb308

History | View | Annotate | Download (38.3 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 7d4f351b Mike Muzurakis
        <div class="actions">
73 f533f224 Vangelis Koukis
            {# Commented out the following until there is full public network support #}
74 f533f224 Vangelis Koukis
            {# <a href="#" class="action-add">{% trans "Add Machine" %}</a> #}
75 f533f224 Vangelis Koukis
        </div>
76 f533f224 Vangelis Koukis
        <div class="confirm_single">
77 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
78 f533f224 Vangelis Koukis
            <button class="no">{% trans "Cancel" %}</button>
79 f533f224 Vangelis Koukis
        </div>
80 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
81 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
82 f533f224 Vangelis Koukis
            <span class="code"></span>
83 f533f224 Vangelis Koukis
            <span class="message"></span>
84 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
85 f533f224 Vangelis Koukis
        </div>
86 7d4f351b Mike Muzurakis
        <div class="state">
87 7d4f351b Mike Muzurakis
            <div class="status">{% trans "Public Network" %}</div>
88 7d4f351b Mike Muzurakis
            <div class="indicator"></div>
89 7d4f351b Mike Muzurakis
            <div class="indicator"></div>
90 7d4f351b Mike Muzurakis
            <div class="indicator"></div>
91 7d4f351b Mike Muzurakis
            <div class="indicator"></div>
92 f533f224 Vangelis Koukis
        </div>
93 0a5c4b4d Markos Gogoulos
        <img class="network-logos" src="static/internet.png" />
94 0a8e39b4 Mike Muzurakis
        <div href="#" class="name-div">
95 7d4f351b Mike Muzurakis
            <h5 class="namecontainer">
96 7d4f351b Mike Muzurakis
                <span class="name">{% trans "Internet" %}</span>
97 7d4f351b Mike Muzurakis
            </h5>
98 7d4f351b Mike Muzurakis
        </div>
99 7d4f351b Mike Muzurakis
        <h5 class="network-machines">
100 f533f224 Vangelis Koukis
            {% trans "Show:" %} <span class="show-machines">{% trans "machines" %}</span>
101 ea57526f Dimitris Moraitis
            (<span class="machines-count">0</span>)
102 7d4f351b Mike Muzurakis
        </h5>
103 b1272faa Mike Muzurakis
        <div class="network-contents">
104 69a37abb Christodoulos Psaltis
            <div class="network-placeholder">
105 b1272faa Mike Muzurakis
                <div class="network-contents-start-separator"></div>
106 f533f224 Vangelis Koukis
                <div class="machines-list">
107 f533f224 Vangelis Koukis
                <!-- append machines here -->
108 b1272faa Mike Muzurakis
                </div>
109 c0c46a60 Christodoulos Psaltis
                <div class="empty-network-slot" id="machine-template">
110 f533f224 Vangelis Koukis
                    <div class='network-add-machine'>
111 f533f224 Vangelis Koukis
                        {# Replace the following with the comment below for full public network functionality #}
112 f533f224 Vangelis Koukis
                        {# <span class="add-icon">+</span> #}
113 f533f224 Vangelis Koukis
                        <span>&nbsp;</span>
114 f533f224 Vangelis Koukis
                    </div>
115 c0c46a60 Christodoulos Psaltis
                </div>
116 69a37abb Christodoulos Psaltis
            </div>
117 69a37abb Christodoulos Psaltis
            <div class="network-contents-end-separator"></div>
118 69a37abb Christodoulos Psaltis
        </div>
119 69a37abb Christodoulos Psaltis
    </div>
120 f533f224 Vangelis Koukis
121 f533f224 Vangelis Koukis
    <!-- template for machines in public network -->
122 f533f224 Vangelis Koukis
    <div class="network-machine" id="public-machine-template">
123 f533f224 Vangelis Koukis
        <div class="machine-actions">
124 f533f224 Vangelis Koukis
            <a href="#" class="action-details">{% trans "Details" %}</a>
125 f533f224 Vangelis Koukis
        </div>
126 f533f224 Vangelis Koukis
        <div class="confirm_single">
127 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
128 f533f224 Vangelis Koukis
            <button class="no">{% trans "Cancel" %}</button>
129 f533f224 Vangelis Koukis
        </div>
130 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
131 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
132 f533f224 Vangelis Koukis
            <span class="code"></span>
133 f533f224 Vangelis Koukis
            <span class="message"></span>
134 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
135 f533f224 Vangelis Koukis
        </div>
136 f533f224 Vangelis Koukis
        <div class="state">
137 f533f224 Vangelis Koukis
            <div class="ip4-container status">
138 f533f224 Vangelis Koukis
                <span class="discreet">{% trans "IPv4" %}: </span>
139 f533f224 Vangelis Koukis
                <span class="ip4">192.94.73.15</span>
140 69a37abb Christodoulos Psaltis
            </div>
141 f533f224 Vangelis Koukis
            <div class="ip6-container status">
142 f533f224 Vangelis Koukis
                <span class="discreet">{% trans "IPv6" %}: </span>
143 f533f224 Vangelis Koukis
                <span class="ip6">vv</span>
144 b1272faa Mike Muzurakis
            </div>
145 0a5c4b4d Markos Gogoulos
            <img class="spinner" style="display:none" src="static/icons/indicators/medium/progress.gif" />
146 0a5c4b4d Markos Gogoulos
            <img class="wave" style="display:none" src="static/icons/indicators/medium/wave.gif" />
147 7d4f351b Mike Muzurakis
        </div>
148 0a5c4b4d Markos Gogoulos
        <img class="logo" src="static/icons/machines/medium/debian-on.png" />
149 f533f224 Vangelis Koukis
        <div class='network-remove-machine'>
150 f533f224 Vangelis Koukis
            {# Replace the following with the comment below for full public network functionality #}
151 f533f224 Vangelis Koukis
            {# <span class="remove-icon">X</span> #}
152 f533f224 Vangelis Koukis
            <span>&nbsp;</span>
153 f533f224 Vangelis Koukis
        </div>
154 f533f224 Vangelis Koukis
        <div href="#" class="machine-name-div">
155 f533f224 Vangelis Koukis
            <h5 class="namecontainer">
156 f533f224 Vangelis Koukis
                <span class="name">my desktop1</span>
157 6f547d12 Mike Muzurakis
            </h5>
158 f533f224 Vangelis Koukis
        </div>
159 77d4b76f Christodoulos Psaltis
        <h5 class="machine-settings">
160 f533f224 Vangelis Koukis
            <span class="ip">{% trans "IPs" %}</span> |
161 f533f224 Vangelis Koukis
            <span class="show-firewall">{% trans "Firewall" %}</span>
162 f533f224 Vangelis Koukis
            (<span class="firewall-off">{% trans "Off" %}</span>)
163 f533f224 Vangelis Koukis
        </h5>
164 f533f224 Vangelis Koukis
        <div class="firewall-content">
165 f533f224 Vangelis Koukis
            <div class="firewall-contents-start-separator"></div>
166 f533f224 Vangelis Koukis
            <input type="radio" class="checkboxes" name="image-id1" />
167 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Unprotected mode (Firewall off)" %}</span>
168 f533f224 Vangelis Koukis
            <br />
169 f533f224 Vangelis Koukis
            <input type="radio" class="checkboxes" name="image-id1" />
170 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Fully protected mode (Firewall on)" %}</span>
171 f533f224 Vangelis Koukis
            <br />
172 f533f224 Vangelis Koukis
            <input type="radio" class="checkboxes" name="image-id1" />
173 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Basically protected mode (Firewall on)" %}</span>
174 f533f224 Vangelis Koukis
            <br />
175 f533f224 Vangelis Koukis
            <input type="radio" class="checkboxes" name="image-id1" />
176 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Custom protection" %} <a href="#" class="firewall-settings">{% trans "settings" %}</a> {% trans "(Advanced users only)" %}</span>
177 f533f224 Vangelis Koukis
            <button type="submit" class="firewall-apply">{% trans "Apply" %}</button>
178 f533f224 Vangelis Koukis
            <div class="firewall-contents-end-separator"></div>
179 f533f224 Vangelis Koukis
        </div>
180 f533f224 Vangelis Koukis
        <div class="network-separator machines"></div>
181 f533f224 Vangelis Koukis
    </div>
182 f533f224 Vangelis Koukis
183 f533f224 Vangelis Koukis
    <!-- private network template -->
184 f533f224 Vangelis Koukis
    <div class="network" id="private-template">
185 f533f224 Vangelis Koukis
        <div class="actions">
186 f533f224 Vangelis Koukis
            <a href="#" class="action-add">{% trans "Add Machine" %}</a>
187 f533f224 Vangelis Koukis
            <a href="#" class="action-network-destroy">{% trans "Destroy" %}</a>
188 f533f224 Vangelis Koukis
        </div>
189 f533f224 Vangelis Koukis
        <div class="confirm_single">
190 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
191 f533f224 Vangelis Koukis
            <button class="no">{% trans "Cancel" %}</button>
192 f533f224 Vangelis Koukis
        </div>
193 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
194 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
195 f533f224 Vangelis Koukis
            <span class="code"></span>
196 f533f224 Vangelis Koukis
            <span class="message"></span>
197 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
198 f533f224 Vangelis Koukis
        </div>
199 f533f224 Vangelis Koukis
        <div class="state">
200 f533f224 Vangelis Koukis
            <div class="status">{% trans "Private Network" %}</div>
201 f533f224 Vangelis Koukis
            <div class="indicator"></div>
202 f533f224 Vangelis Koukis
            <div class="indicator"></div>
203 f533f224 Vangelis Koukis
            <div class="indicator"></div>
204 f533f224 Vangelis Koukis
            <div class="indicator"></div>
205 0a5c4b4d Markos Gogoulos
            <img class="spinner" style="display:none" src="static/icons/indicators/medium/progress.gif" />
206 0a5c4b4d Markos Gogoulos
            <img class="wave" style="display:none" src="static/icons/indicators/medium/wave.gif" />
207 f533f224 Vangelis Koukis
        </div>
208 0a5c4b4d Markos Gogoulos
        <img class="network-logos" src="static/network.png" />
209 f533f224 Vangelis Koukis
        <div href="#" class="name-div">
210 f533f224 Vangelis Koukis
            <h5 class="namecontainer editable">
211 f533f224 Vangelis Koukis
                <span class="name">{% trans "My Network 1" %}</span>
212 f533f224 Vangelis Koukis
                <span class="rename-network"></span>
213 f533f224 Vangelis Koukis
                <div class="editbuttons" style="display:none">
214 f533f224 Vangelis Koukis
                    <span class="save" />
215 f533f224 Vangelis Koukis
                    <span class="cancel" />
216 c0c46a60 Christodoulos Psaltis
                </div>
217 f533f224 Vangelis Koukis
            </h5>
218 6f547d12 Mike Muzurakis
        </div>
219 f533f224 Vangelis Koukis
        <h5 class="network-machines">
220 f533f224 Vangelis Koukis
            {% trans "Show:" %} <span class="show-machines">{% trans "machines" %}</span>
221 ea57526f Dimitris Moraitis
            (<span class="machines-count">0</span>)
222 f533f224 Vangelis Koukis
        </h5>
223 f533f224 Vangelis Koukis
        <div class="network-contents">
224 f533f224 Vangelis Koukis
            <div class="network-placeholder">
225 f533f224 Vangelis Koukis
                <div class="network-contents-start-separator"></div>
226 f533f224 Vangelis Koukis
                <div class="machines-list">
227 f533f224 Vangelis Koukis
                <!-- append machines here -->
228 f533f224 Vangelis Koukis
                </div>
229 f533f224 Vangelis Koukis
                <div class="empty-network-slot" id="machine-template">
230 f533f224 Vangelis Koukis
                    <div class='network-add-machine'><span class="add-icon">+</span></div>
231 f533f224 Vangelis Koukis
                </div>
232 6f547d12 Mike Muzurakis
            </div>
233 f533f224 Vangelis Koukis
            <div class="network-contents-end-separator"></div>
234 f533f224 Vangelis Koukis
        </div>
235 f533f224 Vangelis Koukis
        <div class="separator"></div>
236 f533f224 Vangelis Koukis
    </div>
237 f533f224 Vangelis Koukis
238 f533f224 Vangelis Koukis
    <!-- template for machines in private network -->
239 f533f224 Vangelis Koukis
    <div class="network-machine" id="private-machine-template">
240 f533f224 Vangelis Koukis
        <div class="machine-actions">
241 f533f224 Vangelis Koukis
            <a href="#" class="action-disconnect">{% trans "Disconnect" %}</a>
242 f533f224 Vangelis Koukis
            <a href="#" class="action-details">{% trans "Details" %}</a>
243 f533f224 Vangelis Koukis
        </div>
244 f533f224 Vangelis Koukis
        <div class="confirm_single">
245 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
246 f533f224 Vangelis Koukis
            <button class="no">{% trans "Cancel" %}</button>
247 f533f224 Vangelis Koukis
        </div>
248 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
249 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
250 f533f224 Vangelis Koukis
            <span class="code"></span>
251 f533f224 Vangelis Koukis
            <span class="message"></span>
252 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
253 f533f224 Vangelis Koukis
        </div>
254 f533f224 Vangelis Koukis
        <div class="state">
255 0a5c4b4d Markos Gogoulos
            <img class="spinner" style="display:none" src="static/icons/indicators/medium/progress.gif" />
256 0a5c4b4d Markos Gogoulos
            <img class="wave" style="display:none" src="static/icons/indicators/medium/wave.gif" />
257 f533f224 Vangelis Koukis
        </div>
258 0a5c4b4d Markos Gogoulos
        <img class="logo" src="static/icons/machines/medium/debian-on.png" />
259 f533f224 Vangelis Koukis
        <div class='network-remove-machine'><span class="remove-icon">X</span></div>
260 f533f224 Vangelis Koukis
        <div href="#" class="machine-name-div">
261 f533f224 Vangelis Koukis
            <h5 class="namecontainer editable">
262 f533f224 Vangelis Koukis
                <span class="name">my desktop1</span>
263 6f547d12 Mike Muzurakis
            </h5>
264 f533f224 Vangelis Koukis
        </div>
265 77d4b76f Christodoulos Psaltis
        <h5 class='machine-connect'>
266 77d4b76f Christodoulos Psaltis
            <span>{% trans "Connect" %}</span> {% trans "to manage private IPs" %}
267 f533f224 Vangelis Koukis
        </h5>
268 f533f224 Vangelis Koukis
        <div class="network-separator machines"></div>
269 f533f224 Vangelis Koukis
    </div>
270 f533f224 Vangelis Koukis
271 f533f224 Vangelis Koukis
    <!-- the actual structure to be populated -->
272 f533f224 Vangelis Koukis
    <div class="public-networks"></div>
273 f533f224 Vangelis Koukis
    <div class="private-networks" style="display:none;"></div>
274 f533f224 Vangelis Koukis
</div>
275 f533f224 Vangelis Koukis
276 f533f224 Vangelis Koukis
<!-- add servers to network overlay -->
277 f533f224 Vangelis Koukis
<div>
278 f533f224 Vangelis Koukis
    <div id="add-machines-wizard" class="modal">
279 f533f224 Vangelis Koukis
        <h3 class="popup-header">{% trans "Add machine" %}</h3>
280 f533f224 Vangelis Koukis
        <p style='display:none;'>hidden network id</p>
281 f533f224 Vangelis Koukis
        <div class="popup-body">
282 f533f224 Vangelis Koukis
            <div class="popup-body-inner">
283 f533f224 Vangelis Koukis
                <div class="popup-title">{% trans "Select machines to add to:" %}</div>
284 f533f224 Vangelis Koukis
                <div class="network-name"></div>
285 f533f224 Vangelis Koukis
                <div class="popup-separator"></div>
286 f533f224 Vangelis Koukis
                <div class="machines-container">
287 f533f224 Vangelis Koukis
                    <div class="large-spinner"></div>
288 f533f224 Vangelis Koukis
                    <div id='machine-entry-template' style="display:none;">
289 f533f224 Vangelis Koukis
                        <input type="checkbox" />
290 0a5c4b4d Markos Gogoulos
                        <img class=list-logo src="static/icons/machines/small/debian-on.png" title="debian"></img>
291 f533f224 Vangelis Koukis
                        <span class="machine-name">kati</span>
292 c0c46a60 Christodoulos Psaltis
                    </div>
293 c0c46a60 Christodoulos Psaltis
                </div>
294 b1272faa Mike Muzurakis
            </div>
295 6f547d12 Mike Muzurakis
        </div>
296 f533f224 Vangelis Koukis
        <div class="buttons">
297 f533f224 Vangelis Koukis
            <button type="button" class="cancel" id="add-server-cancel">{% trans "Cancel" %}</button>
298 f533f224 Vangelis Koukis
            <button type="button" class="add" id="add-server-add">{% trans "Add" %}</button>
299 f533f224 Vangelis Koukis
        </div>
300 7d4f351b Mike Muzurakis
    </div>
301 7d4f351b Mike Muzurakis
</div>
302 f533f224 Vangelis Koukis
303 f533f224 Vangelis Koukis
<a id="add-machines-overlay" href="#" rel="#add-machines-wizard"></a>
304 f533f224 Vangelis Koukis
305 f533f224 Vangelis Koukis
<!-- multiple confirmation dialog -->
306 f533f224 Vangelis Koukis
<div class="confirm_multiple">
307 f533f224 Vangelis Koukis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "networks" %}</p>
308 f533f224 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
309 f533f224 Vangelis Koukis
    <button class="no">{% trans "Cancel All" %}</button>
310 f533f224 Vangelis Koukis
</div>
311 6f547d12 Mike Muzurakis
312 6f547d12 Mike Muzurakis
<script>
313 f533f224 Vangelis Koukis
// add network wizard initialization
314 f533f224 Vangelis Koukis
$(function() {
315 f533f224 Vangelis Koukis
    // create wizard overlay
316 f533f224 Vangelis Koukis
    $("a#networkscreate").overlay({
317 f533f224 Vangelis Koukis
        mask: '#000',
318 f533f224 Vangelis Koukis
        effect: 'default',
319 f533f224 Vangelis Koukis
        top: '10%',
320 f533f224 Vangelis Koukis
        closeOnClick: false,
321 f533f224 Vangelis Koukis
        oneInstance: false,
322 f533f224 Vangelis Koukis
        closeOnEsc: true,
323 f533f224 Vangelis Koukis
        load: false
324 f533f224 Vangelis Koukis
    });
325 b1272faa Mike Muzurakis
});
326 f533f224 Vangelis Koukis

327 f533f224 Vangelis Koukis
// intercept click to create new private network
328 f533f224 Vangelis Koukis
$("#networkscreate").click(function() {
329 f533f224 Vangelis Koukis
    // reset and load wizard
330 f533f224 Vangelis Koukis
    $('#networks-wizard span.help').removeClass('red');
331 f533f224 Vangelis Koukis
    $('#networks-wizard input').val('');
332 f533f224 Vangelis Koukis
    $('#networks-wizard #add-network-create').text('{% trans 'Create Network' %}');
333 f533f224 Vangelis Koukis
    $("#networks-wizard").show();
334 f533f224 Vangelis Koukis
    $('#networks-wizard input').focus();
335 f533f224 Vangelis Koukis
    $("a#networkscreate").data('overlay').load();
336 f533f224 Vangelis Koukis
    return false;
337 e0e9957e Christodoulos Psaltis
});
338 b1272faa Mike Muzurakis

339 f533f224 Vangelis Koukis
// exit the add machine to network wizard
340 f533f224 Vangelis Koukis
$("#add-network-cancel").live('click', function() {
341 f533f224 Vangelis Koukis
    $("a#networkscreate").overlay().close();
342 384da41e Christodoulos Psaltis
});
343 b1272faa Mike Muzurakis

344 f533f224 Vangelis Koukis
// add selected machines to network
345 f533f224 Vangelis Koukis
$("#add-network-create").live('click', function() {
346 f533f224 Vangelis Koukis
    if ($('#networks-wizard input').val() == '') {
347 f533f224 Vangelis Koukis
        $('#networks-wizard input').focus();
348 f533f224 Vangelis Koukis
        $('#networks-wizard span.help').addClass('red');
349 f533f224 Vangelis Koukis
    } else {
350 f533f224 Vangelis Koukis
        $(this).text('');
351 0a5c4b4d Markos Gogoulos
        $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
352 f533f224 Vangelis Koukis
        networkName = $('#networks-wizard input').val();
353 f533f224 Vangelis Koukis
        create_network(networkName);
354 f533f224 Vangelis Koukis
    }
355 f533f224 Vangelis Koukis
    return false;
356 92f534e9 Christodoulos Psaltis
});
357 92f534e9 Christodoulos Psaltis

358 f533f224 Vangelis Koukis
// toggle component with class network-contents
359 f533f224 Vangelis Koukis
$("#networks-pane .show-machines").live('click', function() {
360 ea57526f Dimitris Moraitis
    if ($('#networks-pane .network-contents .network-machine').length > 0) {
361 ea57526f Dimitris Moraitis
        $(this).parent().next("#networks-pane .network-contents").slideToggle(600);
362 ea57526f Dimitris Moraitis
    }
363 f533f224 Vangelis Koukis
    return false;
364 f533f224 Vangelis Koukis
});
365 f533f224 Vangelis Koukis

366 f533f224 Vangelis Koukis
// toggle component with class network-contents
367 f533f224 Vangelis Koukis
$("#networks-pane .network-logos").live('click', function() {
368 f533f224 Vangelis Koukis
    $(this).siblings("#networks-pane .network-contents").slideToggle(600);
369 f533f224 Vangelis Koukis
    return false;
370 f533f224 Vangelis Koukis
});
371 f533f224 Vangelis Koukis

372 f533f224 Vangelis Koukis
//initiate network renaming
373 f533f224 Vangelis Koukis
$("#networks-pane .name-div .rename-network, #networks-pane .name-div h5.editable span.name").live('click', function() {
374 f533f224 Vangelis Koukis
    $(this).parent().find('.name').html("<input id=\"txtEdit\" type=\"text\" class=\"nametextbox\" value=\"" +
375 f533f224 Vangelis Koukis
                                        $(this).parent().find('.name').text() +
376 f533f224 Vangelis Koukis
                                        "\" / ><span class=\"oldValue\">" +
377 f533f224 Vangelis Koukis
                                        $(this).parent().find('.name').text() + "</span>");
378 f533f224 Vangelis Koukis
    $(this).parent().find('.rename-network').hide();
379 f533f224 Vangelis Koukis
    $(this).parent().find(".editbuttons").fadeIn();
380 f533f224 Vangelis Koukis
    $(this).parent().find(".nametextbox").focus().select();
381 f533f224 Vangelis Koukis
    $(this).parent().removeClass('editable');
382 f533f224 Vangelis Koukis

383 f533f224 Vangelis Koukis
    //submit wizard by pressing enter on the name textbox
384 f533f224 Vangelis Koukis
    $("#txtEdit").keydown(function (e) {
385 f533f224 Vangelis Koukis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
386 f533f224 Vangelis Koukis
            $(this).parent().parent().find('div.editbuttons span.save').click();
387 f533f224 Vangelis Koukis
            return false;
388 f533f224 Vangelis Koukis
        } else if ((e.which && e.which == 27) || (e.keyCode && e.keyCode == 27)) {
389 f533f224 Vangelis Koukis
            $(this).parent().parent().find('div.editbuttons span.cancel').click();
390 f533f224 Vangelis Koukis
            return true;
391 f533f224 Vangelis Koukis
        }
392 f533f224 Vangelis Koukis
    });
393 f533f224 Vangelis Koukis
    return false;
394 f533f224 Vangelis Koukis
});
395 f533f224 Vangelis Koukis

396 f533f224 Vangelis Koukis
//rename machine
397 f533f224 Vangelis Koukis
$("#networks-pane .name-div .editbuttons .save").live('click', function() {
398 f533f224 Vangelis Koukis
    networkID = $(this).closest('.network').attr("id").split('-').pop();
399 f533f224 Vangelis Koukis
    networkName = $(this).parent().parent().find('.nametextbox').val();
400 f533f224 Vangelis Koukis
    if (networkName.trim() == ''){
401 f533f224 Vangelis Koukis
        return false;
402 f533f224 Vangelis Koukis
    }
403 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.name').html($(this).parent().parent().find('.nametextbox').val());
404 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".editbuttons").fadeOut("fast");
405 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".rename-network").fadeIn("slow");
406 f533f224 Vangelis Koukis
    rename_network(networkID, networkName);
407 f533f224 Vangelis Koukis
    return false;
408 f533f224 Vangelis Koukis
});
409 f533f224 Vangelis Koukis

410 f533f224 Vangelis Koukis
//cancel renaming
411 f533f224 Vangelis Koukis
$("#networks-pane .name-div .editbuttons .cancel").live('click', function() {
412 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.name').html($(this).parent().parent().find('.oldValue').text());
413 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".editbuttons").hide();
414 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".rename-network").fadeIn();
415 f533f224 Vangelis Koukis
    $(this).parent().parent().addClass('editable');
416 f533f224 Vangelis Koukis
    return false;
417 f533f224 Vangelis Koukis
});
418 f533f224 Vangelis Koukis

419 f533f224 Vangelis Koukis
// intercept click to delete network
420 f533f224 Vangelis Koukis
$("#networks-pane .action-network-destroy").live('click', function() {
421 f533f224 Vangelis Koukis
    var networkID = $(this).parent().parent().attr('id').split('-').pop();
422 f533f224 Vangelis Koukis
    var networkName = $(this).parent().parent().find(".name-div span.name").text();
423 f533f224 Vangelis Koukis
    var found = false;
424 f533f224 Vangelis Koukis
    $(this).parent().children('a').removeClass('selected');
425 f533f224 Vangelis Koukis
    $(this).addClass('selected');
426 f533f224 Vangelis Koukis
    $(this).parent().addClass('display')
427 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.action_error').hide();
428 f533f224 Vangelis Koukis
    for (i=0; i < pending_actions.length; i++){ // if there is already a pending action for this network replace it
429 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network && pending_actions[i][1] == networkID){
430 f533f224 Vangelis Koukis
            pending_actions[i][0] = delete_network;
431 f533f224 Vangelis Koukis
            found = true
432 f533f224 Vangelis Koukis
        }
433 f533f224 Vangelis Koukis
    }
434 f533f224 Vangelis Koukis
    if (!found) {
435 f533f224 Vangelis Koukis
        // no pending action for this network was found, so let's just add it to the list
436 f533f224 Vangelis Koukis
        pending_actions.push([delete_network, networkID, networkName]);
437 f533f224 Vangelis Koukis
    }
438 f533f224 Vangelis Koukis
    update_network_confirmations();
439 f533f224 Vangelis Koukis
    return false;
440 f533f224 Vangelis Koukis
});
441 f533f224 Vangelis Koukis

442 f533f224 Vangelis Koukis
// intercept click to remove machine from network
443 f533f224 Vangelis Koukis
$("#networks-pane .remove-icon").live('click', function() {
444 f533f224 Vangelis Koukis
    $(this).closest('.network-machine').find('.action-disconnect').click();
445 f533f224 Vangelis Koukis
    return false;
446 f533f224 Vangelis Koukis
});
447 f533f224 Vangelis Koukis

448 f533f224 Vangelis Koukis
// intercept click to remove machine from network
449 f533f224 Vangelis Koukis
$("#networks-pane .action-disconnect").live('click', function() {
450 f533f224 Vangelis Koukis
    var serverID = $(this).parent().parent().attr('id').split('-').pop();
451 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr('id').split('-').pop();
452 f533f224 Vangelis Koukis
    var found = false;
453 f533f224 Vangelis Koukis
    $(this).parent().children('a').removeClass('selected');
454 f533f224 Vangelis Koukis
    $(this).addClass('selected');
455 f533f224 Vangelis Koukis
    $(this).parent().addClass('display')
456 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.action_error').hide();
457 f533f224 Vangelis Koukis
    for (i=0; i < pending_actions.length; i++){
458 f533f224 Vangelis Koukis
        // if there is already a pending action for this network replace it
459 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == remove_server_from_network &&
460 f533f224 Vangelis Koukis
            pending_actions[i][1] == networkID &&
461 f533f224 Vangelis Koukis
            pending_actions[i][2] == serverID) {
462 f533f224 Vangelis Koukis
                pending_actions[i][0] = remove_server_from_network;
463 f533f224 Vangelis Koukis
                found = true
464 f533f224 Vangelis Koukis
        }
465 f533f224 Vangelis Koukis
    }
466 f533f224 Vangelis Koukis
    if (!found) {
467 f533f224 Vangelis Koukis
        // no pending action for this network was found, so let's just add it to the list
468 f533f224 Vangelis Koukis
        pending_actions.push([remove_server_from_network, networkID, serverID]);
469 f533f224 Vangelis Koukis
    }
470 f533f224 Vangelis Koukis
    update_network_confirmations();
471 f533f224 Vangelis Koukis
    return false;
472 f533f224 Vangelis Koukis
});
473 f533f224 Vangelis Koukis

474 f533f224 Vangelis Koukis
$("#networks-pane .action-details").live('click', function() {
475 f533f224 Vangelis Koukis
    var serverID = $(this).parent().parent().attr('id').split('-').pop();
476 f533f224 Vangelis Koukis
    $.cookie('view', '2');
477 f533f224 Vangelis Koukis
    $.cookie('server', serverID);
478 f533f224 Vangelis Koukis
    $('a#machines').click();
479 f533f224 Vangelis Koukis
    return false
480 f533f224 Vangelis Koukis
});
481 f533f224 Vangelis Koukis

482 f533f224 Vangelis Koukis
// add machines wizard initialization
483 f533f224 Vangelis Koukis
$(function() {
484 f533f224 Vangelis Koukis
    // create wizard overlay
485 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").overlay({
486 f533f224 Vangelis Koukis
        mask: '#000',
487 f533f224 Vangelis Koukis
        effect: 'default',
488 f533f224 Vangelis Koukis
        top: '10%',
489 f533f224 Vangelis Koukis
        closeOnClick: false,
490 f533f224 Vangelis Koukis
        oneInstance: false,
491 f533f224 Vangelis Koukis
        closeOnEsc: true,
492 f533f224 Vangelis Koukis
        load: false
493 f533f224 Vangelis Koukis
    });
494 f533f224 Vangelis Koukis
});
495 f533f224 Vangelis Koukis

496 f533f224 Vangelis Koukis
// intercept click to add machine to  network
497 f533f224 Vangelis Koukis
$("#networks-pane .action-add").live('click', function() {
498 f533f224 Vangelis Koukis
    // reset pre-existing values
499 f533f224 Vangelis Koukis
    $('#add-server-add').text('{% trans 'Add' %}');
500 f533f224 Vangelis Koukis
    $("#add-machines-wizard .network-name").text($(this).closest('.network').find('.name-div span.name').text());
501 f533f224 Vangelis Koukis
    $("#add-machines-wizard p").text($(this).closest('.network').attr('id').split('-').pop());
502 f533f224 Vangelis Koukis
    $("#add-machines-wizard .large-spinner").show();
503 f533f224 Vangelis Koukis
    $('[id^="list-entry-server-"]').remove();
504 f533f224 Vangelis Koukis
    // list new values
505 f533f224 Vangelis Koukis
    list_machines();
506 f533f224 Vangelis Koukis
    // load wizard
507 f533f224 Vangelis Koukis
    $("#add-machines-wizard").show();
508 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").data('overlay').load();
509 f533f224 Vangelis Koukis
    return false;
510 f533f224 Vangelis Koukis
});
511 f533f224 Vangelis Koukis

512 f533f224 Vangelis Koukis
//submit wizard by pressing enter on the name textbox
513 f533f224 Vangelis Koukis
$("#networks-wizard div.name-input input.text").keypress(function (e) {
514 f533f224 Vangelis Koukis
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
515 f533f224 Vangelis Koukis
        $('#add-network-create').click();
516 f533f224 Vangelis Koukis
        return false;
517 f533f224 Vangelis Koukis
    } else {
518 f533f224 Vangelis Koukis
        return true;
519 f533f224 Vangelis Koukis
    }
520 f533f224 Vangelis Koukis
});
521 f533f224 Vangelis Koukis

522 f533f224 Vangelis Koukis
// intercept click to bring up the add machine to network wizard
523 f533f224 Vangelis Koukis
$("#networks-pane .add-icon").live('click', function() {
524 f533f224 Vangelis Koukis
    $(this).closest('.network').find('.action-add').click();
525 f533f224 Vangelis Koukis
});
526 f533f224 Vangelis Koukis

527 f533f224 Vangelis Koukis
// get machines in public network and list them in add server to network wizard
528 f533f224 Vangelis Koukis
function list_machines() {
529 f533f224 Vangelis Koukis
    var networkID = $("#add-machines-wizard p").text();
530 f533f224 Vangelis Koukis
    // get the list of servers from the UI
531 f533f224 Vangelis Koukis
    var all_machines = $("#networks-pane .public-networks .network-machine");
532 f533f224 Vangelis Koukis

533 f533f224 Vangelis Koukis
    $.each(all_machines, function(i, machine) {
534 f533f224 Vangelis Koukis
        var currentID = machine.id.split('-').pop();
535 f533f224 Vangelis Koukis
        // if machine already exists in private network
536 f533f224 Vangelis Koukis
        if ( $('#net-' + networkID + '-server-' + currentID).length > 0 ) {
537 f533f224 Vangelis Koukis
            // do nothing
538 f533f224 Vangelis Koukis
        } else {
539 f533f224 Vangelis Koukis
            // put it in the list
540 f533f224 Vangelis Koukis
            var entry = $("#add-machines-wizard #machine-entry-template").clone().attr("id", "list-entry-server-" + currentID);
541 f533f224 Vangelis Koukis
            entry.find('input').attr("name", currentID);
542 0a5c4b4d Markos Gogoulos
            entry.find('img').attr('src', 'static/icons/machines/small/' + $(machine).find('img.logo').attr('src').split('/').pop());
543 f533f224 Vangelis Koukis
            entry.find('.machine-name').text($(machine).find('span.name').text());
544 f533f224 Vangelis Koukis
            entry.appendTo("#add-machines-wizard .machines-container");
545 f533f224 Vangelis Koukis
        }
546 f533f224 Vangelis Koukis
    });
547 f533f224 Vangelis Koukis
    $("#add-machines-wizard .large-spinner").hide();
548 f533f224 Vangelis Koukis
    $('[id^="list-entry-server-"]').fadeIn("slow");
549 f533f224 Vangelis Koukis
    return false;
550 f533f224 Vangelis Koukis
}
551 f533f224 Vangelis Koukis

552 f533f224 Vangelis Koukis
// exit the add machine to network wizard
553 f533f224 Vangelis Koukis
$("#add-server-cancel").live('click', function() {
554 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").overlay().close();
555 f533f224 Vangelis Koukis
});
556 f533f224 Vangelis Koukis

557 f533f224 Vangelis Koukis
// add selected machines to network
558 f533f224 Vangelis Koukis
$("#add-server-add").live('click', function() {
559 f533f224 Vangelis Koukis
    var selections = $("#add-machines-wizard :checkbox:checked");
560 f533f224 Vangelis Koukis
    var networkID = $("#add-machines-wizard p").text();
561 f533f224 Vangelis Koukis
    var serverIDs = [];
562 f533f224 Vangelis Koukis
    $.each(selections, function(i, selection) {
563 f533f224 Vangelis Koukis
        serverIDs.push(selection.name);
564 f533f224 Vangelis Koukis
    });
565 f533f224 Vangelis Koukis
    $(this).text('');
566 f533f224 Vangelis Koukis
    add_server_to_network(networkID, serverIDs);
567 0a5c4b4d Markos Gogoulos
    $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
568 f533f224 Vangelis Koukis
    return false;
569 f533f224 Vangelis Koukis
});
570 f533f224 Vangelis Koukis

571 f533f224 Vangelis Koukis
// toggle component with class firewall-contents
572 f533f224 Vangelis Koukis
$("#networks-pane .show-firewall").live('click', function() {
573 b1272faa Mike Muzurakis
    $(this).parent().next(".firewall-content").slideToggle(600);
574 38bb6c34 Mike Muzurakis
    return false;
575 b1272faa Mike Muzurakis
});
576 b1272faa Mike Muzurakis

577 b1272faa Mike Muzurakis
//hide firewall content on apply click
578 f533f224 Vangelis Koukis
$("#networks-pane .firewall-apply").live('click', function() {
579 b1272faa Mike Muzurakis
    $(this).parent().slideToggle(600);
580 f533f224 Vangelis Koukis
    return false;
581 f533f224 Vangelis Koukis
});
582 f533f224 Vangelis Koukis

583 f533f224 Vangelis Koukis
// confirm single action
584 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_single .yes").live('click', function() {
585 f533f224 Vangelis Koukis
    // this works both for server and network actions
586 f533f224 Vangelis Koukis
    var serverID = [];
587 f533f224 Vangelis Koukis
    if ($(this).closest('.network-machine').attr('id')) {
588 f533f224 Vangelis Koukis
        serverID = $(this).closest('.network-machine').attr('id').split('-').pop();
589 f533f224 Vangelis Koukis
    }
590 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr("id").split('-').pop();
591 f533f224 Vangelis Koukis
    // execute actions
592 f533f224 Vangelis Koukis
    for (i=0;i<pending_actions.length;i++){
593 f533f224 Vangelis Koukis
        // if there is a pending action for this server execute it
594 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network &&
595 f533f224 Vangelis Koukis
            pending_actions[i][1] == networkID){
596 f533f224 Vangelis Koukis
                action = pending_actions.splice(i,1)[0];
597 f533f224 Vangelis Koukis
                $(this).parent().parent().find('.status').text(TRANSITIONS['Destroying']);
598 f533f224 Vangelis Koukis
                $(this).parent().parent().find('.spinner').show();
599 f533f224 Vangelis Koukis
                action[0]([action[1]]); // execute action
600 f533f224 Vangelis Koukis
        } else if ( pending_actions[i][0] == remove_server_from_network &&
601 f533f224 Vangelis Koukis
                    pending_actions[i][1] == networkID &&
602 f533f224 Vangelis Koukis
                    pending_actions[i][2] == serverID) {
603 f533f224 Vangelis Koukis
                        action = pending_actions.splice(i,1)[0];
604 f533f224 Vangelis Koukis
                        action[0]([action[1]], [action[2]]); // execute action
605 f533f224 Vangelis Koukis
        }
606 f533f224 Vangelis Koukis
    }
607 f533f224 Vangelis Koukis
    $(this).parent().hide();
608 f533f224 Vangelis Koukis
    $(this).parent().prev().children('a').removeClass('selected');
609 f533f224 Vangelis Koukis
    $(this).parent().prev().removeClass('display');
610 f533f224 Vangelis Koukis
    update_network_confirmations();
611 f533f224 Vangelis Koukis
    return false;
612 f533f224 Vangelis Koukis
});
613 f533f224 Vangelis Koukis

614 f533f224 Vangelis Koukis
// cancel single action
615 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_single .no").live('click', function(){
616 f533f224 Vangelis Koukis
    // this works both for server and network actions
617 f533f224 Vangelis Koukis
    var serverID = [];
618 f533f224 Vangelis Koukis
    if ($(this).closest('.network-machine').attr('id')) {
619 f533f224 Vangelis Koukis
        serverID = $(this).closest('.network-machine').attr('id').split('-').pop();
620 f533f224 Vangelis Koukis
    }
621 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr("id").split('-').pop();
622 f533f224 Vangelis Koukis
    // remove the action from the pending list
623 f533f224 Vangelis Koukis
    $(this).parent().prev().children('a').removeClass('selected');
624 f533f224 Vangelis Koukis
    $(this).parent().prev().removeClass('display');
625 f533f224 Vangelis Koukis
    for (i=0; i < pending_actions.length; i++){ // if there is a pending action for this network remove it
626 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network && pending_actions[i][1] == networkID){
627 f533f224 Vangelis Koukis
                pending_actions.splice(i,1);
628 f533f224 Vangelis Koukis
        } else if ( pending_actions[i][0] == remove_server_from_network &&
629 f533f224 Vangelis Koukis
                    pending_actions[i][1] == networkID &&
630 f533f224 Vangelis Koukis
                    pending_actions[i][2] == serverID) {
631 f533f224 Vangelis Koukis
                        pending_actions.splice(i,1);
632 f533f224 Vangelis Koukis
        }
633 f533f224 Vangelis Koukis
    }
634 f533f224 Vangelis Koukis
    $(this).parent().hide();
635 f533f224 Vangelis Koukis
    update_network_confirmations();
636 f533f224 Vangelis Koukis
    return false;
637 f533f224 Vangelis Koukis
});
638 f533f224 Vangelis Koukis

639 f533f224 Vangelis Koukis
// show, single action, error details
640 f533f224 Vangelis Koukis
$("#networks-pane div.action_error .details").live('click', function(){
641 f533f224 Vangelis Koukis
    // remove the action from the pending list
642 f533f224 Vangelis Koukis
    ajax_error($(this).parent().children('.code').text(),
643 f533f224 Vangelis Koukis
                 undefined,
644 f533f224 Vangelis Koukis
                 $(this).parent().children('.action').text(),
645 f533f224 Vangelis Koukis
                 $(this).parent().children('.message').text());
646 f533f224 Vangelis Koukis
    $(this).parent().hide();
647 f533f224 Vangelis Koukis
    return false;
648 f533f224 Vangelis Koukis
});
649 f533f224 Vangelis Koukis

650 f533f224 Vangelis Koukis
// confirm all actions
651 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_multiple .yes").live('click', function(){
652 f533f224 Vangelis Koukis
    while(pending_actions.length > 0){ // if there is a pending action for this network execute it
653 f533f224 Vangelis Koukis
        action = pending_actions.pop(); // extract action
654 f533f224 Vangelis Koukis
        var networkID = action[1];
655 f533f224 Vangelis Koukis
        $('#networks-pane .selected').removeClass('selected');
656 f533f224 Vangelis Koukis
        $('#networks-pane .display').removeClass('display');
657 f533f224 Vangelis Koukis
        if (action[0] == delete_network) {
658 f533f224 Vangelis Koukis
            $('#networks-pane #net-' + networkID + ' .status').text(TRANSITIONS['Destroying']);
659 f533f224 Vangelis Koukis
            $('#networks-pane #net-' + networkID + ' .spinner').show();
660 f533f224 Vangelis Koukis
            action[0]([networkID]); // execute action
661 f533f224 Vangelis Koukis
        } else if (action[0] == remove_server_from_network) {
662 f533f224 Vangelis Koukis
            action[0]([action[1]], [action[2]]); // execute action
663 f533f224 Vangelis Koukis
        }
664 f533f224 Vangelis Koukis
    }
665 f533f224 Vangelis Koukis
    update_network_confirmations();
666 f533f224 Vangelis Koukis
    return false;
667 f533f224 Vangelis Koukis
});
668 f533f224 Vangelis Koukis

669 f533f224 Vangelis Koukis
// cancel all actions
670 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_multiple .no").live('click', function(){
671 f533f224 Vangelis Koukis
    pending_actions = [];
672 f533f224 Vangelis Koukis
    $('#networks-pane .selected').removeClass('selected');
673 f533f224 Vangelis Koukis
    $('#networks-pane .display').removeClass('display');
674 f533f224 Vangelis Koukis
    update_network_confirmations();
675 f533f224 Vangelis Koukis
    return false;
676 f533f224 Vangelis Koukis
});
677 f533f224 Vangelis Koukis

678 f533f224 Vangelis Koukis
// update the networks list
679 f533f224 Vangelis Koukis
function update_networks_view(servers_data, networks_data){
680 f533f224 Vangelis Koukis
    /*
681 f533f224 Vangelis Koukis
    Go through the input data. Update existing entries, add
682 f533f224 Vangelis Koukis
    new ones to the list
683 f533f224 Vangelis Koukis
    */
684 f533f224 Vangelis Koukis

685 f533f224 Vangelis Koukis
    // check for changes in networks
686 f533f224 Vangelis Koukis
    if (networks_data){
687 f533f224 Vangelis Koukis
        /*
688 f533f224 Vangelis Koukis
        Here we are interested in private networks only
689 f533f224 Vangelis Koukis
        and not for any server they might contain
690 f533f224 Vangelis Koukis
        */
691 f533f224 Vangelis Koukis

692 f533f224 Vangelis Koukis
        // update private networks
693 f533f224 Vangelis Koukis
        $.each(networks_data.networks.values, function(i,network) {
694 f533f224 Vangelis Koukis
            // search DOM for this network
695 f533f224 Vangelis Koukis
            existing = $('#networks-pane #net-' + network.id);
696 f533f224 Vangelis Koukis

697 f533f224 Vangelis Koukis
            // if multiple machines exist in the DOM, delete all but one
698 f533f224 Vangelis Koukis
            // defensive coding - that shouldn't happen normally
699 f533f224 Vangelis Koukis
            while (existing.length > 1){
700 f533f224 Vangelis Koukis
                existing.remove();
701 f533f224 Vangelis Koukis
            }
702 f533f224 Vangelis Koukis
            // If network already exists in DOM, update it
703 f533f224 Vangelis Koukis
            if (existing.length){
704 f533f224 Vangelis Koukis
                // network was deleted
705 f533f224 Vangelis Koukis
                if (network.status == 'DELETED') {
706 f533f224 Vangelis Koukis
                    existing.remove();
707 f533f224 Vangelis Koukis
                }
708 f533f224 Vangelis Koukis

709 f533f224 Vangelis Koukis
                // network was renamed
710 f533f224 Vangelis Koukis
                if (existing.find('.name-div span.name').text() != network.name) {
711 f533f224 Vangelis Koukis
                    // set the new name
712 f533f224 Vangelis Koukis
                    existing.find('.name-div span.name').text(network.name);
713 f533f224 Vangelis Koukis
                }
714 f533f224 Vangelis Koukis
            }
715 f533f224 Vangelis Koukis
            // If network does not exist in DOM, create it, do not take into account public network
716 f533f224 Vangelis Koukis
            else if (network.id != 'public'){
717 f533f224 Vangelis Koukis
                var privNet = $("#networks-pane #private-template").clone().attr("id", "net-" + network.id);
718 f533f224 Vangelis Koukis
                privNet.find(".name-div span.name").text(network.name).fadeIn("slow");
719 f533f224 Vangelis Koukis
                privNet.appendTo("#networks-pane .private-networks");
720 f533f224 Vangelis Koukis
            }
721 f533f224 Vangelis Koukis
        });
722 f533f224 Vangelis Koukis
    }
723 f533f224 Vangelis Koukis

724 f533f224 Vangelis Koukis
    // check for changes in servers
725 f533f224 Vangelis Koukis
    if (servers_data) {
726 f533f224 Vangelis Koukis
        /*
727 f533f224 Vangelis Koukis
        Here we are interested in any server contained
728 f533f224 Vangelis Koukis
        either in a public network or a private one
729 f533f224 Vangelis Koukis
        */
730 f533f224 Vangelis Koukis
        $.each(servers_data.servers.values, function(i,server) {
731 f533f224 Vangelis Koukis
            /*
732 f533f224 Vangelis Koukis
            First update the public network
733 f533f224 Vangelis Koukis
            */
734 f533f224 Vangelis Koukis

735 f533f224 Vangelis Koukis
            // search public network's DOM for this server
736 f533f224 Vangelis Koukis
            existing_public = $('#networks-pane #net-pub-server-' + server.id);
737 f533f224 Vangelis Koukis
            // get the server's OS icon
738 f533f224 Vangelis Koukis
            var server_image = os_icon(server.metadata);
739 f533f224 Vangelis Koukis

740 f533f224 Vangelis Koukis
            // if multiple servers exist in public network, delete all but one
741 f533f224 Vangelis Koukis
            // defensive coding - that shouldn't happen normally
742 f533f224 Vangelis Koukis
            while (existing_public.length > 1){
743 f533f224 Vangelis Koukis
                existing_public.remove();
744 f533f224 Vangelis Koukis
            }
745 f533f224 Vangelis Koukis

746 f533f224 Vangelis Koukis
            // server was deleted
747 f533f224 Vangelis Koukis
            if (server.status == 'DELETED') {
748 f533f224 Vangelis Koukis
                existing_public.remove();
749 f533f224 Vangelis Koukis
            }
750 f533f224 Vangelis Koukis

751 f533f224 Vangelis Koukis
            // If server already exists in public network, update it
752 f533f224 Vangelis Koukis
            if (existing_public.length){
753 f533f224 Vangelis Koukis
                // server was renamed
754 f533f224 Vangelis Koukis
                if (server.name != existing_public.find('span.name').text()) {
755 f533f224 Vangelis Koukis
                    existing_public.find('span.name').text(server.name);
756 f533f224 Vangelis Koukis
                }
757 f533f224 Vangelis Koukis
                // server has changed state
758 f533f224 Vangelis Koukis
                if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
759 f533f224 Vangelis Koukis
                    existing_public.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
760 f533f224 Vangelis Koukis
                } else {
761 f533f224 Vangelis Koukis
                    existing_public.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
762 f533f224 Vangelis Koukis
                }
763 f533f224 Vangelis Koukis
                // server has new ips
764 f533f224 Vangelis Koukis
                var old_ip4 = existing_public.find('span.ip4').text();
765 f533f224 Vangelis Koukis
                var old_ip6 = existing_public.find('span.ip6').text();
766 f533f224 Vangelis Koukis
                // the following are valid because the public ips always come in this order from the api
767 f533f224 Vangelis Koukis
                var new_ips = get_public_ips(server);
768 f533f224 Vangelis Koukis
                var new_ip4 = new_ips['ip4'];
769 f533f224 Vangelis Koukis
                var new_ip6 = new_ips['ip6'];
770 f533f224 Vangelis Koukis
                if (old_ip4 != new_ip4) {
771 f533f224 Vangelis Koukis
                    if (new_ips['ip4'] == undefined) {
772 f533f224 Vangelis Koukis
                        existing_public.find(".ip4-container").hide();
773 f533f224 Vangelis Koukis
                    } else {
774 f533f224 Vangelis Koukis
                        existing_public.find('span.ip4').text(new_ip4);
775 f533f224 Vangelis Koukis
                    }
776 f533f224 Vangelis Koukis
                }
777 f533f224 Vangelis Koukis
                if (old_ip6 != new_ip6) {
778 f533f224 Vangelis Koukis
                    if (new_ip6 == undefined) {
779 f533f224 Vangelis Koukis
                        existing_public.find(".ip6-container").hide();
780 f533f224 Vangelis Koukis
                    } else {
781 f533f224 Vangelis Koukis
                        existing_public.find('span.ip6').text(new_ip6);
782 f533f224 Vangelis Koukis
                    }
783 f533f224 Vangelis Koukis
                }
784 f533f224 Vangelis Koukis
                //TODO: server has changed OS
785 f533f224 Vangelis Koukis
            }
786 f533f224 Vangelis Koukis
            // If server does not exist in public network, create it
787 f533f224 Vangelis Koukis
            else {
788 f533f224 Vangelis Koukis
                var machine = $("#networks-pane #public-machine-template").clone().attr("id", "net-pub-server-" + server.id).fadeIn("slow");
789 f533f224 Vangelis Koukis
                machine.find('span.name').text(server.name);
790 f533f224 Vangelis Koukis
                // find and display ips
791 f533f224 Vangelis Koukis
                var ips = get_public_ips(server);
792 f533f224 Vangelis Koukis
                if (ips['ip4'] == undefined) {
793 f533f224 Vangelis Koukis
                    machine.find(".ip4-container").hide();
794 f533f224 Vangelis Koukis
                } else {
795 f533f224 Vangelis Koukis
                    machine.find("span.ip4").text(ips['ip4']);
796 f533f224 Vangelis Koukis
                }
797 f533f224 Vangelis Koukis
                if (ips['ip6'] == undefined) {
798 f533f224 Vangelis Koukis
                    machine.find(".ip6-container").hide();
799 f533f224 Vangelis Koukis
                } else {
800 f533f224 Vangelis Koukis
                    machine.find("span.ip6").text(ips['ip6']);
801 f533f224 Vangelis Koukis
                }
802 f533f224 Vangelis Koukis
                // add the proper icon
803 f533f224 Vangelis Koukis
                if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
804 f533f224 Vangelis Koukis
                    machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
805 f533f224 Vangelis Koukis
                } else {
806 f533f224 Vangelis Koukis
                    machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
807 f533f224 Vangelis Koukis
                }
808 f533f224 Vangelis Koukis
                machine.appendTo("#networks-pane .public-networks .machines-list");
809 f533f224 Vangelis Koukis
            }
810 f533f224 Vangelis Koukis
            /*
811 f533f224 Vangelis Koukis
            Now update all private networks
812 f533f224 Vangelis Koukis
            Since one server may belong to more than one private networks,
813 f533f224 Vangelis Koukis
            we follow a different approach.
814 f533f224 Vangelis Koukis
            We check each server and add, update or leave it as it is accordingly
815 f533f224 Vangelis Koukis
            */
816 f533f224 Vangelis Koukis
            try {
817 f533f224 Vangelis Koukis
                $.each(server.addresses.values, function(i,server_net) {
818 f533f224 Vangelis Koukis
                    // find in which private networks it belongs
819 f533f224 Vangelis Koukis
                    if (server_net.id != "public") {
820 f533f224 Vangelis Koukis
                        var existing_private = $("#networks-pane .private-networks #net-" + server_net.id + "-server-" + server.id);
821 f533f224 Vangelis Koukis
                        // add new server
822 f533f224 Vangelis Koukis
                        if (!existing_private.length) {
823 f533f224 Vangelis Koukis
                            var machine = $("#networks-pane #private-machine-template").clone().attr("id", "net-" + server_net.id + "-server-" + server.id).fadeIn("slow");
824 f533f224 Vangelis Koukis
                            machine.find('span.name').text(server.name);
825 f533f224 Vangelis Koukis
                            if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
826 f533f224 Vangelis Koukis
                                machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
827 f533f224 Vangelis Koukis
                            } else {
828 f533f224 Vangelis Koukis
                                machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
829 f533f224 Vangelis Koukis
                            }
830 f533f224 Vangelis Koukis
                            machine.appendTo("#networks-pane .private-networks #net-" + server_net.id + " .machines-list");
831 f533f224 Vangelis Koukis
                        }
832 f533f224 Vangelis Koukis
                        // server was deleted
833 f533f224 Vangelis Koukis
                        if (server.status == 'DELETED') {
834 f533f224 Vangelis Koukis
                            existing_private.remove();
835 f533f224 Vangelis Koukis
                        }
836 f533f224 Vangelis Koukis
                        // server was renamed
837 f533f224 Vangelis Koukis
                        if (server.name != existing_private.find('span.name').text()) {
838 f533f224 Vangelis Koukis
                            existing_private.find('span.name').text(server.name);
839 f533f224 Vangelis Koukis
                        }
840 f533f224 Vangelis Koukis
                        // server has changed state
841 f533f224 Vangelis Koukis
                        if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
842 f533f224 Vangelis Koukis
                            existing_private.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
843 f533f224 Vangelis Koukis
                        } else {
844 f533f224 Vangelis Koukis
                            existing_private.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
845 f533f224 Vangelis Koukis
                        }
846 f533f224 Vangelis Koukis
                        //TODO: server has changed OS
847 f533f224 Vangelis Koukis
                    }
848 f533f224 Vangelis Koukis
                });
849 f533f224 Vangelis Koukis
            } catch (err) {
850 f533f224 Vangelis Koukis
                try{console.info('Server ' + server.id + ' has no network addresses')}catch(err){};
851 f533f224 Vangelis Koukis
            }
852 f533f224 Vangelis Koukis
        });
853 f533f224 Vangelis Koukis
    }
854 f533f224 Vangelis Koukis

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

857 f533f224 Vangelis Koukis
    // show all separators and hide the last one
858 f533f224 Vangelis Koukis
    $("div.private-networks div.network div.separator").show();
859 f533f224 Vangelis Koukis
    $("div.private-networks div.network div.separator:last").hide();
860 f533f224 Vangelis Koukis
    // update the counters of servers in each network
861 f533f224 Vangelis Koukis
    var nets = $('#networks-pane .network');
862 f533f224 Vangelis Koukis
    $.each(nets, function(i,net) {
863 f533f224 Vangelis Koukis
        $(net).find('span.machines-count').text($(net).find('.network-machine').length);
864 f533f224 Vangelis Koukis
    });
865 f533f224 Vangelis Koukis

866 f533f224 Vangelis Koukis
    // the private div shows only when private networks are available
867 f533f224 Vangelis Koukis
    if ($("div.private-networks div.network").length > 0) {
868 f533f224 Vangelis Koukis
        $("div.private-networks").fadeIn("slow");
869 f533f224 Vangelis Koukis
    } else {
870 f533f224 Vangelis Koukis
        $("div.private-networks").fadeOut("slow");
871 f533f224 Vangelis Koukis
    }
872 77d4b76f Christodoulos Psaltis

873 38d06ee0 Dimitris Moraitis
    // tag the last seperator for better styling
874 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").removeClass('last');
875 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").last().addClass('last');
876 f533f224 Vangelis Koukis
}
877 f533f224 Vangelis Koukis

878 f533f224 Vangelis Koukis
// reposition multiple confirmation box on window resize
879 f533f224 Vangelis Koukis
$(window).resize(function(){
880 f533f224 Vangelis Koukis
    if (this.innerHeight - 220 < $('#networks-pane #networks-container').height())
881 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').addClass('fixed');
882 f533f224 Vangelis Koukis
    else
883 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').removeClass('fixed');
884 b1272faa Mike Muzurakis
});
885 f533f224 Vangelis Koukis

886 f533f224 Vangelis Koukis
// basic functions executed on page load
887 f533f224 Vangelis Koukis
// hide the all of the networks contents
888 f533f224 Vangelis Koukis
$("#networks-pane .network-contents").hide();
889 f533f224 Vangelis Koukis
// hide the all of the firewall contents
890 f533f224 Vangelis Koukis
$("#networks-pane .firewall-content").hide();
891 f533f224 Vangelis Koukis
changes_since = 0; // to reload full list of servers
892 f533f224 Vangelis Koukis
networks_changes_since= 0; // to reload full list of networks
893 f533f224 Vangelis Koukis
// there is alway one public network to render
894 f533f224 Vangelis Koukis
var pubNet = $("#networks-pane #public-template").clone().attr("id", "pub").fadeIn("slow");
895 f533f224 Vangelis Koukis
pubNet.appendTo("#networks-pane .public-networks");
896 f533f224 Vangelis Koukis
update_networks(UPDATE_INTERVAL);
897 f533f224 Vangelis Koukis
898 6f547d12 Mike Muzurakis
</script>