Package com.alibaba.jstorm.ui.model.data

Source Code of com.alibaba.jstorm.ui.model.data.MainPage

package com.alibaba.jstorm.ui.model.data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import org.apache.log4j.Logger;

import backtype.storm.Config;
import backtype.storm.generated.ClusterSummary;
import backtype.storm.utils.NimbusClient;

import com.alibaba.jstorm.client.ConfigExtension;
import com.alibaba.jstorm.cluster.ClusterState;
import com.alibaba.jstorm.common.stats.StatBuckets;
import com.alibaba.jstorm.ui.UIUtils;
import com.alibaba.jstorm.ui.model.ClusterInfo;
import com.alibaba.jstorm.ui.model.ClusterSumm;
import com.alibaba.jstorm.ui.model.NimbusSlave;
import com.alibaba.jstorm.ui.model.SupervisorSumm;
import com.alibaba.jstorm.ui.model.TopologySumm;
import com.alibaba.jstorm.utils.NetWorkUtils;
import com.alibaba.jstorm.zk.ZkTool;
import com.google.common.collect.Lists;

/**
*
* @author xin.zhou/Longda
*/
@ManagedBean(name = "mainpage")
@ViewScoped
public class MainPage implements Serializable {

  private static final long serialVersionUID = -6103468103521877721L;

  private static final Logger LOG = Logger.getLogger(MainPage.class);

  private String host = "localhost";

  private String clusterName = null;
  private ClusterSummary summ = null;
  private List<ClusterSumm> csumm = null;
  private List<TopologySumm> tsumm = null;
  private List<SupervisorSumm> ssumm = null;

  private List<NimbusSlave> slaves = null;
  private List<String> zkServers = null;
  private String zkPort = null;

  public MainPage() throws Exception {
    FacesContext ctx = FacesContext.getCurrentInstance();
    if (ctx.getExternalContext().getRequestParameterMap().get("clusterName") != null) {
      clusterName = (String) ctx.getExternalContext()
          .getRequestParameterMap().get("clusterName");
    }
   
    init();
  }

  @SuppressWarnings("rawtypes")
  private void init() throws Exception {

    NimbusClient client = null;
    ClusterState cluster_state = null;
    try {
      LOG.info("MainPage init...");
      Map conf = UIUtils.readUiConfig();
     
      if(clusterName != null && !(clusterName.equals(""))) {
        UIUtils.getClusterInfoByName(conf, clusterName);
      }
     
      client = NimbusClient.getConfiguredClient(conf);
      summ = client.getClient().getClusterInfo();

      tsumm = UIUtils.topologySummary(summ.get_topologies());
      csumm = UIUtils.clusterSummary(summ, client, conf);
      ssumm = UIUtils.supervisorSummary(summ.get_supervisors());

      cluster_state = ZkTool.mk_distributed_cluster_state(client
          .getConf());
      slaves = getNimbusSlave(cluster_state, conf);

      zkServers = getZkServer(conf);
      zkPort = String.valueOf(conf.get(Config.STORM_ZOOKEEPER_PORT));

    } catch (Exception e) {
      String errorInfo = e.getMessage();
      if (errorInfo.indexOf("No alive nimbus") == -1) {
          LOG.error("Failed to get cluster information:", e);
          throw e;
      }
    } finally {
      if (client != null) {
        client.close();
      }
      if (cluster_state != null) {
        cluster_state.close();
      }
    }
  }

  private List<NimbusSlave> getNimbusSlave(ClusterState cluster_state,
      Map conf) throws Exception {
    int port = ConfigExtension.getNimbusDeamonHttpserverPort(conf);
    List<NimbusSlave> slaves = Lists.newArrayList();
    Map<String, String> followerMap = ZkTool.get_followers(cluster_state);
    if (!followerMap.isEmpty()) {
      for (Entry<String, String> entry : followerMap.entrySet()) {
        String uptime = StatBuckets.prettyUptimeStr(Integer
            .valueOf(entry.getValue()));
        slaves.add(new NimbusSlave(entry.getKey(), uptime, port));
      }
    }
    return slaves;
  }

  private List<String> getZkServer(Map conf) {
    List<String> servers = Lists.newArrayList();
    for (String ip : (List<String>) conf
        .get(Config.STORM_ZOOKEEPER_SERVERS)) {
      servers.add(NetWorkUtils.ip2Host(ip));
    }
    return servers;
  }

  public List<ClusterSumm> getCsumm() {
    return csumm;
  }

  public ClusterSummary getSumm() {
    return summ;
  }

  public void setSumm(ClusterSummary summ) {
    this.summ = summ;
  }

  public void setCsumm(List<ClusterSumm> csumm) {
    this.csumm = csumm;
  }

  public void setTsumm(List<TopologySumm> tsumm) {
    this.tsumm = tsumm;
  }

  public void setSsumm(List<SupervisorSumm> ssumm) {
    this.ssumm = ssumm;
  }

  public List<TopologySumm> getTsumm() {

    return tsumm;
  }

  public List<SupervisorSumm> getSsumm() {

    return ssumm;
  }

  public String getHost() {
    return host;
  }

  public void setHost(String host) {
    this.host = host;
  }

  public List<NimbusSlave> getSlaves() {
    return slaves;
  }

  public void setSlaves(List<NimbusSlave> slaves) {
    this.slaves = slaves;
  }

  public List<String> getZkServers() {
    return zkServers;
  }

  public void setZkServers(List<String> zkServers) {
    this.zkServers = zkServers;
  }

  public String getZkPort() {
    return zkPort;
  }

  public void setZkPort(String zkPort) {
    this.zkPort = zkPort;
  }

  public static void main(String[] args) {
    try {
      MainPage m = new MainPage();
      System.out.println(m.getCsumm());
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }

}
TOP

Related Classes of com.alibaba.jstorm.ui.model.data.MainPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.