Search in sources :

Example 81 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class CRoot method inject.

@Override
public boolean inject(Parameters ps, ReconfigurationProblem rp) throws SchedulerException {
    VM vm = cstr.getInvolvedVMs().iterator().next();
    VMTransition m = rp.getVMAction(vm);
    Slice cSlice = m.getCSlice();
    Slice dSlice = m.getDSlice();
    if (cSlice != null && dSlice != null) {
        try {
            dSlice.getHoster().instantiateTo(cSlice.getHoster().getValue(), Cause.Null);
        } catch (ContradictionException ex) {
            Node n = rp.getSourceModel().getMapping().getVMLocation(vm);
            rp.getLogger().error("Unable to force '" + vm + "' to be running on node '" + n + "'", ex);
            return false;
        }
    }
    return true;
}
Also used : Slice(org.btrplace.scheduler.choco.Slice) ContradictionException(org.chocosolver.solver.exception.ContradictionException) VM(org.btrplace.model.VM) Node(org.btrplace.model.Node) VMTransition(org.btrplace.scheduler.choco.transition.VMTransition)

Example 82 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class CRunningCapacity method filterWithSingleNode.

private boolean filterWithSingleNode(ReconfigurationProblem rp) {
    Node n = cstr.getInvolvedNodes().iterator().next();
    IntVar v = rp.getNbRunningVMs().get(rp.getNode(n));
    Model csp = rp.getModel();
    csp.post(csp.arithm(v, "<=", cstr.getAmount()));
    return !cstr.isContinuous() || injectContinuous(rp);
}
Also used : Node(org.btrplace.model.Node) Model(org.chocosolver.solver.Model) IntVar(org.chocosolver.solver.variables.IntVar)

Example 83 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class CRunningCapacity method getMisPlacedVMs.

@Override
public Set<VM> getMisPlacedVMs(Instance i) {
    Mapping map = i.getModel().getMapping();
    Set<VM> bad = new HashSet<>();
    int remainder = cstr.getAmount();
    for (Node n : cstr.getInvolvedNodes()) {
        remainder -= map.getRunningVMs(n).size();
        if (remainder < 0) {
            for (Node n2 : cstr.getInvolvedNodes()) {
                bad.addAll(map.getRunningVMs(n2));
            }
            return bad;
        }
    }
    return bad;
}
Also used : VM(org.btrplace.model.VM) Node(org.btrplace.model.Node) Mapping(org.btrplace.model.Mapping) HashSet(java.util.HashSet)

Example 84 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class CSplit method getMisPlacedVMs.

@Override
public Set<VM> getMisPlacedVMs(Instance i) {
    Mapping map = i.getModel().getMapping();
    List<Collection<VM>> groups = new ArrayList<>(cstr.getSets());
    // Bad contains the VMs on nodes that host VMs from different groups.
    Set<VM> bad = new HashSet<>();
    for (Collection<VM> grp : groups) {
        for (VM vm : grp) {
            if (map.isRunning(vm)) {
                Node n = map.getVMLocation(vm);
                Set<VM> allOnN = map.getRunningVMs(n);
                for (VM vmOnN : allOnN) {
                    if (inOtherGroup(groups, grp, vmOnN)) {
                        // The VM belong to another group
                        bad.add(vm);
                        bad.add(vmOnN);
                    }
                }
            }
        }
    }
    return bad;
}
Also used : VM(org.btrplace.model.VM) Node(org.btrplace.model.Node) TIntArrayList(gnu.trove.list.array.TIntArrayList) ArrayList(java.util.ArrayList) Collection(java.util.Collection) Mapping(org.btrplace.model.Mapping) HashSet(java.util.HashSet)

Example 85 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class AllowAllConstraintCheckerTest method testMyVMsTracking.

@Test(dependsOnMethods = "testInstantiation")
public void testMyVMsTracking() {
    SatConstraint cstr = mock(SatConstraint.class);
    Model mo = new DefaultModel();
    List<VM> vms = Util.newVMs(mo, 10);
    List<Node> ns = Util.newNodes(mo, 10);
    when(cstr.getInvolvedNodes()).thenReturn(ns);
    when(cstr.getInvolvedVMs()).thenReturn(vms);
    AllowAllConstraintChecker<SatConstraint> c = new AllowAllConstraintChecker<>(cstr);
    // VM1 (one of the involved vms) has to be removed to be substituted by vms.get(0)0
    c.consume(new SubstitutedVMEvent(vms.get(0), vms.get(9)));
    Assert.assertTrue(c.getVMs().contains(vms.get(9)));
    Assert.assertFalse(c.getVMs().contains(vms.get(0)));
    // VM5 is not involved, no removal
    VM v = mo.newVM();
    c.consume(new SubstitutedVMEvent(vms.get(0), v));
    Assert.assertFalse(c.getVMs().contains(vms.get(0)));
    Assert.assertFalse(c.getVMs().contains(v));
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) MigrateVM(org.btrplace.plan.event.MigrateVM) BootVM(org.btrplace.plan.event.BootVM) VM(org.btrplace.model.VM) ShutdownVM(org.btrplace.plan.event.ShutdownVM) SuspendVM(org.btrplace.plan.event.SuspendVM) ResumeVM(org.btrplace.plan.event.ResumeVM) ForgeVM(org.btrplace.plan.event.ForgeVM) KillVM(org.btrplace.plan.event.KillVM) Node(org.btrplace.model.Node) BootNode(org.btrplace.plan.event.BootNode) ShutdownNode(org.btrplace.plan.event.ShutdownNode) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) SubstitutedVMEvent(org.btrplace.plan.event.SubstitutedVMEvent) Test(org.testng.annotations.Test)

Aggregations

Node (org.btrplace.model.Node)188 VM (org.btrplace.model.VM)110 Model (org.btrplace.model.Model)92 DefaultModel (org.btrplace.model.DefaultModel)91 Test (org.testng.annotations.Test)85 Mapping (org.btrplace.model.Mapping)68 HashSet (java.util.HashSet)48 ReconfigurationPlan (org.btrplace.plan.ReconfigurationPlan)43 SatConstraint (org.btrplace.model.constraint.SatConstraint)35 ArrayList (java.util.ArrayList)34 IntVar (org.chocosolver.solver.variables.IntVar)29 ShareableResource (org.btrplace.model.view.ShareableResource)28 VMTransition (org.btrplace.scheduler.choco.transition.VMTransition)23 MigrateVM (org.btrplace.plan.event.MigrateVM)22 BootableNode (org.btrplace.scheduler.choco.transition.BootableNode)19 RelocatableVM (org.btrplace.scheduler.choco.transition.RelocatableVM)19 ShutdownableNode (org.btrplace.scheduler.choco.transition.ShutdownableNode)19 DefaultChocoScheduler (org.btrplace.scheduler.choco.DefaultChocoScheduler)18 ChocoScheduler (org.btrplace.scheduler.choco.ChocoScheduler)16 BootVM (org.btrplace.scheduler.choco.transition.BootVM)16