Statistics
| Branch: | Tag: | Revision:

root / ui / templates / standard.html @ 1a49199e

History | View | Annotate | Download (6.6 kB)

1 42f67a2a Dimitris Moraitis
{% load i18n %}
2 42f67a2a Dimitris Moraitis
3 42f67a2a Dimitris Moraitis
<!-- the standard view -->
4 42f67a2a Dimitris Moraitis
<div id="machinesview" class="standard">
5 935bb83f Markos Gogoulos
    <div id="emptymachineslist">{% trans "You have no virtual machines! Press Create New to create some!" %}</div>
6 42f67a2a Dimitris Moraitis
    <div id="spinner"></div>
7 42f67a2a Dimitris Moraitis
    <div class="machine" id="machine-template" style="display:none">
8 42f67a2a Dimitris Moraitis
        <div class="state">
9 42f67a2a Dimitris Moraitis
            <div class="status">{% trans "Running" %}</div>
10 42f67a2a Dimitris Moraitis
            <div class="indicator"></div>
11 42f67a2a Dimitris Moraitis
            <div class="indicator"></div>
12 42f67a2a Dimitris Moraitis
            <div class="indicator"></div>
13 42f67a2a Dimitris Moraitis
            <div class="indicator"></div>
14 42f67a2a Dimitris Moraitis
        </div>
15 42f67a2a Dimitris Moraitis
        <img class="logo" src="" />
16 42f67a2a Dimitris Moraitis
        <a href="#" class="name">
17 42f67a2a Dimitris Moraitis
            <h5>Name: <span class="name">node.name</span><span class="rename"></span></h5>
18 42f67a2a Dimitris Moraitis
        </a>
19 42f67a2a Dimitris Moraitis
        <a href="#" class="ip">
20 42f67a2a Dimitris Moraitis
            <h5>IP: <span class="public">node.public_ip</span></h5>
21 42f67a2a Dimitris Moraitis
        </a>
22 42f67a2a Dimitris Moraitis
        <h5 class="settings">
23 42f67a2a Dimitris Moraitis
            {% trans "Show:" %} <a href="#">{% trans "disks" %}</a> | <a href="#">{% trans "networks" %}</a> | <a href="#">{% trans "group" %}</a>
24 42f67a2a Dimitris Moraitis
        </h5>
25 42f67a2a Dimitris Moraitis
        <div class="actions">
26 42f67a2a Dimitris Moraitis
            <a href="#" class="action-start">{% trans "Start" %}</a>
27 42f67a2a Dimitris Moraitis
            <a href="#" class="action-reboot">{% trans "Reboot" %}</a>
28 42f67a2a Dimitris Moraitis
            <a href="#" class="action-shutdown">{% trans "Shutdown" %}</a>
29 42f67a2a Dimitris Moraitis
            <a href="#" class="more">{% trans "more &hellip;" %}</a>
30 42f67a2a Dimitris Moraitis
        </div>
31 e5b0ba20 Vangelis Koukis
        <div class="separator"></div>
32 42f67a2a Dimitris Moraitis
    </div>
33 42f67a2a Dimitris Moraitis
34 42f67a2a Dimitris Moraitis
    <div class="running"></div>
35 e5b0ba20 Vangelis Koukis
    <div id="mini" class="separator"></div>
36 42f67a2a Dimitris Moraitis
    <div class="terminated"></div>
37 42f67a2a Dimitris Moraitis
</div>
38 42f67a2a Dimitris Moraitis
39 e5b0ba20 Vangelis Koukis
<div id="machines" class="separator"></div>
40 42f67a2a Dimitris Moraitis
41 42f67a2a Dimitris Moraitis
<script>
42 42f67a2a Dimitris Moraitis
// intercept reboot click 
43 42f67a2a Dimitris Moraitis
$("div.actions a.action-reboot").live('click', function(){
44 42f67a2a Dimitris Moraitis
    var serverID = $(this).parent().parent().attr("id");
45 42f67a2a Dimitris Moraitis
    var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
46 42f67a2a Dimitris Moraitis
    confirm_action('reboot', reboot, [serverID], [serverName]);
47 42f67a2a Dimitris Moraitis
    return false;
48 42f67a2a Dimitris Moraitis
});
49 42f67a2a Dimitris Moraitis

50 42f67a2a Dimitris Moraitis
// intercept shutdown click
51 42f67a2a Dimitris Moraitis
$("div.actions a.action-shutdown").live('click', function(){ 
52 42f67a2a Dimitris Moraitis
    var serverID = $(this).parent().parent().attr("id");
53 42f67a2a Dimitris Moraitis
    var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
54 42f67a2a Dimitris Moraitis
    confirm_action('shutdown', shutdown, [serverID], [serverName]);
55 42f67a2a Dimitris Moraitis
    return false;
56 42f67a2a Dimitris Moraitis
});
57 eae0a59a Dimitris Moraitis

58 42f67a2a Dimitris Moraitis
// intercept start click
59 42f67a2a Dimitris Moraitis
$("div.actions a.action-start").live('click', function(){ 
60 42f67a2a Dimitris Moraitis
    var serverID = $(this).parent().parent().attr("id");
61 42f67a2a Dimitris Moraitis
    var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
62 2ed4ced5 Markos Gogoulos
//    confirm_action('start', start, [serverID], [serverName]);
63 2ed4ced5 Markos Gogoulos
    start([serverID]);
64 42f67a2a Dimitris Moraitis
    return false;
65 42f67a2a Dimitris Moraitis
});
66 42f67a2a Dimitris Moraitis

67 eae0a59a Dimitris Moraitis
// update the servers list
68 eae0a59a Dimitris Moraitis
function update_machines_view(data){
69 eae0a59a Dimitris Moraitis
    /* 
70 1a49199e Dimitris Moraitis
    Go through the servers in the input data. Update existing entries, add
71 eae0a59a Dimitris Moraitis
    new ones to the list
72 eae0a59a Dimitris Moraitis
    */    
73 eae0a59a Dimitris Moraitis
    $.each(data.servers, function(i,server){
74 eae0a59a Dimitris Moraitis
        
75 150eb972 Christodoulos Psaltis
        existing = $('#' + server.id);
76 eae0a59a Dimitris Moraitis
        
77 81d48bff Christodoulos Psaltis
        if (existing.length > 1){
78 eae0a59a Dimitris Moraitis
            existing.remove();
79 eae0a59a Dimitris Moraitis
            existing = [];
80 eae0a59a Dimitris Moraitis
        }
81 eae0a59a Dimitris Moraitis
        
82 1a49199e Dimitris Moraitis
        if (existing.length){
83 1a49199e Dimitris Moraitis
            // If the machine already exists in the DOM then simply update or delete it
84 1a49199e Dimitris Moraitis
            if (server.deleted == true) {
85 1a49199e Dimitris Moraitis
                existing.remove();            
86 81d48bff Christodoulos Psaltis
                try {
87 1a49199e Dimitris Moraitis
                    console.info(existing.find("a.name span.name").text() + ' removed');
88 1a49199e Dimitris Moraitis
                } catch(err) {}            
89 1a49199e Dimitris Moraitis
            } else if (existing.find(".status").text() != STATUS_MESSAGES[server.status]) {
90 1a49199e Dimitris Moraitis
                
91 1a49199e Dimitris Moraitis
                try { // firebug console logging
92 150eb972 Christodoulos Psaltis
                    console.info(existing.find("a.name span.name").text() + ' from ' 
93 150eb972 Christodoulos Psaltis
                                + existing.find(".status").text() + ' to ' + STATUS_MESSAGES[server.status]);
94 81d48bff Christodoulos Psaltis
                } catch(err) {}
95 1a49199e Dimitris Moraitis
                
96 1a49199e Dimitris Moraitis
                if (['BUILD','ACTIVE','REBOOT'].indexOf(server.status) >= 0 &&
97 1a49199e Dimitris Moraitis
                    [STATUS_MESSAGES['STOPPED'], STATUS_MESSAGES['ERROR']].indexOf(existing.find(".status").text()) >= 0) {
98 1a49199e Dimitris Moraitis
                    // from stopped to running
99 1a49199e Dimitris Moraitis
                    moved = existing.clone().appendTo(".running");
100 1a49199e Dimitris Moraitis
                    moved.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'.png');
101 1a49199e Dimitris Moraitis
                    existing.remove();
102 1a49199e Dimitris Moraitis
                    existing = moved;
103 1a49199e Dimitris Moraitis
                } else if (['STOPPED','ERROR'].indexOf(server.status) >= 0 &&
104 1a49199e Dimitris Moraitis
                           [STATUS_MESSAGES['ACTIVE'], STATUS_MESSAGES['BUILD'], STATUS_MESSAGES['REBOOT']].indexOf(existing.find(".status").text()) >= 0) {
105 1a49199e Dimitris Moraitis
                    moved = existing.clone().appendTo(".terminated");
106 1a49199e Dimitris Moraitis
                    moved.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'-off.png');
107 1a49199e Dimitris Moraitis
                    existing.remove();
108 1a49199e Dimitris Moraitis
                    existing = moved;
109 1a49199e Dimitris Moraitis
                } 
110 eae0a59a Dimitris Moraitis
                existing.find(".status").text(STATUS_MESSAGES[server.status]);
111 1a49199e Dimitris Moraitis
            
112 eae0a59a Dimitris Moraitis
            }
113 eae0a59a Dimitris Moraitis
            existing.find("a.name span.name").text(server.name);
114 eae0a59a Dimitris Moraitis
            existing.find("a.ip span.public").text(String(server.addresses.public.ip.addr).replace(',',' '));
115 1a49199e Dimitris Moraitis
        } else if (server.deleted != true) {
116 1a49199e Dimitris Moraitis
            // If it does not exist and it's not deleted, we should create it
117 eae0a59a Dimitris Moraitis
            var machine = $("#machine-template").clone().attr("id", server.id).fadeIn("slow");
118 eae0a59a Dimitris Moraitis
            machine.find("a.name span.name").text(server.name);
119 b335768e Markos Gogoulos
            machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'.png');
120 b335768e Markos Gogoulos
            machine.find("span.imagetag").text(image_tags[server.imageRef]);
121 eae0a59a Dimitris Moraitis
            machine.find("a.ip span.public").text(String(server.addresses.public.ip.addr).replace(',',' '));            
122 eae0a59a Dimitris Moraitis
            machine.find(".status").text(STATUS_MESSAGES[server.status]);
123 eae0a59a Dimitris Moraitis
            
124 eae0a59a Dimitris Moraitis
            if (['BUILD', 'ACTIVE', 'REBOOT'].indexOf(server.status) >= 0){
125 eae0a59a Dimitris Moraitis
                machine.appendTo(".running");
126 eae0a59a Dimitris Moraitis
            } else {
127 b335768e Markos Gogoulos
                machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'-off.png');
128 eae0a59a Dimitris Moraitis
                machine.appendTo(".terminated");
129 eae0a59a Dimitris Moraitis
            }
130 eae0a59a Dimitris Moraitis

131 eae0a59a Dimitris Moraitis
        }
132 eae0a59a Dimitris Moraitis
    });
133 eae0a59a Dimitris Moraitis

134 eae0a59a Dimitris Moraitis
    $("#spinner").hide();
135 e5b0ba20 Vangelis Koukis
    $("div.machine:last-child").find("div.separator").hide();
136 e5b0ba20 Vangelis Koukis
    // the separator shows only when running and terminated machines are available
137 c58db69b Christodoulos Psaltis
    if ($(".terminated a.name").length > 0 && $(".running a.name").length > 0) {
138 e5b0ba20 Vangelis Koukis
        $("#mini.separator").fadeIn("slow");
139 e5b0ba20 Vangelis Koukis
    } else {
140 e5b0ba20 Vangelis Koukis
        $("#mini.separator").fadeOut("slow");
141 eae0a59a Dimitris Moraitis
    }
142 935bb83f Markos Gogoulos
    // show message in case user has no servers!
143 935bb83f Markos Gogoulos
    if (servers.length == 0) {
144 935bb83f Markos Gogoulos
        $("#emptymachineslist").fadeIn("slow");
145 935bb83f Markos Gogoulos
    }
146 eae0a59a Dimitris Moraitis
}
147 eae0a59a Dimitris Moraitis

148 146b6003 Dimitris Moraitis
if (images.length == 0) {
149 146b6003 Dimitris Moraitis
    // populate image list
150 146b6003 Dimitris Moraitis
    update_images();
151 146b6003 Dimitris Moraitis
}
152 146b6003 Dimitris Moraitis
if (flavors.length == 0) {
153 146b6003 Dimitris Moraitis
    // configure flavors
154 146b6003 Dimitris Moraitis
    update_flavors(); 
155 146b6003 Dimitris Moraitis
}
156 146b6003 Dimitris Moraitis

157 146b6003 Dimitris Moraitis
update_vms(UPDATE_INTERVAL);
158 2ed4ced5 Markos Gogoulos
</script>