Search in sources :

Example 61 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class RMTHelper method killRuntime.

/**
 * Kills the runtime associated with specified node url
 *
 * @param url of the node
 * @throws NodeException if node cannot be looked up
 */
public static void killRuntime(String url) throws NodeException {
    try {
        Node node = NodeFactory.getNode(url);
        node.getProActiveRuntime().killRT(false);
    } catch (Exception ignored) {
    }
}
Also used : StartNode(org.objectweb.proactive.core.node.StartNode) Node(org.objectweb.proactive.core.node.Node) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) ProActiveTimeoutException(org.objectweb.proactive.core.ProActiveTimeoutException) NodeException(org.objectweb.proactive.core.node.NodeException) AlreadyBoundException(java.rmi.AlreadyBoundException)

Example 62 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class RMTHelper method killNode.

/**
 * Kills the node with specified url
 * @param url of the node
 * @throws NodeException if node cannot be looked up
 */
public static void killNode(String url) throws NodeException {
    Node node = NodeFactory.getNode(url);
    try {
        ProActiveRuntime rt = node.getProActiveRuntime();
        rt.killNode(node.getNodeInformation().getName());
    } catch (Exception ignored) {
    }
}
Also used : StartNode(org.objectweb.proactive.core.node.StartNode) Node(org.objectweb.proactive.core.node.Node) ProActiveRuntime(org.objectweb.proactive.core.runtime.ProActiveRuntime) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) ProActiveTimeoutException(org.objectweb.proactive.core.ProActiveTimeoutException) NodeException(org.objectweb.proactive.core.node.NodeException) AlreadyBoundException(java.rmi.AlreadyBoundException)

Example 63 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class RMCoreTest method configureRMNode.

private void configureRMNode(MockedRMNodeParameters param) {
    RMNode rmNode = param.getRmNode();
    Node mockedNode = Mockito.mock(Node.class);
    NodeInformation mockedNodeInformation = Mockito.mock(NodeInformation.class);
    when(mockedNode.getNodeInformation()).thenReturn(mockedNodeInformation);
    when(rmNode.getNode()).thenReturn(mockedNode);
    when(rmNode.getNodeName()).thenReturn(param.getUrl());
    when(rmNode.getNodeURL()).thenReturn(param.getUrl());
    when(rmNode.isDown()).thenReturn(param.isDown());
    when(rmNode.isFree()).thenReturn(param.isFree());
    when(rmNode.isLocked()).thenReturn(param.isLocked());
    when(mockedNodeInformation.getURL()).thenReturn(param.getUrl());
    when(mockedNodeInformation.getName()).thenReturn(param.getUrl());
    when(rmNode.getNodeSource()).thenReturn(param.getNodeSource());
    when(rmNode.getNodeSourceName()).thenReturn(param.getNodeSourceName());
    when(rmNode.getAdminPermission()).thenReturn(null);
    when(rmNode.getProvider()).thenReturn(new Client());
    Client client = Mockito.mock(Client.class);
    when(rmNode.getOwner()).thenReturn(client);
    when(client.getName()).thenReturn("test");
    when(rmNode.getNodeURL()).thenReturn(param.getUrl());
}
Also used : RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) NodeInformation(org.objectweb.proactive.core.node.NodeInformation) RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) RMDeployingNode(org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode) Node(org.objectweb.proactive.core.node.Node) Client(org.ow2.proactive.resourcemanager.authentication.Client)

Example 64 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class TaskLauncherRebinder method getReboundTaskTerminateNotificationHandler.

/**
 * Attempt to reaquire a correct reference to the TaskTerminateNotification
 * active object from a previously saved URL for this object.
 *
 * @return a reference to a TaskTerminateNotification that is bounded to the
 * terminateNotificationNodeURL, or null if it cannot be retrieved or if
 * task is not recoverable
 */
TaskTerminateNotification getReboundTaskTerminateNotificationHandler(Throwable error) {
    if (taskRecoverable) {
        try {
            logger.debug("List AOs on " + terminateNotificationNodeURL + " (expect only one): " + Arrays.toString(NodeFactory.getNode(terminateNotificationNodeURL).getActiveObjects(TaskTerminateNotification.class.getName())));
            Node node = NodeFactory.getNode(terminateNotificationNodeURL);
            Object[] aos = node.getActiveObjects(TaskTerminateNotification.class.getName());
            logger.info("On node " + node.getNodeInformation().getName() + " number of active objects found is " + aos.length + " and the first one " + aos[0] + " will be used to send back the task result");
            return (TaskTerminateNotification) aos[0];
        } catch (Throwable t) {
            // error when retrieving the termination handler after reconnection
            logger.error("Failed to rebind TaskTerminatedNotification handler of task " + taskId.getReadableName() + " from URL " + terminateNotificationNodeURL + " after exception " + error.getMessage(), t);
            return null;
        }
    } else {
        return null;
    }
}
Also used : TaskTerminateNotification(org.ow2.proactive.scheduler.common.TaskTerminateNotification) Node(org.objectweb.proactive.core.node.Node) PAActiveObject(org.objectweb.proactive.api.PAActiveObject)

Example 65 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class RMCore method releaseNodes.

/**
 * {@inheritDoc}
 */
public BooleanWrapper releaseNodes(NodeSet nodes) {
    if (nodes.getExtraNodes() != null) {
        // do not forget to release extra nodes
        nodes.addAll(nodes.getExtraNodes());
    }
    // exception to throw in case of problems
    RuntimeException exception = null;
    NodeSet nodesReleased = new NodeSet();
    NodeSet nodesFailedToRelease = new NodeSet();
    for (Node node : nodes) {
        String nodeURL = null;
        try {
            nodeURL = node.getNodeInformation().getURL();
            logger.debug("Releasing node " + nodeURL);
        } catch (RuntimeException e) {
            logger.debug("A Runtime exception occurred while obtaining information on the node," + "the node must be down (it will be detected later)", e);
            // node is down, will be detected by pinger
            exception = new IllegalStateException(e.getMessage(), e);
            nodesFailedToRelease.add(node);
        }
        // verify whether the node has not been removed from the RM
        if (this.allNodes.containsKey(nodeURL)) {
            RMNode rmnode = this.getNodebyUrl(nodeURL);
            // free
            if (rmnode.isFree()) {
                logger.warn("Client " + caller + " tries to release the already free node " + nodeURL);
                nodesFailedToRelease.add(node);
            } else if (rmnode.isDown()) {
                logger.warn("Node was down, it cannot be released");
                nodesFailedToRelease.add(node);
            } else {
                Set<? extends IdentityPrincipal> userPrincipal = rmnode.getOwner().getSubject().getPrincipals(UserNamePrincipal.class);
                Permission ownerPermission = new PrincipalPermission(rmnode.getOwner().getName(), userPrincipal);
                try {
                    caller.checkPermission(ownerPermission, caller + " is not authorized to free node " + node.getNodeInformation().getURL());
                    if (rmnode.isToRemove()) {
                        removeNodeFromCoreAndSource(rmnode, caller);
                        nodesReleased.add(node);
                    } else {
                        internalSetFree(rmnode);
                        nodesReleased.add(node);
                    }
                } catch (SecurityException ex) {
                    logger.error(ex.getMessage(), ex);
                    nodesFailedToRelease.add(node);
                    exception = ex;
                }
            }
        } else {
            logger.warn("Cannot release unknown node " + nodeURL);
            nodesFailedToRelease.add(node);
            exception = new IllegalArgumentException("Cannot release unknown node " + nodeURL);
        }
    }
    logger.info("Nodes released : " + nodesReleased);
    if (!nodesFailedToRelease.isEmpty()) {
        logger.warn("Nodes failed to release : " + nodesFailedToRelease);
    }
    if (exception != null) {
        // throwing the latest exception we had
        throw exception;
    }
    return new BooleanWrapper(true);
}
Also used : NodeSet(org.ow2.proactive.utils.NodeSet) NodeSet(org.ow2.proactive.utils.NodeSet) Set(java.util.Set) ImmutableSet(com.google.common.collect.ImmutableSet) HashSet(java.util.HashSet) RMDeployingNode(org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode) Node(org.objectweb.proactive.core.node.Node) RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) PrincipalPermission(org.ow2.proactive.permissions.PrincipalPermission) UserNamePrincipal(org.ow2.proactive.authentication.principals.UserNamePrincipal) BooleanWrapper(org.objectweb.proactive.core.util.wrapper.BooleanWrapper) RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) Permission(java.security.Permission) MethodCallPermission(org.ow2.proactive.permissions.MethodCallPermission) PrincipalPermission(org.ow2.proactive.permissions.PrincipalPermission) IdentityPrincipal(org.ow2.proactive.authentication.principals.IdentityPrincipal)

Aggregations

Node (org.objectweb.proactive.core.node.Node)80 Test (org.junit.Test)28 RMFunctionalTest (functionaltests.utils.RMFunctionalTest)21 NodeSet (org.ow2.proactive.utils.NodeSet)19 RMNode (org.ow2.proactive.resourcemanager.rmnode.RMNode)18 ResourceManager (org.ow2.proactive.resourcemanager.frontend.ResourceManager)16 HashMap (java.util.HashMap)15 TestNode (functionaltests.utils.TestNode)11 StaticPolicy (org.ow2.proactive.resourcemanager.nodesource.policy.StaticPolicy)11 NodeException (org.objectweb.proactive.core.node.NodeException)9 DefaultInfrastructureManager (org.ow2.proactive.resourcemanager.nodesource.infrastructure.DefaultInfrastructureManager)9 RMDeployingNode (org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode)9 Criteria (org.ow2.proactive.utils.Criteria)8 IOException (java.io.IOException)7 LinkedList (java.util.LinkedList)7 RMNodeEvent (org.ow2.proactive.resourcemanager.common.event.RMNodeEvent)7 RMException (org.ow2.proactive.resourcemanager.exception.RMException)7 BooleanWrapper (org.objectweb.proactive.core.util.wrapper.BooleanWrapper)6 InetAddress (java.net.InetAddress)5 ArrayList (java.util.ArrayList)5