Initial implementation for AIRAVATA-1945
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e5ae01e0 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e5ae01e0 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e5ae01e0 Branch: refs/heads/master Commit: e5ae01e020897c5f0e044895d624e9f95c4ef987 Parents: 27e93a0 Author: Suresh Marru <[email protected]> Authored: Thu Mar 31 17:24:05 2016 -0400 Committer: Suresh Marru <[email protected]> Committed: Thu Mar 31 17:24:05 2016 -0400 ---------------------------------------------------------------------- .../org/apache/airavata/gfac/impl/Factory.java | 24 +++++++- .../airavata/gfac/impl/GFacEngineImpl.java | 4 +- .../core/utils/OrchestratorUtils.java | 17 ++++++ .../cpi/impl/SimpleOrchestratorImpl.java | 8 ++- .../catalog/model/ProcessResourceSchedule.java | 30 ++++++++++ .../catalog/model/UserConfigurationData.java | 30 ++++++++++ .../ProcessResourceScheduleResource.java | 30 ++++++++++ .../UserConfigurationDataResource.java | 60 +++++++++++++++----- .../experiment/catalog/resources/Utils.java | 6 ++ .../utils/ThriftDataModelConversion.java | 9 +++ .../src/main/resources/expcatalog-derby.sql | 3 + .../src/main/resources/expcatalog-mysql.sql | 3 + 12 files changed, 201 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/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 ddc744f..723eb37 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 @@ -67,6 +67,7 @@ import org.apache.airavata.model.appcatalog.computeresource.*; import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference; import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference; import org.apache.airavata.model.data.movement.DataMovementProtocol; +import org.apache.airavata.model.process.ProcessModel; import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory; import org.apache.airavata.registry.cpi.AppCatalog; import org.apache.airavata.registry.cpi.AppCatalogException; @@ -236,7 +237,7 @@ public abstract class Factory { AuthenticationInfo authentication = remoteCluster.getAuthentication(); if (authentication instanceof SSHKeyAuthentication){ SSHKeyAuthentication sshKeyAuthentication = (SSHKeyAuthentication)authentication; - if (!sshKeyAuthentication.getUserName().equals(processContext.getComputeResourcePreference().getLoginUserName())){ + if (!sshKeyAuthentication.getUserName().equals(getLoginUserName(processContext))){ JobManagerConfiguration jobManagerConfiguration = getJobManagerConfiguration(processContext.getResourceJobManager()); if (jobSubmissionProtocol == JobSubmissionProtocol.SSH || jobSubmissionProtocol == JobSubmissionProtocol.SSH_FORK) { @@ -271,7 +272,7 @@ public abstract class Factory { AuthenticationInfo authentication = remoteCluster.getAuthentication(); if (authentication instanceof SSHKeyAuthentication){ SSHKeyAuthentication sshKeyAuthentication = (SSHKeyAuthentication)authentication; - if (!sshKeyAuthentication.getUserName().equals(processContext.getComputeResourcePreference().getLoginUserName())){ + if (!sshKeyAuthentication.getUserName().equals(getLoginUserName(processContext))){ JobManagerConfiguration jobManagerConfiguration = getJobManagerConfiguration(processContext.getResourceJobManager()); dataMovementProtocol = processContext.getDataMovementProtocol(); if (dataMovementProtocol == DataMovementProtocol.SCP) { @@ -288,7 +289,7 @@ public abstract class Factory { public static SSHKeyAuthentication getComputerResourceSSHKeyAuthentication(ProcessContext pc) throws GFacException { try { ComputeResourcePreference computeResourcePreference = pc.getComputeResourcePreference(); - String loginUserName = computeResourcePreference.getLoginUserName(); + String loginUserName = getLoginUserName(pc); String credentialStoreToken = computeResourcePreference.getResourceSpecificCredentialStoreToken(); if (credentialStoreToken == null || credentialStoreToken.isEmpty()) { credentialStoreToken = pc.getGatewayResourceProfile().getCredentialStoreToken(); @@ -313,6 +314,23 @@ public abstract class Factory { } } + public static String getLoginUserName(ProcessContext processContext) throws GFacException { + try { + ProcessModel processModel = processContext.getProcessModel(); + String loginUserName = null; + String overrideLoginUserName = processModel.getResourceSchedule().getOverrideLoginUserName(); + if (overrideLoginUserName != null) { + loginUserName = overrideLoginUserName; + } else { + loginUserName = processContext.getComputeResourcePreference().getLoginUserName(); + } + + return loginUserName; + } catch (Exception e) { + throw new GFacException("Couldn't fetch loginUserName", e); + } + } + private static SSHKeyAuthentication getSshKeyAuthentication(String gatewayId, String loginUserName, String credentialStoreToken) http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/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 a4f101e..129103b 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 @@ -150,7 +150,7 @@ public class GFacEngineImpl implements GFacEngine { processContext.setApplicationInterfaceDescription(applicationInterface); String computeResourceId = processContext.getComputeResourceDescription().getComputeResourceId(); String hostName = Factory.getDefaultAppCatalog().getComputeResource().getComputeResource(computeResourceId).getHostName(); - ServerInfo serverInfo = new ServerInfo(processContext.getComputeResourcePreference().getLoginUserName(), hostName); + ServerInfo serverInfo = new ServerInfo(Factory.getLoginUserName(processContext), hostName); processContext.setServerInfo(serverInfo); List<OutputDataObjectType> applicationOutputs = applicationInterface.getApplicationOutputs(); if (applicationOutputs != null && !applicationOutputs.isEmpty()) { @@ -355,7 +355,7 @@ public class GFacEngineImpl implements GFacEngine { submodel.setType(DataStageType.OUPUT); submodel.setProcessOutput(output); URI source = new URI(processContext.getDataMovementProtocol().name(), - processContext.getComputeResourcePreference().getLoginUserName(), + Factory.getLoginUserName(processContext), processContext.getComputeResourceDescription().getHostName(), 22, processContext.getWorkingDir() + output.getValue(), null, null); http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java ---------------------------------------------------------------------- diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java index 3aa8974..d38a860 100644 --- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java +++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java @@ -121,6 +121,23 @@ public class OrchestratorUtils { } } + public static String getLoginUserName(OrchestratorContext context, ProcessModel processModel, String gatewayId) throws RegistryException { + try { + String loginUserName = null; + String overrideLoginUserName = processModel.getResourceSchedule().getOverrideLoginUserName(); + if (overrideLoginUserName != null) { + loginUserName = overrideLoginUserName; + } else { + GwyResourceProfile gatewayProfile = context.getRegistry().getAppCatalog().getGatewayProfile(); + loginUserName = gatewayProfile.getComputeResourcePreference(gatewayId, processModel.getComputeResourceId()).getLoginUserName(); + } + return loginUserName; + } catch (AppCatalogException e) { + logger.error("Error occurred while initializing app catalog", e); + throw new RegistryException("Error occurred while initializing app catalog", e); + } + } + public static JobSubmissionInterface getPreferredJobSubmissionInterface(OrchestratorContext context, ProcessModel processModel, String gatewayId) throws RegistryException { try { String resourceHostId = processModel.getComputeResourceId(); http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java ---------------------------------------------------------------------- diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java index 15c8556..116b5f8 100644 --- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java +++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java @@ -548,8 +548,9 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{ URI destination = null; try { DataMovementProtocol dataMovementProtocol = OrchestratorUtils.getPreferredDataMovementProtocol(orchestratorContext, processModel, gatewayId); + String loginUserName = OrchestratorUtils.getLoginUserName(orchestratorContext, processModel, gatewayId); destination = new URI(dataMovementProtocol.name(), - computeResourcePreference.getLoginUserName(), + loginUserName, computeResource.getHostName(), OrchestratorUtils.getDataMovementPort(orchestratorContext, processModel, gatewayId), remoteOutputDir , null, null); @@ -585,11 +586,12 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{ DataMovementProtocol dataMovementProtocol = OrchestratorUtils.getPreferredDataMovementProtocol(orchestratorContext, processModel, gatewayId); URI source = null; try { + String loginUserName = OrchestratorUtils.getLoginUserName(orchestratorContext, processModel, gatewayId); if (processOutput != null) { submodel.setType(DataStageType.OUPUT); submodel.setProcessOutput(processOutput); source = new URI(dataMovementProtocol.name(), - computeResourcePreference.getLoginUserName(), + loginUserName, computeResource.getHostName(), OrchestratorUtils.getDataMovementPort(orchestratorContext, processModel, gatewayId), remoteOutputDir + processOutput.getValue(), null, null); @@ -597,7 +599,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{ // archive submodel.setType(DataStageType.ARCHIVE_OUTPUT); source = new URI(dataMovementProtocol.name(), - computeResourcePreference.getLoginUserName(), + loginUserName, computeResource.getHostName(), OrchestratorUtils.getDataMovementPort(orchestratorContext, processModel, gatewayId), remoteOutputDir, null, null); http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessResourceSchedule.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessResourceSchedule.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessResourceSchedule.java index b23c8d5..c836feb 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessResourceSchedule.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/ProcessResourceSchedule.java @@ -40,6 +40,9 @@ public class ProcessResourceSchedule { private Integer totalPhysicalMemory; private Process process; private String staticWorkingDir; + private String overrideLoginUserName; + private String overrideScratchLocation; + private String overrideAllocationProjectNumber; @Id @Column(name = "PROCESS_ID") @@ -123,6 +126,33 @@ public class ProcessResourceSchedule { this.staticWorkingDir = staticWorkingDir; } + @Column(name = "OVERRIDE_LOGIN_USER_NAME") + public String getOverrideLoginUserName() { + return overrideLoginUserName; + } + + public void setOverrideLoginUserName(String overrideLoginUserName) { + this.overrideLoginUserName = overrideLoginUserName; + } + + @Column(name = "OVERRIDE_SCRATCH_LOCATION") + public String getOverrideScratchLocation() { + return overrideScratchLocation; + } + + public void setOverrideScratchLocation(String overrideScratchLocation) { + this.overrideScratchLocation = overrideScratchLocation; + } + + @Column(name = "OVERRIDE_ALLOCATION_PROJECT_NUMBER") + public String getOverrideAllocationProjectNumber() { + return overrideAllocationProjectNumber; + } + + public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) { + this.overrideAllocationProjectNumber = overrideAllocationProjectNumber; + } + // @Override // public boolean equals(Object o) { // if (this == o) return true; http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java index 638dee9..efad5ce 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/UserConfigurationData.java @@ -45,6 +45,9 @@ public class UserConfigurationData { private Integer totalPhysicalMemory; private Experiment experiment; private String staticWorkingDir; + private String overrideLoginUserName; + private String overrideScratchLocation; + private String overrideAllocationProjectNumber; private String storageId; private String experimentDataDir; @@ -184,6 +187,33 @@ public class UserConfigurationData { this.staticWorkingDir = staticWorkingDir; } + @Column(name = "OVERRIDE_LOGIN_USER_NAME") + public String getOverrideLoginUserName() { + return overrideLoginUserName; + } + + public void setOverrideLoginUserName(String overrideLoginUserName) { + this.overrideLoginUserName = overrideLoginUserName; + } + + @Column(name = "OVERRIDE_SCRATCH_LOCATION") + public String getOverrideScratchLocation() { + return overrideScratchLocation; + } + + public void setOverrideScratchLocation(String overrideScratchLocation) { + this.overrideScratchLocation = overrideScratchLocation; + } + + @Column(name = "OVERRIDE_ALLOCATION_PROJECT_NUMBER") + public String getOverrideAllocationProjectNumber() { + return overrideAllocationProjectNumber; + } + + public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) { + this.overrideAllocationProjectNumber = overrideAllocationProjectNumber; + } + @Column(name = "STORAGE_RESOURCE_ID") public String getStorageId() { return storageId; http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java index 1fe0e23..cb40ac4 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java @@ -43,6 +43,9 @@ public class ProcessResourceScheduleResource extends AbstractExpCatResource { private Integer wallTimeLimit; private Integer totalPhysicalMemory; private String staticWorkingDir; + private String overrideLoginUserName; + private String overrideScratchLocation; + private String overrideAllocationProjectNumber; public String getProcessId() { return processId; @@ -116,6 +119,30 @@ public class ProcessResourceScheduleResource extends AbstractExpCatResource { this.staticWorkingDir = staticWorkingDir; } + public String getOverrideLoginUserName() { + return overrideLoginUserName; + } + + public void setOverrideLoginUserName(String overrideLoginUserName) { + this.overrideLoginUserName = overrideLoginUserName; + } + + public String getOverrideScratchLocation() { + return overrideScratchLocation; + } + + public void setOverrideScratchLocation(String overrideScratchLocation) { + this.overrideScratchLocation = overrideScratchLocation; + } + + public String getOverrideAllocationProjectNumber() { + return overrideAllocationProjectNumber; + } + + public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) { + this.overrideAllocationProjectNumber = overrideAllocationProjectNumber; + } + public ExperimentCatResource create(ResourceType type) throws RegistryException { logger.error("Unsupported resource type for process resource scheduling data resource.", new UnsupportedOperationException()); throw new UnsupportedOperationException(); @@ -172,6 +199,9 @@ public class ProcessResourceScheduleResource extends AbstractExpCatResource { processResourceSchedule.setWallTimeLimit(wallTimeLimit); processResourceSchedule.setTotalPhysicalMemory(totalPhysicalMemory); processResourceSchedule.setStaticWorkingDir(staticWorkingDir); + processResourceSchedule.setOverrideLoginUserName(overrideLoginUserName); + processResourceSchedule.setOverrideScratchLocation(overrideScratchLocation); + processResourceSchedule.setOverrideAllocationProjectNumber(overrideAllocationProjectNumber); if (existingSchedule == null){ em.persist(processResourceSchedule); }else { http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java index ebf29bd..c6516c4 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java @@ -49,6 +49,9 @@ public class UserConfigurationDataResource extends AbstractExpCatResource { private Integer wallTimeLimit; private Integer totalPhysicalMemory; private String staticWorkingDir; + private String overrideLoginUserName; + private String overrideScratchLocation; + private String overrideAllocationProjectNumber; private String storageId; private String experimentDataDir; @@ -180,6 +183,30 @@ public class UserConfigurationDataResource extends AbstractExpCatResource { this.staticWorkingDir = staticWorkingDir; } + public String getOverrideLoginUserName() { + return overrideLoginUserName; + } + + public void setOverrideLoginUserName(String overrideLoginUserName) { + this.overrideLoginUserName = overrideLoginUserName; + } + + public String getOverrideScratchLocation() { + return overrideScratchLocation; + } + + public void setOverrideScratchLocation(String overrideScratchLocation) { + this.overrideScratchLocation = overrideScratchLocation; + } + + public String getOverrideAllocationProjectNumber() { + return overrideAllocationProjectNumber; + } + + public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) { + this.overrideAllocationProjectNumber = overrideAllocationProjectNumber; + } + public String getExperimentDataDir() { return experimentDataDir; } @@ -193,36 +220,36 @@ public class UserConfigurationDataResource extends AbstractExpCatResource { throw new UnsupportedOperationException(); } - + public void remove(ResourceType type, Object name) throws RegistryException { logger.error("Unsupported resource type for process resource scheduling data resource.", new UnsupportedOperationException()); throw new UnsupportedOperationException(); } - - public ExperimentCatResource get(ResourceType type, Object name) throws RegistryException{ + + public ExperimentCatResource get(ResourceType type, Object name) throws RegistryException { logger.error("Unsupported resource type for process resource scheduling data resource.", new UnsupportedOperationException()); throw new UnsupportedOperationException(); } - - public List<ExperimentCatResource> get(ResourceType type) throws RegistryException{ + + public List<ExperimentCatResource> get(ResourceType type) throws RegistryException { logger.error("Unsupported resource type for process resource scheduling data resource.", new UnsupportedOperationException()); throw new UnsupportedOperationException(); } - - public void save() throws RegistryException{ + + public void save() throws RegistryException { EntityManager em = null; try { em = ExpCatResourceUtils.getEntityManager(); UserConfigurationData userConfigurationData; - if(experimentId == null){ + if (experimentId == null) { throw new RegistryException("Does not have the experiment id"); } UserConfigurationData existingConf = em.find(UserConfigurationData.class, experimentId); if (em.isOpen()) { - if (em.getTransaction().isActive()){ + if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } em.close(); @@ -230,9 +257,9 @@ public class UserConfigurationDataResource extends AbstractExpCatResource { em = ExpCatResourceUtils.getEntityManager(); em.getTransaction().begin(); - if(existingConf == null){ + if (existingConf == null) { userConfigurationData = new UserConfigurationData(); - }else { + } else { userConfigurationData = existingConf; } userConfigurationData.setExperimentId(experimentId); @@ -249,17 +276,20 @@ public class UserConfigurationDataResource extends AbstractExpCatResource { userConfigurationData.setQueueName(queueName); userConfigurationData.setWallTimeLimit(wallTimeLimit); userConfigurationData.setStaticWorkingDir(staticWorkingDir); + userConfigurationData.setOverrideLoginUserName(overrideLoginUserName); + userConfigurationData.setOverrideScratchLocation(overrideScratchLocation); + userConfigurationData.setOverrideAllocationProjectNumber(overrideAllocationProjectNumber); userConfigurationData.setTotalPhysicalMemory(totalPhysicalMemory); userConfigurationData.setStorageId(storageId); userConfigurationData.setExperimentDataDir(experimentDataDir); - if (existingConf == null){ + if (existingConf == null) { em.persist(userConfigurationData); - }else { + } else { em.merge(userConfigurationData); } em.getTransaction().commit(); if (em.isOpen()) { - if (em.getTransaction().isActive()){ + if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } em.close(); @@ -269,7 +299,7 @@ public class UserConfigurationDataResource extends AbstractExpCatResource { throw new RegistryException(e); } finally { if (em != null && em.isOpen()) { - if (em.getTransaction().isActive()){ + if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } em.close(); http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java index 9dc2a07..340e020 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java @@ -513,6 +513,9 @@ public class Utils { configurationDataResource.setWallTimeLimit(o.getWallTimeLimit()); configurationDataResource.setTotalPhysicalMemory(o.getTotalPhysicalMemory()); configurationDataResource.setStaticWorkingDir(o.getStaticWorkingDir()); + configurationDataResource.setOverrideLoginUserName(o.getOverrideLoginUserName()); + configurationDataResource.setOverrideScratchLocation(o.getOverrideScratchLocation()); + configurationDataResource.setOverrideAllocationProjectNumber(o.getOverrideAllocationProjectNumber()); configurationDataResource.setStorageId(o.getStorageId()); configurationDataResource.setExperimentDataDir(o.getExperimentDataDir()); } @@ -658,6 +661,9 @@ public class Utils { resourceScheduleResource.setWallTimeLimit(o.getWallTimeLimit()); resourceScheduleResource.setTotalPhysicalMemory(o.getTotalPhysicalMemory()); resourceScheduleResource.setStaticWorkingDir(o.getStaticWorkingDir()); + resourceScheduleResource.setOverrideLoginUserName(o.getOverrideLoginUserName()); + resourceScheduleResource.setOverrideScratchLocation(o.getOverrideScratchLocation()); + resourceScheduleResource.setOverrideAllocationProjectNumber(o.getOverrideAllocationProjectNumber()); } return resourceScheduleResource; } http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java index e39adc2..d6f92ff 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java @@ -515,6 +515,9 @@ public class ThriftDataModelConversion { resourceSchedulingModel.setWallTimeLimit(resource.getWallTimeLimit()); resourceSchedulingModel.setTotalPhysicalMemory(resource.getTotalPhysicalMemory()); resourceSchedulingModel.setStaticWorkingDir(resource.getStaticWorkingDir()); + resourceSchedulingModel.setOverrideLoginUserName(resource.getOverrideLoginUserName()); + resourceSchedulingModel.setOverrideScratchLocation(resource.getOverrideScratchLocation()); + resourceSchedulingModel.setOverrideAllocationProjectNumber(resource.getOverrideAllocationProjectNumber()); data.setComputationalResourceScheduling(resourceSchedulingModel); return data; @@ -533,6 +536,9 @@ public class ThriftDataModelConversion { resourceSchedulingModel.setWallTimeLimit(resource.getWallTimeLimit()); resourceSchedulingModel.setTotalPhysicalMemory(resource.getTotalPhysicalMemory()); resourceSchedulingModel.setStaticWorkingDir(resource.getStaticWorkingDir()); + resourceSchedulingModel.setOverrideLoginUserName(resource.getOverrideLoginUserName()); + resourceSchedulingModel.setOverrideScratchLocation(resource.getOverrideScratchLocation()); + resourceSchedulingModel.setOverrideAllocationProjectNumber(resource.getOverrideAllocationProjectNumber()); return resourceSchedulingModel; } return null; @@ -549,6 +555,9 @@ public class ThriftDataModelConversion { resourceSchedulingModel.setWallTimeLimit(resource.getWallTimeLimit()); resourceSchedulingModel.setTotalPhysicalMemory(resource.getTotalPhysicalMemory()); resourceSchedulingModel.setStaticWorkingDir(resource.getStaticWorkingDir()); + resourceSchedulingModel.setOverrideLoginUserName(resource.getOverrideLoginUserName()); + resourceSchedulingModel.setOverrideScratchLocation(resource.getOverrideScratchLocation()); + resourceSchedulingModel.setOverrideAllocationProjectNumber(resource.getOverrideAllocationProjectNumber()); return resourceSchedulingModel; } return null; http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql index ded83b0..a00dacf 100644 --- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql +++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql @@ -160,6 +160,9 @@ CREATE TABLE USER_CONFIGURATION_DATA ( WALL_TIME_LIMIT INT, TOTAL_PHYSICAL_MEMORY INT, STATIC_WORKING_DIR varchar(255), + OVERRIDE_LOGIN_USER_NAME varchar(255), + OVERRIDE_SCRATCH_LOCATION varchar(255), + OVERRIDE_ALLOCATION_PROJECT_NUMBER varchar(255), STORAGE_RESOURCE_ID varchar(255), EXPERIMENT_DATA_DIR VARCHAR (512), PRIMARY KEY (EXPERIMENT_ID), http://git-wip-us.apache.org/repos/asf/airavata/blob/e5ae01e0/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql index 04c7cee..252e940 100644 --- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql +++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql @@ -161,6 +161,9 @@ CREATE TABLE USER_CONFIGURATION_DATA ( WALL_TIME_LIMIT int(11), TOTAL_PHYSICAL_MEMORY int(11), STATIC_WORKING_DIR varchar(255), + OVERRIDE_LOGIN_USER_NAME varchar(255), + OVERRIDE_SCRATCH_LOCATION varchar(255), + OVERRIDE_ALLOCATION_PROJECT_NUMBER varchar(255), STORAGE_RESOURCE_ID varchar(255), EXPERIMENT_DATA_DIR VARCHAR (512), PRIMARY KEY (EXPERIMENT_ID),
