package com.alimama.mdrill.topology.assignment; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import org.apache.log4j.Logger; import com.alipay.bluewhale.core.cluster.StormClusterState; import com.alipay.bluewhale.core.daemon.NodePort; import com.alipay.bluewhale.core.daemon.supervisor.SupervisorInfo; public class Utils { static Logger LOG = Logger.getLogger(Utils.class); public static Set<NodePort> AllSlots(Map<String, SupervisorInfo> supervisorInfos,StormClusterState stormClusterState) { LOG.info("higolog supervisorInfos:" + supervisorInfos.toString()); Map<String, List<Integer>> allSlots = new HashMap<String, List<Integer>>(); for (Entry<String, SupervisorInfo> entry : supervisorInfos.entrySet()) { String supervisorid = entry.getKey(); SupervisorInfo info = stormClusterState .supervisor_info(supervisorid); allSlots.put(entry.getKey(), info.getWorkPorts()); } Set<NodePort> rtn = new HashSet<NodePort>(); for (Entry<String, List<Integer>> entry : allSlots.entrySet()) { String supervisorid = entry.getKey(); List<Integer> s = entry.getValue(); for (Integer port : s) { NodePort nodeport = new NodePort(supervisorid, port); rtn.add(nodeport); } } return rtn; } public static class HostSlots { public String host; public Integer index = 0; public boolean fixd = false; @Override public String toString() { return "HostSlots [host=" + host + ", ports=" + ports + "]"; } public List<NodePort> ports; public HostSlots(String host, List<NodePort> ports) { super(); this.host = host; this.ports = ports; } } }