wip cdn_nodes dashboard
diff --git a/planetstack/templates/admin/dashboard/cdn_nodes.html b/planetstack/templates/admin/dashboard/cdn_nodes.html
new file mode 100644
index 0000000..07abce0
--- /dev/null
+++ b/planetstack/templates/admin/dashboard/cdn_nodes.html
@@ -0,0 +1,85 @@
+<div id="tabs-6">
+</div>
+
+<script>
+
+function domain_name_sort(a,b) {
+ parts_a = a.split(".");
+ parts_b = b.split(".");
+ parts_a = parts_a.reverse();
+ parts_b = parts_b.reverse();
+ a = parts_a.join(".");
+ b = parts_b.join(".");
+ return ((a < b) ? -1 : ((a > b) ? 1 : 0));
+}
+
+jQuery.fn.dataTableExt.oSort['domain-name-asc'] = function(a,b) {
+ return domain_name_sort(a,b);
+};
+
+jQuery.fn.dataTableExt.oSort['domain-name-desc'] = function(a,b) {
+ retuirn -domain_name_sort(a,b);
+};
+
+function updateCDNNodeData(data) {
+ $('#tabs-6').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="dynamic_cdn_nodes"></table>' );
+ var actualEntries = [];
+
+ var rows = data.rows;
+ for (row in rows) {
+ hostname = rows[row]['hostname'];
+ bytes_sent = rows[row]['sum_bytes_sent'];
+ bytes_hit = rows[row]['sum_bytes_hit'];
+ elapsed = rows[row]['sum_elapsed'];
+ healthy = rows[row]['sum_healthy'];
+
+ if (bytes_sent > 0) {
+ hit_ratio = parseInt( bytes_hit * 100.0 / bytes_sent );
+ } else {
+ hit_ratio = 0;
+ }
+
+ if (elapsed > 0) {
+ Mbps = parseInt( (bytes_sent * 8.0 / 1024.0 / 1024.0 ) / elapsed );
+ } else {
+ Mbps = 0;
+ }
+
+ if (healthy>0) {
+ healthyStr = "ok";
+ } else {
+ healthyStr = "bad";
+ }
+
+ actualEntries.push([hostname, healthyStr, Mbps, hit_ratio]);
+ }
+ oTable = $('#dynamic_cdn_nodes').dataTable( {
+ "bJQueryUI": true,
+ "aaData": actualEntries,
+ "bStateSave": true,
+ "aoColumns": [
+ { "sTitle": "Hostname", sType: "domain-name" },
+ { "sTitle": "Healthy" },
+ { "sTitle": "Mbps" , sClass: "alignCenter"},
+ { "sTitle": "Hit Ratio" , sClass: "alignCenter"},
+ ],
+ } );
+}
+
+function updateCDNNodes() {
+ var url= '/analytics/bigquery/?event=hpc_heartbeat&sum=@bytes_sent,@bytes_hit,@healthy,@elapsed&groupBy=@hostname&cached=1&cachedGroupBy=@hostname';
+ console.log(url);
+ $.ajax({
+ url: url,
+ dataType : 'json',
+ type : 'GET',
+ success: function(newData)
+ {
+ updateCDNNodeData(newData);
+ }
+});
+ setTimeout(updateCDNNodes, 30000);
+}
+
+setTimeout(updateCDNNodes, 5000);
+</script>