diff --git a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/DataMinerAccessPoint.java b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/DataMinerAccessPoint.java index 44eb640..16ec2b0 100644 --- a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/DataMinerAccessPoint.java +++ b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/DataMinerAccessPoint.java @@ -17,6 +17,7 @@ import org.gcube.common.workspacetaskexecutor.shared.dataminer.TaskExecutionStat import org.gcube.common.workspacetaskexecutor.shared.exception.TaskErrorException; import org.gcube.common.workspacetaskexecutor.shared.exception.TaskNotExecutableException; import org.gcube.common.workspacetaskexecutor.util.Converter; +import org.gcube.common.workspacetaskexecutor.util.EncrypterUtil; import org.gcube.data.analysis.dataminermanagercl.server.DataMinerService; import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient; import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; @@ -122,20 +123,21 @@ public class DataMinerAccessPoint { /** * Do run task. * - * @param algConfiguration the alg configuration + * @param taskConfiguration the alg configuration * @return the task execution status * @throws TaskNotExecutableException the task not executable exception */ - public TaskExecutionStatus doRunTask(TaskConfiguration algConfiguration) throws TaskNotExecutableException{ + public TaskExecutionStatus doRunTask(TaskConfiguration taskConfiguration) throws TaskNotExecutableException{ Operator operator; SClient sClient; try { - sClient = dataMinerService.getClient(algConfiguration.getToken()); - operator = sClient.getOperatorById(algConfiguration.getTaskId()); + String token = EncrypterUtil.decryptString(taskConfiguration.getMaskedToken()); + sClient = dataMinerService.getClient(token); + operator = sClient.getOperatorById(taskConfiguration.getTaskId()); } catch (Exception e) { - String error = "Error on get Client or the Operator for id: "+algConfiguration.getTaskId(); + String error = "Error on get Client or the Operator for id: "+taskConfiguration.getTaskId(); logger.error(error, e); throw new TaskNotExecutableException(error); } @@ -146,11 +148,11 @@ public class DataMinerAccessPoint { } try { - addParametersToOperator(operator, algConfiguration.getMapParameters()); + addParametersToOperator(operator, taskConfiguration.getMapParameters()); logger.debug("Start Computation"); ComputationId computationId = sClient.startComputation(operator); logger.debug("Started ComputationId: " + computationId); - return getTaskStatus(algConfiguration, Converter.toDMComputationId(computationId)); + return getTaskStatus(taskConfiguration, Converter.toDMComputationId(computationId)); } catch (Exception e) { @@ -164,25 +166,34 @@ public class DataMinerAccessPoint { /** * Gets the task status. To monitor the task exection.. * - * @param algConfiguration the alg configuration + * @param taskConfiguration the alg configuration * @param taskComputation the task computation * @return the task status * @throws TaskErrorException the task error exception * @throws TaskNotExecutableException the task not executable exception */ - public TaskExecutionStatus getTaskStatus(TaskConfiguration algConfiguration, final TaskComputation taskComputation) throws TaskErrorException, TaskNotExecutableException{ + public TaskExecutionStatus getTaskStatus(TaskConfiguration taskConfiguration, final TaskComputation taskComputation) throws TaskErrorException, TaskNotExecutableException{ + + //TODO ??? + + TaskExecutionStatus theTaskStatus = getTask(taskConfiguration); + + if(theTaskStatus==null) + throw new TaskErrorException("No Task is running with the configuration: "+taskConfiguration.getConfigurationKey()); + SClient sClient; ComputationId computationId = Converter.toComputationId(taskComputation); try { - sClient = dataMinerService.getClient(algConfiguration.getToken()); + String token = EncrypterUtil.decryptString(taskConfiguration.getMaskedToken()); + sClient = dataMinerService.getClient(token); } catch (Exception e) { logger.error("Error on get DM client", e); throw new TaskErrorException("Error on getting DataMiner client, Try later"); } - TaskExecutionStatus taskExecutiontatus = new TaskExecutionStatus(algConfiguration, taskComputation); + TaskExecutionStatus taskExecutiontatus = new TaskExecutionStatus(taskConfiguration, taskComputation); logger.debug("Requesting operation progress"); ComputationStatus computationStatus = null; @@ -213,33 +224,33 @@ public class DataMinerAccessPoint { logger.debug("Operation "+TaskStatus.ACCEPTED); taskExecutiontatus.setStatus(TaskStatus.ACCEPTED); taskExecutiontatus.addLog("Status "+TaskStatus.ACCEPTED+": "+computationStatus.getMessage()); - saveTask(algConfiguration, taskExecutiontatus); + saveTask(taskConfiguration, taskExecutiontatus); break; case CANCELLED: logger.debug("Operation "+TaskStatus.CANCELLED); taskExecutiontatus.setStatus(TaskStatus.CANCELLED); taskExecutiontatus.addLog("Status "+TaskStatus.CANCELLED+": "+computationStatus.getMessage()); - saveTask(algConfiguration, taskExecutiontatus); + saveTask(taskConfiguration, taskExecutiontatus); break; case COMPLETE: logger.debug("Operation "+TaskStatus.COMPLETED); taskExecutiontatus.setStatus(TaskStatus.COMPLETED); taskExecutiontatus.addLog("Status "+TaskStatus.COMPLETED+": "+computationStatus.getMessage()); - saveTask(algConfiguration, taskExecutiontatus); + saveTask(taskConfiguration, taskExecutiontatus); break; case FAILED: logger.debug("Operation "+TaskStatus.FAILED); taskExecutiontatus.setStatus(TaskStatus.FAILED); taskExecutiontatus.setCurrentMessage(computationStatus.getError().getMessage()); taskExecutiontatus.addLog("Status "+TaskStatus.FAILED+": "+computationStatus.getMessage()); - saveTask(algConfiguration, taskExecutiontatus); + saveTask(taskConfiguration, taskExecutiontatus); break; case RUNNING: logger.debug("Operation "+TaskStatus.ONGOING); taskExecutiontatus.setStatus(TaskStatus.ONGOING); taskExecutiontatus.addLog("Status "+TaskStatus.ONGOING+": "+computationStatus.getMessage()); taskExecutiontatus.setPercentCompleted((float) computationStatus.getPercentage()); - saveTask(algConfiguration, taskExecutiontatus); + saveTask(taskConfiguration, taskExecutiontatus); break; default: break; diff --git a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java index ce33ab3..0d78a25 100644 --- a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java +++ b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java @@ -32,8 +32,6 @@ import com.fasterxml.jackson.core.type.TypeReference; */ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask, ExecutableItem{ - - /** The logger. */ private static Logger logger = LoggerFactory.getLogger(WorkspaceDataMinerTaskExecutor.class); diff --git a/src/main/java/org/gcube/common/workspacetaskexecutor/shared/dataminer/TaskConfiguration.java b/src/main/java/org/gcube/common/workspacetaskexecutor/shared/dataminer/TaskConfiguration.java index 6cae629..38c244a 100644 --- a/src/main/java/org/gcube/common/workspacetaskexecutor/shared/dataminer/TaskConfiguration.java +++ b/src/main/java/org/gcube/common/workspacetaskexecutor/shared/dataminer/TaskConfiguration.java @@ -12,13 +12,10 @@ import org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - - /** * The Class TaskConfiguration. * - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it - * May 2, 2018 + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it May 2, 2018 */ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { @@ -27,23 +24,23 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { */ @JsonIgnoreProperties public static final String FIELD_CONFIGURATION_KEY = "configurationKey"; - /** * */ private static final long serialVersionUID = -3380573762288127547L; private String taskId; @JsonIgnoreProperties - private String taskDescription; //optional - @JsonIgnoreProperties - private String token; //optional + private String taskDescription; // optional + /* + * The encrypted VRE Token of the user in the VRE where submit the + * computation + */ + private String maskedToken; private String workspaceItemId; @JsonIgnoreProperties - private Map mapParameters; //optional - + private Map mapParameters; // optional private String configurationKey; - /** * Instantiates a new task configuration. */ @@ -51,43 +48,52 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { } - /** * Instantiates a new task configuration. * - * @param configurationKey the configuration key - * @param taskId the task id - * @param taskDescription the task description - * @param token the token - * @param workspaceItemId the workspace item id - * @param mapParameters the map parameters + * @param configurationKey + * the configuration key + * @param taskId + * the task id + * @param taskDescription + * the task description + * @param maskedToken + * the token + * @param workspaceItemId + * the workspace item id + * @param mapParameters + * the map parameters */ - public TaskConfiguration(String configurationKey, - String taskId, String taskDescription, String token, - String workspaceItemId, Map mapParameters) { + public TaskConfiguration( + String configurationKey, String taskId, String taskDescription, + String maskedToken, String workspaceItemId, + Map mapParameters) { setConfigurationKey(configurationKey); this.taskId = taskId; this.taskDescription = taskDescription; - this.token = token; + this.maskedToken = maskedToken; this.workspaceItemId = workspaceItemId; this.mapParameters = mapParameters; } - /* (non-Javadoc) - * @see org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration#getAccessKey() + /* + * (non-Javadoc) + * @see org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration# + * getAccessKey() */ @Override public String getConfigurationKey() { - if(configurationKey==null) - configurationKey = hashCode()+""; - + if (configurationKey == null) + configurationKey = hashCode() + ""; return configurationKey; } - /* (non-Javadoc) - * @see org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration#setAccessKey(java.lang.String) + /* + * (non-Javadoc) + * @see org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration# + * setAccessKey(java.lang.String) */ @Override public void setConfigurationKey(String configurationKey) { @@ -95,9 +101,8 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { this.configurationKey = configurationKey; } - - - /* (non-Javadoc) + /* + * (non-Javadoc) * @see org.gcube.common.workspacetaskexecutor.TaskConfiguration#getTaskId() */ @Override @@ -106,7 +111,6 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { return taskId; } - /** * Gets the task description. * @@ -117,20 +121,6 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { return taskDescription; } - - - /** - * Gets the token. - * - * @return the token - */ - public String getToken() { - - return token; - } - - - /** * Gets the workspace item id. * @@ -141,8 +131,6 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { return workspaceItemId; } - - /** * Gets the map parameters. * @@ -153,66 +141,52 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { return mapParameters; } - - - /** * Sets the task description. * - * @param taskDescription the taskDescription to set + * @param taskDescription + * the taskDescription to set */ public void setTaskDescription(String taskDescription) { this.taskDescription = taskDescription; } - /** * Sets the task id. * - * @param taskId the taskId to set + * @param taskId + * the taskId to set */ public void setTaskId(String taskId) { this.taskId = taskId; } - - /** - * Sets the token. - * - * @param token the token to set - */ - public void setToken(String token) { - - this.token = token; - } - - - /** * Sets the workspace item id. * - * @param workspaceItemId the workspaceItemId to set + * @param workspaceItemId + * the workspaceItemId to set */ public void setWorkspaceItemId(String workspaceItemId) { this.workspaceItemId = workspaceItemId; } - /** * Sets the map parameters. * - * @param mapParameters the mapParameters to set + * @param mapParameters + * the mapParameters to set */ public void setMapParameters(Map mapParameters) { this.mapParameters = mapParameters; } - - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override @@ -220,12 +194,33 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { int hash = 1; hash = hash * 13 + (taskId == null ? 0 : taskId.hashCode()); - hash = hash * 17 + (workspaceItemId == null ? 0 : workspaceItemId.hashCode()); + hash = + hash * 17 + + (workspaceItemId == null ? 0 : workspaceItemId.hashCode()); hash = hash * new Random().nextInt(); return hash; } - /* (non-Javadoc) + + /** + * @return the maskedToken + */ + public String getMaskedToken() { + + return maskedToken; + } + + + /** + * @param maskedToken the maskedToken to set + */ + public void setMaskedToken(String maskedToken) { + + this.maskedToken = maskedToken; + } + + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override @@ -237,7 +232,7 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { builder.append(", taskDescription="); builder.append(taskDescription); builder.append(", token="); - builder.append(token); + builder.append(maskedToken); builder.append(", workspaceItemId="); builder.append(workspaceItemId); builder.append(", mapParameters="); @@ -247,7 +242,4 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable { builder.append("]"); return builder.toString(); } - - - } diff --git a/src/main/java/org/gcube/common/workspacetaskexecutor/util/EncrypterUtil.java b/src/main/java/org/gcube/common/workspacetaskexecutor/util/EncrypterUtil.java new file mode 100644 index 0000000..e6084af --- /dev/null +++ b/src/main/java/org/gcube/common/workspacetaskexecutor/util/EncrypterUtil.java @@ -0,0 +1,56 @@ +/** + * + */ +package org.gcube.common.workspacetaskexecutor.util; + +import org.gcube.common.encryption.StringEncrypter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * The Class EncrypterUtil. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * May 4, 2018 + */ +public class EncrypterUtil { + + private static Logger logger = LoggerFactory.getLogger(EncrypterUtil.class); + + + /** + * Encrypt string. + * + * @param toEncrypt the to encrypt + * @return the string + */ + public static String encryptString(String toEncrypt){ + try { + return StringEncrypter.getEncrypter().encrypt(toEncrypt); + } + catch (Exception e) { + //silent + logger.warn("Encrypt error for the string: "+toEncrypt); + } + return toEncrypt; + } + + + /** + * Decrypt string. + * + * @param toDecrypt the to decrypt + * @return the string + */ + public static String decryptString(String toDecrypt){ + try { + return StringEncrypter.getEncrypter().decrypt(toDecrypt); + } + catch (Exception e) { + //silent + logger.warn("Decrypt error for the string: "+toDecrypt); + } + return toDecrypt; + } +}