Statistics
| Branch: | Tag: | Revision:

root / ui / templates / networks.html @ db269618

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

337 f533f224 Vangelis Koukis
// intercept click to create new private network
338 f533f224 Vangelis Koukis
$("#networkscreate").click(function() {
339 f533f224 Vangelis Koukis
    // reset and load wizard
340 f533f224 Vangelis Koukis
    $('#networks-wizard span.help').removeClass('red');
341 f533f224 Vangelis Koukis
    $('#networks-wizard input').val('');
342 f533f224 Vangelis Koukis
    $('#networks-wizard #add-network-create').text('{% trans 'Create Network' %}');
343 f533f224 Vangelis Koukis
    $("#networks-wizard").show();
344 f533f224 Vangelis Koukis
    $('#networks-wizard input').focus();
345 f533f224 Vangelis Koukis
    $("a#networkscreate").data('overlay').load();
346 f533f224 Vangelis Koukis
    return false;
347 e0e9957e Christodoulos Psaltis
});
348 b1272faa Mike Muzurakis

349 f533f224 Vangelis Koukis
// exit the add machine to network wizard
350 f533f224 Vangelis Koukis
$("#add-network-cancel").live('click', function() {
351 f533f224 Vangelis Koukis
    $("a#networkscreate").overlay().close();
352 384da41e Christodoulos Psaltis
});
353 b1272faa Mike Muzurakis

354 f533f224 Vangelis Koukis
// add selected machines to network
355 f533f224 Vangelis Koukis
$("#add-network-create").live('click', function() {
356 f533f224 Vangelis Koukis
    if ($('#networks-wizard input').val() == '') {
357 f533f224 Vangelis Koukis
        $('#networks-wizard input').focus();
358 f533f224 Vangelis Koukis
        $('#networks-wizard span.help').addClass('red');
359 f533f224 Vangelis Koukis
    } else {
360 f533f224 Vangelis Koukis
        $(this).text('');
361 0a5c4b4d Markos Gogoulos
        $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
362 f533f224 Vangelis Koukis
        networkName = $('#networks-wizard input').val();
363 f533f224 Vangelis Koukis
        create_network(networkName);
364 f533f224 Vangelis Koukis
    }
365 f533f224 Vangelis Koukis
    return false;
366 92f534e9 Christodoulos Psaltis
});
367 92f534e9 Christodoulos Psaltis

368 f533f224 Vangelis Koukis
// toggle component with class network-contents
369 f533f224 Vangelis Koukis
$("#networks-pane .show-machines").live('click', function() {
370 ea57526f Dimitris Moraitis
    if ($('#networks-pane .network-contents .network-machine').length > 0) {
371 ea57526f Dimitris Moraitis
        $(this).parent().next("#networks-pane .network-contents").slideToggle(600);
372 ea57526f Dimitris Moraitis
    }
373 f533f224 Vangelis Koukis
    return false;
374 f533f224 Vangelis Koukis
});
375 f533f224 Vangelis Koukis

376 f533f224 Vangelis Koukis
// toggle component with class network-contents
377 f533f224 Vangelis Koukis
$("#networks-pane .network-logos").live('click', function() {
378 f533f224 Vangelis Koukis
    $(this).siblings("#networks-pane .network-contents").slideToggle(600);
379 f533f224 Vangelis Koukis
    return false;
380 f533f224 Vangelis Koukis
});
381 f533f224 Vangelis Koukis

382 f533f224 Vangelis Koukis
//initiate network renaming
383 f533f224 Vangelis Koukis
$("#networks-pane .name-div .rename-network, #networks-pane .name-div h5.editable span.name").live('click', function() {
384 f533f224 Vangelis Koukis
    $(this).parent().find('.name').html("<input id=\"txtEdit\" type=\"text\" class=\"nametextbox\" value=\"" +
385 f533f224 Vangelis Koukis
                                        $(this).parent().find('.name').text() +
386 f533f224 Vangelis Koukis
                                        "\" / ><span class=\"oldValue\">" +
387 f533f224 Vangelis Koukis
                                        $(this).parent().find('.name').text() + "</span>");
388 f533f224 Vangelis Koukis
    $(this).parent().find('.rename-network').hide();
389 f533f224 Vangelis Koukis
    $(this).parent().find(".editbuttons").fadeIn();
390 f533f224 Vangelis Koukis
    $(this).parent().find(".nametextbox").focus().select();
391 f533f224 Vangelis Koukis
    $(this).parent().removeClass('editable');
392 f533f224 Vangelis Koukis

393 f533f224 Vangelis Koukis
    //submit wizard by pressing enter on the name textbox
394 f533f224 Vangelis Koukis
    $("#txtEdit").keydown(function (e) {
395 f533f224 Vangelis Koukis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
396 f533f224 Vangelis Koukis
            $(this).parent().parent().find('div.editbuttons span.save').click();
397 f533f224 Vangelis Koukis
            return false;
398 f533f224 Vangelis Koukis
        } else if ((e.which && e.which == 27) || (e.keyCode && e.keyCode == 27)) {
399 f533f224 Vangelis Koukis
            $(this).parent().parent().find('div.editbuttons span.cancel').click();
400 f533f224 Vangelis Koukis
            return true;
401 f533f224 Vangelis Koukis
        }
402 f533f224 Vangelis Koukis
    });
403 f533f224 Vangelis Koukis
    return false;
404 f533f224 Vangelis Koukis
});
405 f533f224 Vangelis Koukis

406 f533f224 Vangelis Koukis
//rename machine
407 f533f224 Vangelis Koukis
$("#networks-pane .name-div .editbuttons .save").live('click', function() {
408 f533f224 Vangelis Koukis
    networkID = $(this).closest('.network').attr("id").split('-').pop();
409 f533f224 Vangelis Koukis
    networkName = $(this).parent().parent().find('.nametextbox').val();
410 f533f224 Vangelis Koukis
    if (networkName.trim() == ''){
411 f533f224 Vangelis Koukis
        return false;
412 f533f224 Vangelis Koukis
    }
413 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.name').html($(this).parent().parent().find('.nametextbox').val());
414 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".editbuttons").fadeOut("fast");
415 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".rename-network").fadeIn("slow");
416 f533f224 Vangelis Koukis
    rename_network(networkID, networkName);
417 f533f224 Vangelis Koukis
    return false;
418 f533f224 Vangelis Koukis
});
419 f533f224 Vangelis Koukis

420 f533f224 Vangelis Koukis
//cancel renaming
421 f533f224 Vangelis Koukis
$("#networks-pane .name-div .editbuttons .cancel").live('click', function() {
422 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.name').html($(this).parent().parent().find('.oldValue').text());
423 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".editbuttons").hide();
424 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".rename-network").fadeIn();
425 f533f224 Vangelis Koukis
    $(this).parent().parent().addClass('editable');
426 f533f224 Vangelis Koukis
    return false;
427 f533f224 Vangelis Koukis
});
428 f533f224 Vangelis Koukis

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

452 f533f224 Vangelis Koukis
// intercept click to remove machine from network
453 f533f224 Vangelis Koukis
$("#networks-pane .remove-icon").live('click', function() {
454 f533f224 Vangelis Koukis
    $(this).closest('.network-machine').find('.action-disconnect').click();
455 f533f224 Vangelis Koukis
    return false;
456 f533f224 Vangelis Koukis
});
457 f533f224 Vangelis Koukis

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

484 f533f224 Vangelis Koukis
$("#networks-pane .action-details").live('click', function() {
485 f533f224 Vangelis Koukis
    var serverID = $(this).parent().parent().attr('id').split('-').pop();
486 f533f224 Vangelis Koukis
    $.cookie('view', '2');
487 f533f224 Vangelis Koukis
    $.cookie('server', serverID);
488 f533f224 Vangelis Koukis
    $('a#machines').click();
489 f533f224 Vangelis Koukis
    return false
490 f533f224 Vangelis Koukis
});
491 f533f224 Vangelis Koukis

492 f533f224 Vangelis Koukis
// add machines wizard initialization
493 f533f224 Vangelis Koukis
$(function() {
494 f533f224 Vangelis Koukis
    // create wizard overlay
495 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").overlay({
496 f533f224 Vangelis Koukis
        mask: '#000',
497 f533f224 Vangelis Koukis
        effect: 'default',
498 f533f224 Vangelis Koukis
        top: '10%',
499 f533f224 Vangelis Koukis
        closeOnClick: false,
500 f533f224 Vangelis Koukis
        oneInstance: false,
501 f533f224 Vangelis Koukis
        closeOnEsc: true,
502 f533f224 Vangelis Koukis
        load: false
503 f533f224 Vangelis Koukis
    });
504 f533f224 Vangelis Koukis
});
505 f533f224 Vangelis Koukis

506 f533f224 Vangelis Koukis
// intercept click to add machine to  network
507 f533f224 Vangelis Koukis
$("#networks-pane .action-add").live('click', function() {
508 f533f224 Vangelis Koukis
    // reset pre-existing values
509 f533f224 Vangelis Koukis
    $('#add-server-add').text('{% trans 'Add' %}');
510 f533f224 Vangelis Koukis
    $("#add-machines-wizard .network-name").text($(this).closest('.network').find('.name-div span.name').text());
511 f533f224 Vangelis Koukis
    $("#add-machines-wizard p").text($(this).closest('.network').attr('id').split('-').pop());
512 f533f224 Vangelis Koukis
    $("#add-machines-wizard .large-spinner").show();
513 f533f224 Vangelis Koukis
    $('[id^="list-entry-server-"]').remove();
514 f533f224 Vangelis Koukis
    // list new values
515 f533f224 Vangelis Koukis
    list_machines();
516 f533f224 Vangelis Koukis
    // load wizard
517 f533f224 Vangelis Koukis
    $("#add-machines-wizard").show();
518 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").data('overlay').load();
519 f533f224 Vangelis Koukis
    return false;
520 f533f224 Vangelis Koukis
});
521 f533f224 Vangelis Koukis

522 f533f224 Vangelis Koukis
//submit wizard by pressing enter on the name textbox
523 f533f224 Vangelis Koukis
$("#networks-wizard div.name-input input.text").keypress(function (e) {
524 f533f224 Vangelis Koukis
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
525 f533f224 Vangelis Koukis
        $('#add-network-create').click();
526 f533f224 Vangelis Koukis
        return false;
527 f533f224 Vangelis Koukis
    } else {
528 f533f224 Vangelis Koukis
        return true;
529 f533f224 Vangelis Koukis
    }
530 f533f224 Vangelis Koukis
});
531 f533f224 Vangelis Koukis

532 f533f224 Vangelis Koukis
// intercept click to bring up the add machine to network wizard
533 f533f224 Vangelis Koukis
$("#networks-pane .add-icon").live('click', function() {
534 f533f224 Vangelis Koukis
    $(this).closest('.network').find('.action-add').click();
535 f533f224 Vangelis Koukis
});
536 f533f224 Vangelis Koukis

537 f533f224 Vangelis Koukis
// get machines in public network and list them in add server to network wizard
538 f533f224 Vangelis Koukis
function list_machines() {
539 f533f224 Vangelis Koukis
    var networkID = $("#add-machines-wizard p").text();
540 f533f224 Vangelis Koukis
    // get the list of servers from the UI
541 f533f224 Vangelis Koukis
    var all_machines = $("#networks-pane .public-networks .network-machine");
542 f533f224 Vangelis Koukis

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

562 f533f224 Vangelis Koukis
// exit the add machine to network wizard
563 f533f224 Vangelis Koukis
$("#add-server-cancel").live('click', function() {
564 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").overlay().close();
565 f533f224 Vangelis Koukis
});
566 f533f224 Vangelis Koukis

567 f533f224 Vangelis Koukis
// add selected machines to network
568 f533f224 Vangelis Koukis
$("#add-server-add").live('click', function() {
569 f533f224 Vangelis Koukis
    var selections = $("#add-machines-wizard :checkbox:checked");
570 f533f224 Vangelis Koukis
    var networkID = $("#add-machines-wizard p").text();
571 f533f224 Vangelis Koukis
    var serverIDs = [];
572 f533f224 Vangelis Koukis
    $.each(selections, function(i, selection) {
573 f533f224 Vangelis Koukis
        serverIDs.push(selection.name);
574 f533f224 Vangelis Koukis
    });
575 f533f224 Vangelis Koukis
    $(this).text('');
576 f533f224 Vangelis Koukis
    add_server_to_network(networkID, serverIDs);
577 0a5c4b4d Markos Gogoulos
    $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
578 f533f224 Vangelis Koukis
    return false;
579 f533f224 Vangelis Koukis
});
580 f533f224 Vangelis Koukis

581 f533f224 Vangelis Koukis
// toggle component with class firewall-contents
582 f533f224 Vangelis Koukis
$("#networks-pane .show-firewall").live('click', function() {
583 b1272faa Mike Muzurakis
    $(this).parent().next(".firewall-content").slideToggle(600);
584 38bb6c34 Mike Muzurakis
    return false;
585 b1272faa Mike Muzurakis
});
586 b1272faa Mike Muzurakis

587 b1272faa Mike Muzurakis
//hide firewall content on apply click
588 f533f224 Vangelis Koukis
$("#networks-pane .firewall-apply").live('click', function() {
589 b1272faa Mike Muzurakis
    $(this).parent().slideToggle(600);
590 f533f224 Vangelis Koukis
    return false;
591 f533f224 Vangelis Koukis
});
592 f533f224 Vangelis Koukis

593 f533f224 Vangelis Koukis
// confirm single action
594 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_single .yes").live('click', function() {
595 f533f224 Vangelis Koukis
    // this works both for server and network actions
596 f533f224 Vangelis Koukis
    var serverID = [];
597 f533f224 Vangelis Koukis
    if ($(this).closest('.network-machine').attr('id')) {
598 f533f224 Vangelis Koukis
        serverID = $(this).closest('.network-machine').attr('id').split('-').pop();
599 f533f224 Vangelis Koukis
    }
600 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr("id").split('-').pop();
601 f533f224 Vangelis Koukis
    // execute actions
602 f533f224 Vangelis Koukis
    for (i=0;i<pending_actions.length;i++){
603 f533f224 Vangelis Koukis
        // if there is a pending action for this server execute it
604 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network &&
605 f533f224 Vangelis Koukis
            pending_actions[i][1] == networkID){
606 f533f224 Vangelis Koukis
                action = pending_actions.splice(i,1)[0];
607 f533f224 Vangelis Koukis
                $(this).parent().parent().find('.status').text(TRANSITIONS['Destroying']);
608 f533f224 Vangelis Koukis
                $(this).parent().parent().find('.spinner').show();
609 f533f224 Vangelis Koukis
                action[0]([action[1]]); // execute action
610 f533f224 Vangelis Koukis
        } else if ( pending_actions[i][0] == remove_server_from_network &&
611 f533f224 Vangelis Koukis
                    pending_actions[i][1] == networkID &&
612 f533f224 Vangelis Koukis
                    pending_actions[i][2] == serverID) {
613 f533f224 Vangelis Koukis
                        action = pending_actions.splice(i,1)[0];
614 f533f224 Vangelis Koukis
                        action[0]([action[1]], [action[2]]); // execute action
615 f533f224 Vangelis Koukis
        }
616 f533f224 Vangelis Koukis
    }
617 f533f224 Vangelis Koukis
    $(this).parent().hide();
618 d7414be6 Markos Gogoulos
    $(this).parent().prev().prev().removeClass('selected');
619 d7414be6 Markos Gogoulos
    $(this).closest('div.actions').find('a').removeClass('selected');
620 d7414be6 Markos Gogoulos
    $(this).closest("div.network").children('div.actions').removeClass('display');
621 d7414be6 Markos Gogoulos
    $(this).closest("div.network").children('div.actions').removeClass('selected');
622 f533f224 Vangelis Koukis
    update_network_confirmations();
623 d7414be6 Markos Gogoulos
//
624 d7414be6 Markos Gogoulos
//    $(this).closest('div.actions').find('a').removeClass('selected');
625 d7414be6 Markos Gogoulos
//    $(this).closest("div.machine").children('.state').children('.spinner').show()
626 d7414be6 Markos Gogoulos
//    $(this).closest("div.machine").children('div.actions').removeClass('display');
627 f533f224 Vangelis Koukis
    return false;
628 f533f224 Vangelis Koukis
});
629 f533f224 Vangelis Koukis

630 f533f224 Vangelis Koukis
// cancel single action
631 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_single .no").live('click', function(){
632 f533f224 Vangelis Koukis
    // this works both for server and network actions
633 f533f224 Vangelis Koukis
    var serverID = [];
634 f533f224 Vangelis Koukis
    if ($(this).closest('.network-machine').attr('id')) {
635 f533f224 Vangelis Koukis
        serverID = $(this).closest('.network-machine').attr('id').split('-').pop();
636 f533f224 Vangelis Koukis
    }
637 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr("id").split('-').pop();
638 f533f224 Vangelis Koukis
    // remove the action from the pending list
639 f533f224 Vangelis Koukis
    $(this).parent().prev().children('a').removeClass('selected');
640 f533f224 Vangelis Koukis
    $(this).parent().prev().removeClass('display');
641 f533f224 Vangelis Koukis
    for (i=0; i < pending_actions.length; i++){ // if there is a pending action for this network remove it
642 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network && pending_actions[i][1] == networkID){
643 f533f224 Vangelis Koukis
                pending_actions.splice(i,1);
644 f533f224 Vangelis Koukis
        } else if ( pending_actions[i][0] == remove_server_from_network &&
645 f533f224 Vangelis Koukis
                    pending_actions[i][1] == networkID &&
646 f533f224 Vangelis Koukis
                    pending_actions[i][2] == serverID) {
647 f533f224 Vangelis Koukis
                        pending_actions.splice(i,1);
648 f533f224 Vangelis Koukis
        }
649 f533f224 Vangelis Koukis
    }
650 f533f224 Vangelis Koukis
    $(this).parent().hide();
651 f533f224 Vangelis Koukis
    update_network_confirmations();
652 f533f224 Vangelis Koukis
    return false;
653 f533f224 Vangelis Koukis
});
654 f533f224 Vangelis Koukis

655 f533f224 Vangelis Koukis
// show, single action, error details
656 f533f224 Vangelis Koukis
$("#networks-pane div.action_error .details").live('click', function(){
657 f533f224 Vangelis Koukis
    // remove the action from the pending list
658 d7414be6 Markos Gogoulos
    $(this).parent().hide();
659 f533f224 Vangelis Koukis
    ajax_error($(this).parent().children('.code').text(),
660 f533f224 Vangelis Koukis
                 undefined,
661 f533f224 Vangelis Koukis
                 $(this).parent().children('.action').text(),
662 f533f224 Vangelis Koukis
                 $(this).parent().children('.message').text());
663 f533f224 Vangelis Koukis
    return false;
664 f533f224 Vangelis Koukis
});
665 f533f224 Vangelis Koukis

666 f533f224 Vangelis Koukis
// confirm all actions
667 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_multiple .yes").live('click', function(){
668 f533f224 Vangelis Koukis
    while(pending_actions.length > 0){ // if there is a pending action for this network execute it
669 f533f224 Vangelis Koukis
        action = pending_actions.pop(); // extract action
670 f533f224 Vangelis Koukis
        var networkID = action[1];
671 f533f224 Vangelis Koukis
        $('#networks-pane .selected').removeClass('selected');
672 f533f224 Vangelis Koukis
        $('#networks-pane .display').removeClass('display');
673 d7414be6 Markos Gogoulos
        $('#networks-pane .confirm_single').hide();
674 f533f224 Vangelis Koukis
        if (action[0] == delete_network) {
675 f533f224 Vangelis Koukis
            $('#networks-pane #net-' + networkID + ' .status').text(TRANSITIONS['Destroying']);
676 f533f224 Vangelis Koukis
            $('#networks-pane #net-' + networkID + ' .spinner').show();
677 f533f224 Vangelis Koukis
            action[0]([networkID]); // execute action
678 f533f224 Vangelis Koukis
        } else if (action[0] == remove_server_from_network) {
679 f533f224 Vangelis Koukis
            action[0]([action[1]], [action[2]]); // execute action
680 f533f224 Vangelis Koukis
        }
681 f533f224 Vangelis Koukis
    }
682 f533f224 Vangelis Koukis
    update_network_confirmations();
683 f533f224 Vangelis Koukis
    return false;
684 f533f224 Vangelis Koukis
});
685 f533f224 Vangelis Koukis

686 f533f224 Vangelis Koukis
// cancel all actions
687 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_multiple .no").live('click', function(){
688 f533f224 Vangelis Koukis
    pending_actions = [];
689 f533f224 Vangelis Koukis
    $('#networks-pane .selected').removeClass('selected');
690 f533f224 Vangelis Koukis
    $('#networks-pane .display').removeClass('display');
691 d7414be6 Markos Gogoulos
    $('#networks-pane .confirm_single').hide();
692 f533f224 Vangelis Koukis
    update_network_confirmations();
693 f533f224 Vangelis Koukis
    return false;
694 f533f224 Vangelis Koukis
});
695 f533f224 Vangelis Koukis

696 f533f224 Vangelis Koukis
// update the networks list
697 f533f224 Vangelis Koukis
function update_networks_view(servers_data, networks_data){
698 f533f224 Vangelis Koukis
    /*
699 f533f224 Vangelis Koukis
    Go through the input data. Update existing entries, add
700 f533f224 Vangelis Koukis
    new ones to the list
701 f533f224 Vangelis Koukis
    */
702 f533f224 Vangelis Koukis

703 f533f224 Vangelis Koukis
    // check for changes in networks
704 f533f224 Vangelis Koukis
    if (networks_data){
705 f533f224 Vangelis Koukis
        /*
706 f533f224 Vangelis Koukis
        Here we are interested in private networks only
707 f533f224 Vangelis Koukis
        and not for any server they might contain
708 f533f224 Vangelis Koukis
        */
709 f533f224 Vangelis Koukis

710 f533f224 Vangelis Koukis
        // update private networks
711 f533f224 Vangelis Koukis
        $.each(networks_data.networks.values, function(i,network) {
712 f533f224 Vangelis Koukis
            // search DOM for this network
713 f533f224 Vangelis Koukis
            existing = $('#networks-pane #net-' + network.id);
714 f533f224 Vangelis Koukis

715 f533f224 Vangelis Koukis
            // if multiple machines exist in the DOM, delete all but one
716 f533f224 Vangelis Koukis
            // defensive coding - that shouldn't happen normally
717 f533f224 Vangelis Koukis
            while (existing.length > 1){
718 f533f224 Vangelis Koukis
                existing.remove();
719 f533f224 Vangelis Koukis
            }
720 f533f224 Vangelis Koukis
            // If network already exists in DOM, update it
721 f533f224 Vangelis Koukis
            if (existing.length){
722 f533f224 Vangelis Koukis
                // network was deleted
723 f533f224 Vangelis Koukis
                if (network.status == 'DELETED') {
724 f533f224 Vangelis Koukis
                    existing.remove();
725 f533f224 Vangelis Koukis
                }
726 f533f224 Vangelis Koukis

727 f533f224 Vangelis Koukis
                // network was renamed
728 f533f224 Vangelis Koukis
                if (existing.find('.name-div span.name').text() != network.name) {
729 f533f224 Vangelis Koukis
                    // set the new name
730 f533f224 Vangelis Koukis
                    existing.find('.name-div span.name').text(network.name);
731 f533f224 Vangelis Koukis
                }
732 f533f224 Vangelis Koukis
            }
733 f533f224 Vangelis Koukis
            // If network does not exist in DOM, create it, do not take into account public network
734 f533f224 Vangelis Koukis
            else if (network.id != 'public'){
735 f533f224 Vangelis Koukis
                var privNet = $("#networks-pane #private-template").clone().attr("id", "net-" + network.id);
736 f533f224 Vangelis Koukis
                privNet.find(".name-div span.name").text(network.name).fadeIn("slow");
737 f533f224 Vangelis Koukis
                privNet.appendTo("#networks-pane .private-networks");
738 f533f224 Vangelis Koukis
            }
739 f533f224 Vangelis Koukis
        });
740 f533f224 Vangelis Koukis
    }
741 f533f224 Vangelis Koukis

742 f533f224 Vangelis Koukis
    // check for changes in servers
743 f533f224 Vangelis Koukis
    if (servers_data) {
744 f533f224 Vangelis Koukis
        /*
745 f533f224 Vangelis Koukis
        Here we are interested in any server contained
746 f533f224 Vangelis Koukis
        either in a public network or a private one
747 f533f224 Vangelis Koukis
        */
748 f533f224 Vangelis Koukis
        $.each(servers_data.servers.values, function(i,server) {
749 f533f224 Vangelis Koukis
            /*
750 f533f224 Vangelis Koukis
            First update the public network
751 f533f224 Vangelis Koukis
            */
752 f533f224 Vangelis Koukis

753 f533f224 Vangelis Koukis
            // search public network's DOM for this server
754 f533f224 Vangelis Koukis
            existing_public = $('#networks-pane #net-pub-server-' + server.id);
755 f533f224 Vangelis Koukis
            // get the server's OS icon
756 f533f224 Vangelis Koukis
            var server_image = os_icon(server.metadata);
757 f533f224 Vangelis Koukis

758 f533f224 Vangelis Koukis
            // if multiple servers exist in public network, delete all but one
759 f533f224 Vangelis Koukis
            // defensive coding - that shouldn't happen normally
760 f533f224 Vangelis Koukis
            while (existing_public.length > 1){
761 f533f224 Vangelis Koukis
                existing_public.remove();
762 f533f224 Vangelis Koukis
            }
763 f533f224 Vangelis Koukis

764 f533f224 Vangelis Koukis
            // server was deleted
765 f533f224 Vangelis Koukis
            if (server.status == 'DELETED') {
766 f533f224 Vangelis Koukis
                existing_public.remove();
767 f533f224 Vangelis Koukis
            }
768 f533f224 Vangelis Koukis

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

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

875 f533f224 Vangelis Koukis
    // show all separators and hide the last one
876 f533f224 Vangelis Koukis
    $("div.private-networks div.network div.separator").show();
877 f533f224 Vangelis Koukis
    $("div.private-networks div.network div.separator:last").hide();
878 f533f224 Vangelis Koukis
    // update the counters of servers in each network
879 f533f224 Vangelis Koukis
    var nets = $('#networks-pane .network');
880 f533f224 Vangelis Koukis
    $.each(nets, function(i,net) {
881 f533f224 Vangelis Koukis
        $(net).find('span.machines-count').text($(net).find('.network-machine').length);
882 f533f224 Vangelis Koukis
    });
883 f533f224 Vangelis Koukis

884 f533f224 Vangelis Koukis
    // the private div shows only when private networks are available
885 f533f224 Vangelis Koukis
    if ($("div.private-networks div.network").length > 0) {
886 f533f224 Vangelis Koukis
        $("div.private-networks").fadeIn("slow");
887 f533f224 Vangelis Koukis
    } else {
888 f533f224 Vangelis Koukis
        $("div.private-networks").fadeOut("slow");
889 f533f224 Vangelis Koukis
    }
890 77d4b76f Christodoulos Psaltis

891 38d06ee0 Dimitris Moraitis
    // tag the last seperator for better styling
892 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").removeClass('last');
893 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").last().addClass('last');
894 f533f224 Vangelis Koukis
}
895 f533f224 Vangelis Koukis

896 d7414be6 Markos Gogoulos
// indicate that the requested action was not completed
897 d7414be6 Markos Gogoulos
function display_failure(status, networkID, action, responseText) {
898 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .spinner').hide();
899 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .action').text(action);
900 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .code').text(status);
901 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .message').text(responseText);
902 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error').show();
903 d7414be6 Markos Gogoulos
}
904 d7414be6 Markos Gogoulos

905 d7414be6 Markos Gogoulos

906 f533f224 Vangelis Koukis
// reposition multiple confirmation box on window resize
907 f533f224 Vangelis Koukis
$(window).resize(function(){
908 f533f224 Vangelis Koukis
    if (this.innerHeight - 220 < $('#networks-pane #networks-container').height())
909 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').addClass('fixed');
910 f533f224 Vangelis Koukis
    else
911 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').removeClass('fixed');
912 b1272faa Mike Muzurakis
});
913 f533f224 Vangelis Koukis

914 f533f224 Vangelis Koukis
// basic functions executed on page load
915 f533f224 Vangelis Koukis
// hide the all of the networks contents
916 f533f224 Vangelis Koukis
$("#networks-pane .network-contents").hide();
917 f533f224 Vangelis Koukis
// hide the all of the firewall contents
918 f533f224 Vangelis Koukis
$("#networks-pane .firewall-content").hide();
919 f533f224 Vangelis Koukis
changes_since = 0; // to reload full list of servers
920 f533f224 Vangelis Koukis
networks_changes_since= 0; // to reload full list of networks
921 f533f224 Vangelis Koukis
// there is alway one public network to render
922 f533f224 Vangelis Koukis
var pubNet = $("#networks-pane #public-template").clone().attr("id", "pub").fadeIn("slow");
923 f533f224 Vangelis Koukis
pubNet.appendTo("#networks-pane .public-networks");
924 f533f224 Vangelis Koukis
update_networks(UPDATE_INTERVAL);
925 f533f224 Vangelis Koukis
926 6f547d12 Mike Muzurakis
</script>