Search in sources :

Example 76 with VM

use of org.btrplace.model.VM 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 77 with VM

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

the class CSequentialVMTransitions method inject.

@Override
public boolean inject(Parameters ps, ReconfigurationProblem rp) throws SchedulerException {
    List<VM> seq = cstr.getInvolvedVMs();
    List<VMTransition> ams = new ArrayList<>();
    for (VM vmId : seq) {
        VMTransition am = rp.getVMAction(vmId);
        // Avoid VMs with no action model or Transition that do not denotes a state transition
        if (am == null || am instanceof StayAwayVM || am instanceof RelocatableVM) {
            continue;
        }
        ams.add(am);
    }
    if (ams.size() > 1) {
        Iterator<VMTransition> ite = ams.iterator();
        VMTransition prev = ite.next();
        Model csp = rp.getModel();
        while (ite.hasNext()) {
            VMTransition cur = ite.next();
            csp.post(csp.arithm(prev.getEnd(), "<=", cur.getStart()));
            prev = cur;
        }
    }
    return true;
}
Also used : StayAwayVM(org.btrplace.scheduler.choco.transition.StayAwayVM) VM(org.btrplace.model.VM) RelocatableVM(org.btrplace.scheduler.choco.transition.RelocatableVM) StayAwayVM(org.btrplace.scheduler.choco.transition.StayAwayVM) VMTransition(org.btrplace.scheduler.choco.transition.VMTransition) Model(org.chocosolver.solver.Model) RelocatableVM(org.btrplace.scheduler.choco.transition.RelocatableVM)

Example 78 with VM

use of org.btrplace.model.VM 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 79 with VM

use of org.btrplace.model.VM 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)

Example 80 with VM

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

the class NamingServiceTest method testEqualsAndHashCode.

@Test(dependsOnMethods = { "testRegisterAndGets" })
public void testEqualsAndHashCode() {
    NamingService<VM> ns = NamingService.newVMNS();
    Assert.assertEquals(ns, ns);
    Model mo = new DefaultModel();
    VM v = mo.newVM();
    NamingService<VM> ns2 = NamingService.newVMNS();
    Assert.assertEquals(ns, ns2);
    Assert.assertEquals(ns.hashCode(), ns2.hashCode());
    ns2.register(v, "vm0");
    Assert.assertNotEquals(ns, ns2);
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) VM(org.btrplace.model.VM) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) Test(org.testng.annotations.Test)

Aggregations

VM (org.btrplace.model.VM)192 Node (org.btrplace.model.Node)110 Model (org.btrplace.model.Model)92 DefaultModel (org.btrplace.model.DefaultModel)91 Test (org.testng.annotations.Test)91 Mapping (org.btrplace.model.Mapping)64 HashSet (java.util.HashSet)58 ArrayList (java.util.ArrayList)43 SatConstraint (org.btrplace.model.constraint.SatConstraint)40 ReconfigurationPlan (org.btrplace.plan.ReconfigurationPlan)39 VMTransition (org.btrplace.scheduler.choco.transition.VMTransition)35 IntVar (org.chocosolver.solver.variables.IntVar)35 ShareableResource (org.btrplace.model.view.ShareableResource)32 RelocatableVM (org.btrplace.scheduler.choco.transition.RelocatableVM)27 MigrateVM (org.btrplace.plan.event.MigrateVM)25 DefaultChocoScheduler (org.btrplace.scheduler.choco.DefaultChocoScheduler)17 StayAwayVM (org.btrplace.scheduler.choco.transition.StayAwayVM)17 Slice (org.btrplace.scheduler.choco.Slice)16 BootVM (org.btrplace.scheduler.choco.transition.BootVM)16 BootableNode (org.btrplace.scheduler.choco.transition.BootableNode)16