You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/09/07 19:00:18 UTC
airavata git commit: making sharing enabling configurable
Repository: airavata
Updated Branches:
refs/heads/develop 729a15fa9 -> ae5461264
making sharing enabling configurable
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/ae546126
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/ae546126
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/ae546126
Branch: refs/heads/develop
Commit: ae5461264baa2e7e0f6bfc6c83e18fa55238c8ad
Parents: 729a15f
Author: scnakandala <su...@gmail.com>
Authored: Wed Sep 7 15:00:13 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Sep 7 15:00:13 2016 -0400
----------------------------------------------------------------------
.../server/handler/AiravataServerHandler.java | 74 ++--
.../client/samples/RegisterSampleData.java | 422 -------------------
.../client/samples/SampleEchoExperiment.java | 200 +++++++++
.../airavata/common/utils/ServerSettings.java | 5 +
.../main/resources/airavata-server.properties | 1 +
.../service/handler/RegistryServerHandler.java | 11 +-
6 files changed, 253 insertions(+), 460 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 83eb771..74c4eb3 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -523,7 +523,7 @@ public class AiravataServerHandler implements Airavata.Iface {
try {
RegistryService.Client regClient = getRegistryServiceClient();
Project existingProject = regClient.getProject(projectId);
- if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(existingProject.getOwner())
+ if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(existingProject.getOwner())
|| !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(existingProject.getGatewayId())){
try {
if(!hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -553,7 +553,7 @@ public class AiravataServerHandler implements Airavata.Iface {
try {
RegistryService.Client regClient = getRegistryServiceClient();
Project existingProject = regClient.getProject(projectId);
- if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(existingProject.getOwner())
+ if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(existingProject.getOwner())
|| !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(existingProject.getGatewayId())){
try {
if(!hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -598,7 +598,7 @@ public class AiravataServerHandler implements Airavata.Iface {
if(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(project.getOwner())
&& authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(project.getGatewayId())){
return project;
- }else{
+ }else if (ServerSettings.isEnableSharing()){
try {
if(hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
+"@"+authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID),
@@ -610,7 +610,8 @@ public class AiravataServerHandler implements Airavata.Iface {
} catch (Exception e) {
throw new AuthorizationException("User does not have permission to access this resource");
}
- }
+ }else
+ return null;
} catch (ApplicationSettingsException | RegistryServiceException e) {
logger.error("Error while retrieving the project", e);
ProjectNotFoundException exception = new ProjectNotFoundException();
@@ -676,7 +677,9 @@ public class AiravataServerHandler implements Airavata.Iface {
String> filters, int limit, int offset) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
try {
List<String> accessibleProjIds = new ArrayList<>();
- accessibleProjIds.addAll(getAllAccessibleResourcesForUser(userName+"@"+gatewayId, ResourceType.PROJECT, ResourcePermissionType.READ));
+
+ if(ServerSettings.isEnableSharing())
+ accessibleProjIds.addAll(getAllAccessibleResourcesForUser(userName+"@"+gatewayId, ResourceType.PROJECT, ResourcePermissionType.READ));
return getRegistryServiceClient().searchProjects(gatewayId, userName, accessibleProjIds, filters, limit, offset);
}catch (Exception e) {
@@ -711,7 +714,8 @@ public class AiravataServerHandler implements Airavata.Iface {
throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
try {
List<String> accessibleExpIds = new ArrayList<>();
- accessibleExpIds.addAll(getAllAccessibleResourcesForUser(userName + "@" + gatewayId, ResourceType.EXPERIMENT, ResourcePermissionType.READ));
+ if(ServerSettings.isEnableSharing())
+ accessibleExpIds.addAll(getAllAccessibleResourcesForUser(userName + "@" + gatewayId, ResourceType.EXPERIMENT, ResourcePermissionType.READ));
return getRegistryServiceClient().searchExperiments(gatewayId, userName, accessibleExpIds, filters, limit, offset);
}catch (Exception e) {
logger.error("Error while retrieving experiments", e);
@@ -770,7 +774,7 @@ public class AiravataServerHandler implements Airavata.Iface {
RegistryService.Client regClient = getRegistryServiceClient();
Project project = regClient.getProject(projectId);
- if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(project.getOwner())
+ if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(project.getOwner())
|| !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(project.getGatewayId())){
try {
if(!hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -849,13 +853,17 @@ public class AiravataServerHandler implements Airavata.Iface {
AiravataClientException, AiravataSystemException, AuthorizationException, TException {
try {
String experimentId = getRegistryServiceClient().createExperiment(gatewayId, experiment);
- GroupManagerCPI groupManager = GroupManagerFactory.getGroupManager();
Resource expResource = new Resource(experimentId, org.apache.airavata.grouper.resource.ResourceType.EXPERIMENT);
expResource.setOwnerId(experiment.getUserName()+"@"+experiment.getGatewayId());
expResource.setParentResourceId(experiment.getProjectId());
expResource.setName(experiment.getExperimentName());
expResource.setDescription(experiment.getDescription());
- groupManager.createResource(expResource);
+
+ if(ServerSettings.isEnableSharing()) {
+ GroupManagerCPI groupManager = GroupManagerFactory.getGroupManager();
+ groupManager.createResource(expResource);
+ }
+
ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.CREATED,
experimentId,
gatewayId);
@@ -894,7 +902,7 @@ public class AiravataServerHandler implements Airavata.Iface {
RegistryService.Client regClient = getRegistryServiceClient();
ExperimentModel experimentModel = regClient.getExperiment(experimentId);
- if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
+ if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
|| !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
try {
if(! hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -950,6 +958,24 @@ public class AiravataServerHandler implements Airavata.Iface {
ExperimentModel experimentModel = null;
try {
experimentModel = getRegistryServiceClient().getExperiment(airavataExperimentId);
+ if(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
+ && authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
+ return experimentModel;
+ }else if(ServerSettings.isEnableSharing()){
+ try {
+ if(hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
+ +"@"+authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID),
+ experimentModel.getExperimentId(), ResourceType.EXPERIMENT, ResourcePermissionType.READ)){
+ return experimentModel;
+ }else {
+ throw new AuthorizationException("User does not have permission to access this resource");
+ }
+ } catch (Exception e) {
+ throw new AuthorizationException("User does not have permission to access this resource");
+ }
+ }else{
+ return null;
+ }
} catch (ApplicationSettingsException e) {
logger.error("Error while getting the experiment", e);
AiravataSystemException exception = new AiravataSystemException();
@@ -957,22 +983,6 @@ public class AiravataServerHandler implements Airavata.Iface {
exception.setMessage("Error while getting the experiment. More info : " + e.getMessage());
throw exception;
}
- if(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
- && authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
- return experimentModel;
- }else{
- try {
- if(hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
- +"@"+authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID),
- experimentModel.getExperimentId(), ResourceType.EXPERIMENT, ResourcePermissionType.READ)){
- return experimentModel;
- }else {
- throw new AuthorizationException("User does not have permission to access this resource");
- }
- } catch (Exception e) {
- throw new AuthorizationException("User does not have permission to access this resource");
- }
- }
}
/**
@@ -1045,7 +1055,7 @@ public class AiravataServerHandler implements Airavata.Iface {
try {
RegistryService.Client regClient = getRegistryServiceClient();
ExperimentModel experimentModel = regClient.getExperiment(airavataExperimentId);
- if(!authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
+ if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
|| !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
try {
if(! hasPermission(authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME)
@@ -1381,10 +1391,14 @@ public class AiravataServerHandler implements Airavata.Iface {
String expId = regClient.createExperiment(gatewayId, existingExperiment);
String projectId = existingExperiment.getProjectId();
- if(!isResourceExistsInGrouper(projectId, ResourceType.PROJECT)){
- initializeResourceWithGrouper(projectId, ResourceType.PROJECT);
+
+ if(ServerSettings.isEnableSharing()){
+ if(!isResourceExistsInGrouper(projectId, ResourceType.PROJECT)){
+ initializeResourceWithGrouper(projectId, ResourceType.PROJECT);
+ }
+ initializeResourceWithGrouper(expId, ResourceType.EXPERIMENT);
}
- initializeResourceWithGrouper(expId, ResourceType.EXPERIMENT);
+
return expId;
} catch (Exception e) {
logger.error(existingExperimentID, "Error while cloning the experiment with existing configuration...", e);
http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
deleted file mode 100644
index c737695..0000000
--- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.client.samples;
-
-import org.apache.airavata.api.Airavata;
-import org.apache.airavata.api.client.AiravataClientFactory;
-import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-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.ResourceJobManager;
-import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType;
-import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.data.movement.DataMovementInterface;
-import org.apache.airavata.model.data.movement.DataMovementProtocol;
-import org.apache.airavata.model.error.AiravataClientException;
-import org.apache.airavata.model.parallelism.ApplicationParallelismType;
-import org.apache.airavata.model.security.AuthzToken;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.thrift.TException;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-public class RegisterSampleData {
-
- private static final String THRIFT_SERVER_HOST = "127.0.0.1";
- private static final int THRIFT_SERVER_PORT = 8930;
-
- private Airavata.Client airavataClient;
- private String localhost_ip = "127.0.0.1";
- private String localhostId ;
- private String echoModuleId;
- private String addModuleId;
- private String multiplyModuleId;
- private String subtractModuleId;
- private String sampleScriptDir;
- private String monteXModuleId;
- private String gaussianModuleId;
-
- private String gatewayId;
-
- public static void main(String[] args) throws AiravataClientException, TException {
- RegisterSampleData registerSampleData = new RegisterSampleData();
- registerSampleData.init();
- registerSampleData.register();
- }
-
- public void init() {
- String airavataHome = System.getenv("AIRAVATA_HOME");
- if (airavataHome == null) {
- sampleScriptDir = new File("").getAbsolutePath() +
- "/modules/distribution/server/src/main/resources/samples/scripts";
- } else {
- sampleScriptDir = airavataHome + "/samples/scripts";
- }
- System.out.println(sampleScriptDir);
- }
-
- public void register() throws AiravataClientException, TException {
- airavataClient = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
- gatewayId = registerGateway();
- registerLocalhost();
- registerGatewayProfile();
- registerApplicationModules();
- registerApplicationDeployments();
- registerApplicationInterfaces();
- }
-
- private String registerGateway() throws TException {
- Gateway gateway = new Gateway();
- gateway.setGatewayName("Sample");
- gateway.setGatewayId("sample");
- return airavataClient.addGateway(new AuthzToken(""), gateway);
- }
-
- private void registerGatewayProfile() throws TException {
- ComputeResourcePreference localhostResourcePreference = RegisterSampleApplicationsUtils.
- createComputeResourcePreference(localhostId, "Sample", false, null, null, null, sampleScriptDir + "/..");
- GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
- gatewayResourceProfile.setGatewayID(gatewayId);
- gatewayResourceProfile.addToComputeResourcePreferences(localhostResourcePreference);
- airavataClient.registerGatewayResourceProfile(new AuthzToken(""), gatewayResourceProfile);
- }
-
- private void registerLocalhost() {
- try {
- System.out.println("\n #### Registering Localhost Computational Resource #### \n");
-
- ComputeResourceDescription computeResourceDescription = RegisterSampleApplicationsUtils.
- createComputeResourceDescription("localhost", "LocalHost", null, null);
- DataMovementInterface dataMovementInterface = new DataMovementInterface("localhost_data_movement_interface", DataMovementProtocol.LOCAL, 1);
- computeResourceDescription.addToDataMovementInterfaces(dataMovementInterface);
- JobSubmissionInterface jobSubmissionInterface = new JobSubmissionInterface("localhost_job_submission_interface", JobSubmissionProtocol.LOCAL, 1);
- computeResourceDescription.addToJobSubmissionInterfaces(jobSubmissionInterface);
-
- localhostId = airavataClient.registerComputeResource(new AuthzToken(""), computeResourceDescription);
- ResourceJobManager resourceJobManager = RegisterSampleApplicationsUtils.
- createResourceJobManager(ResourceJobManagerType.FORK, null, null, null);
- LOCALSubmission submission = new LOCALSubmission();
- submission.setResourceJobManager(resourceJobManager);
- String localSubmission = airavataClient.addLocalSubmissionDetails(new AuthzToken(""), localhostId, 1, submission);
-// if (!localSubmission) throw new AiravataClientException();
- System.out.println(localSubmission);
- System.out.println("LocalHost Resource Id is " + localhostId);
-
- } catch (TException e) {
- e.printStackTrace();
- }
- }
-
- private void registerApplicationInterfaces() {
- registerAddApplicationInterface();
- registerSubtractApplicationInterface();
- registerMultiplyApplicationInterface();
- registerEchoInterface();
- registerTinkerMonteInterface();
- registerGaussianInterface();
- }
-
- private void registerGaussianInterface() {
- try {
- System.out.println("#### Registering Gaussian Application Interface ####");
-
- List<String> appModules = new ArrayList<String>();
- appModules.add(gaussianModuleId);
-
- InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("MainInputFile", null,
- DataType.URI, null, 1,true,true, false, "Gaussian main input file", null);
-
- List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
- applicationInputs.add(input1);
-
- OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("gaussian.out",
- "", DataType.URI, true,true, null);
-
- List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
- applicationOutputs.add(output1);
-
- String addApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Gaussian", "Gaussian application",
- appModules, applicationInputs, applicationOutputs));
- System.out.println("Gaussian Application Interface Id " + addApplicationInterfaceId);
-
- } catch (TException e) {
- e.printStackTrace();
- }
- }
-
- private void registerTinkerMonteInterface() {
- try {
- System.out.println("#### Registering Tinker Monte Application Interface ####");
-
- List<String> appModules = new ArrayList<String>();
- appModules.add(monteXModuleId);
-
- InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("xyzf", "O16.xyz",
- DataType.STRING, null, 1, true,true, false, "Tinker monte input_1", null);
- InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("keyf", "O16.key",
- DataType.STRING, "-k", 2, true,true, false, "Tinker monte input_2", null);
- InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("stps", "20000",
- DataType.STRING, null, 3, true,true, false, "Tinker monte input_3", null);
- InputDataObjectType input4 = RegisterSampleApplicationsUtils.createAppInput("Ctc", "C",
- DataType.STRING, null, 4, true,true, false, "Tinker monte input_4", null);
- InputDataObjectType input5 = RegisterSampleApplicationsUtils.createAppInput("stpsZ", "3.0",
- DataType.STRING, null, 5, true,true, false, "Tinker monte input_5", null);
- InputDataObjectType input6 = RegisterSampleApplicationsUtils.createAppInput("temp", "298",
- DataType.STRING, null, 6, true,true, false, "Tinker monte input_6", null);
- InputDataObjectType input7 = RegisterSampleApplicationsUtils.createAppInput("Rconv", "0.01",
- DataType.STRING, null, 7, true,true, false, "Tinker monte input_7", null);
-
-
- List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
- applicationInputs.add(input1);
- applicationInputs.add(input2);
- applicationInputs.add(input3);
- applicationInputs.add(input4);
- applicationInputs.add(input5);
- applicationInputs.add(input6);
- applicationInputs.add(input7);
-
- OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Diskoutputfile_with_dir",
- "", DataType.URI, true,false, null);
-
- List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
- applicationOutputs.add(output1);
-
- String addApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Tinker_Monte", "Monte application",
- appModules, applicationInputs, applicationOutputs));
- System.out.println("Monte Application Interface Id " + addApplicationInterfaceId);
-
- } catch (TException e) {
- e.printStackTrace();
- }
- }
-
- private void registerApplicationDeployments() throws TException {
- System.out.println("#### Registering Application Deployments on Localhost ####");
- //Register Echo
- String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, localhostId,
- sampleScriptDir + "/echo.sh", ApplicationParallelismType.SERIAL, "Echo application description",
- null, null, null));
- System.out.println("Successfully registered Echo application on localhost, application Id = " + echoAppDeployId);
-
- //Register Add application
- String addAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationDeployment(addModuleId, localhostId,
- sampleScriptDir + "/add.sh", ApplicationParallelismType.SERIAL, "Add application description",
- null, null, null));
- System.out.println("Successfully registered Add application on localhost, application Id = " + addAppDeployId);
-
- //Register Multiply application
- String multiplyAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationDeployment(multiplyModuleId, localhostId,
- sampleScriptDir + "/multiply.sh", ApplicationParallelismType.SERIAL, "Multiply application description",
- null, null, null));
- System.out.println("Successfully registered Multiply application on localhost, application Id = " + multiplyAppDeployId);
-
- //Register Subtract application
- String subtractAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationDeployment(subtractModuleId, localhostId,
- sampleScriptDir + "/subtract.sh", ApplicationParallelismType.SERIAL, "Subtract application description ",
- null, null, null));
- System.out.println("Successfully registered Subtract application on localhost, application Id = " + subtractAppDeployId);
-
- //Register Tinker monte application
- String tinkerMonteAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationDeployment(monteXModuleId, localhostId,
- sampleScriptDir + "/monte.x", ApplicationParallelismType.SERIAL, "Grid chem tinker monte application description ",
- null, null, null));
- System.out.println("Successfully registered tinker monte application on localhost, application Id = " + tinkerMonteAppDeployId);
-
- //Register Tinker monte application
- String gaussianAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationDeployment(gaussianModuleId, localhostId,
- sampleScriptDir + "/gaussian.sh", ApplicationParallelismType.SERIAL, "Grid chem Gaussian application description ",
- null, null, null));
- System.out.println("Successfully registered Gaussian application on localhost, application Id = " + gaussianAppDeployId);
- }
-
- private void registerApplicationModules() throws TException {
- //Register Echo
- echoModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationModule(
- "Echo", "1.0", "Echo application description"));
- //Register Echo
- addModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationModule(
- "Add", "1.0", "Add application description"));
- //Register Echo
- multiplyModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationModule(
- "Multiply", "1.0", "Multiply application description"));
- //Register Echo
- subtractModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationModule(
- "Subtract", "1.0", "Subtract application description"));
- //Register Monte
- monteXModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationModule(
- "Tinker Monte", "1.0", "Grid chem tinker monte application description"));
-
- // Register gaussian application
- gaussianModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationModule(
- "Gaussian", "1.0", "Grid Chem Gaussian application description"));
-
- }
-
-
- public void registerEchoInterface() {
- try {
- System.out.println("#### Registering Echo Interface ####");
-
- List<String> appModules = new ArrayList<String>();
- appModules.add(echoModuleId);
-
- InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "Hello World",
- DataType.STRING, null, 1, true,true, false, "A test string to Echo", null);
-
- List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
- applicationInputs.add(input1);
-
- OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Output",
- "", DataType.STRING, true, false, null);
-
- List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
- applicationOutputs.add(output1);
-
- String echoInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Echo", "Echo application description",
- appModules, applicationInputs, applicationOutputs));
- System.out.println("Echo Application Interface Id " + echoInterfaceId);
-
- } catch (TException e) {
- e.printStackTrace();
- }
- }
-
- public void registerAddApplicationInterface() {
- try {
- System.out.println("#### Registering Add Application Interface ####");
-
- List<String> appModules = new ArrayList<String>();
- appModules.add(addModuleId);
-
- InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "2",
- DataType.STRING, null, 1, true,true, false, "Add operation input_1", null);
- InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "3",
- DataType.STRING, null, 2, true,true, false, "Add operation input_2", null);
-
- List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
- applicationInputs.add(input1);
- applicationInputs.add(input2);
-
- OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
- "0", DataType.STRING, true,false, null);
-
- List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
- applicationOutputs.add(output1);
-
- String addApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Add", "Add two numbers",
- appModules, applicationInputs, applicationOutputs));
- System.out.println("Add Application Interface Id " + addApplicationInterfaceId);
-
- } catch (TException e) {
- e.printStackTrace();
- }
- }
-
- public void registerMultiplyApplicationInterface() {
- try {
- System.out.println("#### Registering Multiply Application Interface ####");
-
- List<String> appModules = new ArrayList<String>();
- appModules.add(multiplyModuleId);
-
- InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "4",
- DataType.STRING, null, 1,true,true, false, "Multiply operation input_1", null);
- InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "5",
- DataType.STRING, null, 2, true,true, false, "Multiply operation input_2", null);
-
- List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
- applicationInputs.add(input1);
- applicationInputs.add(input2);
-
- OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
- "0", DataType.STRING,true,false, null);
-
- List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
- applicationOutputs.add(output1);
-
- String multiplyApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Multiply", "Multiply two numbers",
- appModules, applicationInputs, applicationOutputs));
- System.out.println("Multiply Application Interface Id " + multiplyApplicationInterfaceId);
-
- } catch (TException e) {
- e.printStackTrace();
- }
- }
-
- public void registerSubtractApplicationInterface() {
- try {
- System.out.println("#### Registering Subtract Application Interface ####");
-
- List<String> appModules = new ArrayList<String>();
- appModules.add(subtractModuleId);
-
- InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("x", "6",
- DataType.STRING, null, 1,true,true, false, "Subtract operation input_1", null);
- InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("y", "7",
- DataType.STRING, null, 2,true,true, false, "Subtract operation input_2", null);
-
- List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
- applicationInputs.add(input1);
- applicationInputs.add(input2);
-
- OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
- "0", DataType.STRING, true,false, null);
-
- List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
- applicationOutputs.add(output1);
-
- String subtractApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
- RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Subtract", "Subtract two numbers",
- appModules, applicationInputs, applicationOutputs));
- System.out.println("Subtract Application Interface Id " + subtractApplicationInterfaceId);
-
- } catch (TException e) {
- e.printStackTrace();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/SampleEchoExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/SampleEchoExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/SampleEchoExperiment.java
new file mode 100644
index 0000000..3a706ea
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/SampleEchoExperiment.java
@@ -0,0 +1,200 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.client.samples;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
+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.application.io.DataType;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.model.data.movement.DataMovementInterface;
+import org.apache.airavata.model.data.movement.DataMovementProtocol;
+import org.apache.airavata.model.error.AiravataClientException;
+import org.apache.airavata.model.experiment.ExperimentModel;
+import org.apache.airavata.model.experiment.UserConfigurationDataModel;
+import org.apache.airavata.model.parallelism.ApplicationParallelismType;
+import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
+import org.apache.airavata.model.security.AuthzToken;
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.GatewayApprovalStatus;
+import org.apache.airavata.model.workspace.Project;
+import org.apache.thrift.TException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SampleEchoExperiment {
+
+ private static final String THRIFT_SERVER_HOST = "127.0.0.1";
+ private static final int THRIFT_SERVER_PORT = 8930;
+
+ private Airavata.Client airavataClient;
+ private String localhostId ;
+ private String echoModuleId;
+ private String echoInterfaceId;
+ private String echoExperimentId;
+
+ private String gatewayId = "default";
+ private String userId = "default-user";
+
+ public static void main(String[] args) throws AiravataClientException, TException {
+ SampleEchoExperiment sampleEchoExperiment = new SampleEchoExperiment();
+ sampleEchoExperiment.register();
+ }
+
+ public void register() throws TException {
+ airavataClient = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
+ gatewayId = registerGateway();
+ registerLocalhost();
+ registerGatewayProfile();
+ registerEchoModule();
+ registerEchoDeployment();
+ registerEchoInterface();
+ createEchoExperiment();
+ }
+
+ private String registerGateway() throws TException {
+ Gateway gateway = new Gateway();
+ gateway.setGatewayName(gatewayId);
+ gateway.setGatewayId(gatewayId);
+ gateway.setGatewayApprovalStatus(GatewayApprovalStatus.APPROVED);
+ return airavataClient.addGateway(new AuthzToken(""), gateway);
+ }
+
+
+ private void registerLocalhost() {
+ try {
+ System.out.println("\n #### Registering Localhost Computational Resource #### \n");
+
+ ComputeResourceDescription computeResourceDescription = RegisterSampleApplicationsUtils.
+ createComputeResourceDescription("localhost", "LocalHost", null, null);
+ DataMovementInterface dataMovementInterface = new DataMovementInterface("localhost_data_movement_interface", DataMovementProtocol.LOCAL, 1);
+ computeResourceDescription.addToDataMovementInterfaces(dataMovementInterface);
+ JobSubmissionInterface jobSubmissionInterface = new JobSubmissionInterface("localhost_job_submission_interface", JobSubmissionProtocol.LOCAL, 1);
+ computeResourceDescription.addToJobSubmissionInterfaces(jobSubmissionInterface);
+
+ localhostId = airavataClient.registerComputeResource(new AuthzToken(""), computeResourceDescription);
+ ResourceJobManager resourceJobManager = RegisterSampleApplicationsUtils.
+ createResourceJobManager(ResourceJobManagerType.FORK, null, null, null);
+ LOCALSubmission submission = new LOCALSubmission();
+ submission.setResourceJobManager(resourceJobManager);
+ String localSubmission = airavataClient.addLocalSubmissionDetails(new AuthzToken(""), localhostId, 1, submission);
+ System.out.println(localSubmission);
+ System.out.println("LocalHost Resource Id is " + localhostId);
+ } catch (TException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void registerGatewayProfile() throws TException {
+ GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
+ ComputeResourcePreference localhostResourcePreference = RegisterSampleApplicationsUtils.
+ createComputeResourcePreference(localhostId, gatewayId, false, null, null, null, "/tmp");
+ gatewayResourceProfile.setGatewayID(gatewayId);
+ gatewayResourceProfile.addToComputeResourcePreferences(localhostResourcePreference);
+ airavataClient.registerGatewayResourceProfile(new AuthzToken(""), gatewayResourceProfile);
+ }
+
+
+ private void registerEchoModule() throws TException {
+ //Register Echo
+ echoModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), gatewayId,
+ RegisterSampleApplicationsUtils.createApplicationModule(
+ "Echo", "1.0", "Echo application description"));
+ }
+
+ private void registerEchoDeployment() throws TException {
+ System.out.println("#### Registering Application Deployments on Localhost ####");
+ //Register Echo
+ String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), gatewayId,
+ RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, localhostId, "/bin/echo",
+ ApplicationParallelismType.SERIAL, "Echo application description",
+ null, null, null));
+ System.out.println("Successfully registered Echo application on localhost, application Id = " + echoAppDeployId);
+ }
+
+ private void registerEchoInterface() {
+ try {
+ System.out.println("#### Registering Echo Interface ####");
+
+ List<String> appModules = new ArrayList<String>();
+ appModules.add(echoModuleId);
+
+ InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "Hello World",
+ DataType.STRING, null, 1, true,true, false, "A test string to Echo", null);
+
+ List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
+ applicationInputs.add(input1);
+
+ OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Output",
+ "", DataType.STRING, true, false, null);
+
+ List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
+ applicationOutputs.add(output1);
+
+ echoInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), gatewayId,
+ RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Echo", "Echo application description",
+ appModules, applicationInputs, applicationOutputs));
+ System.out.println("Echo Application Interface Id " + echoInterfaceId);
+
+ } catch (TException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void createEchoExperiment() throws TException {
+ Project project = new Project();
+ project.setName("default-project");
+ project.setOwner(userId);
+ String projectId = airavataClient.createProject(new AuthzToken(""), gatewayId, project);
+
+ ExperimentModel experimentModel = new ExperimentModel();
+ experimentModel.setExperimentName("dummy-echo-experiment");
+ experimentModel.setProjectId(projectId);
+ experimentModel.setUserName(userId);
+ experimentModel.setGatewayId(gatewayId);
+ experimentModel.setExecutionId(echoInterfaceId);
+
+ UserConfigurationDataModel userConfigurationDataModel = new UserConfigurationDataModel();
+ ComputationalResourceSchedulingModel computationalResourceSchedulingModel = new ComputationalResourceSchedulingModel();
+ computationalResourceSchedulingModel.setNodeCount(1);
+ computationalResourceSchedulingModel.setTotalCPUCount(1);
+ computationalResourceSchedulingModel.setTotalPhysicalMemory(512);
+ computationalResourceSchedulingModel.setResourceHostId(localhostId);
+ userConfigurationDataModel.setComputationalResourceScheduling(computationalResourceSchedulingModel);
+
+ experimentModel.setUserConfigurationData(userConfigurationDataModel);
+
+ List<InputDataObjectType> experimentInputs = new ArrayList<>();
+ experimentInputs.add(RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "Hello World",
+ DataType.STRING, null, 1, true,true, false, "A test string to Echo", null));
+ experimentModel.setExperimentInputs(experimentInputs);
+ experimentModel.setExperimentOutputs(airavataClient.getApplicationOutputs(new AuthzToken(""), echoInterfaceId));
+
+ echoExperimentId = airavataClient.createExperiment(new AuthzToken(""), gatewayId, experimentModel);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
----------------------------------------------------------------------
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
index 985daad..bb11264 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
@@ -35,6 +35,7 @@ public class ServerSettings extends ApplicationSettings {
private static final String DEFAULT_USER = "default.registry.user";
private static final String DEFAULT_USER_PASSWORD = "default.registry.password";
private static final String DEFAULT_USER_GATEWAY = "default.registry.gateway";
+ private static final String ENABLE_SHARING = "enable.sharing";
public static final String IP = "ip";
@@ -400,4 +401,8 @@ public class ServerSettings extends ApplicationSettings {
public static String getLocalDataLocation() {
return System.getProperty("java.io.tmpdir");
}
+
+ public static Boolean isEnableSharing() throws ApplicationSettingsException {
+ return Boolean.parseBoolean(getSetting(ENABLE_SHARING));
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/modules/configuration/server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index 0dad713..2ce3701 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -43,6 +43,7 @@ validationQuery=SELECT 1 from CONFIGURATION
cache.enable=true
jpa.cache.size=5000
#jpa.connection.properties=MaxActive=10,MaxIdle=5,MinIdle=2,MaxWait=60000,testWhileIdle=true,testOnBorrow=true
+enable.sharing=true
# Properties for default user mode
default.registry.user=admin
http://git-wip-us.apache.org/repos/asf/airavata/blob/ae546126/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
index 076208d..30c518f 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -21,6 +21,7 @@
package org.apache.airavata.registry.api.service.handler;
import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.common.utils.ServerSettings;
import org.apache.airavata.model.WorkflowModel;
import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
@@ -3291,10 +3292,7 @@ public class RegistryServerHandler implements RegistryService.Iface {
}
}
- if(accessibleExpIds.size() == 0)
- return new ArrayList<>();
-
- if(accessibleExpIds.size() == 0){
+ if(accessibleExpIds.size() == 0 && !ServerSettings.isEnableSharing()){
if(!regFilters.containsKey(AbstractExpCatResource.ExperimentConstants.USER_NAME)){
regFilters.put(AbstractExpCatResource.ExperimentConstants.USER_NAME, userName);
}
@@ -3361,10 +3359,7 @@ public class RegistryServerHandler implements RegistryService.Iface {
}
}
- if(accessibleProjIds.size() == 0)
- return new ArrayList<>();
-
- if(accessibleProjIds.size() == 0){
+ if(accessibleProjIds.size() == 0 && !ServerSettings.isEnableSharing()){
if(!regFilters.containsKey(AbstractExpCatResource.ProjectConstants.USERNAME)){
regFilters.put(AbstractExpCatResource.ProjectConstants.USERNAME, userName);
}