I changed List topologies to Map<String, TopologyDetails> topologies, because I think it seems common that people only care about one specific topology, if that topology is missing, the scheduler will just do nothing, so give the developer a map will ease their checking about whether the topology is submitted or not.
public interface Scheduler {
/**
* set assignments for all the topologies. The new assignments will be in the returned Clusters.
*/
public void schedule(Topologies topologies, Cluster cluster);