extensions/net.sf.basedb.opengrid/trunk/resources/list-clusters.js

Code
Comments
Other
Rev Date Author Line
4314 20 Jan 17 nicklas 1 var Remote = function()
4314 20 Jan 17 nicklas 2 {
4314 20 Jan 17 nicklas 3   var remote = {};
6842 09 Sep 22 nicklas 4   var debug = 0;
4314 20 Jan 17 nicklas 5   
4314 20 Jan 17 nicklas 6   remote.initPage = function()
4314 20 Jan 17 nicklas 7   {
4314 20 Jan 17 nicklas 8     remote.getHostInfo(false);
4314 20 Jan 17 nicklas 9     Buttons.addClickHandler('btnReload', remote.reloadConfiguration);
4314 20 Jan 17 nicklas 10   }
4314 20 Jan 17 nicklas 11   
4314 20 Jan 17 nicklas 12   remote.reloadConfiguration = function()
4314 20 Jan 17 nicklas 13   {
4314 20 Jan 17 nicklas 14     remote.getHostInfo(true);
4314 20 Jan 17 nicklas 15   }
4314 20 Jan 17 nicklas 16   
4314 20 Jan 17 nicklas 17   remote.getHostInfo = function(reload)
4314 20 Jan 17 nicklas 18   {
4314 20 Jan 17 nicklas 19     var rows = Doc.element('all-rows');
4314 20 Jan 17 nicklas 20     while (rows.lastChild)
4314 20 Jan 17 nicklas 21     {
4314 20 Jan 17 nicklas 22       rows.removeChild(rows.lastChild);
4314 20 Jan 17 nicklas 23     }
4314 20 Jan 17 nicklas 24     var template = Doc.element('row-template');
4314 20 Jan 17 nicklas 25     var cols = template.getElementsByTagName('th');
4314 20 Jan 17 nicklas 26     
4314 20 Jan 17 nicklas 27     var wait = document.createElement('tr');
5988 18 Aug 20 nicklas 28     wait.innerHTML = '<td colspan="'+cols.length+'"><div class="messagecontainer note">Loading information about clusters. Please wait...</div></td>';
4314 20 Jan 17 nicklas 29     rows.appendChild(wait);
4314 20 Jan 17 nicklas 30
4314 20 Jan 17 nicklas 31     var url = 'OpenGrid.servlet?ID='+App.getSessionId();
4317 23 Jan 17 nicklas 32     url += '&cmd=GetHostInfo&jobAgentDetails=1';
4314 20 Jan 17 nicklas 33     if (reload) url += '&reload=1';
4314 20 Jan 17 nicklas 34     var request = Ajax.getXmlHttpRequest();
4314 20 Jan 17 nicklas 35     request.open("GET", url, true);
4314 20 Jan 17 nicklas 36     Ajax.setReadyStateHandler(request, remote.onHostInfoLoaded, remote.onHostInfoLoaded);
4314 20 Jan 17 nicklas 37     request.send(null);
4314 20 Jan 17 nicklas 38   }
4314 20 Jan 17 nicklas 39   
4314 20 Jan 17 nicklas 40   remote.onHostInfoLoaded = function(request)
4314 20 Jan 17 nicklas 41   {
4314 20 Jan 17 nicklas 42     if (debug) App.debug(Strings.encodeTags(request.responseText));
4314 20 Jan 17 nicklas 43     var response;
4314 20 Jan 17 nicklas 44     var error = false;
4314 20 Jan 17 nicklas 45     try
4314 20 Jan 17 nicklas 46     {
4314 20 Jan 17 nicklas 47       response = JSON.parse(request.responseText);
4314 20 Jan 17 nicklas 48       if (response.status != 'ok')
4314 20 Jan 17 nicklas 49       {
4314 20 Jan 17 nicklas 50         error = response.message || response.stacktrace || 'Unexpected error';
4314 20 Jan 17 nicklas 51       }
4314 20 Jan 17 nicklas 52     }
4314 20 Jan 17 nicklas 53     catch (ex)
4314 20 Jan 17 nicklas 54     {
4314 20 Jan 17 nicklas 55       error = ex;
4314 20 Jan 17 nicklas 56     }
4314 20 Jan 17 nicklas 57     
4314 20 Jan 17 nicklas 58     var template = Doc.element('row-template');
4314 20 Jan 17 nicklas 59     var cols = template.getElementsByTagName('th');
4314 20 Jan 17 nicklas 60     
4314 20 Jan 17 nicklas 61     var rows = Doc.element('all-rows');
4314 20 Jan 17 nicklas 62     while (rows.lastChild)
4314 20 Jan 17 nicklas 63     {
4314 20 Jan 17 nicklas 64       rows.removeChild(rows.lastChild);
4314 20 Jan 17 nicklas 65     }
4314 20 Jan 17 nicklas 66
4314 20 Jan 17 nicklas 67     if (error)
4314 20 Jan 17 nicklas 68     {
4314 20 Jan 17 nicklas 69       var wait = document.createElement('tr');
4314 20 Jan 17 nicklas 70       wait.innerHTML = '<td colspan="'+cols.length+'"><div class="messagecontainer error">'+Strings.encodeTags(error)+'</div></td>';
4314 20 Jan 17 nicklas 71       rows.appendChild(wait);
4314 20 Jan 17 nicklas 72       return;
4314 20 Jan 17 nicklas 73     }
4314 20 Jan 17 nicklas 74     
4314 20 Jan 17 nicklas 75     var hosts = response.hosts;
4314 20 Jan 17 nicklas 76     for (var hostNo = 0; hostNo < hosts.length; hostNo++)
4314 20 Jan 17 nicklas 77     {
4314 20 Jan 17 nicklas 78       var host = hosts[hostNo];
4314 20 Jan 17 nicklas 79       var connectionInfo = host.connection;
4314 20 Jan 17 nicklas 80       var hostInfo = host.clusterInfo.hostInfo;
4314 20 Jan 17 nicklas 81       var openGridInfo = host.clusterInfo.openGridInfo;
4317 23 Jan 17 nicklas 82       var jobAgent = host.config.jobAgent;
4314 20 Jan 17 nicklas 83       
4314 20 Jan 17 nicklas 84       var row = document.createElement('tr');
4314 20 Jan 17 nicklas 85       row.className = hostNo % 2 == 0 ? 'evenrow highlight' : 'oddrow highlight';
4314 20 Jan 17 nicklas 86       
4314 20 Jan 17 nicklas 87       for (var colNo = 0; colNo < cols.length; colNo++)
4314 20 Jan 17 nicklas 88       {
4314 20 Jan 17 nicklas 89         var cell = document.createElement('td');
4314 20 Jan 17 nicklas 90         cell.className = 'cell';
4314 20 Jan 17 nicklas 91         var colId = cols[colNo].id;
4314 20 Jan 17 nicklas 92         if (colId == 'hosts.name')
4314 20 Jan 17 nicklas 93         {
4314 20 Jan 17 nicklas 94           cell.innerHTML = '<span class="link">'+Strings.encodeTags(connectionInfo.name)+'<span>';
4314 20 Jan 17 nicklas 95           Data.set(cell, 'host-id', host.id)
4314 20 Jan 17 nicklas 96           Events.addEventHandler(cell, 'click', remote.hostOnClick);
4314 20 Jan 17 nicklas 97         }
4314 20 Jan 17 nicklas 98         else if (colId == 'hosts.server')
4314 20 Jan 17 nicklas 99         {
4314 20 Jan 17 nicklas 100           cell.innerHTML = Strings.encodeTags(connectionInfo.user + '@' + connectionInfo.address + ':' + connectionInfo.port);
4314 20 Jan 17 nicklas 101         }
4314 20 Jan 17 nicklas 102         else if (colId == 'hosts.timeDiff')
4314 20 Jan 17 nicklas 103         {
4314 20 Jan 17 nicklas 104           cell.innerHTML = host.clusterInfo.timeAdjustment + ' seconds';
4314 20 Jan 17 nicklas 105         }
5986 10 Jul 20 nicklas 106         else if (colId == 'hosts.type')
5986 10 Jul 20 nicklas 107         {
5986 10 Jul 20 nicklas 108           cell.innerHTML = Strings.encodeTags(host.config.type);
5986 10 Jul 20 nicklas 109         }
4314 20 Jan 17 nicklas 110         else if (colId == 'hosts.ogs')
4314 20 Jan 17 nicklas 111         {
4314 20 Jan 17 nicklas 112           var html;
4314 20 Jan 17 nicklas 113           if (openGridInfo.exitStatus == 0)
4314 20 Jan 17 nicklas 114           {
4314 20 Jan 17 nicklas 115             html = Strings.encodeTags(openGridInfo.stdout);
4314 20 Jan 17 nicklas 116           }
4314 20 Jan 17 nicklas 117           else
4314 20 Jan 17 nicklas 118           {
4314 20 Jan 17 nicklas 119             html = '<div class="messagecontainer error">['+openGridInfo.exitStatus+'] '+Strings.encodeTags(openGridInfo.stderr)+'</div>';
4314 20 Jan 17 nicklas 120           }
4314 20 Jan 17 nicklas 121           cell.innerHTML = html;
4314 20 Jan 17 nicklas 122         }
4314 20 Jan 17 nicklas 123         else if (colId == 'hosts.info')
4314 20 Jan 17 nicklas 124         {
4314 20 Jan 17 nicklas 125           var html;
4314 20 Jan 17 nicklas 126           if (hostInfo.exitStatus == 0)
4314 20 Jan 17 nicklas 127           {
4314 20 Jan 17 nicklas 128             html = Strings.encodeTags(hostInfo.stdout);
4314 20 Jan 17 nicklas 129           }
4314 20 Jan 17 nicklas 130           else
4314 20 Jan 17 nicklas 131           {
4314 20 Jan 17 nicklas 132             html = '<div class="messagecontainer error">['+hostInfo.exitStatus+'] '+Strings.encodeTags(hostInfo.stderr)+'</div>';
4314 20 Jan 17 nicklas 133           }
4314 20 Jan 17 nicklas 134           cell.innerHTML = html;
4314 20 Jan 17 nicklas 135         }
4314 20 Jan 17 nicklas 136         else if (colId == 'hosts.status')
4314 20 Jan 17 nicklas 137         {
4314 20 Jan 17 nicklas 138           var img = 'ok.png';
4314 20 Jan 17 nicklas 139           if (host.clusterInfo.error) 
4314 20 Jan 17 nicklas 140           {
4314 20 Jan 17 nicklas 141             img = 'error.png';
4314 20 Jan 17 nicklas 142           }
4314 20 Jan 17 nicklas 143           cell.className = 'host-status';
4314 20 Jan 17 nicklas 144           cell.innerHTML = '<img src="../../images/'+img + '">';
4314 20 Jan 17 nicklas 145         }
4315 23 Jan 17 nicklas 146         else if (colId == 'hosts.jobAgent')
4315 23 Jan 17 nicklas 147         {
4317 23 Jan 17 nicklas 148           var html = '';
4317 23 Jan 17 nicklas 149           if (!jobAgent)
4317 23 Jan 17 nicklas 150           {
4317 23 Jan 17 nicklas 151             html = '<i>Not connected</i>';
4317 23 Jan 17 nicklas 152           }
4317 23 Jan 17 nicklas 153           else if (jobAgent.exception)
4317 23 Jan 17 nicklas 154           {
4317 23 Jan 17 nicklas 155             html = Strings.encodeTags(jobAgent.externalId + ' [' + jobAgent.exception + ']');
4317 23 Jan 17 nicklas 156           }
4317 23 Jan 17 nicklas 157           else
4317 23 Jan 17 nicklas 158           {
4317 23 Jan 17 nicklas 159             if (jobAgent.isShared)
4317 23 Jan 17 nicklas 160             {
4317 23 Jan 17 nicklas 161               html += '<span class="icon link shared-item" title="Set access permissions" data-item-type="JOBAGENT" data-item-id="'+jobAgent.id+'">';
4317 23 Jan 17 nicklas 162               html += '<img src="../../images/shared.png"></span> ';
4317 23 Jan 17 nicklas 163             }
4317 23 Jan 17 nicklas 164             html += '<span class="link linked-item" title="View/edit this job agent" data-item-type="JOBAGENT" data-item-id="'+jobAgent.id+'">';
4317 23 Jan 17 nicklas 165             html += Strings.encodeTags(jobAgent.externalId)+'</span>';
4317 23 Jan 17 nicklas 166           }
4317 23 Jan 17 nicklas 167           cell.innerHTML = html;
4315 23 Jan 17 nicklas 168         }
4314 20 Jan 17 nicklas 169         row.appendChild(cell);
4314 20 Jan 17 nicklas 170       }
4314 20 Jan 17 nicklas 171       
4314 20 Jan 17 nicklas 172       rows.appendChild(row);
4314 20 Jan 17 nicklas 173     }
4314 20 Jan 17 nicklas 174     
4317 23 Jan 17 nicklas 175     var linkedItems = document.getElementsByClassName('linked-item');
4317 23 Jan 17 nicklas 176     for (var itemNo = 0; itemNo < linkedItems.length; itemNo++)
4317 23 Jan 17 nicklas 177     {
4317 23 Jan 17 nicklas 178       Events.addEventHandler(linkedItems[itemNo], 'click', Items.itemOnClick);
4317 23 Jan 17 nicklas 179     }
4317 23 Jan 17 nicklas 180     
4317 23 Jan 17 nicklas 181     var sharedItems = document.getElementsByClassName('shared-item');
4317 23 Jan 17 nicklas 182     for (var itemNo = 0; itemNo < sharedItems.length; itemNo++)
4317 23 Jan 17 nicklas 183     {
4317 23 Jan 17 nicklas 184       Events.addEventHandler(sharedItems[itemNo], 'click', Buttons.shareItem);
4317 23 Jan 17 nicklas 185     }
4317 23 Jan 17 nicklas 186
4314 20 Jan 17 nicklas 187   }
4314 20 Jan 17 nicklas 188   
4314 20 Jan 17 nicklas 189   remote.hostOnClick = function(event)
4314 20 Jan 17 nicklas 190   {
4314 20 Jan 17 nicklas 191     var hostId = Data.get(event.currentTarget, 'host-id');
4314 20 Jan 17 nicklas 192     var url = 'view-host.jsp?ID='+App.getSessionId();
4314 20 Jan 17 nicklas 193     url += '&hostId='+encodeURIComponent(hostId);
4314 20 Jan 17 nicklas 194     location.href = url;
4314 20 Jan 17 nicklas 195   }
4314 20 Jan 17 nicklas 196   
4314 20 Jan 17 nicklas 197   return remote;
4314 20 Jan 17 nicklas 198 }();
4314 20 Jan 17 nicklas 199
4314 20 Jan 17 nicklas 200 Doc.onLoad(Remote.initPage);