private boolean discreteCheck(Model mo) { Mapping map = mo.getMapping(); for (VM vm : getVMs()) { if (map.isRunning(vm)) { Node host = map.getVMLocation(vm); Set<VM> on = map.getRunningVMs(host); // Check for other VMs on the node. If they are not in the constraint // it's a violation for (VM vm2 : on) { if (!vm2.equals(vm) && !getVMs().contains(vm2)) { return false; } } } } return true; }
@Override public boolean startsWith(Model mo) { if (getConstraint().isContinuous()) { boolean ret = discreteCheck(mo); if (ret) { Mapping map = mo.getMapping(); for (VM vm : getVMs()) { if (map.isRunning(vm)) { privateNodes.add(map.getVMLocation(vm)); } } for (Node n : map.getOnlineNodes()) { if (map.getRunningVMs(n).isEmpty()) { idleNodes.add(n); } } } return ret; } return true; }