Repository: airavata Updated Branches: refs/heads/develop 5cb06c945 -> a33d2d88f
Pass credential expception up and save meaning full error message part 2 Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/a33d2d88 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/a33d2d88 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/a33d2d88 Branch: refs/heads/develop Commit: a33d2d88f810f06b750629a1832ed89867a6da79 Parents: 5cb06c9 Author: Shameera Rathnayaka <[email protected]> Authored: Wed Dec 28 23:47:14 2016 -0500 Committer: Shameera Rathnayaka <[email protected]> Committed: Wed Dec 28 23:47:14 2016 -0500 ---------------------------------------------------------------------- .../apache/airavata/gfac/core/GFacEngine.java | 2 +- .../org/apache/airavata/gfac/impl/Factory.java | 14 ++++--- .../airavata/gfac/impl/GFacEngineImpl.java | 41 ++++++++++++++++---- .../apache/airavata/gfac/impl/GFacWorker.java | 2 +- .../airavata/gfac/impl/task/ArchiveTask.java | 11 ++++++ .../gfac/impl/task/BESJobSubmissionTask.java | 7 +++- .../impl/task/DefaultJobSubmissionTask.java | 3 +- .../gfac/impl/task/SCPDataStageTask.java | 8 ++-- .../airavata/gfac/server/GfacServerHandler.java | 4 +- 9 files changed, 68 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacEngine.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacEngine.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacEngine.java index c7ba287..59e7054 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacEngine.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacEngine.java @@ -19,7 +19,7 @@ */ package org.apache.airavata.gfac.core; -import org.apache.airavata.credential.store.exception.CredentialStoreException; +import org.apache.airavata.credential.store.store.CredentialStoreException; import org.apache.airavata.gfac.core.context.ProcessContext; public interface GFacEngine { http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java index 11de368..9cb0fb6 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java @@ -224,7 +224,7 @@ public abstract class Factory { * @throws AiravataException */ public static RemoteCluster getJobSubmissionRemoteCluster(ProcessContext processContext) - throws GFacException, AppCatalogException, AiravataException { + throws GFacException, AppCatalogException, AiravataException, CredentialStoreException { String computeResourceId = processContext.getComputeResourceId(); JobSubmissionProtocol jobSubmissionProtocol = processContext.getJobSubmissionProtocol(); @@ -277,7 +277,7 @@ public abstract class Factory { } public static RemoteCluster getDataMovementRemoteCluster(ProcessContext processContext) - throws GFacException, AiravataException { + throws GFacException, AiravataException, CredentialStoreException { String storageResourceId = processContext.getStorageResourceId(); DataMovementProtocol dataMovementProtocol = processContext.getDataMovementProtocol(); @@ -326,22 +326,24 @@ public abstract class Factory { return remoteCluster; } - public static SSHKeyAuthentication getComputerResourceSSHKeyAuthentication(ProcessContext pc) throws GFacException { + public static SSHKeyAuthentication getComputerResourceSSHKeyAuthentication(ProcessContext pc) + throws GFacException, CredentialStoreException { try { return getSshKeyAuthentication(pc.getGatewayId(), pc.getComputeResourceLoginUserName(), pc.getComputeResourceCredentialToken()); - } catch (ApplicationSettingsException | IllegalAccessException | InstantiationException | CredentialStoreException e) { + } catch (ApplicationSettingsException | IllegalAccessException | InstantiationException e) { throw new GFacException("Couldn't build ssh authentication object", e); } } - public static SSHKeyAuthentication getStorageSSHKeyAuthentication(ProcessContext pc) throws GFacException { + public static SSHKeyAuthentication getStorageSSHKeyAuthentication(ProcessContext pc) + throws GFacException, CredentialStoreException { try { return getSshKeyAuthentication(pc.getGatewayId(), pc.getStorageResourceLoginUserName(), pc.getStorageResourceCredentialToken()); - } catch (ApplicationSettingsException | IllegalAccessException | InstantiationException | CredentialStoreException e) { + } catch (ApplicationSettingsException | IllegalAccessException | InstantiationException e) { throw new GFacException("Couldn't build ssh authentication object", e); } } http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java index e49d81b..e8da929 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java @@ -26,6 +26,7 @@ import org.apache.airavata.common.utils.AiravataUtils; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.common.utils.ThriftUtils; import org.apache.airavata.common.utils.ZkConstants; +import org.apache.airavata.credential.store.store.CredentialStoreException; import org.apache.airavata.gfac.core.GFacConstants; import org.apache.airavata.gfac.core.GFacEngine; import org.apache.airavata.gfac.core.GFacException; @@ -40,9 +41,12 @@ import org.apache.airavata.gfac.core.task.TaskException; import org.apache.airavata.gfac.impl.task.DataStreamingTask; import org.apache.airavata.gfac.impl.task.EnvironmentSetupTask; import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription; -import org.apache.airavata.model.appcatalog.computeresource.*; -import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference; -import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile; +import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface; +import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol; +import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission; +import org.apache.airavata.model.appcatalog.computeresource.MonitorMode; +import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager; +import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission; import org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription; import org.apache.airavata.model.appcatalog.userresourceprofile.UserComputeResourcePreference; import org.apache.airavata.model.appcatalog.userresourceprofile.UserResourceProfile; @@ -53,9 +57,25 @@ import org.apache.airavata.model.commons.ErrorModel; import org.apache.airavata.model.data.movement.SecurityProtocol; import org.apache.airavata.model.job.JobModel; import org.apache.airavata.model.process.ProcessModel; -import org.apache.airavata.model.status.*; -import org.apache.airavata.model.task.*; -import org.apache.airavata.registry.cpi.*; +import org.apache.airavata.model.status.JobState; +import org.apache.airavata.model.status.JobStatus; +import org.apache.airavata.model.status.ProcessState; +import org.apache.airavata.model.status.ProcessStatus; +import org.apache.airavata.model.status.TaskState; +import org.apache.airavata.model.status.TaskStatus; +import org.apache.airavata.model.task.DataStageType; +import org.apache.airavata.model.task.DataStagingTaskModel; +import org.apache.airavata.model.task.EnvironmentSetupTaskModel; +import org.apache.airavata.model.task.JobSubmissionTaskModel; +import org.apache.airavata.model.task.MonitorTaskModel; +import org.apache.airavata.model.task.TaskModel; +import org.apache.airavata.model.task.TaskTypes; +import org.apache.airavata.registry.cpi.AppCatalog; +import org.apache.airavata.registry.cpi.AppCatalogException; +import org.apache.airavata.registry.cpi.ExpCatChildDataType; +import org.apache.airavata.registry.cpi.ExperimentCatalog; +import org.apache.airavata.registry.cpi.ExperimentCatalogModelType; +import org.apache.airavata.registry.cpi.RegistryException; import org.apache.airavata.registry.cpi.utils.Constants; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.utils.ZKPaths; @@ -68,7 +88,12 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.net.URI; import java.net.URISyntaxException; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.List; +import java.util.Map; public class GFacEngineImpl implements GFacEngine { @@ -80,7 +105,7 @@ public class GFacEngineImpl implements GFacEngine { @Override public ProcessContext populateProcessContext(String processId, String gatewayId, String - tokenId) throws GFacException { + tokenId) throws GFacException, CredentialStoreException { // NOTE: Process context gives precedence to data come with process Computer resources; ProcessContext processContext = null; http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java index db05db5..ada13c1 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacWorker.java @@ -22,7 +22,7 @@ package org.apache.airavata.gfac.impl; import org.apache.airavata.common.utils.AiravataUtils; -import org.apache.airavata.credential.store.exception.CredentialStoreException; +import org.apache.airavata.credential.store.store.CredentialStoreException; import org.apache.airavata.gfac.core.GFacEngine; import org.apache.airavata.gfac.core.GFacException; import org.apache.airavata.gfac.core.GFacUtils; http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java index 77cb540..d040b59 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/ArchiveTask.java @@ -25,6 +25,7 @@ import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import org.apache.airavata.common.utils.AiravataUtils; import org.apache.airavata.common.utils.ThriftUtils; +import org.apache.airavata.credential.store.store.CredentialStoreException; import org.apache.airavata.gfac.core.GFacException; import org.apache.airavata.gfac.core.authentication.AuthenticationInfo; import org.apache.airavata.gfac.core.cluster.CommandInfo; @@ -145,6 +146,16 @@ public class ArchiveTask implements Task { " && tar -xvf " + archiveTar + " -C " + storageArchiveDir + " && rm " + archiveTar + " && chmod 755 -R " + storageArchiveDir + "/*"); executeCommand(sshSession, commandInfo, new StandardOutReader()); + } catch (CredentialStoreException e) { + String msg = "Storage authentication issue, make sure you are passing valid credential token"; + log.error(msg, e); + status.setState(TaskState.FAILED); + status.setReason(msg); + status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); + ErrorModel errorModel = new ErrorModel(); + errorModel.setActualErrorMessage(e.getMessage()); + errorModel.setUserFriendlyMessage(msg); + taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel)); } catch ( URISyntaxException | GFacException e) { String msg = "Error! Archive task failed"; log.error(msg, e); http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java index 15f0764..2035d75 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/BESJobSubmissionTask.java @@ -31,6 +31,7 @@ import de.fzj.unicore.wsrflite.xmlbeans.WSUtilities; import eu.unicore.util.httpclient.DefaultClientConfiguration; import org.apache.airavata.common.exception.AiravataException; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.credential.store.store.CredentialStoreException; import org.apache.airavata.gfac.core.GFacException; import org.apache.airavata.gfac.core.GFacUtils; import org.apache.airavata.gfac.core.SSHApiException; @@ -272,7 +273,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask { break; } } - } catch (IOException | JSchException | SSHApiException | URISyntaxException e) { + } catch (IOException | JSchException | SSHApiException | URISyntaxException | CredentialStoreException e) { log.error("Error while coping local file " + localFilePath + " to remote " + remoteFilePath, e); throw new GFacException("Error while scp output files to remote storage file location", e); } @@ -312,6 +313,10 @@ public class BESJobSubmissionTask implements JobSubmissionTask { } catch (IOException | JSchException | SSHApiException | URISyntaxException e) { log.error("Error while coping remote file " + remoteFilePath + " to local " + localFilePath, e); throw new GFacException("Error while scp input files to local file location", e); + } catch (CredentialStoreException e) { + String msg = "Authentication issue, make sure you are passing valid credential token"; + log.error(msg, e); + throw new GFacException(msg, e); } } http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java index b9dc02a..beeb66e 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DefaultJobSubmissionTask.java @@ -167,7 +167,8 @@ public class DefaultJobSubmissionTask implements JobSubmissionTask { if (computeResourceDescription.isGatewayUsageReporting()){ String loadCommand = computeResourceDescription.getGatewayUsageModuleLoadCommand(); String usageExecutable = computeResourceDescription.getGatewayUsageExecutable(); - ExperimentModel experiment = (ExperimentModel)taskContext.getParentProcessContext().getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId); + ExperimentModel experiment = (ExperimentModel)taskContext.getParentProcessContext() + .getExperimentCatalog().get(ExperimentCatalogModelType.EXPERIMENT, experimentId); String username = experiment.getUserName() + "@" + taskContext.getParentProcessContext().getUsageReportingGatewayId(); RawCommandInfo rawCommandInfo = new RawCommandInfo(loadCommand + " && " + usageExecutable + " -gateway_user " + username + " -submit_time \"`date '+%F %T %:z'`\" -jobid " + jobId ); http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java index 919d0be..c4577ba 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java @@ -24,9 +24,9 @@ import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import org.apache.airavata.common.exception.AiravataException; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.credential.store.store.CredentialStoreException; import org.apache.airavata.gfac.core.GFacException; import org.apache.airavata.gfac.core.GFacUtils; -import org.apache.airavata.gfac.core.SSHApiException; import org.apache.airavata.gfac.core.authentication.AuthenticationInfo; import org.apache.airavata.gfac.core.cluster.CommandInfo; import org.apache.airavata.gfac.core.cluster.RawCommandInfo; @@ -125,7 +125,7 @@ public class SCPDataStageTask implements Task { if (storageResource != null) { hostName = storageResource.getHostName(); } else { - throw new SSHApiException("Storage Resource is null"); + throw new GFacException("Storage Resource is null"); } inputPath = processContext.getStorageFileSystemRootLocation(); inputPath = (inputPath.endsWith(File.separator) ? inputPath : inputPath + File.separator); @@ -193,8 +193,8 @@ public class SCPDataStageTask implements Task { errorModel.setActualErrorMessage(e.getMessage()); errorModel.setUserFriendlyMessage(msg); taskContext.getTaskModel().setTaskErrors(Arrays.asList(errorModel)); - } catch (SSHApiException e) { - String msg = e.getMessage(); + } catch (CredentialStoreException e) { + String msg = "Storage authentication issue, could be invalid credential token"; log.error(msg, e); status.setState(TaskState.FAILED); status.setReason(msg); http://git-wip-us.apache.org/repos/asf/airavata/blob/a33d2d88/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java index aa2e95d..a176198 100644 --- a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java +++ b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java @@ -30,7 +30,7 @@ import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.common.utils.ThriftUtils; import org.apache.airavata.common.utils.ZkConstants; import org.apache.airavata.common.utils.listener.AbstractActivityListener; -import org.apache.airavata.credential.store.exception.CredentialStoreException; +import org.apache.airavata.credential.store.store.CredentialStoreException; import org.apache.airavata.gfac.core.GFacException; import org.apache.airavata.gfac.core.GFacUtils; import org.apache.airavata.gfac.cpi.GfacService; @@ -170,7 +170,7 @@ public class GfacServerHandler implements GfacService.Iface { log.error("Failed to submit process due to credential issue, " + "make sure you are passing a valid credentials"); throw new TException("Failed to submit process due to credential issue, " + - "make sure you are passing a valid credentials", e); + "make sure you are passing a valid credential token", e); } catch (Exception e) { log.error("Error creating zookeeper nodes"); throw new TException("Error creating zookeeper nodes", e);
