package resa.evaluation.scheduler;
import backtype.storm.generated.StormTopology;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import resa.optimize.AllocResult;
import resa.drs.DecisionMaker;
import resa.util.ConfigUtil;
import java.util.HashMap;
import java.util.Map;
/**
* Created by ding on 14-7-11.
*/
public class OnceAdjustMaker implements DecisionMaker {
private static final Logger LOG = LoggerFactory.getLogger(OnceAdjustMaker.class);
private long startTime;
private boolean adjust = false;
private long minAdjustInterval;
@Override
public void init(Map<String, Object> conf, StormTopology rawTopology) {
startTime = now();
minAdjustInterval = ConfigUtil.getInt(conf, "resa.adjust.min.sec", 300);
LOG.info("OnceAdjustMaker is initialized, minAdjustInterval: " + minAdjustInterval);
}
@Override
public Map<String, Integer> make(AllocResult newAllocResult, Map<String, Integer> currAlloc) {
if (!adjust && now() - startTime > minAdjustInterval) {
adjust = true;
Map<String, Integer> ret = new HashMap<>();
// ret.put("input", 2);
// ret.put("generator", 6);
// ret.put("detector", 13);
// ret.put("reporter", 3);
// ret.put("image-input", 2);
// ret.put("feat-ext", 10);
// ret.put("matcher", 11);
// ret.put("aggregater", 1);
// ret.put("image-input", 2);
// ret.put("feat-ext", 8);
// ret.put("matcher", 8);
// ret.put("aggregater", 1);
///for resaVLD
ret.put("tVLDSpout", 1);
ret.put("tVLDPatchGen", 1);
ret.put("tVLDPatchProc", 20);
ret.put("tVLDPatchAgg", 1);
ret.put("tVLDPatchDraw", 1);
ret.put("tVLDRedisFrameOut", 1);
LOG.info("OnceAdjustMaker.make() is called with result allocation: " + ret);
return ret;
}
return null;
}
private static long now() {
return System.currentTimeMillis() / 1000;
}
}