refs #521: Support Unscheduling of repetitive task on SmartExecutor
https://support.d4science.org/issues/521 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/vre-management/smart-executor@119049 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
c6df0384ca
commit
5ca1a0b641
6
.project
6
.project
|
@ -30,6 +30,11 @@
|
||||||
<arguments>
|
<arguments>
|
||||||
</arguments>
|
</arguments>
|
||||||
</buildCommand>
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
</buildSpec>
|
</buildSpec>
|
||||||
<natures>
|
<natures>
|
||||||
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
|
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
|
||||||
|
@ -38,5 +43,6 @@
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||||
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||||
|
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|
|
@ -35,7 +35,8 @@ import org.gcube.smartgears.context.application.ApplicationContext;
|
||||||
import org.gcube.smartgears.handlers.application.ApplicationLifecycleEvent;
|
import org.gcube.smartgears.handlers.application.ApplicationLifecycleEvent;
|
||||||
import org.gcube.smartgears.handlers.application.ApplicationLifecycleHandler;
|
import org.gcube.smartgears.handlers.application.ApplicationLifecycleHandler;
|
||||||
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
|
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
|
||||||
import org.gcube.vremanagement.executor.configuration.jsonbased.FileConfiguredTasks;
|
import org.gcube.vremanagement.executor.configuration.LaunchConfiguration;
|
||||||
|
import org.gcube.vremanagement.executor.configuration.jsonbased.FileLaunchConfiguration;
|
||||||
import org.gcube.vremanagement.executor.persistence.SmartExecutorPersistenceConnector;
|
import org.gcube.vremanagement.executor.persistence.SmartExecutorPersistenceConnector;
|
||||||
import org.gcube.vremanagement.executor.plugin.PluginDeclaration;
|
import org.gcube.vremanagement.executor.plugin.PluginDeclaration;
|
||||||
import org.gcube.vremanagement.executor.pluginmanager.PluginManager;
|
import org.gcube.vremanagement.executor.pluginmanager.PluginManager;
|
||||||
|
@ -65,7 +66,7 @@ public class SmartExecutorInitalizator extends ApplicationLifecycleHandler {
|
||||||
/**
|
/**
|
||||||
* The application context
|
* The application context
|
||||||
*/
|
*/
|
||||||
protected static ApplicationContext ctx;
|
public static ApplicationContext ctx;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the Smart executor Scheduler used for task execution
|
* the Smart executor Scheduler used for task execution
|
||||||
|
@ -73,13 +74,13 @@ public class SmartExecutorInitalizator extends ApplicationLifecycleHandler {
|
||||||
protected static SmartExecutorScheduler smartExecutorScheduler;
|
protected static SmartExecutorScheduler smartExecutorScheduler;
|
||||||
|
|
||||||
|
|
||||||
protected static FileConfiguredTasks configuredTasks;
|
protected static LaunchConfiguration launchConfiguration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the configuredTasks
|
* @return the configuredTasks
|
||||||
*/
|
*/
|
||||||
public static FileConfiguredTasks getConfiguredTasks() {
|
public static LaunchConfiguration getConfiguredTasks() {
|
||||||
return configuredTasks;
|
return launchConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -290,8 +291,8 @@ public class SmartExecutorInitalizator extends ApplicationLifecycleHandler {
|
||||||
|
|
||||||
smartExecutorScheduler = SmartExecutorScheduler.getInstance();
|
smartExecutorScheduler = SmartExecutorScheduler.getInstance();
|
||||||
|
|
||||||
// checking if there are old unpublished ServiceEndpoint related to this
|
// Checking if there are old unpublished ServiceEndpoints related to
|
||||||
// vHN and try to unpublish them
|
// this vHN and trying to unpublish them
|
||||||
List<String> scopes = getScopes(ctx);
|
List<String> scopes = getScopes(ctx);
|
||||||
|
|
||||||
for(String scope : scopes){
|
for(String scope : scopes){
|
||||||
|
@ -337,15 +338,6 @@ public class SmartExecutorInitalizator extends ApplicationLifecycleHandler {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
try {
|
|
||||||
SmartExecutorPersistenceConnector persistenceConnector = new JDBCPersistenceConnector(ctx.persistence().location());
|
|
||||||
SmartExecutorPersistenceConnector.setPersistenceConnector(persistenceConnector);
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("Unable to initialize JDBCPersistenceConnector as PersistenceConnector. Trying to use the Default", e);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
SmartExecutorPersistenceConnector.getPersistenceConnector();
|
SmartExecutorPersistenceConnector.getPersistenceConnector();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -360,8 +352,12 @@ public class SmartExecutorInitalizator extends ApplicationLifecycleHandler {
|
||||||
|
|
||||||
logger.trace("Going to Run Configured Tasks");
|
logger.trace("Going to Run Configured Tasks");
|
||||||
try {
|
try {
|
||||||
configuredTasks = new FileConfiguredTasks(ctx.persistence().location());
|
launchConfiguration = new FileLaunchConfiguration();
|
||||||
List<LaunchParameter> configuredTaskList = configuredTasks.getConfiguredTasks();
|
List<LaunchParameter> configuredTaskList = launchConfiguration.getAvailableScheduledTasks();
|
||||||
|
|
||||||
|
// TODO review this
|
||||||
|
// Get the launch that will start before the next time the scheduled
|
||||||
|
// internal thread will newly analyze the scheduling situation
|
||||||
|
|
||||||
SmartExecutorImpl smartExecutorImpl = new SmartExecutorImpl();
|
SmartExecutorImpl smartExecutorImpl = new SmartExecutorImpl();
|
||||||
for(LaunchParameter parameter : configuredTaskList){
|
for(LaunchParameter parameter : configuredTaskList){
|
||||||
|
|
|
@ -14,10 +14,40 @@ import org.gcube.vremanagement.executor.exception.SchedulePersistenceException;
|
||||||
*/
|
*/
|
||||||
public interface LaunchConfiguration {
|
public interface LaunchConfiguration {
|
||||||
|
|
||||||
public List<LaunchParameter> getScheduledLaunch() throws SchedulePersistenceException;
|
/**
|
||||||
|
* Retrieve from the #SmartExecutorPersistenceConnector the orphaned
|
||||||
|
* Scheduled tasks
|
||||||
|
* @return the list of orphaned Scheduled
|
||||||
|
* @throws SchedulePersistenceException if fails
|
||||||
|
*/
|
||||||
|
public List<LaunchParameter> getAvailableScheduledTasks() throws SchedulePersistenceException;
|
||||||
|
|
||||||
public void addLaunch(LaunchParameter parameter) throws SchedulePersistenceException;
|
/**
|
||||||
|
*
|
||||||
|
* @param parameter
|
||||||
|
* @throws SchedulePersistenceException
|
||||||
|
*/
|
||||||
|
public void addScheduledTask(LaunchParameter parameter) throws SchedulePersistenceException;
|
||||||
|
|
||||||
public void removeLaunch(LaunchParameter parameter)throws SchedulePersistenceException;
|
/**
|
||||||
|
*
|
||||||
|
* @param parameter
|
||||||
|
* @throws SchedulePersistenceException
|
||||||
|
*/
|
||||||
|
public void reserveScheduledTask(LaunchParameter parameter) throws SchedulePersistenceException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param parameter
|
||||||
|
* @throws SchedulePersistenceException
|
||||||
|
*/
|
||||||
|
public void removeScheduledTask(LaunchParameter parameter)throws SchedulePersistenceException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param parameter
|
||||||
|
* @throws SchedulePersistenceException
|
||||||
|
*/
|
||||||
|
public void releaseScheduledTask(LaunchParameter parameter) throws SchedulePersistenceException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.vremanagement.executor.configuration;
|
||||||
|
|
||||||
|
import org.gcube.vremanagement.executor.configuration.jsonbased.FileLaunchConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class LaunchConfigurationFactory {
|
||||||
|
|
||||||
|
public static LaunchConfiguration getLaunchConfiguration() throws Exception {
|
||||||
|
return new FileLaunchConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.gcube.vremanagement.executor.SmartExecutorInitalizator;
|
||||||
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
|
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
|
||||||
import org.gcube.vremanagement.executor.api.types.Scheduling;
|
import org.gcube.vremanagement.executor.api.types.Scheduling;
|
||||||
import org.gcube.vremanagement.executor.configuration.LaunchConfiguration;
|
import org.gcube.vremanagement.executor.configuration.LaunchConfiguration;
|
||||||
|
@ -27,12 +28,12 @@ import org.slf4j.LoggerFactory;
|
||||||
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class FileConfiguredTasks implements LaunchConfiguration {
|
public class FileLaunchConfiguration implements LaunchConfiguration {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logger
|
* Logger
|
||||||
*/
|
*/
|
||||||
private static Logger logger = LoggerFactory.getLogger(FileConfiguredTasks.class);
|
private static Logger logger = LoggerFactory.getLogger(FileLaunchConfiguration.class);
|
||||||
|
|
||||||
protected String configurationFileLocation;
|
protected String configurationFileLocation;
|
||||||
protected List<LaunchParameter> configuredTasks;
|
protected List<LaunchParameter> configuredTasks;
|
||||||
|
@ -40,8 +41,11 @@ public class FileConfiguredTasks implements LaunchConfiguration {
|
||||||
|
|
||||||
public static final String CONFIG_TASK_FILENAME = "definedTasks.json";
|
public static final String CONFIG_TASK_FILENAME = "definedTasks.json";
|
||||||
|
|
||||||
|
public FileLaunchConfiguration() throws Exception {
|
||||||
|
this(SmartExecutorInitalizator.ctx.persistence().location());
|
||||||
|
}
|
||||||
|
|
||||||
public FileConfiguredTasks(String location) throws IOException, JSONException {
|
public FileLaunchConfiguration(String location) throws IOException, JSONException {
|
||||||
this.configurationFileLocation = location;
|
this.configurationFileLocation = location;
|
||||||
this.configuredTasks = new ArrayList<LaunchParameter>();
|
this.configuredTasks = new ArrayList<LaunchParameter>();
|
||||||
this.configuredTasks = retriveConfiguredTask();
|
this.configuredTasks = retriveConfiguredTask();
|
||||||
|
@ -98,7 +102,7 @@ public class FileConfiguredTasks implements LaunchConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void addLaunch(LaunchParameter parameter) throws SchedulePersistenceException{
|
public synchronized void addScheduledTask(LaunchParameter parameter) throws SchedulePersistenceException{
|
||||||
try {
|
try {
|
||||||
addLaunch(new JSONLaunchParameter(parameter));
|
addLaunch(new JSONLaunchParameter(parameter));
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
|
@ -115,8 +119,7 @@ public class FileConfiguredTasks implements LaunchConfiguration {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void releaseLaunch(LaunchParameter parameter)
|
||||||
public void removeLaunch(LaunchParameter parameter)
|
|
||||||
throws SchedulePersistenceException {
|
throws SchedulePersistenceException {
|
||||||
try {
|
try {
|
||||||
removeLaunch(new JSONLaunchParameter(parameter));
|
removeLaunch(new JSONLaunchParameter(parameter));
|
||||||
|
@ -131,11 +134,6 @@ public class FileConfiguredTasks implements LaunchConfiguration {
|
||||||
writeOnConfigurationFile();
|
writeOnConfigurationFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<LaunchParameter> getScheduledLaunch()
|
|
||||||
throws SchedulePersistenceException {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the configuredTasks
|
* @return the configuredTasks
|
||||||
|
@ -151,4 +149,44 @@ public class FileConfiguredTasks implements LaunchConfiguration {
|
||||||
this.configuredTasks = configuredTasks;
|
this.configuredTasks = configuredTasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#getAvailableScheduledTasks()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<LaunchParameter> getAvailableScheduledTasks()
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#reserveScheduledTask(org.gcube.vremanagement.executor.api.types.LaunchParameter)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void reserveScheduledTask(LaunchParameter parameter)
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#removeScheduledTask(org.gcube.vremanagement.executor.api.types.LaunchParameter)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void removeScheduledTask(LaunchParameter parameter)
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#releaseScheduledTask(org.gcube.vremanagement.executor.api.types.LaunchParameter)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void releaseScheduledTask(LaunchParameter parameter)
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
package org.gcube.vremanagement.executor.persistence;
|
package org.gcube.vremanagement.executor.persistence;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.codehaus.jackson.JsonNode;
|
import org.codehaus.jackson.JsonNode;
|
||||||
|
@ -19,7 +20,10 @@ import org.ektorp.http.StdHttpClient;
|
||||||
import org.ektorp.http.StdHttpClient.Builder;
|
import org.ektorp.http.StdHttpClient.Builder;
|
||||||
import org.ektorp.impl.StdCouchDbConnector;
|
import org.ektorp.impl.StdCouchDbConnector;
|
||||||
import org.ektorp.impl.StdCouchDbInstance;
|
import org.ektorp.impl.StdCouchDbInstance;
|
||||||
|
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
|
||||||
|
import org.gcube.vremanagement.executor.configuration.LaunchConfiguration;
|
||||||
import org.gcube.vremanagement.executor.exception.PluginStateNotRetrievedException;
|
import org.gcube.vremanagement.executor.exception.PluginStateNotRetrievedException;
|
||||||
|
import org.gcube.vremanagement.executor.exception.SchedulePersistenceException;
|
||||||
import org.gcube.vremanagement.executor.plugin.PluginState;
|
import org.gcube.vremanagement.executor.plugin.PluginState;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -28,7 +32,7 @@ import org.slf4j.LoggerFactory;
|
||||||
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class CouchDBPersistenceConnector extends SmartExecutorPersistenceConnector {
|
public class CouchDBPersistenceConnector extends SmartExecutorPersistenceConnector implements LaunchConfiguration {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(CouchDBPersistenceConnector.class);
|
private static final Logger logger = LoggerFactory.getLogger(CouchDBPersistenceConnector.class);
|
||||||
|
|
||||||
|
@ -195,4 +199,55 @@ public class CouchDBPersistenceConnector extends SmartExecutorPersistenceConnect
|
||||||
|
|
||||||
return pluginState;
|
return pluginState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#getAvailableScheduledTasks()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<LaunchParameter> getAvailableScheduledTasks()
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#addScheduledTask(org.gcube.vremanagement.executor.api.types.LaunchParameter)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void addScheduledTask(LaunchParameter parameter)
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#reserveScheduledTask(org.gcube.vremanagement.executor.api.types.LaunchParameter)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void reserveScheduledTask(LaunchParameter parameter)
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#removeScheduledTask(org.gcube.vremanagement.executor.api.types.LaunchParameter)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void removeScheduledTask(LaunchParameter parameter)
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.vremanagement.executor.configuration.LaunchConfiguration#releaseScheduledTask(org.gcube.vremanagement.executor.api.types.LaunchParameter)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void releaseScheduledTask(LaunchParameter parameter)
|
||||||
|
throws SchedulePersistenceException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.gcube.vremanagement.executor.SmartExecutorInitalizator;
|
||||||
import org.gcube.vremanagement.executor.exception.PluginStateNotRetrievedException;
|
import org.gcube.vremanagement.executor.exception.PluginStateNotRetrievedException;
|
||||||
import org.gcube.vremanagement.executor.plugin.PluginState;
|
import org.gcube.vremanagement.executor.plugin.PluginState;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -18,14 +19,14 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
|
* INTERNAL USE ONLY for testing purpose
|
||||||
*/
|
*/
|
||||||
public class JDBCPersistenceConnector extends SmartExecutorPersistenceConnector {
|
class JDBCPersistenceConnector extends SmartExecutorPersistenceConnector {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logger
|
* Logger
|
||||||
*/
|
*/
|
||||||
private static Logger logger = LoggerFactory.getLogger(JDBCPersistenceConnector.class);
|
private static Logger logger = LoggerFactory.getLogger(JDBCPersistenceConnector.class);
|
||||||
|
|
||||||
protected Connection connection;
|
protected Connection connection;
|
||||||
|
|
||||||
public static final String driverClass = "org.h2.Driver";
|
public static final String driverClass = "org.h2.Driver";
|
||||||
|
@ -45,6 +46,10 @@ public class JDBCPersistenceConnector extends SmartExecutorPersistenceConnector
|
||||||
|
|
||||||
public final static String CATALINA_HOME = "CATALINA_HOME";
|
public final static String CATALINA_HOME = "CATALINA_HOME";
|
||||||
|
|
||||||
|
public JDBCPersistenceConnector() throws Exception {
|
||||||
|
this(SmartExecutorInitalizator.ctx.persistence().location());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This constructor is used to provide a location where creating persistence
|
* This constructor is used to provide a location where creating persistence
|
||||||
* files
|
* files
|
||||||
|
|
|
@ -26,7 +26,8 @@ import org.gcube.resources.discovery.icclient.ICFactory;
|
||||||
public class SmartExecutorPersistenceConfiguration {
|
public class SmartExecutorPersistenceConfiguration {
|
||||||
|
|
||||||
public final String SERVICE_ENDPOINT_CATEGORY = "VREManagement";
|
public final String SERVICE_ENDPOINT_CATEGORY = "VREManagement";
|
||||||
public final String SERVICE_ENDPOINT_NAME = "SmartExecutor";
|
//public final String SERVICE_ENDPOINT_NAME = "SmartExecutor";
|
||||||
|
public final String SERVICE_ENDPOINT_NAME = "SmartExecutorPersistenceConfiguration";
|
||||||
|
|
||||||
protected static final String PERSISTENCE_CLASS_NAME = "persistenceClassName";
|
protected static final String PERSISTENCE_CLASS_NAME = "persistenceClassName";
|
||||||
protected static final String TARGET_SCOPE = "targetScope";
|
protected static final String TARGET_SCOPE = "targetScope";
|
||||||
|
|
|
@ -133,7 +133,7 @@ public class SmartExecutorScheduler {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
SmartExecutorInitalizator.getConfiguredTasks().addLaunch(parameter);
|
SmartExecutorInitalizator.getConfiguredTasks().addScheduledTask(parameter);
|
||||||
} catch (SchedulePersistenceException e) {
|
} catch (SchedulePersistenceException e) {
|
||||||
logger.error("Unable to persist the scheduling", e.getCause());
|
logger.error("Unable to persist the scheduling", e.getCause());
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ import org.acme.HelloWorldPlugin;
|
||||||
import org.acme.HelloWorldPluginDeclaration;
|
import org.acme.HelloWorldPluginDeclaration;
|
||||||
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
|
import org.gcube.vremanagement.executor.api.types.LaunchParameter;
|
||||||
import org.gcube.vremanagement.executor.api.types.Scheduling;
|
import org.gcube.vremanagement.executor.api.types.Scheduling;
|
||||||
import org.gcube.vremanagement.executor.configuration.jsonbased.FileConfiguredTasks;
|
import org.gcube.vremanagement.executor.configuration.jsonbased.FileLaunchConfiguration;
|
||||||
import org.gcube.vremanagement.executor.configuration.jsonbased.JSONLaunchParameter;
|
import org.gcube.vremanagement.executor.configuration.jsonbased.JSONLaunchParameter;
|
||||||
import org.gcube.vremanagement.executor.exception.SchedulePersistenceException;
|
import org.gcube.vremanagement.executor.exception.SchedulePersistenceException;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
@ -29,7 +29,7 @@ public class ConfiguredTasksTest {
|
||||||
|
|
||||||
public static final String TEST = "test";
|
public static final String TEST = "test";
|
||||||
|
|
||||||
public void checkOriginal(FileConfiguredTasks parser, int size){
|
public void checkOriginal(FileLaunchConfiguration parser, int size){
|
||||||
List<LaunchParameter> configuredTasks = parser.getConfiguredTasks();
|
List<LaunchParameter> configuredTasks = parser.getConfiguredTasks();
|
||||||
Assert.assertEquals(size, configuredTasks.size());
|
Assert.assertEquals(size, configuredTasks.size());
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ public class ConfiguredTasksTest {
|
||||||
public void testLaunchConfiguredTask() throws SchedulePersistenceException, IOException, JSONException, ParseException {
|
public void testLaunchConfiguredTask() throws SchedulePersistenceException, IOException, JSONException, ParseException {
|
||||||
String location = new File(".").getAbsolutePath();
|
String location = new File(".").getAbsolutePath();
|
||||||
location = location + "/src/test/resources";
|
location = location + "/src/test/resources";
|
||||||
FileConfiguredTasks parser = new FileConfiguredTasks(location);
|
FileLaunchConfiguration parser = new FileLaunchConfiguration(location);
|
||||||
|
|
||||||
checkOriginal(parser, 3);
|
checkOriginal(parser, 3);
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ public class ConfiguredTasksTest {
|
||||||
JSONLaunchParameter added = new JSONLaunchParameter(HelloWorldPluginDeclaration.NAME, inputs, true);
|
JSONLaunchParameter added = new JSONLaunchParameter(HelloWorldPluginDeclaration.NAME, inputs, true);
|
||||||
parser.addLaunch(added);
|
parser.addLaunch(added);
|
||||||
|
|
||||||
parser = new FileConfiguredTasks(location);
|
parser = new FileLaunchConfiguration(location);
|
||||||
checkOriginal(parser, 4);
|
checkOriginal(parser, 4);
|
||||||
|
|
||||||
List<LaunchParameter> configuredTasks = parser.getConfiguredTasks();
|
List<LaunchParameter> configuredTasks = parser.getConfiguredTasks();
|
||||||
|
@ -92,9 +92,9 @@ public class ConfiguredTasksTest {
|
||||||
Assert.assertEquals(null, parameter.getScheduling());
|
Assert.assertEquals(null, parameter.getScheduling());
|
||||||
Assert.assertEquals(true, parameter.isPersist());
|
Assert.assertEquals(true, parameter.isPersist());
|
||||||
|
|
||||||
parser.removeLaunch(parameter);
|
parser.releaseLaunch(parameter);
|
||||||
|
|
||||||
parser = new FileConfiguredTasks(location);
|
parser = new FileLaunchConfiguration(location);
|
||||||
checkOriginal(parser, 3);
|
checkOriginal(parser, 3);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue