Search in sources :

Example 21 with RMNodeSourceEvent

use of org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent in project scheduling by ow2-proactive.

the class RMCore method shutDownNodeSourceIfDeployed.

private void shutDownNodeSourceIfDeployed(String nodeSourceName, boolean preempt) {
    if (this.deployedNodeSources.containsKey(nodeSourceName)) {
        NodeSource nodeSourceToRemove = this.deployedNodeSources.get(nodeSourceName);
        this.removeAllNodes(nodeSourceName, preempt);
        NodeSourceStatus status = nodeSourceToRemove.getStatus();
        this.nodeSourceUnregister(nodeSourceName, status, new RMNodeSourceEvent(RMEventType.NODESOURCE_SHUTDOWN, this.caller.getName(), nodeSourceName, nodeSourceToRemove.getDescription(), nodeSourceToRemove.getAdditionalInformation(), nodeSourceToRemove.getAdministrator().getName(), status.toString()));
        // asynchronously delegate the removal process to the node source
        nodeSourceToRemove.shutdown(this.caller);
    }
}
Also used : NodeSource(org.ow2.proactive.resourcemanager.nodesource.NodeSource) RMNodeSourceEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent) NodeSourceStatus(org.ow2.proactive.resourcemanager.nodesource.NodeSourceStatus)

Example 22 with RMNodeSourceEvent

use of org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent in project scheduling by ow2-proactive.

the class RMCore method getRMInitialState.

/**
 * Builds and returns a snapshot of RMCore's current state. Initial state
 * must be understood as a new Monitor point of view. A new monitor start to
 * receive RMCore events, so must be informed of the current state of the
 * Core at the beginning of monitoring. The monitor is built in three parts
 * first with all the nodes knows by the RMCore, then with all deploying
 * nodes known by the deployed node sources and then with all the defined
 * node sources.
 *
 * @return RMInitialState containing nodes and nodeSources of the RMCore.
 */
public RMInitialState getRMInitialState() {
    final Map<String, RMNodeEvent> nodeEvents = this.allNodes.values().stream().map(RMNode::createNodeEvent).collect(Collectors.toMap(RMNodeEvent::getNodeUrl, event -> event));
    for (NodeSource source : this.deployedNodeSources.values()) {
        for (RMDeployingNode node : source.getDeployingAndLostNodes()) {
            final RMNodeEvent nodeEvent = node.createNodeEvent();
            nodeEvents.put(nodeEvent.getNodeUrl(), nodeEvent);
        }
    }
    final List<RMNodeSourceEvent> nodeSourceEvents = new ArrayList<>(this.definedNodeSources.values().stream().map(ns -> {
        if (deployedNodeSources.containsKey(ns.getName())) {
            return PAFuture.getFutureValue(deployedNodeSources.get(ns.getName()).createNodeSourceEvent());
        } else {
            return ns.createNodeSourceEvent();
        }
    }).collect(Collectors.toList()));
    long eventCounter = 0;
    for (RMNodeSourceEvent nodeSourceEvent : nodeSourceEvents) {
        nodeSourceEvent.setCounter(eventCounter++);
    }
    for (RMNodeEvent nodeEvent : nodeEvents.values()) {
        nodeEvent.setCounter(eventCounter++);
    }
    final RMInitialState rmInitialState = new RMInitialState();
    rmInitialState.addAll(nodeEvents.values());
    rmInitialState.addAll(nodeSourceEvents);
    return rmInitialState;
}
Also used : Arrays(java.util.Arrays) NodeSet(org.ow2.proactive.utils.NodeSet) ScriptResult(org.ow2.proactive.scripting.ScriptResult) SelectionScript(org.ow2.proactive.scripting.SelectionScript) ConfigurableField(org.ow2.proactive.resourcemanager.nodesource.common.ConfigurableField) RMAuthenticationImpl(org.ow2.proactive.resourcemanager.authentication.RMAuthenticationImpl) Matcher(java.util.regex.Matcher) Body(org.objectweb.proactive.Body) NodeSource(org.ow2.proactive.resourcemanager.nodesource.NodeSource) DefaultInfrastructureManager(org.ow2.proactive.resourcemanager.nodesource.infrastructure.DefaultInfrastructureManager) ImmediateService(org.objectweb.proactive.annotation.ImmediateService) Map(java.util.Map) Script(org.ow2.proactive.scripting.Script) RMInitialState(org.ow2.proactive.resourcemanager.common.event.RMInitialState) RMNodeEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeEvent) RMJMXHelper(org.ow2.proactive.resourcemanager.core.jmx.RMJMXHelper) NodeSourceStatus(org.ow2.proactive.resourcemanager.nodesource.NodeSourceStatus) RMState(org.ow2.proactive.resourcemanager.common.RMState) Set(java.util.Set) InitActive(org.objectweb.proactive.InitActive) NodeState(org.ow2.proactive.resourcemanager.common.NodeState) RMException(org.ow2.proactive.resourcemanager.exception.RMException) Serializable(java.io.Serializable) RMMonitoringImpl(org.ow2.proactive.resourcemanager.frontend.RMMonitoringImpl) CountDownLatch(java.util.concurrent.CountDownLatch) SimpleScript(org.ow2.proactive.scripting.SimpleScript) NodeException(org.objectweb.proactive.core.node.NodeException) Permission(java.security.Permission) Predicate(com.google.common.base.Predicate) RMDeployingNode(org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode) ScriptException(org.ow2.proactive.scripting.ScriptException) RMEvent(org.ow2.proactive.resourcemanager.common.event.RMEvent) Service(org.objectweb.proactive.Service) StaticPolicy(org.ow2.proactive.resourcemanager.nodesource.policy.StaticPolicy) PluginNotFoundException(org.ow2.proactive.resourcemanager.nodesource.PluginNotFoundException) UserData(org.ow2.proactive.authentication.UserData) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) NodeSourceDescriptor(org.ow2.proactive.resourcemanager.nodesource.NodeSourceDescriptor) RMNodeConfigurator(org.ow2.proactive.resourcemanager.nodesource.RMNodeConfigurator) Client(org.ow2.proactive.resourcemanager.authentication.Client) TopologyException(org.ow2.proactive.resourcemanager.frontend.topology.TopologyException) RMEventType(org.ow2.proactive.resourcemanager.common.event.RMEventType) Criteria(org.ow2.proactive.utils.Criteria) NSAdminPermission(org.ow2.proactive.permissions.NSAdminPermission) Files(java.nio.file.Files) NodeUserAllPermission(org.ow2.proactive.permissions.NodeUserAllPermission) Node(org.objectweb.proactive.core.node.Node) StubObject(org.objectweb.proactive.core.mop.StubObject) File(java.io.File) InfrastructureManagerFactory(org.ow2.proactive.resourcemanager.nodesource.infrastructure.InfrastructureManagerFactory) TopologyManager(org.ow2.proactive.resourcemanager.selection.topology.TopologyManager) Paths(java.nio.file.Paths) StringWrapper(org.objectweb.proactive.core.util.wrapper.StringWrapper) PluginDescriptor(org.ow2.proactive.resourcemanager.nodesource.common.PluginDescriptor) RunActive(org.objectweb.proactive.RunActive) InfrastructureManager(org.ow2.proactive.resourcemanager.nodesource.infrastructure.InfrastructureManager) RMNodeData(org.ow2.proactive.resourcemanager.db.RMNodeData) ActiveObjectCreationException(org.objectweb.proactive.ActiveObjectCreationException) PAFuture(org.objectweb.proactive.api.PAFuture) URISyntaxException(java.net.URISyntaxException) ClientPinger(org.ow2.proactive.resourcemanager.utils.ClientPinger) LocalBodyStore(org.objectweb.proactive.core.body.LocalBodyStore) IdentityPrincipal(org.ow2.proactive.authentication.principals.IdentityPrincipal) ProbablisticSelectionManager(org.ow2.proactive.resourcemanager.selection.statistics.ProbablisticSelectionManager) MethodCallPermission(org.ow2.proactive.permissions.MethodCallPermission) Logger(org.apache.log4j.Logger) TopologyDescriptor(org.ow2.proactive.topology.descriptor.TopologyDescriptor) ThreadDumpNotAccessibleException(org.ow2.proactive.resourcemanager.rmnode.ThreadDumpNotAccessibleException) RMStateNodeUrls(org.ow2.proactive.resourcemanager.common.RMStateNodeUrls) SelectionManager(org.ow2.proactive.resourcemanager.selection.SelectionManager) URI(java.net.URI) ResourceManager(org.ow2.proactive.resourcemanager.frontend.ResourceManager) Topology(org.ow2.proactive.resourcemanager.frontend.topology.Topology) Function(com.google.common.base.Function) ImmutableSet(com.google.common.collect.ImmutableSet) RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) Request(org.objectweb.proactive.core.body.request.Request) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) RMNodeHistory(org.ow2.proactive.resourcemanager.common.event.RMNodeHistory) Collectors(java.util.stream.Collectors) List(java.util.List) ActiveObject(org.objectweb.proactive.extensions.annotation.ActiveObject) NodesHouseKeepingService(org.ow2.proactive.resourcemanager.housekeeping.NodesHouseKeepingService) Entry(java.util.Map.Entry) NodesRecoveryManager(org.ow2.proactive.resourcemanager.core.recovery.NodesRecoveryManager) Pattern(java.util.regex.Pattern) RMDBManager(org.ow2.proactive.resourcemanager.db.RMDBManager) RMNodeSourceEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent) RMMonitoring(org.ow2.proactive.resourcemanager.frontend.RMMonitoring) UniqueID(org.objectweb.proactive.core.UniqueID) RMCoreAllPermission(org.ow2.proactive.permissions.RMCoreAllPermission) UserNamePrincipal(org.ow2.proactive.authentication.principals.UserNamePrincipal) TargetType(org.ow2.proactive.resourcemanager.utils.TargetType) BooleanWrapper(org.objectweb.proactive.core.util.wrapper.BooleanWrapper) NodeSourcePolicy(org.ow2.proactive.resourcemanager.nodesource.policy.NodeSourcePolicy) HashMap(java.util.HashMap) AddingNodesException(org.ow2.proactive.resourcemanager.exception.AddingNodesException) NodeSourceConfiguration(org.ow2.proactive.resourcemanager.nodesource.common.NodeSourceConfiguration) PAActiveObject(org.objectweb.proactive.api.PAActiveObject) NodeSourceData(org.ow2.proactive.resourcemanager.db.NodeSourceData) HashSet(java.util.HashSet) UserHistory(org.ow2.proactive.resourcemanager.core.history.UserHistory) NotConnectedException(org.ow2.proactive.resourcemanager.exception.NotConnectedException) LinkedList(java.util.LinkedList) RMAccountsManager(org.ow2.proactive.resourcemanager.core.account.RMAccountsManager) RMConstants(org.ow2.proactive.resourcemanager.common.RMConstants) IntWrapper(org.objectweb.proactive.core.util.wrapper.IntWrapper) ProActiveException(org.objectweb.proactive.core.ProActiveException) PAResourceManagerProperties(org.ow2.proactive.resourcemanager.core.properties.PAResourceManagerProperties) NodeHistory(org.ow2.proactive.resourcemanager.core.history.NodeHistory) RMNodeHelper(org.ow2.proactive.resourcemanager.utils.RMNodeHelper) AbstractMap(java.util.AbstractMap) ClientsPolicy(org.ow2.proactive.policy.ClientsPolicy) NodeSourcePolicyFactory(org.ow2.proactive.resourcemanager.nodesource.policy.NodeSourcePolicyFactory) PrincipalPermission(org.ow2.proactive.permissions.PrincipalPermission) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Collections(java.util.Collections) NodesCleaner(org.ow2.proactive.resourcemanager.cleaning.NodesCleaner) NodeSource(org.ow2.proactive.resourcemanager.nodesource.NodeSource) RMNodeSourceEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent) RMInitialState(org.ow2.proactive.resourcemanager.common.event.RMInitialState) ArrayList(java.util.ArrayList) RMDeployingNode(org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode) RMNodeEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeEvent)

Example 23 with RMNodeSourceEvent

use of org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent in project scheduling by ow2-proactive.

the class RMCore method removeDefinedNodeSource.

private void removeDefinedNodeSource(String nodeSourceName, NodeSource nodeSourceToRemove) {
    this.definedNodeSources.remove(nodeSourceName);
    this.dbManager.removeNodeSource(nodeSourceName);
    if (nodeSourceToRemove.getStatus().equals(NodeSourceStatus.NODES_UNDEPLOYED)) {
        logger.info(NODE_SOURCE_STRING + nodeSourceName + " has been successfully removed");
        // if the node source to remove is not deployed, we need to issue
        // the node source removed event right now, because we will not
        // receive it from the node source shutdown call back
        this.monitoring.nodeSourceEvent(new RMNodeSourceEvent(RMEventType.NODESOURCE_REMOVED, this.caller.getName(), nodeSourceToRemove.getName(), nodeSourceToRemove.getDescription(), nodeSourceToRemove.getAdditionalInformation(), nodeSourceToRemove.getAdministrator().getName(), nodeSourceToRemove.getStatus().toString()));
    }
}
Also used : RMNodeSourceEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent)

Example 24 with RMNodeSourceEvent

use of org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent in project scheduling by ow2-proactive.

the class RMCore method emitNodeSourceEvent.

private void emitNodeSourceEvent(NodeSource nodeSource, RMEventType eventType) {
    NodeSourceDescriptor descriptor = nodeSource.getDescriptor();
    this.monitoring.nodeSourceEvent(new RMNodeSourceEvent(eventType, this.caller.getName(), descriptor.getName(), nodeSource.getDescription(), nodeSource.getAdditionalInformation(), descriptor.getProvider().getName(), nodeSource.getStatus().toString()));
}
Also used : RMNodeSourceEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent) NodeSourceDescriptor(org.ow2.proactive.resourcemanager.nodesource.NodeSourceDescriptor)

Example 25 with RMNodeSourceEvent

use of org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent in project scheduling by ow2-proactive.

the class RMCore method undeployNodeSource.

/**
 * {@inheritDoc}
 */
public BooleanWrapper undeployNodeSource(String nodeSourceName, boolean preempt) {
    logger.info("Undeploy node source " + nodeSourceName + " with preempt=" + preempt + REQUESTED_BY_STRING + this.caller.getName());
    if (!this.definedNodeSources.containsKey(nodeSourceName)) {
        throw new IllegalArgumentException("Unknown node source " + nodeSourceName);
    }
    if (this.deployedNodeSources.containsKey(nodeSourceName)) {
        NodeSource nodeSourceToRemove = this.deployedNodeSources.get(nodeSourceName);
        this.caller.checkPermission(nodeSourceToRemove.getAdminPermission(), this.caller + " is not authorized to undeploy " + nodeSourceName, new RMCoreAllPermission(), new NSAdminPermission());
        nodeSourceToRemove.setStatus(NodeSourceStatus.NODES_UNDEPLOYED);
        this.removeAllNodes(nodeSourceName, preempt);
        this.updateNodeSourceDescriptorWithStatusAndPersist(this.definedNodeSources.get(nodeSourceName).getDescriptor(), NodeSourceStatus.NODES_UNDEPLOYED);
        this.nodeSourceUnregister(nodeSourceName, NodeSourceStatus.NODES_UNDEPLOYED, new RMNodeSourceEvent(RMEventType.NODESOURCE_SHUTDOWN, this.caller.getName(), nodeSourceName, nodeSourceToRemove.getDescription(), nodeSourceToRemove.getAdditionalInformation(), nodeSourceToRemove.getAdministrator().getName(), NodeSourceStatus.NODES_UNDEPLOYED.toString()));
        // asynchronously delegate the removal process to the node source
        nodeSourceToRemove.shutdown(this.caller);
    }
    return new BooleanWrapper(true);
}
Also used : NodeSource(org.ow2.proactive.resourcemanager.nodesource.NodeSource) RMCoreAllPermission(org.ow2.proactive.permissions.RMCoreAllPermission) NSAdminPermission(org.ow2.proactive.permissions.NSAdminPermission) RMNodeSourceEvent(org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent) BooleanWrapper(org.objectweb.proactive.core.util.wrapper.BooleanWrapper)

Aggregations

RMNodeSourceEvent (org.ow2.proactive.resourcemanager.common.event.RMNodeSourceEvent)24 RMMonitorEventReceiver (functionaltests.monitor.RMMonitorEventReceiver)14 BooleanWrapper (org.objectweb.proactive.core.util.wrapper.BooleanWrapper)8 RMTHelper (functionaltests.utils.RMTHelper)6 NodeSource (org.ow2.proactive.resourcemanager.nodesource.NodeSource)6 HashSet (java.util.HashSet)5 RMNodeEvent (org.ow2.proactive.resourcemanager.common.event.RMNodeEvent)5 TestSSHInfrastructureV2 (functionaltests.nodesource.TestSSHInfrastructureV2)3 Set (java.util.Set)3 NSAdminPermission (org.ow2.proactive.permissions.NSAdminPermission)3 RMCoreAllPermission (org.ow2.proactive.permissions.RMCoreAllPermission)3 ResourceManager (org.ow2.proactive.resourcemanager.frontend.ResourceManager)3 SSHInfrastructureV2 (org.ow2.proactive.resourcemanager.nodesource.infrastructure.SSHInfrastructureV2)3 StaticPolicy (org.ow2.proactive.resourcemanager.nodesource.policy.StaticPolicy)3 ImmutableSet (com.google.common.collect.ImmutableSet)2 File (java.io.File)2 Permission (java.security.Permission)2 List (java.util.List)2 Entry (java.util.Map.Entry)2 Node (org.objectweb.proactive.core.node.Node)2