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);

Reply via email to