@Override public List<TopologyDetails> needsSchedulingTopologies() { List<TopologyDetails> ret = new ArrayList<>(); for (TopologyDetails topology : getTopologies()) { if (needsScheduling(topology)) { ret.add(topology); } } return ret; }
/** * Find a which topology is running on a worker slot. * * @return the topology using the worker slot. If worker slot is free then return null */ private TopologyDetails findTopologyUsingWorker(WorkerSlot ws) { for (Entry<String, Map<String, Collection<ExecutorDetails>>> entry : topIdToUsedSlots.entrySet()) { String topoId = entry.getKey(); Set<String> workerIds = entry.getValue().keySet(); for (String workerId : workerIds) { if (ws.getId().equals(workerId)) { return cluster.getTopologies().getById(topoId); } } } return null; }
/** * Get User wrappers around cluster. * * @param cluster the cluster to get the users out of. */ private Map<String, User> getUsers(Cluster cluster) { Map<String, User> userMap = new HashMap<>(); Map<String, Map<String, Double>> userResourcePools = getUserResourcePools(); LOG.debug("userResourcePools: {}", userResourcePools); for (TopologyDetails td : cluster.getTopologies()) { String topologySubmitter = td.getTopologySubmitter(); //additional safety check to make sure that topologySubmitter is going to be a valid value if (topologySubmitter == null || topologySubmitter.equals("")) { LOG.error("Cannot determine user for topology {}. Will skip scheduling this topology", td.getName()); continue; } if (!userMap.containsKey(topologySubmitter)) { userMap.put(topologySubmitter, new User(topologySubmitter, userResourcePools.get(topologySubmitter))); } } return userMap; }
NormalizedResourceOffer needed = new NormalizedResourceOffer(); for (TopologyDetails td : cluster.getTopologies()) { if (cluster.needsSchedulingRas(td)) { int slots = 0;
public static void assertTopologiesFullyScheduled(Cluster cluster, String... topoNames) { Topologies topologies = cluster.getTopologies(); for (String topoName : topoNames) { TopologyDetails td = topologies.getByName(topoName); assert (td != null) : topoName; String topoId = td.getId(); assertStatusSuccess(cluster, topoId); assert (cluster.getAssignmentById(topoId) != null) : topoName; assert (cluster.needsSchedulingRas(td) == false) : topoName; } }
public static void assertTopologiesNotScheduled(Cluster cluster, String... topoNames) { Topologies topologies = cluster.getTopologies(); for (String topoName : topoNames) { TopologyDetails td = topologies.getByName(topoName); assert (td != null) : topoName; String topoId = td.getId(); String status = cluster.getStatus(topoId); assert (status != null) : topoName; assert (!isStatusSuccess(status)) : topoName; assert (cluster.getAssignmentById(topoId) == null) : topoName; assert (cluster.needsSchedulingRas(td)) : topoName; } }