content: 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;
  		}
  	}
  }
  