1   
2   
3   
4   package org.apache.hadoop.hbase.tmpl.master;
5   
6   
7   import java.util.*;
8   
9   import org.apache.hadoop.hbase.ServerName;
10  
11  import org.apache.hadoop.hbase.ClusterStatus;
12  
13  import org.apache.hadoop.hbase.master.HMaster;
14  
15  import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;
16  
17  public class BackupMasterStatusTmplImpl
18    extends org.jamon.AbstractTemplateImpl
19    implements org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl.Intf
20  
21  {
22    private final HMaster master;
23    protected static org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl.ImplData p_implData)
24    {
25      return p_implData;
26    }
27    public BackupMasterStatusTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl.ImplData p_implData)
28    {
29      super(p_templateManager, __jamon_setOptionalArguments(p_implData));
30      master = p_implData.getMaster();
31    }
32    
33    public void renderNoFlush(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
34      throws java.io.IOException
35    {
36      
37      
38  Collection<ServerName> masters = null;
39  MasterAddressTracker masterAddressTracker = master.getMasterAddressTracker();
40  if (master.isActiveMaster()) {
41    ClusterStatus status = master.getClusterStatus();
42    masters = status.getBackupMasters();
43  } else{
44    ServerName sn = masterAddressTracker == null ? null
45      : masterAddressTracker.getMasterAddress();
46    assert sn != null : "Failed to retreive master's ServerName!";
47    masters = Collections.singletonList(sn);
48  }
49  
50      
51      
52  ServerName [] serverNames = masters.toArray(new ServerName[masters.size()]);
53  int infoPort = masterAddressTracker == null ? 0 : masterAddressTracker.getMasterInfoPort();
54  
55      
56      if ((!master.isActiveMaster()) )
57      {
58        
59        jamonWriter.write("\n    ");
60        
61        if (serverNames[0] != null )
62        {
63          
64          jamonWriter.write("\n        <h2>Master</h2>\n        <a href=\"//");
65          
66          org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverNames[0].getHostname()), jamonWriter);
67          
68          jamonWriter.write(":");
69          
70          org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(infoPort), jamonWriter);
71          
72          jamonWriter.write("/master-status\" target=\"_blank\">");
73          
74          org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverNames[0].getHostname()), jamonWriter);
75          
76          jamonWriter.write("</a>\n    ");
77        }
78        
79        else
80        {
81          
82          jamonWriter.write("\n        Unable to parse master hostname.\n    ");
83        }
84        
85        jamonWriter.write("\n");
86      }
87      
88      else
89      {
90        
91        jamonWriter.write("\n    <h2>Backup Masters</h2>\n\n    <table class=\"table table-striped\">\n    <tr>\n        <th>ServerName</th>\n        <th>Port</th>\n        <th>Start Time</th>\n    </tr>\n    ");
92        
93        
94      Arrays.sort(serverNames);
95      for (ServerName serverName : serverNames) {
96        infoPort = masterAddressTracker == null ? 0 : masterAddressTracker.getBackupMasterInfoPort(serverName);
97      
98        
99        jamonWriter.write("<tr>\n        <td><a href=\"//");
100       
101       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverName.getHostname()), jamonWriter);
102       
103       jamonWriter.write(":");
104       
105       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(infoPort), jamonWriter);
106       
107       jamonWriter.write("/master-status\" target=\"_blank\">");
108       
109       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverName.getHostname()), jamonWriter);
110       
111       jamonWriter.write("</a>\n        </td>\n        <td>");
112       
113       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverName.getPort()), jamonWriter);
114       
115       jamonWriter.write("</td>\n        <td>");
116       
117       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(new Date(serverName.getStartcode())), jamonWriter);
118       
119       jamonWriter.write("</td>\n    </tr>\n    ");
120       
121       
122     }
123     
124       
125       jamonWriter.write("<tr><td>Total:");
126       
127       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf((masters != null) ? masters.size() : 0), jamonWriter);
128       
129       jamonWriter.write("</td>\n    </table>\n");
130     }
131     
132     jamonWriter.write("\n");
133   }
134   
135   
136 }