Fixed issues with BES security context
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/f30e73fd Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/f30e73fd Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/f30e73fd Branch: refs/heads/develop Commit: f30e73fd10668d2ae4735702eda0021f0490abf0 Parents: 2442159 Author: Shameera Rathnayaka <[email protected]> Authored: Wed Mar 23 18:05:46 2016 -0400 Committer: Shameera Rathnayaka <[email protected]> Committed: Wed Mar 23 18:05:46 2016 -0400 ---------------------------------------------------------------------- .../airavata/gfac/impl/GFacEngineImpl.java | 12 ++++++++--- .../gfac/impl/task/BESJobSubmissionTask.java | 22 +++++++++++++------- .../impl/task/utils/bes/DataTransferrer.java | 13 +++++++----- .../task/utils/bes/UNICORESecurityContext.java | 7 ++++--- 4 files changed, 35 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/f30e73fd/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 0622e58..a4f101e 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 @@ -178,9 +178,15 @@ public class GFacEngineImpl implements GFacEngine { processModel.setProcessOutputs(applicationOutputs); processContext.setSshKeyAuthentication(Factory.getComputerResourceSSHKeyAuthentication(processContext)); - processContext.setResourceJobManager(getResourceJobManager(processContext)); - processContext.setJobSubmissionRemoteCluster(Factory.getJobSubmissionRemoteCluster(processContext)); - processContext.setDataMovementRemoteCluster(Factory.getDataMovementRemoteCluster(processContext)); + if (processContext.getJobSubmissionProtocol() == JobSubmissionProtocol.UNICORE) { + // process monitor mode set in getResourceJobManager method, but unicore doesn't have resource job manager. + // hence we set process monitor mode here. + processContext.setMonitorMode(MonitorMode.FORK); + } else { + processContext.setResourceJobManager(getResourceJobManager(processContext)); + processContext.setJobSubmissionRemoteCluster(Factory.getJobSubmissionRemoteCluster(processContext)); + processContext.setDataMovementRemoteCluster(Factory.getDataMovementRemoteCluster(processContext)); + } String inputPath = ServerSettings.getLocalDataLocation(); if (inputPath != null) { http://git-wip-us.apache.org/repos/asf/airavata/blob/f30e73fd/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 cf8e4a0..145cde9 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 @@ -35,8 +35,10 @@ import org.apache.airavata.gfac.core.context.TaskContext; import org.apache.airavata.gfac.core.task.JobSubmissionTask; import org.apache.airavata.gfac.core.task.TaskException; import org.apache.airavata.gfac.impl.task.utils.bes.*; +import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface; import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol; import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission; +import org.apache.airavata.model.experiment.UserConfigurationDataModel; import org.apache.airavata.model.job.JobModel; import org.apache.airavata.model.status.JobState; import org.apache.airavata.model.status.JobStatus; @@ -92,10 +94,11 @@ public class BESJobSubmissionTask implements JobSubmissionTask { try { ProcessContext processContext = taskContext.getParentProcessContext(); JobSubmissionProtocol protocol = processContext.getJobSubmissionProtocol(); - String interfaceId = processContext.getApplicationInterfaceDescription().getApplicationInterfaceId(); + JobSubmissionInterface jobSubmissionInterface = GFacUtils.getPreferredJobSubmissionInterface(processContext); String factoryUrl = null; if (protocol.equals(JobSubmissionProtocol.UNICORE)) { - UnicoreJobSubmission unicoreJobSubmission = GFacUtils.getUnicoreJobSubmission(interfaceId); + UnicoreJobSubmission unicoreJobSubmission = GFacUtils.getUnicoreJobSubmission( + jobSubmissionInterface.getJobSubmissionInterfaceId()); factoryUrl = unicoreJobSubmission.getUnicoreEndPointURL(); } EndpointReferenceType eprt = EndpointReferenceType.Factory.newInstance(); @@ -200,7 +203,7 @@ public class BESJobSubmissionTask implements JobSubmissionTask { log.error("Error while retrieving UNICORE job submission.."); taskStatus.setState(TaskState.FAILED); } catch (Exception e) { - log.error("Cannot create storage.."); + log.error("Cannot create storage..", e); taskStatus.setState(TaskState.FAILED); } @@ -211,10 +214,13 @@ public class BESJobSubmissionTask implements JobSubmissionTask { DefaultClientConfiguration clientConfig = null; try { UNICORESecurityContext unicoreSecurityContext = SecurityUtils.getSecurityContext(pc); - UserConfigurationData userConfigData = (UserConfigurationData) pc.getExperimentCatalog(). + UserConfigurationDataModel userConfigDataModel = (UserConfigurationDataModel) pc.getExperimentCatalog(). get(ExperimentCatalogModelType.USER_CONFIGURATION_DATA, pc.getExperimentId()); - if (userConfigData.getGenerateCert()) { - clientConfig = unicoreSecurityContext.getDefaultConfiguration(false, userConfigData); + // FIXME - remove following setter lines, and use original value comes with user configuration data model. + userConfigDataModel.setGenerateCert(true); + userConfigDataModel.setUserDN("CN=swus3, O=Ultrascan Gateway, C=DE"); + if (userConfigDataModel.isGenerateCert()) { + clientConfig = unicoreSecurityContext.getDefaultConfiguration(false, userConfigDataModel); } else { clientConfig = unicoreSecurityContext.getDefaultConfiguration(false); } @@ -266,12 +272,12 @@ public class BESJobSubmissionTask implements JobSubmissionTask { @Override public TaskStatus recover(TaskContext taskContext) { - return null; + return execute(taskContext); } @Override public TaskTypes getType() { - return null; + return TaskTypes.JOB_SUBMISSION; } protected ActivityStatusType getStatus(FactoryClient fc, EndpointReferenceType activityEpr) http://git-wip-us.apache.org/repos/asf/airavata/blob/f30e73fd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java index e480f92..4a0cbbf 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/DataTransferrer.java @@ -57,8 +57,8 @@ public class DataTransferrer { protected String gatewayDownloadLocation, stdoutLocation, stderrLocation; - public DataTransferrer(ProcessContext jobContext, StorageClient storageClient) { - this.processContext = jobContext; + public DataTransferrer(ProcessContext processContext, StorageClient storageClient) { + this.processContext = processContext; this.storageClient = storageClient; resultantOutputsLst = new ArrayList<OutputDataObjectType>(); initStdoutsLocation(); @@ -103,13 +103,16 @@ public class DataTransferrer { } public void uploadLocalFiles() throws GFacException { - List<String> inFilePrms = extractInFileParams(); + List<String> inFilePrms = new ArrayList<>(); + // FIXME - remove hard coded file path. +// inFilePrms.addAll(extractInFileParams()); + inFilePrms.add("file://home/airavata/test/hpcinput-localhost-uslims3_cauma3d-00950.tar"); for (String uri : inFilePrms) { String fileName = new File(uri).getName(); if (uri.startsWith("file")) { try { - String uriWithoutProtocol = uri.substring(uri.lastIndexOf("://") + 1, uri.length()); - FileUploader fileUploader = new FileUploader(uriWithoutProtocol,fileName,Mode.overwrite); + String uriWithoutProtocol = uri.substring(uri.lastIndexOf("://") + 2, uri.length()); + FileUploader fileUploader = new FileUploader(uriWithoutProtocol, fileName, Mode.overwrite, false); fileUploader.perform(storageClient); } catch (FileNotFoundException e3) { throw new GFacException( http://git-wip-us.apache.org/repos/asf/airavata/blob/f30e73fd/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java index a383b40..609e1fa 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/UNICORESecurityContext.java @@ -31,6 +31,7 @@ import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.credential.store.store.CredentialReader; import org.apache.airavata.gfac.core.GFacException; import org.apache.airavata.gfac.core.RequestData; +import org.apache.airavata.model.experiment.UserConfigurationDataModel; import org.apache.airavata.registry.core.experiment.catalog.model.UserConfigurationData; import org.bouncycastle.asn1.x500.style.BCStyle; import org.slf4j.Logger; @@ -68,13 +69,13 @@ public class UNICORESecurityContext extends X509SecurityContext { return secProperties; } - public DefaultClientConfiguration getDefaultConfiguration(Boolean enableMessageLogging, UserConfigurationData userData) throws GFacException, ApplicationSettingsException { + public DefaultClientConfiguration getDefaultConfiguration(Boolean enableMessageLogging, UserConfigurationDataModel userDataModel) throws GFacException, ApplicationSettingsException { X509Credential cred = null; try{ - boolean genCert = userData.getGenerateCert(); + boolean genCert = userDataModel.isGenerateCert(); if(genCert) { - String userDN = userData.getUserDn(); + String userDN = userDataModel.getUserDN(); if (userDN == null || "".equals(userDN)){ log.warn("Cannot generate cert, falling back to GFAC configured MyProxy credentials"); return getDefaultConfiguration(enableMessageLogging);
