Search in sources :

Example 21 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class NodeSourcePriorityPolicy method arrangeNodes.

/**
 * Sort by node source priorities.
 *
 * @return the list arranged according to the node source priorities
 */
public List<RMNode> arrangeNodes(int number, List<RMNode> nodes, Client client) {
    if (nodeSources == null) {
        logger.error("The policy config was not loaded");
        return nodes;
    }
    if (nodeSources.size() == 0) {
        logger.debug("The policy config is empty");
        return nodes;
    }
    reloadConfig();
    logger.debug("Arranging nodes according to node sources priorities");
    HashMap<String, List<RMNode>> nodesMap = new HashMap<>();
    for (RMNode node : nodes) {
        if (!nodesMap.containsKey(node.getNodeSourceName())) {
            nodesMap.put(node.getNodeSourceName(), new LinkedList<RMNode>());
        }
        nodesMap.get(node.getNodeSourceName()).add(node);
    }
    List<RMNode> arranged = new LinkedList<>();
    for (String ns : nodeSources) {
        if (nodesMap.containsKey(ns)) {
            logger.debug("Adding " + nodesMap.get(ns).size() + " nodes from " + ns);
            arranged.addAll(nodesMap.get(ns));
            nodesMap.remove(ns);
            if (arranged.size() >= number) {
                break;
            }
        }
    }
    for (String ns : nodesMap.keySet()) {
        logger.debug("Adding nodes from " + ns);
        arranged.addAll(nodesMap.get(ns));
    }
    return arranged;
}
Also used : RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) HashMap(java.util.HashMap) List(java.util.List) LinkedList(java.util.LinkedList) LinkedList(java.util.LinkedList)

Example 22 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class ProbablisticSelectionManager method isPassed.

/**
 * Predicts script execution result. Allows to avoid duplicate script execution
 * on the same node.
 *
 * @param script - script to execute
 * @param rmnode - target node
 * @return true if script will pass on the node
 */
@Override
public synchronized boolean isPassed(SelectionScript script, Map<String, Serializable> bindings, RMNode rmnode) {
    String digest;
    SelectionScript scriptWithReplacedBindings = replaceBindings(script, bindings);
    try {
        digest = new String(scriptWithReplacedBindings.digest());
        if (probabilities.containsKey(digest) && probabilities.get(digest).containsKey(rmnode.getNodeURL())) {
            Probability p = probabilities.get(digest).get(rmnode.getNodeURL());
            String scriptType = scriptWithReplacedBindings.isDynamic() ? "dynamic" : "static";
            if (logger.isDebugEnabled())
                logger.debug(rmnode.getNodeURL() + " : " + scriptWithReplacedBindings.hashCode() + " known " + scriptType + " script");
            return p.value() == 1;
        }
    } catch (NoSuchAlgorithmException e) {
        logger.error(e.getMessage(), e);
    }
    if (logger.isDebugEnabled())
        logger.debug(rmnode.getNodeURL() + " : " + scriptWithReplacedBindings.hashCode() + " unknown script");
    return false;
}
Also used : SelectionScript(org.ow2.proactive.scripting.SelectionScript) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException)

Example 23 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class TopologyNodesFilter method filterBySingleHost.

private List<RMNode> filterBySingleHost(Criteria criteria, List<RMNode> arrangedNodes) {
    List<RMNode> arrangedFilteredNodes = new LinkedList<>();
    Map<String, List<RMNode>> groupedNodeByHost = new LinkedHashMap<>();
    for (RMNode node : arrangedNodes) {
        if (!groupedNodeByHost.containsKey(node.getHostName())) {
            groupedNodeByHost.put(node.getHostName(), new LinkedList<RMNode>());
        }
        groupedNodeByHost.get(node.getHostName()).add(node);
    }
    for (String host : groupedNodeByHost.keySet()) {
        if (groupedNodeByHost.get(host).size() >= criteria.getSize()) {
            arrangedFilteredNodes.addAll(groupedNodeByHost.get(host));
        }
    }
    return arrangedFilteredNodes;
}
Also used : RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) List(java.util.List) LinkedList(java.util.LinkedList) LinkedList(java.util.LinkedList) LinkedHashMap(java.util.LinkedHashMap)

Example 24 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class NodesLockRestorationManagerTest method testHandleNotInitialized.

@Test
public void testHandleNotInitialized() {
    // creates a node that matches an entry in the table specifying the nodes to lock
    RMNodeImpl rmNode = RMNodeHelper.basicWithMockedInternals("ns1", "n1", "h1", "nurl1", "parurl1").getLeft();
    assertThat(rmNode.isLocked()).isFalse();
    Map<String, MutableInteger> table = Maps.newHashMap();
    MutableInteger putResult = table.put("ns", new MutableInteger(1));
    assertThat(putResult).isNull();
    doReturn(table).when(nodesLockRestorationManager).findNodesLockedOnPreviousRun();
    assertThat(table).hasSize(1);
    verify(rmCore, never()).lockNodes(anySetOf(String.class));
    nodesLockRestorationManager.handle(rmNode, caller);
    assertThat(table).hasSize(1);
    verify(rmCore, never()).lockNodes(anySetOf(String.class));
}
Also used : MutableInteger(org.objectweb.proactive.core.util.MutableInteger) RMNodeImpl(org.ow2.proactive.resourcemanager.rmnode.RMNodeImpl) Test(org.junit.Test)

Example 25 with RMNode

use of org.ow2.proactive.resourcemanager.rmnode.RMNode in project scheduling by ow2-proactive.

the class NodesLockRestorationManagerTest method testHandleNodeAlreadyLocked.

@Test
public void testHandleNodeAlreadyLocked() {
    RMNodeImpl rmNode = RMNodeHelper.basicWithMockedInternals("ns1", "n1", "h1", "nurl1", "parurl1").getLeft();
    rmNode.lock(null);
    assertThat(rmNode.isLocked()).isTrue();
    Map<String, MutableInteger> table = Maps.newHashMap();
    MutableInteger putResult = table.put("ns", new MutableInteger(1));
    assertThat(putResult).isNull();
    doReturn(table).when(nodesLockRestorationManager).findNodesLockedOnPreviousRun();
    nodesLockRestorationManager.initialize();
    assertThat(nodesLockRestorationManager.isInitialized()).isTrue();
    verify(nodesLockRestorationManager).findNodesLockedOnPreviousRun();
    assertThat(table).hasSize(1);
    verify(rmCore, never()).lockNodes(anySetOf(String.class));
    nodesLockRestorationManager.handle(rmNode, caller);
    assertThat(table).hasSize(1);
    verify(rmCore, never()).lockNodes(anySetOf(String.class));
}
Also used : MutableInteger(org.objectweb.proactive.core.util.MutableInteger) RMNodeImpl(org.ow2.proactive.resourcemanager.rmnode.RMNodeImpl) Test(org.junit.Test)

Aggregations

RMNode (org.ow2.proactive.resourcemanager.rmnode.RMNode)55 Test (org.junit.Test)27 Node (org.objectweb.proactive.core.node.Node)12 BooleanWrapper (org.objectweb.proactive.core.util.wrapper.BooleanWrapper)12 Client (org.ow2.proactive.resourcemanager.authentication.Client)12 SelectionScript (org.ow2.proactive.scripting.SelectionScript)12 ArrayList (java.util.ArrayList)11 RMDeployingNode (org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode)11 LinkedList (java.util.LinkedList)10 RMNodeImpl (org.ow2.proactive.resourcemanager.rmnode.RMNodeImpl)10 SelectionManager (org.ow2.proactive.resourcemanager.selection.SelectionManager)8 NodeState (org.ow2.proactive.resourcemanager.common.NodeState)7 NodeSource (org.ow2.proactive.resourcemanager.nodesource.NodeSource)7 Permission (java.security.Permission)6 SelectionManagerTest (org.ow2.proactive.resourcemanager.selection.SelectionManagerTest)6 NodeSet (org.ow2.proactive.utils.NodeSet)6 HashMap (java.util.HashMap)5 HashSet (java.util.HashSet)5 MutableInteger (org.objectweb.proactive.core.util.MutableInteger)5 PrincipalPermission (org.ow2.proactive.permissions.PrincipalPermission)5