use of org.ow2.proactive.resourcemanager.nodesource.NodeSourceDescriptor in project scheduling by ow2-proactive.
the class RMCore method configureDeployedNodeSource.
private void configureDeployedNodeSource(String nodeSourceName, NodeSourceDescriptor nodeSourceDescriptor, NodeSource nodeSourceStub, NodeSourcePolicy nodeSourcePolicyStub) {
// Adding access to the core for node source and policy.
// In order to do it node source and policy active objects are added to the clients list.
// They will be removed from this list when node source is unregistered.
UniqueID nsId = Client.getId(nodeSourceStub);
UniqueID policyId = Client.getId(nodeSourcePolicyStub);
if (nsId == null || policyId == null) {
throw new IllegalStateException("Cannot register the node source");
}
BooleanWrapper result = nodeSourceStub.activate();
if (!result.getBooleanValue()) {
logger.error(NODE_SOURCE_STRING + nodeSourceName + " cannot be activated");
}
Client provider = nodeSourceDescriptor.getProvider();
Client nsService = new Client(provider.getSubject(), false);
Client policyService = new Client(provider.getSubject(), false);
nsService.setId(nsId);
policyService.setId(policyId);
RMCore.clients.put(nsId, nsService);
RMCore.clients.put(policyId, policyService);
}
use of org.ow2.proactive.resourcemanager.nodesource.NodeSourceDescriptor in project scheduling by ow2-proactive.
the class RMCore method recoverNodeSource.
/**
* Recreate a node source from a node source descriptor and deploy it if
* the node source descriptor specifies a deployed status. The flow is
* inspired from {@link #defineNodeSource} and {@link #deployNodeSource}
* but this version does not emit events as the recovered node sources are
* supposed to have been created and deployed already in the past.
*
* @param nodeSourceDescriptor the descriptor of the node source to recover
*/
protected void recoverNodeSource(NodeSourceDescriptor nodeSourceDescriptor) {
String nodeSourceName = nodeSourceDescriptor.getName();
NodeSource nodeSource = this.createNodeSourceInstance(nodeSourceDescriptor);
this.definedNodeSources.put(nodeSourceDescriptor.getName(), nodeSource);
if (nodeSourceDescriptor.getStatus().equals(NodeSourceStatus.NODES_DEPLOYED)) {
NodeSource nodeSourceToDeploy = this.createNodeSourceInstance(nodeSourceDescriptor);
boolean recoverNodes = false;
if (this.isNodeRecoveryEnabledForNodeSource(nodeSourceToDeploy)) {
recoverNodes = this.nodesRecoveryManager.recoverFullyDeployedInfrastructureOrReset(nodeSourceName, nodeSourceToDeploy, nodeSourceDescriptor);
}
NodeSourcePolicy nodeSourcePolicyStub = this.createNodeSourcePolicyActivity(nodeSourceDescriptor, nodeSourceToDeploy);
NodeSource nodeSourceStub = this.createNodeSourceActivity(nodeSourceName, nodeSourceToDeploy);
if (recoverNodes) {
this.nodesRecoveryManager.recoverNodes(nodeSourceStub);
}
this.configureDeployedNodeSource(nodeSourceName, nodeSourceDescriptor, nodeSourceStub, nodeSourcePolicyStub);
this.deployedNodeSources.put(nodeSourceName, nodeSourceStub);
}
}
use of org.ow2.proactive.resourcemanager.nodesource.NodeSourceDescriptor in project scheduling by ow2-proactive.
the class RMCore method deployNodeSource.
/**
* {@inheritDoc}
*/
@Override
public BooleanWrapper deployNodeSource(String nodeSourceName) {
if (!this.deployedNodeSources.containsKey(nodeSourceName)) {
NodeSourceDescriptor nodeSourceDescriptor = this.retrieveNodeSourceDescriptorOrFail(nodeSourceName);
logger.info("Deploy node source " + nodeSourceName + REQUESTED_BY_STRING + this.caller.getName());
this.updateNodeSourceDescriptorWithStatusAndPersist(nodeSourceDescriptor, NodeSourceStatus.NODES_DEPLOYED);
NodeSource nodeSourceToDeploy = this.createNodeSourceInstance(nodeSourceDescriptor);
NodeSourcePolicy nodeSourcePolicyStub = this.createNodeSourcePolicyActivity(nodeSourceDescriptor, nodeSourceToDeploy);
NodeSource nodeSourceStub = this.createNodeSourceActivity(nodeSourceName, nodeSourceToDeploy);
this.configureDeployedNodeSource(nodeSourceName, nodeSourceDescriptor, nodeSourceStub, nodeSourcePolicyStub);
this.deployedNodeSources.put(nodeSourceName, nodeSourceStub);
this.monitoring.nodeSourceEvent(new RMNodeSourceEvent(RMEventType.NODESOURCE_CREATED, this.caller.getName(), nodeSourceStub.getName(), nodeSourceStub.getDescription(), nodeSourceStub.getAdministrator().getName(), nodeSourceStub.getStatus().toString()));
logger.info(NODE_SOURCE_STRING + nodeSourceName + " has been successfully deployed");
}
return new BooleanWrapper(true);
}
use of org.ow2.proactive.resourcemanager.nodesource.NodeSourceDescriptor in project scheduling by ow2-proactive.
the class RMCore method updateNodeSourceDescriptorWithStatusAndPersist.
private void updateNodeSourceDescriptorWithStatusAndPersist(NodeSourceDescriptor descriptor, NodeSourceStatus status) {
descriptor.setStatus(status);
NodeSourceData nodeSourceData = NodeSourceData.fromNodeSourceDescriptor(descriptor);
this.dbManager.updateNodeSource(nodeSourceData);
}
use of org.ow2.proactive.resourcemanager.nodesource.NodeSourceDescriptor in project scheduling by ow2-proactive.
the class RMCore method persistNodeSourceAndGetDescriptor.
private NodeSourceDescriptor persistNodeSourceAndGetDescriptor(String nodeSourceName, String infrastructureType, Object[] infraParams, String policyType, Object[] policyParams, boolean nodesRecoverable) {
List<Serializable> serializableInfraParams = this.getSerializableParamsOrFail(infraParams);
List<Serializable> serializablePolicyParams = this.getSerializableParamsOrFail(policyParams);
NodeSourceData persistedNodeSource = new NodeSourceData(nodeSourceName, infrastructureType, serializableInfraParams, policyType, serializablePolicyParams, this.caller, nodesRecoverable, NodeSourceStatus.NODES_UNDEPLOYED);
boolean success = this.dbManager.addNodeSource(persistedNodeSource);
if (!success) {
this.dbManager.removeNodeSource(nodeSourceName);
}
return persistedNodeSource.toNodeSourceDescriptor();
}
Aggregations